proposition: Lemma graph_gen_redirect_parent_vgamma: forall (g1 g2: UFGraph) x r pa y (H: weak_valid g1 x) (Hv: vvalid g1 y) (Hn: ~ reachable g1 x y), (forall a b, out_edge a = out_edge b -> a = b) -> vgamma g1 x = (r, pa) -> g2 = (Graph_gen_redirect_parent g1 y x H Hv Hn) -> vgamma g2 x = (r, pa).
proof: Proof. intros. rewrite H2. clear H2. unfold vgamma in *. simpl in *. inversion H1. f_equal. unfold updateEdgeFunc. destruct (equiv_dec (out_edge y) (out_edge x)); auto. hnf in e. apply H0 in e. subst y. exfalso; apply Hn; apply reachable_refl; auto. Qed.
imports: Coq.Sets.Ensembles Coq.Lists.List CertiGraph.lib.EquivDec_ext CertiGraph.lib.Coqlib CertiGraph.lib.Ensembles_ext CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_computable CertiGraph.graph.graph_gen CertiGraph.graph.FiniteGraph CertiGraph.graph.MathGraph CertiGraph.graph.LstGraph CertiGraph.graph.UnionFind