| as ∩ union(asar, 0, m) = ∅, n < # asar, n < m, m ≤ # asar ⊦ #(as ∩ asar[n]) = 0, ∀ adr. adr ∈ as ∩ asar[n] ↔ adr ∈ ∅ |
as ∩ union(asar, 0, m) = ∅, n < # asar, n < m, adr ∈ asar[n], adr ∈ as, m ≤ # asar ⊦ #(as ∩ asar[n]) = 0, # asar[n] = 0, # as = 0, asar[n] = ∅, as = ∅
Used simplifier rules: size-zero-01: ⊦ as ≠ ∅ → # as ≠ 0; (forward) from specification set-basic[address-list-set]%ne-01: ⊦ adr ∈ as → as ≠ ∅; (forward) from specification set-basic[address-list-set]%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[address-list-set]%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[address-list-set]% ⊦ adr ∈ as ∩ as0 ↔ adr ∈ as ∧ adr ∈ as0; (ws)% ⊦ ¬ adr ∈ ∅; (s)