| # 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 |
⊦ adr ∈ gstore → gstore[adr] = gstore[adr.lnum].gndlist[pos(@(adr.pos, adr.size), gstore[adr.lnum].ladrlist)]
# 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
Used simplifier rules: ⊦ @(m0, m1, m2) ∈ gstore ↓ ↔ m0 ∈ gstore ∧ @(m1, m2) ∈ gstore ↓[m0].ladrlist; (ws)% ⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓; (s)%⊦ groupblock(gndx, lax, m0) ↓ = groupblock (prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0); (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s) Used terms: @(m1, m2, m3), gstore2 ↓