| h = h0, ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n)))(H), # xs < h0, n ≤ # xs + # ys, n + # xs ≤ h0, ys = [] ∨ # ys = h0 ⊦ ⟪x := []; let n = 0, r = rxs in {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) |
h = h0, ((ls(rxs, xs) * ls(rys, ys) * del-list(to_delete, n)))(H), # xs < h0, n + # xs ≤ h0, n ≤ # xs + # ys, ys = [] ∨ # ys = h0 ⊦ ⟪let n = 0, r = rxs in {x := []; 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)