proposition: Lemma gcl_P_holds: forall s n g1 g2 r1 r2, P g1 -> graph_has_gen g1 s -> garbage_collect_loop (nat_seq s n) r1 g1 r2 g2 -> P g2.
proof: Proof. do 2 intro. revert s. induction n; intros; simpl in H1; inversion H1; subst; auto. clear H1. assert (graph_has_gen g3 (S s)) by (apply ngr_graph_has_gen in H4; auto). eapply (IHn (S s) g4); eauto. - eapply (do_gen_P_holds _ _ _ _ g3); eauto. - erewrite <- (do_gen_graph_has_gen _ _ _ _ g3); eauto. Qed.
imports: Coq.ZArith.ZArith Coq.Program.Basics 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 CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext CertiGraph.lib.List_ext CertiGraph.graph.graph_model CertiGraph.graph.graph_gen CertiGraph.graph.path_lemmas CertiGraph.graph.subgraph2 CertiGraph.graph.graph_relation CertiGraph.graph.graph_isomorphism CertiGraph.graph.reachable_ind CertiGraph.CertiGC.GCGraph