| # x = # lax, st[n] = mkblock(x, lax, m0), inv-flashsize(x, lax), adr ∈ st, n ∈ st ⊦ nodes(st[n, mkblock(x + a ', lax + @(m, m2) ', m1)])[adr] = st[adr], adr = @(n, m, m2), dups(lax), @(m, m2) ∈ lax |
# 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)] ⊦ nodes(st[n, mkblock(x + a ', lax + @(m, m2) ', m1)])[adr] = st[adr], adr = @(n, m, m2), dups(lax), @(m, m2) ∈ lax
Used simplifier rules: ⊦ # a ' = 0 +1; (s)% ⊦ # ladr ' = 0 +1; (s)% ⊦ mkblock(x, lax, m).list = x; (s)% ⊦ mkblock(x, lax, m).ladrlist = lax; (s)%# x1 = # lax1, # x = # lax, st[n].list = x, st[n].ladrlist = lax ⊦ n ∈ st → ( adr ∈ st[n, mkblock(x + x1, lax + lax1, m)] ↔ adr ∈ st ∨ adr ∈ lax1.to-adr(n)); (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]%a: ⊦ (x + y) + z = x + y + z; from specification list Used formulas: adr ∈ st[n, mkblock(x + a ', lax + @(m, m2) ', m1)]