(** ** Lemmas about initial state*)

(* Specifications: *)
(** The initial thread is thread 0*)
Lemma init_thread:
forall m m' pmap f arg tp i
(Hinit: init_mach pmap m tp m' f arg),
containsThread tp i ->
i = 0.
(** [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).
(** There are no locks in the initial machine *)
Lemma init_lockRes_empty:
forall m m' pmap f arg tp laddr
(Hinit: init_mach pmap m tp m' f arg),
lockRes tp laddr = None.
(** The [invariant] holds for the initial state*)
Lemma initial_invariant:
forall m m' pmap f arg tp
(Hinit: init_mach pmap m tp m' f arg),
invariant tp.