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