| gstore[m] = groupblock(gndx, lax, m2), crash(gstore, gstore0, ginval, nx) ↓[@(m, m0, m1)] = mkgnode(nd, m4, boolvar, boolvar0), inv(groupblock(gndx, lax, m2)), inv(gstore \ ginval), @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax), m ∈ gstore, @(m, m0, m1) ∈ nodes(gstore ↓, ginval) ⊦ nd = gstore ↓[@(m, m0, m1)].nd, m ∈ ginval |
gstore[m] = groupblock(gndx, lax, m2), crash(gstore, gstore0, ginval, nx) ↓[@(m, m0, m1)] = mkgnode(nd, m4, boolvar, boolvar0), inv(groupblock(gndx, lax, m2)), inv(gstore \ ginval), m ∈ gstore, @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax) ⊦ nd = gstore ↓[@(m, m0, m1)].nd, m ∈ ginval
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);%down-store-adr-in-explicit: ⊦ @(m0, m1, m2) ∈ gstore ↓ ↔ m0 ∈ gstore ∧ @(m1, m2) ∈ gstore ↓[m0].ladrlist;%down-store-at: ⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓;%down-block-explicit: ⊦ groupblock(gndx, lax, m0) ↓ = groupblock (prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0);% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ @(m, m0, m1).lnum = m; (s)