| # x = # lax, st[n] = mkblock(x, lax, m0), inv-flashsize(x, lax), n ∈ st, adr ∈ st, adr ∈ st[n, mkblock(x + a ', lax + @(m, m2) ', m1)] ⊦ st[n, mkblock(x + a ', lax + @(m, m2) ', m1)][adr.lnum].list [pos(@(adr.pos, adr.size), st[n, mkblock(x + a ', lax + @(m, m2) ', m1)][adr.lnum].ladrlist) ] = st[adr], adr = @(n, m, m2), dups(lax), @(m, m2) ∈ lax |
# x = # lax, st[n] = mkblock(x, lax, m0), adr = @(m3, m4, m5), inv-flashsize(x, lax), adr ∈ st[n, mkblock(x + a ', lax + @(m, m2) ', m1)], adr ∈ st, n ∈ st ⊦ st[n, mkblock(x + a ', lax + @(m, m2) ', m1)][m3].list[pos(@(m4, m5), st[n, mkblock(x + a ', lax + @(m, m2) ', m1)][m3].ladrlist)] = st[adr], adr = @(n, m, m2), dups(lax), @(m, m2) ∈ lax
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: adr, m3, m4, m5