| # lax = # gndx, # lax1 = # gndx1, gstore[n, groupblock(gndx + gndx1, lax + lax1, m0)][@(m1, m2, m3)] = mkgnode(nd, m4, boolvar, boolvar0), gstore[n] = groupblock(gndx, lax, m), transaction(ndx, gndx1), n ∈ gstore, @(m1, m2, m3) ∈ gstore ∨ m1 = n ∧ @(m2, m3) ∈ lax1 ⊦ m1 = n, nd = nodes(gstore, ginval)[lax1.to-adr(n), ndx][@(m1, m2, m3)], dups(lax + lax1), dups(lax), dups(lax1), m1 ∈ ginval, n ∈ ginval |
# lax1 = # gndx1, # lax = # gndx, gstore[n] = groupblock(gndx, lax, m), gstore[@(m1, m2, m3)] = mkgnode(nd, m4, boolvar, boolvar0), transaction(ndx, gndx1), n ∈ gstore, @(m1, m2, m3) ∈ gstore ⊦ m1 = n, nd = nodes(gstore, ginval)[lax1.to-adr(n), ndx][@(m1, m2, m3)], dups(lax1), dups(lax), dups(lax + lax1), n ∈ ginval, m1 ∈ ginval
Used simplifier rules: a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]%# gndx = # lax1, # gndx0 = # lax, gstore[n].gndlist = gndx0, gstore[n].ladrlist = lax ⊦ n ∈ gstore ∧ adr ∈ gstore ∧ ¬ dups(lax + lax1) → gstore[n, groupblock(gndx0 + gndx, lax + lax1, m)][adr] = gstore[adr]; (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ groupblock(gndx, lax, m).gndlist = gndx; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]