(* 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 CoreStep_preserve_valid:
forall U tr st tr' st' m m',
valid (tr, st, m) U ->
MachStep (U,tr,st) m (U,tr',st') m' ->
valid (tr', st', m') U.