let at_most_one_path (states,transitions as auto) st1 st2 =
  try
    let path,_ = dijkstra (voisins auto) st1 st2 in
    match path with
      | [] | [ _ ] -> true
      | x::y::_ ->
        let (trans1,trans2) = 
          List.partition 
            (fun t -> t.start.nums = x.nums && t.stop.nums = y.nums) 
            transitions
        in
        let transitions = (List.tl trans1) @ trans2 in
        let auto = states, transitions in 
        ignore (dijkstra (voisins auto) st1 st2);
        false
  with Not_found -> true