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 *)
(** *** Lemmas about invariants preserved by coresteps*)

(** A corestep cannot change the contents of memory locations where permission is not above [Readable]*)
Lemma corestep_stable_val:
forall  c c' m m' pmap1 pmap2
(Hlt1: permMapLt pmap1 (getMaxPerm m))
(Hlt2: permMapLt pmap2 (getMaxPerm m))
(Hdisjoint: permMapsDisjoint pmap1 pmap2 \/ permMapCoherence pmap1 pmap2)
(Hstep: corestep semSem c (restrPermMap Hlt1) c' m'),
forall b ofs (Hreadable: Mem.perm (restrPermMap Hlt2) b ofs Cur Readable),
Maps.ZMap.get ofs (Mem.mem_contents m) # b =
Maps.ZMap.get ofs (Mem.mem_contents m') # b.