| adr ∈ asar[n + m0] ∪ union(asar, n, m0) ⊦ #(asar[n + m0] ∪ union(asar, n, m0)) = 0, asar[n + m0] ∪ union(asar, n, m0) = ∅, adr ∈ union(asar, n, m0), ∃ n0. n ≤ n0 ∧ ¬ n + m0 < n0 ∧ adr ∈ asar[n0], ∃ n0. n ≤ n0 ∧ n0 < n + m0 ∧ adr ∈ asar[n0] |
adr ∈ asar[n + m0] ⊦ #(asar[n + m0] ∪ union(asar, n, m0)) = 0, # asar[n + m0] = 0, asar[n + m0] = ∅, asar[n + m0] ∪ union(asar, n, m0) = ∅, adr ∈ union(asar, n, m0), ∃ n0. n ≤ n0 ∧ ¬ n + m0 < n0 ∧ adr ∈ asar[n0], ∃ n0. n ≤ n0 ∧ n0 < n + m0 ∧ adr ∈ 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]%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 ∈ as ∪ as0 ↔ adr ∈ as0); (s)