fact: Fixpoint alloc_down_from (points_remaining : N) (min max : Z) (n : nat) : list (Z * Z) := match points_remaining with | 0%N => [] | 1%N => [(0, max)] | 2%N => [(0, min); (0, max)] | _ => let max_cur_points := (points_remaining / S n)%N in let cur_points := allocate_points_for n min max max_cur_points in match n with | O => [] | S n' => alloc_down_from (points_remaining - List.length cur_points) min max n' end ++ cur_points end.
imports: Coq.micromega.Lia Coq.ZArith.ZArith Coq.QArith.QArith Coq.Classes.Morphisms Coq.Setoids.Setoid Coq.Lists.List PerformanceExperiments.Harness