| crash(gstore, gstore0, ginval, nx)[m0] = groupblock(gndx, lax, m), @(m0, m1, m2) ∈ crash(gstore, gstore0, ginval, nx) ⊦ gndx[pos(@(m1, m2), lax)] = gstore[@(m0, m1, m2)], m0 ∈ ginval |
⊦ adr ∈ gstore → gstore[adr] = gstore[adr.lnum].gndlist[pos(@(adr.pos, adr.size), gstore[adr.lnum].ladrlist)]
crash(gstore, gstore0, ginval, nx)[m0] = groupblock(gndx, lax, m), @(m0, m1, m2) ∈ crash(gstore, gstore0, ginval, nx), @(m0, m1, m2) ∈ gstore ⊦ gndx[pos(@(m1, m2), lax)] = gstore[@(m0, m1, m2).lnum].gndlist[pos(@(@(m0, m1, m2).pos, @(m0, m1, m2).size), gstore[@(m0, m1, m2).lnum].ladrlist)], m0 ∈ ginval
Used simplifier rules: in-crash-in-gstore: ⊦ @(m0, m1, m2) ∈ crash(gstore, gstore0, ginval, nx) ∧ ¬ m0 ∈ ginval → @(m0, m1, m2) ∈ gstore; Used terms: @(m0, m1, m2), gstore