| # lpt0 = # lpt1, lpt1.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))[n].flags = LP_GROUP_NODES, lpt0[n].flags = LP_GROUP_NODES, n < # lpt1, ∀ n. n < # lpt1 ∧ lpt0[n].flags = LP_GROUP_NODES ∧ lpt1[n].flags = LP_GROUP_NODES → lpt1[n].size = lpt0[n].size ⊦ lpt1.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))[n].size = lpt0[n].size |
# lpt0 = # lpt1, lpt0[n].flags = LP_GROUP_NODES, lpt1.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))[n] = mklp(m, m0, lpf, m1), lpf = LP_GROUP_NODES, n < # lpt1, ∀ n. n < # lpt1 ∧ lpt0[n].flags = LP_GROUP_NODES ∧ lpt1[n].flags = LP_GROUP_NODES → lpt1[n].size = lpt0[n].size ⊦ m0 = lpt0[n].size
Used simplifier rules: ⊦ ((m = lp.ref-size ∧ m0 = lp.size) ∧ lpf = lp.flags) ∧ m1 = lp.gcheapidx ↔ lp = mklp(m, m0, lpf, m1); (elim) Used terms: lpt1 .map (λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx) ;lp ) ) [n ], m, m0, lpf, m1