| adr ∈ as0, ∀ adr0. adr0 = @(m, m0, m1) ∨ adr0 ∈ as0 → adr0.size = 0, ∀ as1. # as1 < #(as0 ++ @(m, m0, m1)) → true → (0 = as1.size ↔ (∀ adr. adr ∈ as1 → adr.size = 0)) ⊦ # as0 = 0, adr.size = 0, 0 = as0.size, 0 = as0.size + m1, as0 = ∅, @(m, m0, m1) ∈ as0 |
adr = @(m2, m3, m4), adr ∈ as0, ∀ adr0. adr0 = @(m, m0, m1) ∨ adr0 ∈ as0 → adr0.size = 0, ∀ as1. # as1 < #(as0 ++ @(m, m0, m1)) → true → (0 = as1.size ↔ (∀ adr. adr ∈ as1 → adr.size = 0)) ⊦ # as0 = 0, 0 = as0.size + m1, 0 = as0.size, as0 = ∅, m4 = 0, @(m, m0, m1) ∈ as0
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: adr, m2, m3, m4