End CoreSem_to_semantics.
Module CompilerCorrectness_implies_forward_simulation.

(* Specifications: *)
Theorem CoreCorrectness_implies_CompcertForwardSimulation:
forall F1 C1 V1 F2 C2 V2
(Sem1: CoreSemantics (Genv.t F1 V1) C1 mem)
(Sem2: CoreSemantics (Genv.t F2 V2) C2 mem)
P1 P2 ExternIdents epts,
In (P1.(prog_main), CompilerCorrectness.extern_func main_sig) ExternIdents  ->
P1.(prog_main) = P2.(prog_main) ->
CompilerCorrectness.core_correctness
(fun F C V Sem P => True)
ExternIdents epts F1 C1 V1 F2 C2 V2 Sem1 Sem2 P1 P2 ->
forward_simulation (mk_semantics F1 C1 V1 Sem1 P1)  (mk_semantics F2 C2 V2 Sem2 P2).