Definition AccessMap_EE_Property  (m1 m1' m2:Mem.mem)
           (AM:ZMap.t (Z -> perm_kind -> option permission)):Prop :=
  forall b,
    (Mem.valid_block m2 b -> forall k ofs,
         (Mem.perm m1 b ofs Max Nonempty ->
          PMap.get b AM ofs k = PMap.get b m1'.(Mem.mem_access) ofs k) /\
         (~Mem.perm m1 b ofs Max Nonempty ->
          PMap.get b AM ofs k = PMap.get b m2.(Mem.mem_access) ofs k))
     /\ (~ Mem.valid_block m2 b -> forall k ofs,
             PMap.get b AM ofs k = PMap.get b m1'.(Mem.mem_access) ofs k).

(* Specifications: *)
Lemma EE_ok: forall (m1 m1' m2 m3 m3':Mem.mem) (Ext12: Mem.extends m1 m2) (Fwd1: mem_forward m1 m1') (Ext23: Mem.extends m2 m3) (Fwd3: mem_forward m3 m3') (Ext13' : Mem.extends m1' m3') (UnchOn13 : Mem.unchanged_on (loc_out_of_bounds m1) m3 m3') m2' (NB: m2'.(Mem.nextblock)=m3'.(Mem.nextblock)) (CONT: Content_EE_Property m1 m1' m2 (m2'.(Mem.mem_contents))) (ACCESS: AccessMap_EE_Property m1 m1' m2 (m2'.(Mem.mem_access))), mem_forward m2 m2' /\ Mem.extends m1' m2' /\ Mem.extends m2' m3' /\ Mem.unchanged_on (loc_out_of_bounds m1) m2 m2'.