| bst(t0), bst(t1), (r => mknode(r1, a, r2) * tr(r1, t0) * tr(r2, t1) * P)(H), (true * tr(r0, branch(t0 .butleftmost, a, t1)) * P)(H0), ∀ 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, t0 .leftmost ∈ t0 .butleftmost, ¬ t0 .leftmost ∈ t1 ∧ t0 .leftmost ≠ a |
⊦ t ≠ leaf ∧ bst(t) → (a ∈ t .butleftmost ↔ a ∈ t ∧ a ≠ t .leftmost)
t0 ≠ leaf ∧ bst(t0), bst(t0), bst(t1), (r => mknode(r1, a, r2) * tr(r1, t0) * tr(r2, t1) * P)(H), (true * tr(r0, branch(t0 .butleftmost, a, t1)) * P)(H0), ∀ 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, t0 .leftmost ∈ t0 ∧ t0 .leftmost ≠ t0 .leftmost, ¬ t0 .leftmost ∈ t1 ∧ t0 .leftmost ≠ a
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (P0 * P1) * P2 = P0 * P1 * P2], [CSIMPSEQ : ⊦ P0 * P1 = P1 * P0])], [EXTRATERMS : (t0, t0 .leftmost)]]