(*s The length of a path without repetition is less than the cardinal of the map representing the graph *)

(* Specifications: *)
Lemma ad_simple_path_bounded_card :
forall (l : list ad) (last x : ad) (d : D),
CG_path last d (x :: l) ->
ad_list_stutters (x :: l) = false -> length (x :: l) <= S (MapCard _ cg).
Lemma CG_path_app_1 :
forall (l1 l2 : list ad) (last x : ad) (d1 d2 : D),
CG_path last d2 (x :: l2) ->
CG_path x d1 l1 -> CG_path last (Dplus d2 d1) (l1 ++ l2).
Lemma CG_path_app_2 :
forall (l1 l2 : list ad) (last x : ad) (d : D),
CG_path last d (l1 ++ x :: l2) -> {d2 : D &  CG_path last d2 (x :: l2)}.
Lemma CG_path_app_3 :
forall (l1 l2 : list ad) (last x : ad) (d : D),
CG_path last d (l1 ++ x :: l2) -> {d1 : D &  CG_path x d1 (l1 ++ x :: nil)}.
Lemma CG_path_weight_and_last_unique :
forall (l : list ad) (last last' : ad) (d d' : D),
CG_path last d l -> CG_path last' d' l -> d = d' /\ last = last'.