| h = h0, n = 0, r = rxs, x = [], ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n0)))(H), # xs < h0, n0 + # xs ≤ h0, n0 ≤ # xs + # ys, ys = [] ∨ # ys = h0 ⊦ ⟪while n < h ∧ r ≠ null do {x := x + H[r].val; r := H[r].nxt; n := n + 1}; r := rys; while n < h ∧ r ≠ null do {x := x + H[r].val; r := H[r].nxt; n := n + 1}⟫ ⟨caterpillar_get#(h0, xs, ys; ; x0)⟩ ((∃ n0. ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n0)))(H) ∧ n0 ≤ # xs + # ys ∧ n0 + # xs ≤ h0) ∧ x = x0) |
n = 0, r = rxs, x = [], ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n0)))(H), # xs < h0, n0 ≤ # xs + # ys, n0 + # xs ≤ h0, ys = [] ∨ # ys = h0 ⊦ ⟪while n < h0 ∧ r ≠ null do {x := x + H[r].val '; r := H[r].nxt; n := n + 1}; r := rys; while n < h0 ∧ r ≠ null do {x := x + H[r].val '; r := H[r].nxt; n := n + 1}⟫ ⟨caterpillar_get#(h0, xs, ys; ; x0)⟩ ((∃ n0. ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n0)))(H) ∧ n0 ≤ # xs + # ys ∧ n0 + # xs ≤ h0) ∧ x = x0)
Used simplifier rules: ⊦ x + a = x + a '; (s)