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