| st[n, mkblock(a ', @(m0, m1) ', m1)][n0] = mkblock(x, lax, m), n0 = n, 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 |
as | n = ∅, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ m = (∅ ++ @(n, m0, m)).size, n ∈ st
Used simplifier rules: restrict-add: ⊦ (as ++ @(m0, m1, m2)) | m0 = (as | m0) ++ @(m0, m1, m2);% ⊦ n ∈ st[n0, ablock] ↔ n = n0 ∨ n ∈ st; (ws)%⊦ mkblock(x, lax, m) = mkblock(x0, lax0, m0) ↔ x = x0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ st[n, ablock][n] = ablock; (s)