| n ≠ 0 ⊦ ⟪tree_buffer_init#(n; ; h0, xs0)⟫ ⟨caterpillar_init#(n; ; h, xs, xs_len, ys)⟩ (prefixn(h, xs + ys) = prefixn(h, xs0) ∧ # xs + # ys ≤ # xs0 ∧ h0 = h) |
⊦ ⟪if n > 0 then h := n, xs := [] else abort⟫ ⟨caterpillar_init#(n; ; h1, xs1, xs_len, ys)⟩ (prefixn(h1, xs1 + ys) = prefixn(h1, xs) ∧ # xs1 + # ys ≤ # xs ∧ h = h1), n = 0
Used simplifier rules: tree_buffer_init#(n; ; h, xs){h := n, xs := []};