| (r => mknode(r1, a, r2) * tr(r1, t0) * tr(r2, t1) * P)(H), bst(t1), bst(t0), (true * tr(r0, branch(t0 .butleftmost, a, t1)) * P)(H0), ∀ a0. ¬ a0 ∈ t0 ∨ ¬ a0 ∈ t1, ∀ a, c. a ∈ t0 ∧ c ∈ t1 → a < c, ∀ a0. a0 ∈ t1 → a < a0, ∀ a0. a0 ∈ t0 → a0 < a ⊦ r = null, t0 = leaf, bst(branch(t0 .butleftmost, a, t1)) |
⊦ bst(branch(t0, b, t1)) ↔ (∀ a. a ∈ t0 → a < b) ∧ (∀ a. a ∈ t1 → b < a) ∧ bst(t0) ∧ bst(t1)
(r => mknode(r1, a, r2) * tr(r1, t0) * tr(r2, t1) * P)(H), bst(t1), bst(t0), (true * tr(r0, branch(t0 .butleftmost, a, t1)) * P)(H0), ∀ a0. ¬ a0 ∈ t0 ∨ ¬ a0 ∈ t1, ∀ a, c. a ∈ t0 ∧ c ∈ t1 → a < c, ∀ a0. a0 ∈ t1 → a < a0, ∀ a0. a0 ∈ t0 → a0 < a ⊦ r = null, t0 = leaf, (∀ a0. a0 ∈ t0 .butleftmost → a0 < a) ∧ (∀ a0. a0 ∈ t1 → a < a0) ∧ bst(t0 .butleftmost) ∧ bst(t1)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (t1, a, t0 .butleftmost)]]