proposition: Lemma do_gen_graph_has_gen: forall from to roots roots' g g', graph_has_gen g to -> do_generation_relation from to roots roots' g g' -> forall gen, graph_has_gen g gen <-> graph_has_gen g' gen.
proof: Proof. intros. destruct H0 as [g1 [g2 [? [? ?]]]]. transitivity (graph_has_gen g1 gen). - eapply frr_graph_has_gen; eauto. - transitivity (graph_has_gen g2 gen). + destruct H1 as [n [? ?]]. eapply svwl_graph_has_gen; eauto. rewrite <- frr_graph_has_gen; eauto. + subst g'. rewrite graph_has_gen_reset. reflexivity. Qed.
imports: Coq.ZArith.ZArith Coq.Program.Basics Coq.micromega.Lia compcert.lib.Integers compcert.common.Values VST.veric.base VST.veric.Clight_lemmas VST.veric.val_lemmas VST.veric.shares VST.msl.seplog VST.msl.shares VST.zlist.sublist VST.floyd.coqlib3 VST.floyd.functional_base VST.floyd.data_at_rec_lemmas VST.zlist.list_solver CertiGraph.lib.EquivDec_ext CertiGraph.lib.List_ext CertiGraph.graph.graph_model CertiGraph.graph.graph_gen