(* 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_unique_running:
forall U tr tp m n tid,
schedPeek U = Some tid ->
has_unique_running tp ->
valid (tr, tp, m) U ->
csafe (U, tr, tp) m n ->
forall U', valid (tr, tp, m) U' ->
csafe (U', tr, tp) m n.