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 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)}}.