| 0 = as0.size, m1 = 0, ∀ adr. adr ∈ as0 → adr.size = 0, ∀ as1. # as1 < #(as0 ++ @(m, m0, m1)) → true → (0 = as1.size ↔ (∀ adr. adr ∈ as1 → adr.size = 0)) ⊦ @(m, m0, m1) ∈ as0, ∀ adr0. adr0 = @(m, m0, m1) ∨ adr0 ∈ as0 → adr0.size = 0 |
0 = as0.size, adr ∈ as0, ∀ adr. adr ∈ as0 → adr.size = 0, ∀ as1. # as1 < #(as0 ++ @(m, m0, 0)) → true → (0 = as1.size ↔ (∀ adr. adr ∈ as1 → adr.size = 0)) ⊦ # as0 = 0, adr.size = 0, as0 = ∅, @(m, m0, 0) ∈ as0
Used simplifier rules: size-zero-01: ⊦ as ≠ ∅ → # as ≠ 0; (forward) from specification set-basic[address-store]%ne-01: ⊦ adr ∈ as → as ≠ ∅; (forward) from specification set-basic[address-store]% ⊦ @(m, m0, m1).size = m1; (s)