(* MachStep that doesn't change the schedule,
    Reduces the set of valid schedules... 
   *)
  Inductive has_unique_running tp:Prop :=
  | HasUniqueRun i (cnti : ThreadPool.containsThread tp i) q:
      ThreadPool.getThreadC cnti = Krun q ->
      has_unique_running tp.(* MachStep that doesn't change the schedule,
    Reduces the set of valid schedules... 
   *)
  Inductive has_unique_running tp:Prop :=
  | HasUniqueRun i (cnti : ThreadPool.containsThread tp i) q:
      ThreadPool.getThreadC cnti = Krun q ->
      has_unique_running tp.

Lemma unique_Krun_update: forall st tid, unique_Krun st tid -> forall (cnt: ThreadPool.containsThread st tid) c_new m_new cnt, unique_Krun (ThreadPool.updThread(tid:=tid)(tp:=st) cnt (Krun c_new) m_new) tid.