(*Safety from CSL to Coarse Asm*)
Definition THM m:=
(HybridMachineSig.HybridMachineSig.ConcurMachineSemantics
(Sem:=SemTarget)
(ThreadPool:= threadPool.OrdinalPool.OrdinalThreadPool(Sem:=SemTarget))
(HybridMachine:=concurrent_compiler_safety.TargetHybridMachine)
(machineSig:= HybridMachine.DryHybridMachine.DryHybridMachineSig) m).
Definition EHM m:=
(HybridMachineSig.HybridMachineSig.ConcurMachineSemantics
(Sem:=SemTarget)
(ThreadPool:= threadPool.OrdinalPool.OrdinalThreadPool(Sem:=SemTarget))
(HybridMachine:=@bareMach SemTarget)
(machineSig:= BareMachine.BareMachineSig) m).
Context {SW : Clight_safety.spawn_wrapper CPROOF}.
(* Variable ConcurrentCompilerSafety: ConcurrentCompilerSafety_statement. *)

Lemma CSL2CoarseAsm_safety:
forall U,
exists init_mem_target init_mem_target' init_thread_target,
let res_target := permissions.getCurPerm init_mem_target' in
let res:=(res_target, permissions.empty_map) in
let init_tp_target :=
threadPool.ThreadPool.mkPool
(Sem:=SemTarget)
(resources:=erasure_proof.Parching.DR)
(Krun init_thread_target)
res in
let init_MachState_target := (U, nil, init_tp_target) in
machine_semantics.initial_machine (THM (Genv.init_mem Asm_prog)) (Some res) init_mem_target init_tp_target init_mem_target' Main_ptr nil /\
forall n,
HybridMachineSig.HybridMachineSig.HybridCoarseMachine.csafe
(ThreadPool:=threadPool.OrdinalPool.OrdinalThreadPool
(Sem:=SemTarget))
(machineSig:= HybridMachine.DryHybridMachine.DryHybridMachineSig)
init_MachState_target init_mem_target' n.