Notation syncStepF := (@syncStep DryHybridMachine.dryResources _ OrdinalPool.OrdinalThreadPool
                                     DryHybridMachine.DryHybridMachineSig).Notation syncStepE := (@syncStep BareMachine.resources _ OrdinalPool.OrdinalThreadPool
                                     BareMachine.BareMachineSig).Notation start_threadF := (@start_thread DryHybridMachine.dryResources _ OrdinalPool.OrdinalThreadPool
                                             DryHybridMachine.DryHybridMachineSig).Notation start_threadE := (@start_thread BareMachine.resources _ OrdinalPool.OrdinalThreadPool
                                             BareMachine.BareMachineSig).Notation resume_threadF := (@resume_thread DryHybridMachine.dryResources _ OrdinalPool.OrdinalThreadPool
                                               DryHybridMachine.DryHybridMachineSig).Notation resume_threadE := (@resume_thread BareMachine.resources _ OrdinalPool.OrdinalThreadPool
                                               BareMachine.BareMachineSig).Notation suspend_threadF := (@suspend_thread DryHybridMachine.dryResources _ OrdinalPool.OrdinalThreadPool
                                                 DryHybridMachine.DryHybridMachineSig).Notation suspend_threadE := (@suspend_thread BareMachine.resources _ OrdinalPool.OrdinalThreadPool
                                                 BareMachine.BareMachineSig).Notation threadStepF := (@threadStep DryHybridMachine.dryResources _ OrdinalPool.OrdinalThreadPool
                                         DryHybridMachine.DryHybridMachineSig).Notation threadStepE := (@threadStep BareMachine.resources _ OrdinalPool.OrdinalThreadPool
                                         BareMachine.BareMachineSig).Notation fstep := (corestep (@fine_semantics _ initU)).Notation scstep := (corestep (@bare_semantics _ initU)).Notation fsafe := (@HybridFineMachine.fsafe DryHybridMachine.dryResources _ OrdinalPool.OrdinalThreadPool
                                                  DryHybridMachine.DryHybridMachineSig FineDilMem).Notation sc_safe := (@HybridFineMachine.fsafe BareMachine.resources _ OrdinalPool.OrdinalThreadPool
                                                  BareMachine.BareMachineSig BareDilMem).Notation fexecution := (@fine_execution _ FineDilMem DryHybridMachine.dryResources).Notation sc_execution := (@fine_execution _ BareDilMem BareMachine.resources).

Lemma threadStep_erase: forall tp1 tp1' m1 m1' tp2 m2 i ev (HerasePool: threadPool_erasure tp1 tp1') (cnti: containsThread tp1 i) (cnti': containsThread tp1' i) (Hmem_erasure: mem_erasure m1 m1') (Hcomp1: mem_compatible tp1 m1) (Hcomp1': mem_compatible tp1' m1') (Hstep: threadStepF cnti Hcomp1 tp2 m2 ev), exists tp2' m2' ev', threadStepE cnti' Hcomp1' tp2' m2' ev' /\ threadPool_erasure tp2 tp2' /\ mem_erasure m2 (erasePerm m2') /\ mem_event_list_erasure ev ev'.