Opaque OrdinalPool.containsThread.
(** *** Safety and simulation lemmas *)

(** ** Proof of simulation for stop steps *)
Lemma suspend_step_inverse:
forall i U U' tpc trc tpc' trc' mc mc'
(cnt: containsThread tpc i)
(Hcompc: mem_compatible tpc mc),
let mrestr := restrPermMap (((compat_th _ _ Hcompc) cnt).1) in
forall (Hsuspend: cnt$mrestr @ S)
(Hstep: cmachine_step (i :: U, trc, tpc) mc (U', trc', tpc') mc'),
U = U' /\ mc = mc' /\ trc = trc' /\ mem_compatible tpc mc /\
suspend_thread mc cnt tpc'.