| inv(st) ⊦ dom remove-refsize0(st) ⊆ dom st ∧ (∀ n. n ∈ remove-refsize0(st) ∧ n ∈ st → remove-refsize0(st)[n].list ⊑ st[n].list ∧ remove-refsize0(st)[n].ladrlist ⊑ st[n].ladrlist ∧ # remove-refsize0(st)[n].list = # remove-refsize0(st)[n].ladrlist ∧ # st[n].list = # st[n].ladrlist) |
n ∈ st, ∀ n. n ∈ st → # st[n].list = # st[n].ladrlist ∧ inv-flashsize(st[n].list, st[n].ladrlist) ∧ ¬ dups(st[n].ladrlist) ⊦ # st[n].list = # st[n].ladrlist, st[n].ref-size = 0
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);%dom-remove-refsize0: ⊦ dom remove-refsize0(st) ⊆ dom st;%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];% ⊦ lax ⊑ lax; (s)% ⊦ x ⊑ x; (s)