| ¬ ¬ a ∈ s0 ∪ s1, ∀ s0. (∀ a. ¬ a ∈ s1 ∨ ¬ a ∈ s0) → #(s1 ∪ s0) = # s1 + # s0, ∀ a0. ¬ a0 ∈ s1 ++ a ∨ ¬ a0 ∈ s0 ⊦ #((s0 ∪ s1) ++ a) = #(s1 ++ a) + # s0 |
∀ s0. (∀ a. ¬ a ∈ s1 ∨ ¬ a ∈ s0) → #(s1 ∪ s0) = # s1 + # s0, a ∈ s0 ∨ a ∈ s1, ∀ a0. a0 ≠ a ∧ ¬ a0 ∈ s1 ∨ ¬ a0 ∈ s0 ⊦ #(s0 ∪ s1) = #(s1 ++ a) + # s0
Used simplifier rules: unrax: ⊦ a ∈ s ∪ s0 ↔ ¬ ¬(a ∈ s ∨ a ∈ s0);%una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1;%unc: ⊦ s ∪ s0 = s0 ∪ s;%rax: ⊦ a ∈ s ++ b ↔ ¬ ¬(a = b ∨ a ∈ s); from specification set-basic%eq: ⊦ a ∈ s → s ++ a = s; from specification set-basic