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_locks:
forall tp i (cnti: containsThread tp i) b ofs
(Hinv: invariant tp)
(Hfreeable: (getThreadR cnti).1 !! b ofs = Some Freeable),
forall laddr rmap,
lockRes tp laddr = Some rmap ->
rmap.1 !! b ofs = None /\
rmap.2 !! b ofs = None.