proposition: Lemma thread_info_rep_ramif_stable: forall sh tinfo ti gen1 gen2, gen1 <> gen2 -> Z.of_nat gen1 < MAX_SPACES -> Z.of_nat gen2 < MAX_SPACES -> thread_info_rep sh tinfo ti |-- (space_struct_rep sh (ti_heap_p tinfo) (ti_heap tinfo) gen1 * space_struct_rep sh (ti_heap_p tinfo) (ti_heap tinfo) gen2) * ((space_struct_rep sh (ti_heap_p tinfo) (ti_heap tinfo) gen1 * space_struct_rep sh (ti_heap_p tinfo) (ti_heap tinfo) gen2) -* thread_info_rep sh tinfo ti).
proof: Proof. intros. unfold thread_info_rep. sep_apply (heap_rep_ramif_stable sh (ti_heap tinfo) (ti_heap_p tinfo) gen1 gen2). cancel. apply -> wand_sepcon_adjoint. cancel. rewrite sepcon_assoc. rewrite sepcon_comm. apply modus_ponens_wand. 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