| # ys = # xs + 1, ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n)))(H), ((del-list(to_delete, n) * ls(rys, ys) * ls(rxs, xs)))(H), ((ls(rys, ys) * ls(rxs, xs)))(H1), n < 2, n ≤ 1, n ≤ # xs + # ys ⊦ r = null, rys = null, ys = [], r ∈ H1, ∃ r0. (((r => a × r0 * ls(r0, xs)) * ls(rys, ys)))((H1 ++ r)[r, a × rxs]) |
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ H ⊦ r ∈ H ++ r0 ↔ r = r0 ∨ r ∈ H; (s)%r ∈ H ⊦ ((r => ce * P))(H[r, ce0]) ↔ ce = ce0 ∧ ((r =>_ * P))(H); (ss)%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep%¬ r ∈ H, r ≠ null ⊦ ((r =>_ * P))(H ++ r) ↔ P(H); (ss) Used terms: rxs