| ∀ s0. (∀ a. ¬ a ∈ s1 ∨ ¬ a ∈ s0) → #(s1 ∪ s0) = # s1 + # s0, a ∈ s0 ∨ a ∈ s1, ∀ a0. a0 ≠ a ∧ ¬ a0 ∈ s1 ∨ ¬ a0 ∈ s0 ⊦ a ∈ s1, #(s0 ∪ s1) = #(s1 ++ a) + # s0 |
a ∈ s0, ∀ s0. (∀ a. ¬ a ∈ s1 ∨ ¬ a ∈ s0) → #(s1 ∪ s0) = # s1 + # s0, ∀ a0. a0 ≠ a ∧ ¬ a0 ∈ s1 ∨ ¬ a0 ∈ s0 ⊦ s0 = ∅, #(s0 ∪ s1) = (# s1 + 1) + # s0, # s0 = 0, a ∈ s1
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic%ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic%Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; from specification set-basic