| # avol0 = # lpt, # lpt0 = # lpt, 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], remove-refsize0(crash(istore, istore0))[n], 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 = remove-refsize0(crash(istore, istore0))[n].ref-size) |
# 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], remove-refsize0(crash(istore, istore0))[n], 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)
Used simplifier rules: ⊦ (indx = iblock.indlist ∧ lax = iblock.ladrlist) ∧ m = iblock.ref-size ↔ iblock = indexblock(indx, lax, m); (elim) Used terms: remove-refsize0(crash(istore, istore0))[n], indx, lax, m, m0, m1, boolvar