| # gndx = # lax, # gndx1 = # lax1, gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)][@(n, m1, m2).lnum].gndlist [pos(@(@(n, m1, m2).pos, @(n, m1, m2).size), gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)][@(n, m1, m2).lnum].ladrlist) ] = mkgnode(nd0, m, boolvar1, boolvar2), prefixn(valid-group-nodes(gndx), gndx)[pos(@(m1, m2), lax)] = mkgnode(nd, m5, boolvar, boolvar0), gstore[n] = groupblock(gndx, lax, m0), n ∈ gstore, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), @(m1, m2) ∈ lax, @(n, m1, m2) ∈ gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)] ⊦ nd = nd0, n ∈ ginval |
# gndx1 = # lax1, # gndx = # lax, gstore[n] = groupblock(gndx, lax, m0), prefixn(valid-group-nodes(gndx), gndx)[pos(@(m1, m2), lax)] = mkgnode(nd, m5, boolvar, boolvar0), (gndx + gndx1)[pos(@(m1, m2), lax)] = mkgnode(nd0, m, boolvar1, boolvar2), @(m1, m2) ∈ lax, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n ∈ gstore ⊦ nd = nd0, n ∈ ginval
Used simplifier rules: down-store-write-same: ⊦ @(n, n0, n1) ∈ gstore ↓[n, gblock] ↔ @(n0, n1) ∈ gblock.ladrlist;% ⊦ ladr ∈ lax → ladr ∈ lax + lax0; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ ladr ∈ lax → pos(ladr, lax + lax0) = 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)