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.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_halted: forall (m : option mem) (cd : nth_index) (mu : meminj) (U : list nat) (c1 : ThreadPool (Some 0)) (m1 : mem) (c2 : ThreadPool None) (m2 : mem) (v1 : val), infty_match cd mu c1 m1 c2 m2 -> machine_semantics.conc_halted (HybConcSem (Some 0) m) U c1 = Some v1 -> exists v2 : val, machine_semantics.conc_halted (HybConcSem None m) U c2 = Some v2.