| crash(gstore, gstore0, ginval, nx0) ↓[lnum] = groupblock(gndx, lax, m), gstore[lnum] = groupblock(gndx0, lax0, m0), ginval ∩ elems nx1 = ∅, inv(gstore \ ginval), lnum ∈ gstore, ∀ 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) ↓) = prefixn(valid-group-nodes(gndx0), lax0).to-adr(lnum) + abs-log(nx1, gstore ↓), lnum ∈ ginval |
gstore[lnum] = groupblock(gndx0, lax0, m0), crash(gstore, gstore0, ginval, nx0) ↓[lnum] = groupblock(gndx, lax, m), ginval ∩ elems nx1 = ∅, inv(gstore \ ginval), inv(groupblock(gndx0, lax0, m0)), lnum ∈ gstore, ∀ 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) ↓) = prefixn(valid-group-nodes(gndx0), lax0).to-adr(lnum) + abs-log(nx1, gstore ↓), lnum ∈ ginval
Used simplifier rules: fwd-inv-gblock-rem: ⊦ inv(gstore \ ginval) ∧ n ∈ gstore ∧ ¬ n ∈ ginval ∧ gstore[n] = gblock → inv(gblock); (forward) from specification apersistence-base