| @(m, m0, m1) ∈ as, @(m, m0, m1) ∈ st, 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)[@(m, m0, m1)] = remove-refsize0(st)[@(m, m0, m1)] |
remove-refsize0(st)[m] = mkblock(x, lax, m2), @(m, m0, m1) ∈ st, @(m, m0, m1) ∈ as, as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size, ∀ adr. adr ∈ as → adr.size ≠ 0 ⊦ # as = 0, as = ∅, m ∈ remove-refsize0(st) ∧ @(m0, m1) ∈ lax ∧ (nodes(st) | as)[@(m, m0, m1)] = remove-refsize0(st)[@(m, m0, m1)]
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: remove-refsize0(st)[m], x, lax, m2