| r ≠ null, ((tr(r, t) * P))(H) ⊦ ⟨search_tree_delete_min(; a, r, H)⟩ (((tr(r, t.butleftmost) * P))(H) ∧ a = t.leftmost) |
[Concretesimprules((Csimpnamedseq(root-nonnull,,, ⊦ r ≠ null ∧ ((tr(r, t) * P))(H) → (∃ t0, a, t1. t = branch(t0, a, t1))) Csimpnamedseq(butleftmost,,, ⊦ branch(t0, a, t1).butleftmost = (t0 = leaf ⊃ t1 ;branch(t0.butleftmost, a, t1) )) Csimpnamedseq(leftmost,,, ⊦ branch(t0, a, t1).leftmost = (t0 = leaf ⊃ a;t0.leftmost)) Csimpseq(⊦ branch(t, a, t0) = branch(t1, a0, t2) ↔ t = t1 ∧ a = a0 ∧ t0 = t2) Csimpseq( ⊦ P0 * P1 = P1 * P0) Csimpseq( ⊦ (P0 * P1) * P2 = P0 * P1 * P2)))]