| # lpt1 = # cleanup-lpt(lpt0, n), lpt1[n] = mklp(n0, n1, lpf1, n2), lpt0[n] = mklp(m0, m1, lpf0, m2), n < # lpt0, ∀ n0. n0 < # lpt1 → cleanup-lpt(lpt0, n)[n0].ref-size = lpt1[n0].ref-size ∧ cleanup-lpt(lpt0, n)[n0].size = lpt1[n0].size ∧ cleanup-lpt(lpt0, n)[n0].flags = lpt1[n0].flags ⊦ m0 = n0 ∧ m1 = n1 ∧ lpf0 = lpf1 |
# lpt1 = # lpt0, lpt1[n] = mklp(n0, n1, lpf1, n2), lpt0[n] = mklp(m0, m1, lpf0, m2), n < # lpt0, ∀ n0. n0 < # lpt0 → cleanup-lpt(lpt0, n)[n0].ref-size = lpt1[n0].ref-size ∧ cleanup-lpt(lpt0, n)[n0].size = lpt1[n0].size ∧ cleanup-lpt(lpt0, n)[n0].flags = lpt1[n0].flags ⊦ m0 = n0 ∧ m1 = n1 ∧ lpf0 = lpf1
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%n ≤ # lpt ⊦ # cleanup-lpt(lpt, n) = # lpt; (s)% ⊦ m < n → m ≤ n; (s)