Section CGNoBadCycles.
Variable
no_bad_cycles :
forall (x : ad) (d : D) (l : list ad),
CG_path x d (x :: l) -> Dle Dz d = true.
(*s The edges are in the domain of the graph *)
(*s The length of a path without repetition is less than the cardinal of the map representing the graph *)
Inductive and_sp (A : Set) (B : Prop) : Set :=
conj_sp : A -> B -> and_sp A B.
(*s Given a path, one may find a shortest path withour repetition *)

Lemma ad_path_then_simple_path :
forall (l : list ad) (last : ad) (d : D),
CG_path last d l ->
{sl : list ad &
{d0 : D &
and_sp (CG_path last d0 (first l :: sl))
(ad_list_stutters (first l :: sl) = false /\ Dle d0 d = true)}}.