| lpt0[n] = mklp(m0, m1, lpf0, m2), lpt1[n] = mklp(n0, n1, lpf1, n2), n < # lpt0, id-idx(cleanup-lpt(lpt0, n), lpt1) ⊦ m0 = n0 ∧ m1 = n1 ∧ lpf0 = lpf1 |
⊦ id-idx(lpt1, lpt0) ↔ # lpt0 = # lpt1 ∧ (∀ n. n < # lpt0 → lpt1[n].ref-size = lpt0[n].ref-size ∧ lpt1[n].size = lpt0[n].size ∧ lpt1[n].flags = lpt0[n].flags)
# 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
Used terms: lpt1, cleanup-lpt(lpt0, n)