Section CompileNThreads.
Definition nth_index:= (list (option compiler_index)).
Definition list_lt: nth_index -> nth_index -> Prop:=
list_ord (opt_rel' (InjorderX compiler_sim)).
Local Ltac subst_sig:=
match goal with
H': existT _ _ _ = existT _ _ _ |- _ =>
eapply Eqdep.EqdepTheory.inj_pair2 in H'; subst
end.
Local Ltac inv_match0:=
match goal with
H: match_state 0 _ _ _ _ _ _ |- _ =>
inversion H; subst_sig; try clear H
end.

Lemma machine_step_traces:
forall hb m sge U tr1 st1 m1 U' tr1' st1' m1',
machine_semantics.machine_step (HybConcSem hb m)
sge U tr1 st1 m1 U' tr1' st1' m1'->
exists tr_tail, tr1' = tr1 ++ tr_tail /\
forall tr2, machine_semantics.machine_step (HybConcSem hb m)
sge U tr2 st1 m1 U' (tr2 ++ tr_tail) st1' m1'.