| remove-refsize0(st)[m] = mkblock(x, lax, m2), inv(st), @(m, m0, m1) ∈ st, @(m, m0, m1) ∈ as, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅, m ∈ remove-refsize0(st) ∧ @(m0, m1) ∈ lax, m ∈ st ∧ st[m].ref-size ≠ 0 |
st[m].ref-size = 0, (∅)[m] = mkblock(x, lax, m2), inv(st), @(m, m0, m1) ∈ st, @(m, m0, m1) ∈ as, m ∈ st, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅
Used simplifier rules: ⊦ ¬ n ∈ st → ¬ @(n, n0, n1) ∈ st; (s)% ⊦ ¬ n ∈ st → st[n] = (∅)[n]; (s)% ⊦ n ∈ remove-refsize0(st) ↔ n ∈ st ∧ st[n].ref-size ≠ 0; (ws)