| # lax = # gndx2, # gndx0 = # lax1, gstore2[m1] = groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax1 + @(m2, m3) ' + lax, m), ri[nd.key] = @(m1, m2, m3), inv(groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax1 + @(m2, m3) ' + lax, m)), inv(gstore2 \ ginval), ri-cons(ri, nodes(gstore2 ↓, ginval)), m1 ∈ gstore2, nd.key ∈ ri ⊦ nd = nodes(gstore2 ↓, ginval)[@(m1, m2, m3)], m1 ∈ ginval |
⊦ adr ∈ nodes(gstore, ginval) → nodes(gstore, ginval)[adr] = gstore[adr].nd
# gndx0 = # lax1, # lax = # gndx2, ri[nd.key] = @(m1, m2, m3), gstore2[m1] = groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax1 + @(m2, m3) ' + lax, m), inv(gstore2 \ ginval), inv(groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax1 + @(m2, m3) ' + lax, m)), ri-cons(ri, nodes(gstore2 ↓, ginval)), nd.key ∈ ri, m1 ∈ gstore2, @(m1, m2, m3) ∈ nodes(gstore2 ↓, ginval) ⊦ nd = gstore2 ↓[@(m1, m2, m3)].nd, m1 ∈ ginval
Used simplifier rules: ⊦ ¬ adr ∈ fs → fs[adr] = (∅)[adr]; (s)% ⊦ key ∈ ri ∧ ri[key] = adr ∧ ri-cons(ri, fs) → adr ∈ fs; (ss) Used terms: @(m1, m2, m3), ginval, gstore2 ↓