| lpt[n] = mklp(m, m0, lpf, m1) ⊦ n ∈ nx, # lpt.mapIndices(elems nx ++ n, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)) = # lpt.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n, mklp(m, LEB_SIZE, LP_GROUP_NODES, m1)] ∧ (∀ n0. n0 < # lpt.mapIndices(elems nx ++ n, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx)) → lpt.mapIndices(elems nx ++ n, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n0] = lpt.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n, mklp(m, LEB_SIZE, LP_GROUP_NODES, m1)][n0]) |
lpt[n] = mklp(m, m0, lpf, m1), n0 < # lpt ⊦ lpt.mapIndices(elems nx ++ n, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n0] = lpt.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n, mklp(m, LEB_SIZE, LP_GROUP_NODES, m1)][n0], n ∈ nx
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # lpt[n, lp] = # lpt; (s)% ⊦ # lpt.mapIndices(ns, lptfun) = # lpt; (s)