| inv(st \ ns) ⊦ inv(st \ (ns ++ n)) |
n0 ∈ st, ∀ n0. n0 ∈ st \ ns → # (st \ ns)[n0].list = # (st \ ns)[n0].ladrlist ∧ inv-flashsize((st \ ns)[n0].list, (st \ ns)[n0].ladrlist) ∧ ¬ dups((st \ ns)[n0].ladrlist) ⊦ n0 = n, n0 ∈ ns, inv-flashsize(st[n0].list, st[n0].ladrlist) ∧ ¬ dups(st[n0].ladrlist)
Used simplifier rules: inv-store: ⊦ inv(st) ↔ (∀ n. n ∈ st → inv(st[n]));%inv-block: ⊦ inv(ablock) ↔ # ablock.list = # ablock.ladrlist ∧ inv-flashsize(ablock.list, ablock.ladrlist) ∧ ¬ dups(ablock.ladrlist);%inv-flashsize-size: ⊦ inv-flashsize(x, lax) → (# x = # lax ↔ true);% ⊦ n ≠ n0 ∧ ¬ n0 ∈ ns → (st \ (ns ++ n))[n0] = st[n0]; (s)% ⊦ n ∈ ns ++ n0 ↔ n = n0 ∨ n ∈ ns; (s)% ⊦ n ∈ st \ ns ↔ n ∈ st ∧ ¬ n ∈ ns; (ws)