| # x1 = # lax1, # st[n].list = # st[n].ladrlist, n ∈ st, adr.lnum ∈ st, @(adr.pos, adr.size) ∈ st[adr.lnum].ladrlist ⊦ st[n, mkblock(st[n].list + x1, st[n].ladrlist + lax1, m)][adr] = st[adr.lnum].list[pos(@(adr.pos, adr.size), st[adr.lnum].ladrlist)], dups(st[n].ladrlist + lax1), dups(st[n].ladrlist), dups(lax1) |
# st[n].list = # st[n].ladrlist, # x1 = # lax1, adr = @(m0, m1, m2), @(m1, m2) ∈ st[m0].ladrlist, m0 ∈ st, n ∈ st ⊦ st[n, mkblock(st[n].list + x1, st[n].ladrlist + lax1, m)][adr] = st[m0].list[pos(@(m1, m2), st[m0].ladrlist)], dups(lax1), dups(st[n].ladrlist), dups(st[n].ladrlist + lax1)
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: adr, m2, m3, m4