Definition main_sig : signature := mksignature nil (Some AST.Tint).

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)).