| 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 = ∅ |
(∅)[m] = mkblock(x, lax, m2), st[m] = mkblock(x0, lax0, m3), m3 = 0, inv(st), m ∈ st, @(m, m0, m1) ∈ as, @(m, m0, m1) ∈ st, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st[m], x0, lax0, m3