| # gndx1 = # lax1, gstore[n] = groupblock(gndx0 + mkgnode(nd, m, boolvar, boolvar0) ' + gndx1, lax0 + @(n0, n1) ' + lax1, m0), ri[key] = @(n, n0, n1), inv(groupblock(gndx0 + mkgnode(nd, m, boolvar, boolvar0) ' + gndx1, lax0 + @(n0, n1) ' + lax1, m0)), key ∈ ri, ∀ key. key ∈ ri → ri[key] ∈ nodes(gstore ↓, ginval) ∧ key-cons(key, nodes(gstore ↓, ginval)[ri[key]]) ⊦ nd.key ∈ ri ∧ ri[nd.key] = @(n, n0, n1) |
# gndx1 = # lax1, ri[key] = @(n, n0, n1), gstore[n] = groupblock(gndx0 + mkgnode(nd, m, boolvar, boolvar0) ' + gndx1, lax0 + @(n0, n1) ' + lax1, m0), inv(groupblock(gndx0 + mkgnode(nd, m, boolvar, boolvar0) ' + gndx1, lax0 + @(n0, n1) ' + lax1, m0)), key ∈ ri, ∀ key0. key0 ∈ ri → ri[key0] ∈ gstore ↓ ∧ ¬ ri[key0].lnum ∈ ginval ∧ key-cons(key0, nodes(gstore ↓, ginval)[ri[key0]]) ⊦ nd.key ∈ ri ∧ ri[nd.key] = @(n, n0, n1)
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);