| # gndx = # lax, gstore[n] = groupblock(gndx, lax, n0), n ∈ gstore, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), @(n, m1, m2) ∈ nodes(gstore ↓, ginval), n0 ≤ m0 ⊦ n ∈ ginval, gstore ↓[@(n, m1, m2)].nd = nodes (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) ], ginval) [@(n, m1, m2) ] ∧ @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr ') |
# gndx = # lax, gstore[n] = groupblock(gndx, lax, n0), n ∈ gstore, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n0 ≤ m0 ⊦ n ∈ ginval, gstore ↓[@(n, m1, m2)].nd = nodes (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) ], ginval) [@(n, m1, m2) ] ∧ @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr ')
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);%down-store-adr-in-explicit: ⊦ @(m0, m1, m2) ∈ gstore ↓ ↔ m0 ∈ gstore ∧ @(m1, m2) ∈ gstore ↓[m0].ladrlist;%down-store-at: ⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓;%down-block-explicit: ⊦ groupblock(gndx, lax, m0) ↓ = groupblock (prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0);% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ @(m, m0, m1).lnum = m; (s)