| # gndx = # lax, gstore ↓ [n, groupblock (prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), gndx + mkgnode(nd, m3, boolvar, boolvar0) '), prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), m0) ] [@(n, m1, m2).lnum ] .gndlist [pos (@(@(n, m1, m2).pos, @(n, m1, m2).size), gstore ↓ [n, groupblock (prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), gndx + mkgnode(nd, m3, boolvar, boolvar0) '), prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), m0) ] [@(n, m1, m2).lnum ] .ladrlist) ] = mkgnode(nd1, m4, boolvar3, boolvar4), gstore[n] = groupblock(gndx, lax, n0), gstore ↓[@(n, m1, m2)] = mkgnode(nd0, m, boolvar1, boolvar2), @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n ∈ gstore, @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), @(n, m1, m2) ∈ gstore ↓ [n, groupblock (prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), gndx + mkgnode(nd, m3, boolvar, boolvar0) '), prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), m0) ], n0 ≤ m0 ⊦ nd0 = nd1, n ∈ ginval |
# gndx = # lax, gstore ↓[@(n, m1, m2)] = mkgnode(nd0, m, boolvar1, boolvar2), gstore[n] = groupblock(gndx, lax, n0), prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), gndx + mkgnode(nd, m3, boolvar, boolvar0) ')[pos(@(m1, m2), lax + ladr ')] = mkgnode(nd1, m4, boolvar3, boolvar4), n ∈ gstore, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), n0 ≤ m0 ⊦ nd0 = nd1, n ∈ ginval
Used simplifier rules: down-store-write-same: ⊦ @(n, n0, n1) ∈ gstore ↓[n, gblock] ↔ @(n0, n1) ∈ gblock.ladrlist;%⊦ ladr ∈ prefixn(n, lax) → pos(ladr, prefixn(n, lax)) = pos(ladr, lax); (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ @(m, m0, m1).size = m1; (s)% ⊦ @(m, m0, m1).pos = m0; (s)% ⊦ groupblock(gndx, lax, m).gndlist = gndx; (s)% ⊦ gstore[n, gblock][n] = gblock; (s)% ⊦ @(m, m0, m1).lnum = m; (s)