| n = # lpt, avol-replay-lpt-unchanged(avol0, avol1, lpt, nx) ⊦ abs-gstore(avol1, replay-lpt(lpt, nx, n), crash(gstore, gstore0, ginval, nx), ginval) ↔ abs-gstore(avol0, replay-lpt(lpt, nx, n), crash(gstore, gstore0, ginval, nx), ginval) |
# lpt = # avol1, # avol0 = # avol1, ∀ n. n < # avol1 ∧ (n ∈ nx ∨ lpt[n].ref-size ≠ 0 ∨ lpt[n].flags = LP_FREE) → avol0[n] = avol1[n] ⊦ (∀ n. (n < # avol1 ∧ replay-lpt(lpt, nx, # avol1)[n].flags = LP_GROUP_NODES ↔ n ∈ crash(gstore, gstore0, ginval, nx)) ∧ (n ∈ gstore ∧ ¬ n ∈ ginval → abs-leb(avol1[n], crash(gstore, gstore0, ginval, nx)[n], replay-lpt(lpt, nx, # avol1)[n])) ∧ ( n ∈ crash(gstore, gstore0, ginval, nx) → replay-lpt(lpt, nx, # avol1)[n].ref-size = (n ∈ nx ∨ ¬ n ∈ ginval ⊃ groupblock(gstore[n].gndlist, gstore[n].ladrlist, (n ∈ gstore0 ⊃ gstore0[n].ref-size;0));gstore0[n]).ref-size)) ↔ (∀ n. (n < # avol1 ∧ replay-lpt(lpt, nx, # avol1)[n].flags = LP_GROUP_NODES ↔ n ∈ crash(gstore, gstore0, ginval, nx)) ∧ (n ∈ gstore ∧ ¬ n ∈ ginval → abs-leb(avol0[n], crash(gstore, gstore0, ginval, nx)[n], replay-lpt(lpt, nx, # avol1)[n])) ∧ ( n ∈ crash(gstore, gstore0, ginval, nx) → replay-lpt(lpt, nx, # avol1)[n].ref-size = (n ∈ nx ∨ ¬ n ∈ ginval ⊃ groupblock(gstore[n].gndlist, gstore[n].ladrlist, (n ∈ gstore0 ⊃ gstore0[n].ref-size;0));gstore0[n]).ref-size))
Used simplifier rules: abs-gstore-def: ⊦ abs-gstore(avol, lpt, gstore, ginval) ↔ (∀ n. (n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ↔ n ∈ gstore) ∧ ( n ∈ gstore ∧ ¬ n ∈ ginval → abs-leb(avol[n], gstore[n], lpt[n])) ∧ (n ∈ gstore → lpt[n].ref-size = gstore[n].ref-size));%replay-lpt-size: n ≤ # lpt ⊦ # replay-lpt(lpt, nx, n) = # lpt;%avol-replay-lpt-unchanged: ⊦ avol-replay-lpt-unchanged(avol0, avol1, lpt, nx) ↔ # avol0 = # avol1 ∧ # avol0 = # lpt ∧ (∀ n. n < # avol0 ∧ (n ∈ nx ∨ lpt[n].ref-size ≠ 0 ∨ lpt[n].flags = LP_FREE) → avol0[n] = avol1[n]);%⊦ n ∈ crash(gstore, gstore0, ginval, nx) → crash(gstore, gstore0, ginval, nx)[n] = (n ∈ nx ∨ ¬ n ∈ ginval ⊃ groupblock (gstore[n].gndlist, gstore[n].ladrlist, (n ∈ gstore0 ⊃ gstore0[n].ref-size;0)) ;gstore0[n] ); (s)% ⊦ n ∈ crash(gstore, gstore0, ginval, nx) ↔ n ∈ gstore ∨ n ∈ ginval; (ws)% ⊦ ¬ n < n; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)