Definition Clight_init_state (p: Clight.program):=
    Clight.start_stack (Clight.globalenv p).Definition Asm_init_state (p: Asm.program):=
    Asm.start_stack (@the_ge p).Notation valid Sem:=
    (valid dryResources Sem OrdinalPool.OrdinalThreadPool).Definition opt_init_mem_source (p : Clight.program):=
      (Genv.init_mem (Ctypes.program_of_program p)).Definition opt_init_mem_target {F V} (tp:AST.program F V ):=
    (Genv.init_mem tp).

Lemma explicit_safety_step: forall (p : Clight.program) (tp : Asm.program) (asm_genv_safety : Asm_core.safe_genv the_ge), let SemSource:= (ClightSemanticsForMachines.ClightSem (Clight.globalenv p)) in let SemTarget:= @X86Sem tp asm_genv_safety in forall (U : schedule) (m_s m_t : Memory.Mem.mem) (j : Values.Val.meminj) (c : Asm.state) (C_source : OrdinalPool.t(Sem:=SemSource)) (C_target : OrdinalPool.t(Sem:=SemTarget)) tr (SIM : HybridMachine_simulation (ClightConcurSem (opt_init_mem_source p)) (AsmConcurSem (opt_init_mem_target tp))) (cd : index SIM), match_state SIM cd j C_source m_s C_target m_t -> (forall U, (valid SemSource) (tr, C_source, m_s) U -> explicit_safety HybridMachine.DryHybridMachine.dryResources SemSource (threadPool.OrdinalPool.OrdinalThreadPool(Sem:=SemSource)) HybridMachine.DryHybridMachine.DryHybridMachineSig U tr C_source m_s) -> forall U, (valid SemTarget) (tr, C_target, Asm.get_mem c) U -> explicit_safety HybridMachine.DryHybridMachine.dryResources SemTarget (threadPool.OrdinalPool.OrdinalThreadPool(Sem:=SemTarget)) HybridMachine.DryHybridMachine.DryHybridMachineSig U tr C_target m_t.