| n > 0 ⊦ ⟪tree_buffer_init#(n; ; h0, xs0)⟫ ⟨caterpillar_init#(n; ; h, xs, xs_len, ys)⟩ (prefixn(h0, xs + ys) = prefixn(h0, xs0) ∧ #(xs + ys) ≤ # xs0 ∧ h0 = h) |
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)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ #(x + y) = # x + # y; (s)% ⊦ 0 < m ↔ m ≠ 0; (s)% ⊦ m > n ↔ n < m; (s)