| (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, ¬ bst((t0 = leaf ⊃ t1; branch(t0 .butleftmost, a, t1))) ∨ ((t0 = leaf ⊃ a; t0 .leftmost)) ∈ ((t0 = leaf ⊃ t1; branch(t0 .butleftmost, a, t1))) ∨ ¬ (b ∈ ((t0 = leaf ⊃ t1; branch(t0 .butleftmost, a, t1))) → ((t0 = leaf ⊃ a; t0 .leftmost)) < b), ∀ a0. ¬ a0 ∈ t0 ∨ ¬ a0 ∈ t1 ⊦ r = null |
¬ bst((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
((t0 = leaf ⊃ a; t0 .leftmost)) ∈ ((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
¬ (b ∈ ((t0 = leaf ⊃ t1; branch(t0 .butleftmost, a, t1))) → ((t0 = leaf ⊃ a; t0 .leftmost)) < b), (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
[[CONCRETESIMPRULES : ()]]