Definition AccessMap_EE_FUN'  (m1 m1' m2:Mem.mem) (b:block):
           Z -> perm_kind -> option permission :=
if plt b (Mem.nextblock m1')
then
  if plt b (Mem.nextblock m2)
  then (fun ofs k =>
         if Mem.perm_dec m1 b ofs Max Nonempty
         then PMap.get b m1'.(Mem.mem_access) ofs k
         else PMap.get b m2.(Mem.mem_access) ofs k)
  else PMap.get b m1'.(Mem.mem_access)
else (fun ofs k => None).Definition AccessMap_EE_FUN  (m1 m1' m2:Mem.mem) (b:block):
           Z -> perm_kind -> option permission :=
  if plt b (Mem.nextblock m2)
  then (fun ofs k =>
         if Mem.perm_dec m1 b ofs Max Nonempty
         then PMap.get b m1'.(Mem.mem_access) ofs k
         else PMap.get b m2.(Mem.mem_access) ofs k)
  else PMap.get b m1'.(Mem.mem_access).

(* Specifications: *)
Lemma mkAccessMap_EE_exists: forall (m1 m1' m2:Mem.mem), exists M : PMap.t (Z -> perm_kind -> option permission), fst M = (fun k ofs => None) /\ forall b, PMap.get b M = AccessMap_EE_FUN' m1 m1' m2 b.
Lemma mkAccessMap_EE_existsT: forall (m1 m1' m2:Mem.mem), { M : PMap.t (Z -> perm_kind -> option permission) | fst M = (fun k ofs => None) /\ forall b, PMap.get b M = AccessMap_EE_FUN' m1 m1' m2 b}.