Section cc_simT_trans.

Lemma ccT_trans_CaseInject: forall {F1 C1 V F2 C2 F3 C3}
(Sem1 : CoopCoreSem (Genv.t F1 V) C1)
(Sem2 : CoopCoreSem (Genv.t F2 V) C2)
(Sem3 : CoopCoreSem (Genv.t F3 V) C3)
ExternIdents epts12 epts23 I
(P1 : AST.program F1 V) (P2 : AST.program F2 V) (P3 : AST.program F3 V)
transf12 (HP12: P2=transform_program transf12 P1) transf23
(ePts12_ok: forall m, Genv.init_mem P1 = Some m ->
CompilerCorrectness.entryPts_inject_ok P1 P2 (Mem.flat_inj (Mem.nextblock m)) ExternIdents epts12)
(VarsOK1: CompilerCorrectness.externvars_ok P1 ExternIdents)
(SimInj12: Forward_simulation_inj.Forward_simulation_inject Sem1 Sem2 (Genv.globalenv P1)
(Genv.globalenv P2) epts12)
(SIM23 : CompilerCorrectness.cc_simT I ExternIdents epts23 F2 C2 V F3 C3 Sem2 Sem3 P2 P3 transf23)
(i1: I F1 C1 V Sem1 P1),
forall entrypoints13 : list (val * val * signature),
entrypoints_compose epts12 epts23 entrypoints13 ->
CompilerCorrectness.cc_simT I ExternIdents entrypoints13 F1 C1 V F3 C3 Sem1 Sem3 P1 P3 (fun f => transf23 (transf12 f)).