| # ys = h0, # ys = # xs + 1, h = # xs + 1, xs_len = # xs, ((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, [] = [] ∧ (∃ n0. (∃ x. n0 = # x ∧ ((ls(rys, x) * ls(r, a + xs)))((H1 ++ r)[r, a × rxs])) ∧ n0 ≤ #(a + xs) ∧ n0 ≤ h0 ∧ 0 = 0) |
# 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, ∃ n0. (∃ x. n0 = # x ∧ ((ls(rys, x) * ls(r, a ' + xs)))((H1 ++ r)[r, a × rxs])) ∧ n0 ≤ # ys
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ m +1 = m + 1; (s)% ⊦ #(a ' + x) = (# x)+1; (s)% ⊦ a + x = a ' + x; (s)