| ∀ 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) |
ablock = mkblock(x, lax, m), ∀ 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(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: ablock, x, m, m0