| st[m] = mkblock(x, lax, m2), remove-refsize0(st)[m] = mkblock(x0, lax0, m3), @(m, m0, m1) ∈ st, @(m, m0, m1) ∈ as, m ∈ st, @(m, m0, m1) ∈ remove-refsize0(st), as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size, ∀ adr. adr ∈ as → adr.size ≠ 0 ⊦ # as = 0, st[@(m, m0, m1)] = x0[pos(@(m0, m1), lax0)], as = ∅, m2 = 0 |
⊦ n ∈ st ∧ st[n].ref-size ≠ 0 → remove-refsize0(st)[n] = st[n]
st[m] = mkblock(x0, lax0, m3), st[m] = mkblock(x, lax, m2), @(m, m0, m1) ∈ remove-refsize0(st), @(m, m0, m1) ∈ as, @(m, m0, m1) ∈ st, m ∈ st, as ⊆ dom nodes(st), ∀ adr. adr ∈ as → adr.size ≠ 0, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, st[m].ref-size = 0, st[@(m, m0, m1)] = x0[pos(@(m0, m1), lax0)], as = ∅, m2 = 0
Used simplifier rules: ⊦ mkblock(x, lax, m).ref-size = m; (s) Used terms: m, st