| ¬ a ∈ s ∪ s0, # s0 + # s + 1 < #((s ∪ s0) ++ a), ∀ s0. # s0 + # s < #(s0 ∪ s) → #(s0 ∪ s) = 0 ∨ s0 ∪ s = ∅ ⊦ #((s ∪ s0) ++ a) = 0, a ∈ s |
# s0 + # s < #(s ∪ s0), ∀ s0. # s0 + # s < #(s0 ∪ s) → #(s0 ∪ s) = 0 ∨ s0 ∪ s = ∅ ⊦ #(s ∪ s0) = 0, s ∪ s0 = ∅, a ∈ s0, a ∈ s
Used simplifier rules: unin: ⊦ ¬ a ∈ s → (a ∈ s ∪ s0 ↔ a ∈ s0);%una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1;%unc: ⊦ s ∪ s0 = s0 ∪ s;%size-zero: ⊦ # s ≠ 0 → s ≠ ∅; (forward) from specification set-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%l: ⊦ m + n < m + n0 ↔ n < n0; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2%Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; from specification set-basic