changeset 67560 | 0fa87bd86566 |
parent 62826 | eb94e570c1a4 |
child 72582 | b69a3a7655f2 |
67559:833d154ab189 | 67560:0fa87bd86566 |
---|---|
197 val cand_ord = |
197 val cand_ord = |
198 prod_ord int_ord (prod_ord (int_ord o swap) (int_ord o swap)) o apply2 cand_key |
198 prod_ord int_ord (prod_ord (int_ord o swap) (int_ord o swap)) o apply2 cand_key |
199 |
199 |
200 fun pop_next_candidate [] = (NONE, []) |
200 fun pop_next_candidate [] = (NONE, []) |
201 | pop_next_candidate (cands as (cand :: cands')) = |
201 | pop_next_candidate (cands as (cand :: cands')) = |
202 fold (fn x => fn y => if cand_ord (x, y) = LESS then x else y) cands' cand |
202 fold (fn x => fn y => if is_less (cand_ord (x, y)) then x else y) cands' cand |
203 |> (fn best => (SOME best, remove (op =) best cands)) |
203 |> (fn best => (SOME best, remove (op =) best cands)) |
204 |
204 |
205 fun try_eliminate i l labels steps = |
205 fun try_eliminate i l labels steps = |
206 let |
206 let |
207 val (steps_before, (cand as Prove (_, _, _, _, _, (lfs, _), _, _)) :: steps_after) = |
207 val (steps_before, (cand as Prove (_, _, _, _, _, (lfs, _), _, _)) :: steps_after) = |