| xs_len = # xs, ys = [], r ≠ null, ((ls(rxs, xs) * del-list(to_delete, n)))(H), ((del-list(to_delete, n) * ls(rxs, xs)))(H), n < 2, ls(rxs, xs)(H1), n ≤ 1, n ≤ # xs, ¬ r ∈ H1 ⊦ ⟨caterpillar_add#(a, # xs + 1; xs, xs_len, ys)⟩ (xs = [] ∧ ls(r, ys)((H1 ++ r)[r, a × rxs]) ∧ 0 = xs_len) |
h = # xs + 1, xs_len = # xs, ys = [], ((del-list(to_delete, n) * ls(rxs, xs)))(H), ((ls(rxs, xs) * del-list(to_delete, n)))(H), n < 2, ls(rxs, xs)(H1), n ≤ # xs, n ≤ 1 ⊦ ⟨if xs_len + 1 = h then {ys := a + xs; xs_len := 0; xs := []} else {xs := a + xs; xs_len := 1 + xs_len}⟩ (xs = [] ∧ ls(r, ys)((H1 ++ r)[r, a × rxs]) ∧ 0 = xs_len), r = null, r ∈ H1
Used simplifier rules: caterpillar_add#(a, h; xs, xs_len, ys) {if xs_len + 1 = h then {ys := a + xs; xs_len := 0; xs := []} else {xs := a + xs; xs_len := 1 + xs_len} };