| # gndx = # lax, # gndx1 = # lax1, gndx0[pos(@(m1, m2), lax0)] = mkgnode(nd, m5, boolvar, boolvar0), gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)][m] = groupblock(gndx2, lax2, m4), gstore[n] = groupblock(gndx, lax, m0), m = n, gstore[m] ↓ = groupblock(gndx0, lax0, m3), n ∈ gstore, m ∈ gstore, @(m1, m2) ∈ lax0, m ∈ gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)] ⊦ m ∈ ginval, nd = nodes(gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)], ginval)[@(m, m1, m2)] ∧ @(m1, m2) ∈ lax2 |
# 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), @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n ∈ gstore ⊦ nd = nodes(gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)], ginval)[@(n, m1, m2)], n ∈ ginval
Used simplifier rules: down-block-explicit: ⊦ groupblock(gndx, lax, m0) ↓ = groupblock (prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0);% ⊦ ladr ∈ prefixn(n, lax) → ladr ∈ lax; (ss)%⊦ ladr ∈ prefixn(n, lax) → pos(ladr, prefixn(n, lax)) = pos(ladr, lax); (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ ladr ∈ lax + lax0 ↔ ladr ∈ lax ∨ ladr ∈ lax0; (s)% ⊦ n ∈ gstore[n, gblock]; (s)%⊦ groupblock(gndx, lax, m) = groupblock(gndx0, lax0, m0) ↔ gndx = gndx0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ gstore[n, gblock][n] = gblock; (s)