| # gndx0 = # lax1, # lax = # gndx2, gstore2 ↓[@(m1, m2, m3)] = mkgnode(nd0, m4, boolvar1, boolvar2), 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)), key-cons(nd.key, nd0), @(m1, m2, m3) ∈ gstore2 ↓, nd.key ∈ ri, m1 ∈ gstore2 ⊦ nd = nd0, m1 ∈ ginval, @(m1, m2, m3).lnum ∈ ginval |
# gndx0 = # lax1, # lax = # gndx2, gstore2 ↓[@(m1, m2, m3)] = mkgnode(nd0, m4, boolvar1, boolvar2), 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)), key-cons(nd.key, nd0), nd.key ∈ ri, m1 ∈ gstore2, @(m2, m3) ∈ prefixn(valid-group-nodes(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2), lax1 + @(m2, m3) ' + lax) ⊦ nd = nd0, m1 ∈ ginval
Used simplifier rules: ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)%⊦ groupblock(gndx, lax, m0) ↓ = groupblock (prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0); (s)% ⊦ @(m, m0, m1).lnum = m; (s)% ⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓; (s)%⊦ @(m0, m1, m2) ∈ gstore ↓ ↔ m0 ∈ gstore ∧ @(m1, m2) ∈ gstore ↓[m0].ladrlist; (ws)