(*s Adding a lis of adresses connected to [root] with weight $0$ *)
Fixpoint CG_add_root (root : ad) (cg : CGraph1) (l : list ad) {struct l} :
CGraph1 :=
match l with
| nil => cg
| x :: l' => CG_add_root root (CG_add cg root x Dz) l'
end.

Lemma CG_circuit_complete_1 :
forall cg : CGraph1,
(forall (x : ad) (d : D) (l : list ad),
CG_path cg x d (x :: l) -> Dle Dz d = true) ->
forall root : ad,
root = ad_alloc_opt unit (FSetUnion (MapDom _ cg) (MapDom _ (cg_range cg))) ->
forall cg' : CGraph1,
cg' = CG_add_root root cg (ad_list_of_dom _ cg) -> CGconsistent cg.