| adr ∈ as, adr ∈ st, as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size, ∀ adr. adr ∈ as → adr.size ≠ 0 ⊦ # as = 0, as = ∅, adr.lnum ∈ remove-refsize0(st) ∧ @(adr.pos, adr.size) ∈ remove-refsize0(st)[adr.lnum].ladrlist ∧ (nodes(st) | as)[adr] = remove-refsize0(st)[adr] |
adr = @(m, m0, m1), adr ∈ st, adr ∈ as, as ⊆ dom nodes(st), ∀ adr. adr ∈ as → adr.size ≠ 0, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅, m ∈ remove-refsize0(st) ∧ @(m0, m1) ∈ remove-refsize0(st)[m].ladrlist ∧ (nodes(st) | as)[adr] = remove-refsize0(st)[adr]
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: adr, m, m0, m1