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

(** [getThreadR] on the initial thread returns the [access_map] that was used in [init_mach] and the [empty_map]*)
Lemma getThreadR_init:
forall pmap m m' f arg tp
(Hinit: init_mach pmap m tp m' f arg)
(cnt: containsThread tp 0),
getThreadR cnt = (getCurPerm m', empty_map).