| inv(st) ⊦ inv(st[n, ablock]) ↔ inv(ablock) |
∀ n0. n0 ∈ st → # st[n0].list = # st[n0].ladrlist ∧ inv-flashsize(st[n0].list, st[n0].ladrlist) ∧ ¬ dups(st[n0].ladrlist) ⊦ (∀ n0. n0 ∈ st[n, ablock] → inv-flashsize(st[n, ablock][n0].list, st[n, ablock][n0].ladrlist) ∧ ¬ dups(st[n, ablock][n0].ladrlist)) ↔ inv-flashsize(ablock.list, ablock.ladrlist) ∧ ¬ dups(ablock.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);