fact: Fixpoint check_dbound2_rec (p : part) (rt rs ru : drules) nt m {struct m} := if m isn't m'.+1 then false else if rt isn't r :: rt' then true else if size rt' < nt then true else let p' := meet_part p r in [&& if check_unfit p' ru then true else let: SortDrules dnt rt'' := sort_drules p' rt' in let: SortDrules dns rs' := sort_drules p' rs in if dns + nt - dnt isn't nt'.+1 then redp p' else check_dbound2_rec p' rt'' rs' ru nt' m' & check_dbound2_rec p rt' rs (r :: ru) nt m'].
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq choice) mathcomp(fintype path fingraph) mathcomp(bigop order ssralg ssrnum ssrint) fourcolor(hypermap geometry quiztree part discharge)