| crash(gstore, gstore0, ginval, nx0) ↓[lnum] = groupblock(gndx, lax, m), gstore ↓[lnum] = groupblock(gndx0, lax0, m0), ginval ∩ elems nx1 = ∅, inv(gstore \ ginval), ∀ ginval, gstore, gstore0, nx0. elems nx1 ∩ ginval = ∅ ∧ inv(gstore \ ginval) → abs-log(nx1, crash(gstore, gstore0, ginval, nx0) ↓) = abs-log(nx1, gstore ↓) ⊦ lax.to-adr(lnum) + abs-log(nx1, crash(gstore, gstore0, ginval, nx0) ↓) = lax0.to-adr(lnum) + abs-log(nx1, gstore ↓), lnum ∈ gstore, lnum ∈ ginval |
⊦ ¬ n ∈ gstore → gstore[n] = (∅)[n]
gstore ↓[lnum] = groupblock(gndx0, lax0, m0), (∅)[lnum] = groupblock(gndx, lax, m), ginval ∩ elems nx1 = ∅, inv(gstore \ ginval), ∀ ginval, gstore, gstore0, nx0. elems nx1 ∩ ginval = ∅ ∧ inv(gstore \ ginval) → abs-log(nx1, crash(gstore, gstore0, ginval, nx0) ↓) = abs-log(nx1, gstore ↓) ⊦ lax.to-adr(lnum) + abs-log(nx1, crash(gstore, gstore0, ginval, nx0) ↓) = lax0.to-adr(lnum) + abs-log(nx1, gstore ↓), lnum ∈ ginval, lnum ∈ gstore, lnum ∈ crash(gstore, gstore0, ginval, nx0) ↓
Used simplifier rules: down-store-in: ⊦ n ∈ gstore ↓ ↔ n ∈ gstore;% ⊦ n ∈ crash(gstore, gstore0, ginval, nx) ↔ n ∈ gstore ∨ n ∈ ginval; (ws) Used terms: lnum, crash(gstore, gstore0, ginval, nx0) ↓