| elems(lnum + nx1) ∩ ginval = ∅, 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 ↓) ⊦ abs-log(lnum + nx1, crash(gstore, gstore0, ginval, nx0) ↓) = abs-log(lnum + nx1, gstore ↓) |
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 ↓) ⊦ crash(gstore, gstore0, ginval, nx0) ↓[lnum].ladrlist.to-adr(lnum) + abs-log(nx1, crash(gstore, gstore0, ginval, nx0) ↓) = gstore ↓[lnum].ladrlist.to-adr(lnum) + abs-log(nx1, gstore ↓), lnum ∈ ginval
Used simplifier rules: abs-log-rec: ⊦ abs-log(n ' + nx, gstore) = gstore[n].ladrlist.to-adr(n) + abs-log(nx, gstore);%int-c: ⊦ ns ∩ ns0 = ns0 ∩ ns; from specification set-union[nat-set]%int-a: ⊦ (ns ∩ ns0) ∩ ns1 = ns ∩ ns0 ∩ ns1; from specification set-union[nat-set]% ⊦ ns ∩ (ns0 ++ n) = ∅ ↔ ns ∩ ns0 = ∅ ∧ ¬ n ∈ ns; (ws)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ elems(n ' + nx0) = elems nx0 ++ n; (s)% ⊦ n + nx = n ' + nx; (s)