Section ThreadPoolWF.
Context {Sem : Semantics}.
Existing Instance DryHybridMachine.dryResources.
Existing Instance OrdinalPool.OrdinalThreadPool.
(** Take an instance of the Dry Machine *)
Existing Instance DryHybridMachine.DryHybridMachineSig.

Lemma invariant_freeable_empty_threads:
forall tp i (cnti: containsThread tp i) b ofs
(Hinv: invariant tp)
(Hfreeable: (getThreadR cnti).1 !! b ofs = Some Freeable),
forall j (cntj: containsThread tp j),
(getThreadR cntj).2 !! b ofs = None /\
(i <> j -> (getThreadR cntj).1 !! b ofs = None).