Definition restrPermMap p' m (Hlt: permMapLt p' (getMaxPerm m)) : mem.

(* Specifications: *)
Lemma restrPermMap_ext:
forall p1 p2 m
(P1: permMapLt p1 (getMaxPerm m))
(P2: permMapLt p2 (getMaxPerm m)),
(forall b, (p1 !! b) = (p2 !! b)) ->
restrPermMap P1 = restrPermMap P2.
Lemma restrPermMap_nextblock :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)),
Mem.nextblock (restrPermMap Hlt) = Mem.nextblock m.
Lemma restrPermMap_valid :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)) b,
Mem.valid_block (restrPermMap Hlt) b <-> Mem.valid_block m b.
Lemma restrPermMap_contents :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)),
contents_at (restrPermMap Hlt) = contents_at m.
Lemma restrPermMap_max :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)),
max_access_at (restrPermMap Hlt) = max_access_at m.
Lemma getMax_restr :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)) b,
(getMaxPerm (restrPermMap Hlt)) !!  b = (getMaxPerm m) !! b.
Lemma restrPermMap_irr' : forall p' p'' m
(Hlt : permMapLt p' (getMaxPerm m))
(Hlt': permMapLt p'' (getMaxPerm m))
(Heq_new: p' = p''),
restrPermMap Hlt = restrPermMap Hlt'.
Lemma restrPermMap_disjoint_inv:
forall (mi mj m : mem) (pi pj : access_map)
(Hltj: permMapLt pj (getMaxPerm m))
(Hlti: permMapLt pi (getMaxPerm m))
(Hdisjoint: permMapsDisjoint pi pj)
(Hrestrj: restrPermMap Hltj = mj)
(Hrestri: restrPermMap Hlti = mi),
permMapsDisjoint (getCurPerm mi) (getCurPerm mj).
Lemma restrPermMap_correct :
forall p' m (Hlt: permMapLt p' (getMaxPerm m))
b ofs,
permission_at (restrPermMap Hlt) b ofs Max =
Maps.PMap.get b (getMaxPerm m) ofs /\
permission_at (restrPermMap Hlt) b ofs Cur =
Maps.PMap.get b p' ofs.
Corollary restrPermMap_Cur :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)) b ofs,
permission_at (restrPermMap Hlt) b ofs Cur =
Maps.PMap.get b p' ofs.
Corollary restrPermMap_Max :
forall p' m (Hlt: permMapLt p' (getMaxPerm m)) b ofs,
permission_at (restrPermMap Hlt) b ofs Max =
Maps.PMap.get b (getMaxPerm m) ofs.
Lemma restrPermMap_can : forall (p : access_map) (m m': mem)
(Hlt: permMapLt p (getMaxPerm m))
(Hrestrict: restrPermMap Hlt = m'),
isCanonical (getCurPerm m').
Lemma erasePerm_V :
forall m b ofs k,
Mem.valid_block m b ->
permission_at (erasePerm m) b ofs k = Some Freeable.
Lemma erasePerm_I :
forall m b ofs k,
~ Mem.valid_block m b ->
permission_at (erasePerm m) b ofs k = None.