| gstore[m, groupblock([], [], m0)][m1] = groupblock(gndx, lax, m4), gstore[m1] = groupblock(gndx0, lax0, m5) ⊦ m ∈ gstore, ((m1 = m ∨ m1 ∈ gstore) ∧ @(m2, m3) ∈ lax ∧ (m1 = m ∨ ¬ m1 ∈ ginval) → m1 ∈ gstore ∧ @(m2, m3) ∈ lax0 ∧ ¬ m1 ∈ ginval) ∧ ( (m1 = m ∨ m1 ∈ gstore) ∧ @(m2, m3) ∈ lax ∧ (m1 = m ∨ ¬ m1 ∈ ginval) → nodes(gstore[m, groupblock([], [], m0)], ginval -- m)[@(m1, m2, m3)] = nodes(gstore, ginval)[@(m1, m2, m3)]) |
gstore[m1] = groupblock(gndx0, lax0, m5), gstore[m, groupblock([], [], m0)][m1] = groupblock(gndx, lax, m4) ⊦ m1 = m, m ∈ gstore, ((m1 = m ∨ m1 ∈ gstore) ∧ @(m2, m3) ∈ lax ∧ (m1 = m ∨ ¬ m1 ∈ ginval) → m1 ∈ gstore ∧ @(m2, m3) ∈ lax0 ∧ ¬ m1 ∈ ginval) ∧ ( (m1 = m ∨ m1 ∈ gstore) ∧ @(m2, m3) ∈ lax ∧ (m1 = m ∨ ¬ m1 ∈ ginval) → nodes(gstore[m, groupblock([], [], m0)], ginval -- m)[@(m1, m2, m3)] = nodes(gstore, ginval)[@(m1, m2, m3)])
Used simplifier rules: ⊦ gstore[n, gblock][n] = gblock; (s)%⊦ groupblock(gndx, lax, m) = groupblock(gndx0, lax0, m0) ↔ gndx = gndx0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ ¬ n ∈ gstore → gstore[n] = (∅)[n]; (s)% ⊦ ¬ ladr ∈ []; (s) Used formulas: m1 = m