| st[n, mkblock([], [], m)][m0] = mkblock(x, lax, m3) ⊦ n ∈ st, ((m0 = n ∨ m0 ∈ st) ∧ @(m1, m2) ∈ lax → @(m0, m1, m2) ∈ st) ∧ ((m0 = n ∨ m0 ∈ st) ∧ @(m1, m2) ∈ lax → st[n, mkblock([], [], m)][@(m0, m1, m2)] = nodes(st)[@(m0, m1, m2)]) |
⊦ n ≠ n0 → st[n0, ablock][n] = st[n]
st[m0] = mkblock(x, lax, m3) ⊦ m0 = n, n ∈ st, ((m0 = n ∨ m0 ∈ st) ∧ @(m1, m2) ∈ lax → @(m0, m1, m2) ∈ st) ∧ ((m0 = n ∨ m0 ∈ st) ∧ @(m1, m2) ∈ lax → st[n, mkblock([], [], m)][@(m0, m1, m2)] = nodes(st)[@(m0, m1, m2)])
Used simplifier rules: ⊦ st[n, ablock][n] = ablock; (s)%⊦ mkblock(x, lax, m) = mkblock(x0, lax0, m0) ↔ x = x0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ ¬ n ∈ st → ¬ @(n, n0, n1) ∈ st; (s)% ⊦ ¬ ladr ∈ []; (s) Used terms: m0, mkblock([], [], m), n, st