proposition: Lemma reachable_through_sublist_reachable: forall S l, reachable_set_list G S l -> forall s, incl s S -> well_defined_list G s -> { l' : list V | reachable_set_list G s l' /\ NoDup l'}.
proof: Proof. intros. cut (Enumerable V (reachable_through_set G s)). + intros. destruct X as [l1 [? ?]]. unfold Ensembles.In in H3. exists l1. split; auto. + apply (reachable_through_set_enum S); auto. apply reachable_set_list_EnumCovered in H; auto. Qed.
imports: Coq.Sets.Finite_sets Coq.Arith.Arith Coq.Logic.ProofIrrelevance Coq.Logic.FunctionalExtensionality Coq.Sorting.Permutation Coq.micromega.Lia CertiGraph.lib.Coqlib CertiGraph.lib.List_ext CertiGraph.lib.EquivDec_ext CertiGraph.lib.EnumEnsembles Coq.Lists.List VST.msl.Coqlib2 CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_ind CertiGraph.graph.subgraph2 CertiGraph.graph.graph_gen CertiGraph.graph.MathGraph CertiGraph.graph.FiniteGraph