| n ∈ st[n, mkblock(x, lax, m)] \ (ns -- n) → inv-flashsize((st[n, mkblock(x, lax, m)] \ (ns -- n))[n].list, (st[n, mkblock(x, lax, m)] \ (ns -- n))[n].ladrlist) ∧ ¬ dups((st[n, mkblock(x, lax, m)] \ (ns -- n))[n].ladrlist), ∀ 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) ⊦ inv-flashsize(x, lax) ∧ ¬ dups(lax) |
(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) ⊦ inv-flashsize(x, lax) ∧ ¬ dups(lax)
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: (st[n, mkblock(x, lax, m)] \ (ns -- n))[n], x0, lax0, m0