| st[n] = mkblock(x, lax, m0), inv(mkblock(x, lax, m0)), n ∈ st ⊦ @(m, m2) ∈ lax, (adr ∈ st ∨ adr = @(n, m, m2) → adr ∈ nodes(st)[@(n, m, m2), a]) ∧ (adr ∈ st ∨ adr = @(n, m, m2) → nodes(st[n, mkblock(x + a ', lax + @(m, m2) ', m1)])[adr] = nodes(st)[@(n, m, m2), a][adr]) |
⊦ inv(ablock) ↔ # ablock.list = # ablock.ladrlist ∧ inv-flashsize(ablock.list, ablock.ladrlist) ∧ ¬ dups(ablock.ladrlist)
# mkblock(x, lax, m0).list = # mkblock(x, lax, m0).ladrlist, st[n] = mkblock(x, lax, m0), inv-flashsize(mkblock(x, lax, m0).list, mkblock(x, lax, m0).ladrlist), n ∈ st ⊦ dups(mkblock(x, lax, m0).ladrlist), @(m, m2) ∈ lax, (adr ∈ st ∨ adr = @(n, m, m2) → adr ∈ nodes(st)[@(n, m, m2), a]) ∧ (adr ∈ st ∨ adr = @(n, m, m2) → nodes(st[n, mkblock(x + a ', lax + @(m, m2) ', m1)])[adr] = nodes(st)[@(n, m, m2), a][adr])
Used terms: mkblock(x, lax, m0)