| as | n = ∅, n0 ∈ st[n, mkblock(a ', @(m0, m1) ', m1)], ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ st[n, mkblock(a ', @(m0, m1) ', m1)][n0].ref-size = ((as ++ @(n, m0, m1)) | n0).size, n ∈ st |
st[n, mkblock(a ', @(m0, m1) ', m1)][n0] = mkblock(x, lax, m), as | n = ∅, n0 ∈ st[n, mkblock(a ', @(m0, m1) ', m1)], ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ m = ((as ++ @(n, m0, m1)) | n0).size, n ∈ st
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st[n, mkblock(a ', @(m0, m1) ', m1)][n0], x, lax, m