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