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 infinite_running:
forall (m : option mem) (cd : nth_index) (mu : meminj)
(c1 : ThreadPool (Some 0)) (m1 : mem) (c2 : ThreadPool None)
(m2 : mem),
infty_match cd mu c1 m1 c2 m2 ->
forall i : nat,
machine_semantics.running_thread (HybConcSem (Some 0) m) c1 i <->
machine_semantics.running_thread (HybConcSem None m) c2 i.