| st[n, mkblock(a ', @(m, m0) ', m1)][m2] = mkblock(x, lax, m5) ⊦ @(m2, m3, m4) = @(n, m, m0), n ∈ st, (m2 ∈ st[n, mkblock(a ', @(m, m0) ', m1)] ∧ @(m3, m4) ∈ lax → @(m2, m3, m4) ∈ st) ∧ (m2 ∈ st[n, mkblock(a ', @(m, m0) ', m1)] ∧ @(m3, m4) ∈ lax → st[n, mkblock(a ', @(m, m0) ', m1)][@(m2, m3, m4)] = nodes(st)[@(m2, m3, m4)]) |
st[n, mkblock(a ', @(m, m0) ', m1)][m2] = mkblock(x, lax, m5) ⊦ @(m2, m3, m4) = @(n, m, m0), m2 = n, n ∈ st, (m2 ∈ st[n, mkblock(a ', @(m, m0) ', m1)] ∧ @(m3, m4) ∈ lax → @(m2, m3, m4) ∈ st) ∧ (m2 ∈ st[n, mkblock(a ', @(m, m0) ', m1)] ∧ @(m3, m4) ∈ lax → st[n, mkblock(a ', @(m, m0) ', m1)][@(m2, m3, m4)] = nodes(st)[@(m2, m3, m4)])
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[n0, ablock] ↔ n = n0 ∨ n ∈ st; (ws)% ⊦ ¬ n ∈ st → ¬ @(n, n0, n1) ∈ st; (s)% ⊦ ladr ∈ ladr0 ' ↔ ladr = ladr0; (s)% ⊦ @(m, m0) = @(m1, m2) ↔ m = m1 ∧ m0 = m2; (ws) Used formulas: m2 = n