| gstore[nx.last] = groupblock(gndx0, lax0, m), remove-refsize0(gstore0) = gstore0, elems nx ∩ ginval1 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval1, inv(groupblock(gndx0, lax0, m)), inv(gstore0), inv(gstore \ ginval1), ri-inj(fi1), ri-inj(fi2), nx.last ∈ gstore[nx.last, gstore[nx.last].gndlist:= gndx0], nx.last ∈ gstore ⊦ ⟨syn := ?⟩ ( syn ∧ crash(gstore, gstore0, ginval1, nx) = crash (gstore[nx.last, gstore[nx.last].gndlist:= gndx0] [nx.last, gstore[nx.last, gstore[nx.last].gndlist:= gndx0][nx.last].ladrlist:= gstore[nx.last, gstore[nx.last].gndlist:= gndx0][nx.last].ladrlist ], gstore0, ginval1, nx)), nx = [], dups(nx) |
Used simplifier rules: ⊦ n ∈ gstore[n, gblock]; (s)% ⊦ gstore[n, gblock][n] = gblock; (s)% ⊦ (gblock.gndlist:= gndx).ladrlist = gblock.ladrlist; (s)% ⊦ gstore[n, gblock][n, gblock0] = gstore[n, gblock0]; (s)%⊦ groupblock(gndx, lax, m).gndlist:= gndx0 = groupblock(gndx0, lax, m); (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)%⊦ groupblock(gndx, lax, m).ladrlist:= lax0 = groupblock(gndx, lax0, m); (s)% ⊦ gstore[n] = gblock ∧ n ∈ gstore → gstore[n, gblock] = gstore; (s)