| # lpt = # avol1, # avol0 = # avol1, lpt[n] = mklp(m3, m4, lpf0, m5), replay-lpt(lpt, nx, # avol1)[n] = mklp((n ∈ gstore0 ⊃ gstore0[n].ref-size;0), m1, LP_GROUP_NODES, m2), gstore[n] = groupblock(gndx, lax, m), n < # avol1, abs-leb(avol0[n], groupblock(gndx, lax, (n ∈ gstore0 ⊃ gstore0[n].ref-size;0)), mklp((n ∈ gstore0 ⊃ gstore0[n].ref-size;0), m1, LP_GROUP_NODES, m2)), n ∈ gstore, n ∈ nx ∨ m3 ≠ 0 ∨ lpf0 = LP_FREE → avol0[n] = avol1[n] ⊦ abs-leb(avol1[n], crash(gstore, gstore0, ginval, nx)[n], mklp((n ∈ gstore0 ⊃ gstore0[n].ref-size;0), m1, LP_GROUP_NODES, m2)), n ∈ ginval |
m < n, n ≤ # lpt ⊦ replay-lpt(lpt, nx, n)[m] = (lpt[m].flags = LP_FREE ∨ m ∈ nx ⊃ lpt[m] ;(lpt[m].flags = LP_INDEX_NODES ∧ lpt[m].ref-size ≠ 0 ⊃ lpt[m].size:= LEB_SIZE ;(lpt[m].ref-size = 0 ⊃ mklp(0, 0, LP_FREE, lpt[m].gcheapidx);lpt[m]) ) )
# avol0 = # avol1, # lpt = # avol1, (lpt[n].flags = LP_FREE ∨ n ∈ nx ⊃ lpt[n] ;(lpt[n].flags = LP_INDEX_NODES ∧ lpt[n].ref-size ≠ 0 ⊃ lpt[n].size:= LEB_SIZE;(lpt[n].ref-size = 0 ⊃ mklp(0, 0, LP_FREE, lpt[n].gcheapidx);lpt[n])) ) = mklp((n ∈ gstore0 ⊃ gstore0[n].ref-size;0), m1, LP_GROUP_NODES, m2), gstore[n] = groupblock(gndx, lax, m), lpt[n] = mklp(m3, m4, lpf0, m5), n < # avol1, abs-leb(avol0[n], groupblock(gndx, lax, (n ∈ gstore0 ⊃ gstore0[n].ref-size;0)), mklp((n ∈ gstore0 ⊃ gstore0[n].ref-size;0), m1, LP_GROUP_NODES, m2)), n ∈ gstore, # avol1 ≤ # lpt, n ∈ nx ∨ m3 ≠ 0 ∨ lpf0 = LP_FREE → avol0[n] = avol1[n] ⊦ abs-leb(avol1[n], crash(gstore, gstore0, ginval, nx)[n], mklp((n ∈ gstore0 ⊃ gstore0[n].ref-size;0), m1, LP_GROUP_NODES, m2)), n ∈ ginval
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic%transitivity: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification oelem[nat-set]% ⊦ m < n → ¬ n < m; (s) Used terms: n, # avol1, nx, lpt