| st[m] = mkblock(x, lax, m2), @(m0, m1) ∈ lax, m ∈ st ⊦ (st -- n)[@(m, m0, m1)] = x[pos(@(m0, m1), lax)], n = m |
⊦ adr ∈ st → st[adr] = st[adr.lnum].list[pos(@(adr.pos, adr.size), st[adr.lnum].ladrlist)]
st[m] = mkblock(x, lax, m2), m ∈ st, @(m0, m1) ∈ lax ⊦ (st -- n)[@(m, m0, m1)] = x[pos(@(m0, m1), lax)], n = m, @(m, m0, m1) ∈ st -- n
Used simplifier rules: in-dealloc: ⊦ adr ∈ st -- n ↔ adr ∈ st ∧ adr.lnum ≠ n;%in: ⊦ adr ∈ st ↔ adr.lnum ∈ st ∧ @(adr.pos, adr.size) ∈ st[adr.lnum].ladrlist;% ⊦ @(m, m0, m1).lnum = m; (s)% ⊦ n ≠ n0 → (st -- n0)[n] = st[n]; (s)% ⊦ @(m, m0, m1).pos = m0; (s)% ⊦ @(m, m0, m1).size = m1; (s)% ⊦ mkblock(x, lax, m).list = x; (s)% ⊦ mkblock(x, lax, m).ladrlist = lax; (s) Used terms: @(m, m0, m1), st -- n