| t0 = leaf, a ∈ ((t0 = leaf ⊃ t1; branch(t0 .butleftmost, a, t1))), (r => mknode(r1, a, r2) * tr(r1, t0) * tr(r2, t1) * P)(H), (true * tr(r0, (t0 = leaf ⊃ t1; branch(t0 .butleftmost, a, t1))) * P)(H0), bst(t0), bst(t1), ∀ a0. a0 ∈ t0 → a0 < a, ∀ a0. a0 ∈ t1 → a < a0, ∀ a, c. a ∈ t0 ∧ c ∈ t1 → a < c, ∀ a0. ¬ a0 ∈ t0 ∨ ¬ a0 ∈ t1 ⊦ r = null |
⊦ bst(leaf)
⊦ ¬ a ∈ leaf
(true * tr(r0, t1) * P)(H0), ((tr(r2, t1) * r => mknode(null, a, r2)) * P)(H), a ∈ t1, bst(t1), ∀ a0. a0 ∈ t1 → a < a0 ⊦ r = null
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ⌜bv⌝ (H) ↔ bv], [CSIMPSEQ : ⊦ (P0 ∧ P1)(H) ↔ ¬ ¬ (P0(H) ∧ P1(H))], [CSIMPSEQ : ⊦ (P0 ∧ P1) = (P1 ∧ P0)], [CSIMPSEQ : ⊦ ((P0 ∧ P1) ∧ P2) = (P0 ∧ P1 ∧ P2)], [CSIMPSEQ : ⊦ P0 * P1 = P1 * P0], [CSIMPSEQ : ⊦ (P0 * P1) * P2 = P0 * P1 * P2], [CSIMPSEQ : ⊦ emp * P = P], [CSIMPSEQ : ⊦ (⌜bv⌝ ∧ P0) * P1 = (⌜bv⌝ ∧ P0 * P1)], [CSIMPSEQ : ⊦ tr(r, leaf) = (emp ∧ ⌜r = null⌝ )])]]