Opaque containsThread.

(* Specifications: *)
(** [FineConc.MachStep] preserves [spinlock_synchronized]*)
Lemma fineConc_step_synchronized:
forall U0 U U'  tr tp0 m0 tp m tp' m' tr'
(Hexec: multi_fstep (U0, [::], tp0) m0 (U, tr, tp) m)
(Hstep: fstep (U, tr, tp) m (U', tr ++ tr', tp') m')
(Hsynchronized: spinlock_synchronized tr),
spinlock_synchronized (tr ++ tr').
(** FineConc is spinlock well-synchronized, strengthened version of the theorem*)
Theorem fineConc_spinlock_strong:
forall U U0 U' tr tr' tp m tp0 m0 tp' m'
(Hsynced: spinlock_synchronized tr)
(Hexec0: multi_fstep (U0, [::], tp0) m0 (U, tr, tp) m)
(Hexec: multi_fstep (U, tr, tp) m (U', tr ++ tr', tp') m'),
spinlock_synchronized (tr ++ tr').
(** FineConc is spinlock well-synchronized*)
Corollary fineConc_spinlock:
forall U tr tp m tp' m'
(Hexec: multi_fstep (U, [::], tp) m ([::], tr, tp') m'),
spinlock_synchronized tr.
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'.