End CoreLanguage.
End CoreLanguage.
(** ** Lemmas about the threadwise semantics with respect to a (dry) concurrent machine*)
Module CoreLanguageDry.
Section CoreLanguageDry.
Context {Sem : Semantics}
{SemAx : SemAxioms}.
Existing Instance OrdinalPool.OrdinalThreadPool.
Existing Instance DryHybridMachine.dryResources.
(** Take an instance of the Dry Machine *)
Existing Instance DryHybridMachine.DryHybridMachineSig.
(** Lemmas about containsThread and coresteps *)

(* Specifications: *)
Lemma corestep_containsThread:
forall (tp : t)  c c' m m' p i j ev
(Hcnti : containsThread tp i)
(Hcntj: containsThread tp j)
(Hcorestep: ev_step semSem c m ev c' m')
(Hcode: getThreadC Hcnti = Krun c),
containsThread (updThread Hcnti (Krun c') p) j.
Lemma corestep_containsThread':
forall (tp : t)  c c' m m' p i j ev
(Hcnti : containsThread tp i)
(Hcntj : containsThread (updThread Hcnti (Krun c') p) j)
(Hcorestep: ev_step semSem c m ev c' m')
(Hcode: getThreadC Hcnti = Krun c),
containsThread tp j.