| ∀ s0. # s0 + # s < #(s0 ∪ s) → #(s0 ∪ s) = 0 ∨ s0 ∪ s = ∅, # s0 + #(s ++ a) < #(s0 ∪ (s ++ a)) ⊦ #(s0 ∪ (s ++ a)) = 0, s0 ∪ (s ++ a) = ∅ |
# s0 + #(s ++ a) < #((s ∪ s0) ++ a), ∀ s0. # s0 + # s < #(s0 ∪ s) → #(s0 ∪ s) = 0 ∨ s0 ∪ s = ∅ ⊦ #((s ∪ s0) ++ a) = 0
Used simplifier rules: unadd: ⊦ (s ++ a) ∪ s0 = (s ∪ s0) ++ a;%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%ne: ⊦ ∅ ≠ s ++ a; from specification set-basic