| lpt-ram-flash(lpt1, lpt0, []) ⊦ lpt-ram-flash(cleanup-lpt(lpt1), lpt0, []) |
# 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
Used simplifier rules: lpt-ram-flash: ⊦ lpt-ram-flash(lpt1, lpt0, nx) ↔ # lpt0 = # lpt1 ∧ (∀ n. n < # lpt1 ∧ lpt0[n].flags = LP_GROUP_NODES ∧ lpt1[n].flags = LP_GROUP_NODES ∧ ¬ n ∈ nx → lpt1[n].size = lpt0[n].size);%cleanup-lpt: ⊦ cleanup-lpt(lpt) = lpt .map (λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx) ;lp ) );% ⊦ m < n → n ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # lpt.map(lptfun) = # lpt; (s)% ⊦ ¬ n ∈ []; (s)