| n1 < # asar, n0 < # asar, n1 < m, n0 < m, disj(asar, 0, m), m ≤ # asar ⊦ adr ∈ (asar[n0] ∪ as) \ asar[n1] ↔ adr ∈ asar[n0] ∪ (as \ asar[n1]), n0 = n1, adr ∈ (asar[n0] ∪ as) \ asar[n1] |
n1 < # asar, n0 < # asar, n1 < m, n0 < m, disj(asar, 0, m), adr ∈ asar[n0] ∪ (as \ asar[n1]), m ≤ # asar ⊦ #(asar[n0] ∪ (as \ asar[n1])) = 0, n0 = n1, asar[n0] ∪ (as \ asar[n1]) = ∅, adr ∈ (asar[n0] ∪ as) \ asar[n1]
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]