(* 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 csafe_ksafe_equiv:
forall st_ m tr,
(forall n U, valid (tr, st_, m) U -> csafe (U, tr, st_) m n) ->
(forall n U, valid (tr, st_, m) U -> ksafe_kstep (U, tr, st_) m n).