| ⊦ #(s0 ∪ s1) = # s0 + # s1 - #(s0 ∩ s1) |
∀ s0. #(s0 ∪ s) = # s0 + # s - #(s0 ∩ s) ⊦ #(s0 ∪ (s ++ a)) = # s0 + #(s ++ a) - #(s0 ∩ (s ++ a))
Used simplifier rules: une: ⊦ s ∪ ∅ = s;%una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1;%unc: ⊦ s ∪ s0 = s0 ∪ s;%int-e: ⊦ s ∩ ∅ = ∅;%int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1;%int-c: ⊦ s ∩ s0 = s0 ∩ s;%set generated by ∅, ++;;%Size-empty: ⊦ # ∅ = 0; from specification set-basic%add-base: ⊦ n + 0 = n; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%sub-base: ⊦ m - 0 = m; from specification nat