| (st[n, mkblock(x, lax, m)] \ (ns -- n))[n] = mkblock(x0, lax0, m0), n ∈ st[n, mkblock(x, lax, m)] \ (ns -- n) → inv-flashsize(x0, lax0) ∧ ¬ dups(lax0), ∀ 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) ⊦ n ∈ ns -- n, inv-flashsize(x, lax) ∧ ¬ dups(lax) |
∀ 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) ⊦ n ∈ st[n, mkblock(x0, lax0, m)] \ (ns -- n), inv-flashsize(x0, lax0) ∧ ¬ dups(lax0)
Used simplifier rules: ⊦ n ∈ ns -- n0 ↔ n ≠ n0 ∧ n ∈ ns; (s)%⊦ mkblock(x, lax, m) = mkblock(x0, lax0, m0) ↔ x = x0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ st[n, ablock][n] = ablock; (s)% ⊦ ¬ n ∈ ns → (st \ ns)[n] = st[n]; (s)