fact: Definition dfs dfs1 dfs (roots : {set V}) e : nat * {set V} * env := if [pick x in roots] isn't Some x then (#|V|, set0, e) else let: (m1, C1, e1) := if num e x != infty then (num e x, set0, e) else dfs1 x e in let: (m2, C2, e2) := dfs (roots :\ x) e1 in (minn m1 m2, C1 :|: C2, e2).
imports: mathcomp(all_ssreflect) bigmin extra