| # s = 2 ↔ (∃ a, b. a ≠ b ∧ s = ∅ ++ a ++ b ∧ a ∈ s ∧ b ∈ s), # s = 2, a ∈ s, s.min ∈ s, s.max ∈ s ⊦ s = ∅, a = s.min, ∅ ++ a ++ s.min = s, s.max < a |
(∅ ++ a0 ++ b).min = b ∨ (∅ ++ a0 ++ b).min = a0, a = b ∨ a = a0 ⊦ a0 = b, ∅ ++ a ++ (∅ ++ a0 ++ b).min = ∅ ++ a0 ++ b, a = (∅ ++ a0 ++ b).min, (b < a0 ⊃ a0;b) < a
Used simplifier rules: max-ifins: ⊦ (s ++ a).max = (s = ∅ ⊃ a;(a < s.max ⊃ s.max;a));%max-one: ⊦ (∅ ++ a).max = a;%min-two-01: ⊦ a < b → (∅ ++ b ++ a).min = a;%eqtwo-01: ⊦ ∅ ++ a ++ b = ∅ ++ c ++ b ↔ a = c; from specification set-basic%ne: ⊦ ∅ ≠ s ++ a; from specification set-basic%size-two-01: ⊦ #(∅ ++ a ++ b) = 2 ↔ a ≠ b; from specification set-basic%rax: ⊦ a ∈ s ++ b ↔ ¬ ¬(a = b ∨ a ∈ s); from specification set-basic%in-04: ⊦ a ∈ ∅ ++ b ↔ a = b; from specification set-basic%in-02: ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); from specification set-basic