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 *)

(* Specifications: *)
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)}}.
Lemma CG_path_app_4 :
forall (l1 l2 : list ad) (last x : ad) (d : D),
CG_path last d (l1 ++ x :: l2) ->
{d1 : D &
{d2 : D &
and_sp (CG_path x d1 (l1 ++ x :: nil) * CG_path last d2 (x :: l2))
(d = Dplus d2 d1)}}.