| # xs = xs_len, # xs < h, # ys = 0 ∨ # ys = h ⊦ ⟪caterpillar_add#(a, h; xs, xs_len, ys)⟫ (# xs < h ∧ # xs = xs_len ∧ (# ys = 0 ∨ # ys = h)) |
# xs = xs_len, # xs < h, # ys = 0 ∨ # ys = h ⊦ ⟪if xs_len + 1 = h then {ys := a + xs; xs_len := 0; xs := []} else {xs := a + xs; xs_len := 1 + xs_len}⟫ (# xs < h ∧ # xs = xs_len ∧ (# ys = 0 ∨ # ys = h))
Used simplifier rules: add: ⊦ ;