| dom remove-refsize0(st) ∩ ns = ∅, inv(st \ ns) ⊦ inv(remove-refsize0(st)) |
dom remove-refsize0(st) ∩ ns = ∅, n ∈ st, ∀ n. n ∈ st \ ns → # (st \ ns)[n].list = # (st \ ns)[n].ladrlist ∧ inv-flashsize((st \ ns)[n].list, (st \ ns)[n].ladrlist) ∧ ¬ dups((st \ ns)[n].ladrlist) ⊦ st[n].ref-size = 0, inv-flashsize(st[n].list, st[n].ladrlist) ∧ ¬ dups(st[n].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);%in-remove-refsize0: ⊦ n ∈ remove-refsize0(st) ↔ n ∈ st ∧ st[n].ref-size ≠ 0;%at-remove-refsize0: ⊦ n ∈ st ∧ st[n].ref-size ≠ 0 → remove-refsize0(st)[n] = st[n];