| lpt-free-unref(lpt) ⊦ lpt-free-unref(replay-log(lpt, nx)) |
lpt.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n].flags = LP_FREE, n < # lpt, ∀ n. n < # lpt ∧ lpt[n].flags = LP_FREE → lpt[n].ref-size = 0 ⊦ lpt.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n].ref-size = 0
Used simplifier rules: lpt-free-unref: ⊦ lpt-free-unref(lpt) ↔ (∀ n. n < # lpt ∧ lpt[n].flags = LP_FREE → lpt[n].ref-size = 0);%replay-log: ⊦ replay-log(lpt, nx) = lpt .mapIndices (elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx) );% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # lpt.mapIndices(ns, lptfun) = # lpt; (s)