proposition: Lemma lmc_generation_rep_not_eq: forall (g : LGraph) (v new_v : VType) (x : nat), x <> vgeneration v -> generation_rep g x = generation_rep (lgraph_mark_copied g v new_v) x.
proof: Proof. intros. unfold generation_rep. unfold nth_sh, nth_gen. simpl. remember (nat_inc_list (number_of_vertices (nth x (g_gen (glabel g)) null_info))). apply iter_sepcon_func_strong. intros. destruct x0 as [n m]. apply list_in_map_inv in H0. destruct H0 as [x0 [? ?]]. inversion H0. subst n x0. clear H0. remember (generation_sh (nth x (g_gen (glabel g)) null_info)) as sh. rewrite lmc_vertex_rep_not_eq. 1: reflexivity. intro. destruct v. simpl in *. inversion H0. subst. contradiction. 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