(*s [(ad_simple_path_dist x y)] computes the minimum path from x to y *)
Definition ad_simple_path_dist (x y : ad) :=
  ad_simple_path_dist_1 x y nil (MapCard _ cg).

Lemma ad_simple_path_dist_1_complete_1 : forall (n : nat) (x y : ad) (prefix : list ad) (d' : D), CG_path x d' (rev (x :: prefix)) -> ad_list_stutters (x :: prefix) = false -> forall d0 : D, ad_simple_path_dist_1 x y prefix n = Some d0 -> {l : list ad & and_sp (CG_path y (Dplus d0 d') (rev (x :: prefix) ++ l)) (ad_list_stutters (rev (x :: prefix) ++ l) = false /\ length l <= n)}.