| gstore[m] = groupblock(gndx, lax, m2), gstore ↓[@(m, m0, m1)] = mkgnode(nd0, m3, boolvar1, boolvar2), gndx0[pos(@(m0, m1), lax0)] = mkgnode(nd, m4, boolvar, boolvar0), crash(gstore, gstore0, ginval, nx)[m] ↓ = groupblock(gndx0, lax0, m5), inv(gstore \ ginval), inv(groupblock(gndx, lax, m2)), @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax), m ∈ gstore, @(m0, m1) ∈ lax0, m ∈ crash(gstore, gstore0, ginval, nx) ⊦ nd = nd0, m ∈ ginval |
gstore[m] = groupblock(gndx, lax, m2), gstore ↓[@(m, m0, m1)] = mkgnode(nd0, m3, boolvar1, boolvar2), prefixn(valid-group-nodes(gndx), gndx)[pos(@(m0, m1), lax)] = mkgnode(nd, m4, boolvar, boolvar0), inv(gstore \ ginval), inv(groupblock(gndx, lax, m2)), m ∈ gstore, @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax) ⊦ nd = nd0, m ∈ 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) → pos(ladr, prefixn(n, lax)) = pos(ladr, lax); (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ groupblock(gndx, lax, m).gndlist = gndx; (s)% ⊦ n ∈ crash(gstore, gstore0, ginval, nx) ↔ n ∈ gstore ∨ n ∈ ginval; (ws)%⊦ groupblock(gndx, lax, m) = groupblock(gndx0, lax0, m0) ↔ gndx = gndx0 ∧ lax = lax0 ∧ m = m0; (ws)%⊦ n ∈ crash(gstore, gstore0, ginval, nx) → crash(gstore, gstore0, ginval, nx)[n] = (n ∈ nx ∨ ¬ n ∈ ginval ⊃ groupblock (gstore[n].gndlist, gstore[n].ladrlist, (n ∈ gstore0 ⊃ gstore0[n].ref-size;0)) ;gstore0[n] ); (s)