| # ax = # ndx, gstore[n, groupblock(gndx, lax, m)][m0] = groupblock(gndx0, lax0, m6), gstore[n] = groupblock(gndx, lax, m3), ax[n0] = @(m0, m1, m2), gstore[n, groupblock(gndx, lax, m)][@(m0, m1, m2)] = mkgnode(nd, m4, boolvar, boolvar0), gstore[@(m0, m1, m2)] = mkgnode(ndx[n0], m5, boolvar1, boolvar2), m0 = n, n0 < # ndx, @(m0, m1, m2) ∈ gstore, m0 ∈ gstore[n, groupblock(gndx, lax, m)] ⊦ ndx = [], m0 ∈ ginval, nd = ndx[n0] ∧ @(m1, m2) ∈ lax0 |
# ax = # ndx, gstore[n] = groupblock(gndx, lax0, m3), ax[n0] = @(n, m1, m2), gstore[n, groupblock(gndx, lax0, m)][@(n, m1, m2)] = mkgnode(nd, m4, boolvar, boolvar0), gstore[@(n, m1, m2)] = mkgnode(ndx[n0], m5, boolvar1, boolvar2), n0 < # ndx, @(n, m1, m2) ∈ gstore ⊦ nd = ndx[n0], ndx = [], n ∈ ginval
Used simplifier rules: ⊦ gstore[n] = groupblock(gndx, lax, m0) ∧ @(n, n0, n1) ∈ gstore → @(n0, n1) ∈ lax; (ss)% ⊦ n ∈ gstore[n, gblock]; (s)%⊦ groupblock(gndx, lax, m) = groupblock(gndx0, lax0, m0) ↔ gndx = gndx0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ gstore[n, gblock][n] = gblock; (s)