| # gndx = # lax, # gndx1 = # lax1, 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), @(n, m1, m2) ∈ nodes(gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)], ginval) ⊦ nd = gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)][@(n, m1, m2)].nd, n ∈ ginval |
# gndx = # lax, # gndx1 = # lax1, 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 ⊦ nd = gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)][@(n, m1, m2)].nd, n ∈ ginval
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);%down-store-write-same: ⊦ @(n, n0, n1) ∈ gstore ↓[n, gblock] ↔ @(n0, n1) ∈ gblock.ladrlist;% ⊦ ¬ ladr ∈ lax → ¬ ladr ∈ prefixn(n, lax); (s)% ⊦ ¬ ladr ∈ lax → pos(ladr, lax) = # lax; (s)% ⊦ @(m, m0, m1).lnum = m; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ ladr ∈ lax + lax0 ↔ ladr ∈ lax ∨ ladr ∈ lax0; (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)