| a ∈ s, # s0 + # s < #((s ∪ s0) ++ a), ∀ s0. # s0 + # s < #(s0 ∪ s) → #(s0 ∪ s) = 0 ∨ s0 ∪ s = ∅ ⊦ #((s ∪ s0) ++ a) = 0 |
# s0 + # s < #(s ∪ s0), a ∈ s, ∀ s0. # s0 + # s < #(s0 ∪ s) → #(s0 ∪ s) = 0 ∨ s0 ∪ s = ∅ ⊦ s = ∅, s ∪ s0 = ∅, #(s ∪ s0) = 0, # s = 0
Used simplifier rules: uninsert: ⊦ a ∈ s → (s ∪ s0) ++ a = s ∪ s0;%una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1;%unc: ⊦ s ∪ s0 = s0 ∪ s;%size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic%size-zero: ⊦ # s ≠ 0 → s ≠ ∅; (forward) from specification set-basic%ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1