proposition: Lemma add_edge_preserves_strong_evalid: forall g e s t e', e <> e' -> (strong_evalid g e' <-> strong_evalid (pregraph_add_edge g e s t) e').
proof: Proof. intros; split; intros. + destruct H0 as [? [? ?]]. split. apply add_edge_preserves_evalid; auto. rewrite add_edge_preserves_src, add_edge_preserves_dst; auto. + destruct H0 as [? [? ?]]. apply add_edge_evalid_rev in H0; auto. rewrite add_edge_preserves_src in H1; auto. rewrite add_edge_preserves_dst in H2; auto. simpl in H1, H2. split; auto. Qed.
imports: Coq.Logic.ProofIrrelevance Coq.Sets.Ensembles Coq.Sets.Finite_sets Coq.Classes.Morphisms CertiGraph.lib.Coqlib CertiGraph.lib.Ensembles_ext CertiGraph.lib.relation_list CertiGraph.lib.List_ext CertiGraph.lib.Equivalence_ext CertiGraph.lib.EquivDec_ext VST.msl.Coqlib2 Coq.Lists.List CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_ind