| lpt[n] = mklp(m, m0, lpf, m1), n0 < # lpt ⊦ (n0 = n ∨ n0 ∈ nx ⊃ mklp(lpt[n0].ref-size, LEB_SIZE, LP_GROUP_NODES, lpt[n0].gcheapidx);lpt[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 |
⊦ m ≠ n → lpt[n, lp][m] = lpt[m]
lpt[n] = mklp(m, m0, lpf, m1), n0 < # lpt ⊦ (n0 = n ∨ n0 ∈ nx ⊃ mklp(lpt[n0].ref-size, LEB_SIZE, LP_GROUP_NODES, lpt[n0].gcheapidx);lpt[n0]) = lpt.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n0], n0 = n, n ∈ nx
Used simplifier rules: ⊦ # lpt.mapIndices(ns, lptfun) = # lpt; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%m < # lpt ⊦ lpt[m, lp][m] = lp; (s)% ⊦ mklp(n2, n3, lpf, m).ref-size = n2; (s)% ⊦ mklp(n2, n3, lpf, m).gcheapidx = m; (s) Used terms: n0, mklp(m, LEB_SIZE, LP_GROUP_NODES, m1), n, lpt .mapIndices (elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx) )