Corollary gsoThreadC_suspend:
    forall m tp tp' i j (cnt: containsThread tp i) (cntj: containsThread tp j)
      (cntj': containsThread tp' j) (Hneq: i <> j)
      (Hsuspend: suspend_thread m cnt tp'),
      getThreadC cntj = getThreadC cntj'.

(* Specifications: *)
Lemma gsoThreadR_suspend: forall m tp tp' i j (cnt: containsThread tp i) (cntj: containsThread tp j) (cntj': containsThread tp' j) (Hsuspend: suspend_thread m cnt tp'), getThreadR cntj = getThreadR cntj'.
Lemma suspend_invariant: forall m tp tp' i (pff: containsThread tp i) (Hinv: invariant tp) (Hsuspend: suspend_thread m pff tp'), invariant tp'.
Lemma suspend_lockRes: forall m tp tp' i (pff: containsThread tp i) (Hsuspend: suspend_thread m pff tp'), lockRes tp = lockRes tp'.
Lemma suspend_lockPool : forall m (tp tp' : t) i (pfc : containsThread tp i) (Hsuspend: suspend_thread m pfc tp') addr, lockRes tp addr = lockRes tp' addr.
Lemma mem_compatible_setMaxPerm : forall tp m (Hcomp: mem_compatible tp m), mem_compatible tp (setMaxPerm m).
Lemma step_mem_compatible: forall U tr tp m U' tr' tp' m' (Hstep: MachStep (U, tr, tp) m (U', tr', tp') m'), mem_compatible tp m.
Lemma step_invariant: forall U tr tp m U' tr' tp' m' (Hstep: MachStep (U, tr, tp) m (U', tr', tp') m'), invariant tp.
Lemma step_containsThread : forall tp tp' m m' i j U tr tr' (cntj: containsThread tp j) (Hstep: MachStep (i :: U, tr, tp) m (U, tr', tp') m'), containsThread tp' j.
Lemma gsoThreadR_step: forall tp tp' m m' i j U tr tr' (Hneq: i <> j) (pfj: containsThread tp j) (pfj': containsThread tp' j) (Hstep: MachStep (i :: U,tr, tp) m (U,tr', tp') m'), getThreadR pfj = getThreadR pfj'.
Lemma safeC_invariant: forall tpc trc mc n (Hn: n > 0) (Hsafe: forall U, HybridCoarseMachine.csafe (U,trc,tpc) mc n), invariant tpc.
Lemma safeC_compatible: forall tpc trc mc n (Hn: n > 0) (Hsafe: forall U, HybridCoarseMachine.csafe (U,trc,tpc) mc n), mem_compatible tpc mc.
Lemma step_schedule: forall tpc tpc' mc mc' i U1 U2 U1' tr tr' (Hstep: MachStep (i :: U1, tr, tpc) mc (U2, tr ++ tr', tpc') mc'), exists U2', MachStep (i :: U1', tr, tpc) mc (U2', tr ++ tr', tpc') mc'.