| prefixn(h0, xs + ys) = prefixn(h0, xs0), #(xs + ys) ≤ # xs0, h0 = h, # xs < h, # xs = xs_len, # ys = 0 ∨ # ys = h ⊦ ⟪tree_buffer_add#(a; xs0)⟫ ⟨caterpillar_add#(a, h; xs, xs_len, ys)⟩ (prefixn(h0, xs + ys) = prefixn(h0, xs0) ∧ #(xs + ys) ≤ # xs0 ∧ h0 = h) |
# xs = xs_len, h0 = h, prefixn(h0, xs + ys) = prefixn(h0, xs0), # xs < h, #(xs + ys) ≤ # xs0, # ys = 0 ∨ # ys = h ⊦ ⟪tree_buffer_add#(a; xs0)⟫ ⟨caterpillar_add#(a, h; xs, xs_len, ys)⟩ (prefixn(h0, xs + ys) = prefixn(h0, xs0) ∧ #(xs + ys) ≤ # xs0 ∧ h0 = h)