proposition: Lemma gr_hrgda_data_at_: forall g h gen, graph_has_gen g gen -> graph_heap_compatible g h -> generation_rep g gen * heap_rest_gen_data_at_ g h gen |-- generation_data_at_ g h gen.
proof: Proof. intros. sep_apply (generation_rep_data_at_ g gen H). unfold heap_rest_gen_data_at_, generation_data_at_. remember (nth_sh g gen) as sh. rewrite <- (data_at__tarray_value sh _ _ (gen_start g gen)). - unfold gen_size. entailer!!. - unfold graph_gen_size. destruct (gt_gs_compatible _ _ H0 _ H) as [_ [_ ?]]. rewrite H1. apply space_order. Qed.
imports: VST.veric.compcert_rmaps VST.msl.shares VST.msl.wand_frame VST.concurrency.conclib CertiGraph.lib.List_ext CertiGraph.msl_ext.log_normalize CertiGraph.msl_ext.ramification_lemmas CertiGraph.graph.graph_model CertiGraph.CertiGC.GCGraph CertiGraph.CertiGC.env_graph_gc CertiGraph.msl_ext.iter_sepcon Coq.Lists.List