(*s [(CG_standard_rho root d0 others x)] computes [d0-d] when
     [root] and [x] are connected by a path of minimal 
     length [d] and [(others x)] when there are not connected 
*)

Definition CG_standard_rho (root : ad) (d0 : D) (others : ad -> D)
  (x : ad) :=
  match ad_simple_path_dist root x with
  | Some d => Dplus d0 (Dneg d)
  | None => others x (* dummy *)
  end.

Lemma CG_standard_rho_minimal : forall (root : ad) (d0 : D) (others rho : ad -> D), CGsat rho -> Dle d0 (rho root) = true -> forall x : ad, CG_leq root x = true -> Dle (CG_standard_rho root d0 others x) (rho x) = true.