| gstore ↓[@(m, m2, m3)] = mkgnode(nd0, m4, boolvar1, boolvar2), gstore ↓[m, groupblock(prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0)][@(m, m2, m3).lnum].gndlist [pos (@(@(m, m2, m3).pos, @(m, m2, m3).size), gstore ↓[m, groupblock(prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0)][@(m, m2, m3).lnum].ladrlist) ] = mkgnode(nd, m1, boolvar, boolvar0), gstore[m] = groupblock(gndx, lax, n0), m ∈ gstore, @(m2, m3) ∈ prefixn(valid-group-nodes(gndx), lax), @(m, m2, m3) ∈ gstore ↓[m, groupblock(prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0)], valid-group-nodes(gndx) ≤ n0, n0 ≤ m0, valid-group-nodes(gndx) ≤ m0 ⊦ nd = nd0, m ∈ ginval |
gstore ↓[@(m, m2, m3)] = mkgnode(nd0, m4, boolvar1, boolvar2), gstore[m] = groupblock(gndx, lax, n0), prefixn(valid-group-nodes(gndx), gndx)[pos(@(m2, m3), lax)] = mkgnode(nd, m1, boolvar, boolvar0), m ∈ gstore, @(m2, m3) ∈ prefixn(valid-group-nodes(gndx), lax), valid-group-nodes(gndx) ≤ m0, n0 ≤ m0, valid-group-nodes(gndx) ≤ n0 ⊦ nd = nd0, m ∈ 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)