| n0 < # asar, n < # asar, disj(asar, 0, # asar) ⊦ (∀ adr. adr ∈ asar[n] → adr ∈ (union(asar, 0, # asar) \ asar[n0]) ∪ as) ↔ n ≠ n0 ∨ (∀ adr. adr ∈ asar[n0] → adr ∈ as) |
n0 < # asar, n < # asar, disj(asar, 0, # asar), adr ∈ asar[n], n ≠ n0 ∨ (∀ adr. adr ∈ asar[n0] → adr ∈ as) ⊦ # asar[n] = 0, asar[n] = ∅, adr ∈ as, adr ∈ union(asar, 0, # asar) \ asar[n0]
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]% ⊦ adr ∈ as ∪ as0 ↔ ¬(¬ adr ∈ as ∧ ¬ adr ∈ as0); (ss)%unc: ⊦ as ∪ as0 = as0 ∪ as; from specification set-union[address-list-set]%una: ⊦ (as ∪ as0) ∪ as1 = as ∪ as0 ∪ as1; from specification set-union[address-list-set]% ⊦ adr ∈ as → (adr ∈ (as0 \ as) ∪ as1 ↔ adr ∈ as1); (s)