End CompileNThreads.
Section CompileInftyThread.
Parameter lift_state: forall on, ThreadPool on -> forall on', ThreadPool on' -> Prop.
Inductive infty_match:
nth_index -> meminj ->
ThreadPool (Some 0) -> mem ->
ThreadPool None -> mem -> Prop:=
| Build_infty_match:
forall n cd j st0 m0 stn mn st,
match_state n cd j st0 m0 stn mn ->
lift_state (Some n) stn None st ->
infty_match cd j st0 m0 st mn.

Lemma initial_infty:
forall (m : option mem) (s_mem s_mem' : mem)
(main : val) (main_args : list val)
(s_mach_state : ThreadPool (Some 0)) (r1 : option res),
machine_semantics.initial_machine (HybConcSem (Some 0) m) r1
s_mem s_mach_state s_mem' main main_args ->
exists
(j : meminj) (cd : nth_index) (t_mach_state : ThreadPool None)
(t_mem t_mem' : mem) (r2 : option res),
machine_semantics.initial_machine (HybConcSem None m) r2 t_mem
t_mach_state t_mem' main main_args /\
infty_match cd j s_mach_state s_mem' t_mach_state t_mem'.