(** *** 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.