| # lpt0 = # lpt, # avol0 = # lpt, remove-refsize0(crash(istore, istore0))[n] = indexblock(indx, lax, m), dom istore ∩ elems nx = ∅, flash-lpt-cons(lpt0, istore0, gstore0), synced(avol0), avol1 ↓ avol0, istore0 ⊑ istore, ∀ n. (n < # lpt ∧ lpt[n].flags = LP_INDEX_NODES ↔ n ∈ istore) ∧ (n ∈ istore → abs-leb(avol0[n], istore[n], lpt[n]) ∧ lpt[n].ref-size = istore[n].ref-size) ⊦ ( n < # lpt ∧ replay-lpt(lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)), nx, # lpt)[n].flags = LP_INDEX_NODES ↔ n ∈ remove-refsize0(crash(istore, istore0))) ∧ ( n ∈ remove-refsize0(crash(istore, istore0)) → abs-leb (avol1[n], indexblock (indx, lax, replay-lpt(lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)), nx, # lpt)[n].ref-size), replay-lpt(lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)), nx, # lpt)[n]) ∧ replay-lpt(lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)), nx, # lpt)[n].ref-size = m) |
# avol0 = # lpt, # lpt0 = # lpt, remove-refsize0(crash(istore, istore0))[n] = indexblock(indx, lax, m), replay-lpt(lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)), nx, # lpt)[n] = mklp(m0, m1, lpf, m2), dom istore ∩ elems nx = ∅, flash-lpt-cons(lpt0, istore0, gstore0), synced(avol0), avol1 ↓ avol0, istore0 ⊑ istore, ∀ n. (n < # lpt ∧ lpt[n].flags = LP_INDEX_NODES ↔ n ∈ istore) ∧ (n ∈ istore → abs-leb(avol0[n], istore[n], lpt[n]) ∧ lpt[n].ref-size = istore[n].ref-size) ⊦ (n < # lpt ∧ lpf = LP_INDEX_NODES ↔ n ∈ remove-refsize0(crash(istore, istore0))) ∧ ( n ∈ remove-refsize0(crash(istore, istore0)) → abs-leb (avol1[n], indexblock(indx, lax, m0), replay-lpt(lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)), nx, # lpt)[n]) ∧ m0 = m)
Used simplifier rules: ⊦ ((m = lp.ref-size ∧ m0 = lp.size) ∧ lpf = lp.flags) ∧ m1 = lp.gcheapidx ↔ lp = mklp(m, m0, lpf, m1); (elim) Used terms: replay-lpt (lpt0 .mapIndices (elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx) ), nx, # lpt) [n ], m2, m3, lpf, m4