(*Some (ThreadPool.getThreadR Htid, virtue1)*)
(*Some virtue2*)

Lemma machine_step_diagram:
forall (m : option mem) (sge tge : HybridMachineSig.G) (U : list nat)
(tr1 : HybridMachineSig.event_trace) (st1 : ThreadPool (Some hb))
(m1 : mem) (U' : list nat) (tr1' : HybridMachineSig.event_trace)
(st1' : ThreadPool (Some hb)) (m1' : mem),
machine_semantics.machine_step (HybConcSem (Some hb) m) sge U tr1 st1 m1 U' tr1' st1' m1' ->
forall (cd : option compiler_index) tr2 (st2 : ThreadPool (Some (S hb)))
(mu : meminj) (m2 : mem),
concur_match cd mu st1 m1 st2 m2 ->
List.Forall2 (inject_mevent mu) tr1 tr2 ->
exists
tr2' (st2' : ThreadPool (Some (S hb))) (m2' : mem) (cd' : option compiler_index)
(mu' : meminj),
concur_match cd' mu' st1' m1' st2' m2' /\
List.Forall2 (inject_mevent mu') tr1' tr2' /\
machine_semantics.machine_step (HybConcSem (Some (S hb)) m) tge U tr2 st2 m2 U' tr2' st2'
m2'.