Definition ContentMap_EI_ValidBlock_FUN (j:meminj) m1 m1' m2 b2 ofs2: memval :=
             match j b2 with
               None => ZMap.get ofs2 (PMap.get b2 m2.(Mem.mem_contents))
             | Some (b3,delta3) =>
                  if Mem.perm_dec m1 b2 ofs2 Max Nonempty
                  then ZMap.get ofs2 (PMap.get b2 m1'.(Mem.mem_contents))
                  else ZMap.get ofs2 (PMap.get b2 m2.(Mem.mem_contents))
             end.Definition ContentMap_EI_InvalidBlock_FUN m1' b2 ofs2: memval :=
    if Mem.perm_dec m1' b2 ofs2 Cur Readable
    then ZMap.get ofs2 (PMap.get b2 m1'.(Mem.mem_contents))
    else Undef.Definition ContentMap_EI_Block_FUN j m1 m1' m2 b ofs : memval:=
  if plt b (Mem.nextblock m2)
  then ContentMap_EI_ValidBlock_FUN j m1 m1' m2 b ofs
  else ContentMap_EI_InvalidBlock_FUN m1' b ofs.

(* Specifications: *)
Lemma CM_block_EI_existsT: forall j (m1 m1' m2:Mem.mem) b, { M : ZMap.t memval | fst M = Undef /\ forall ofs, ZMap.get ofs M = ContentMap_EI_Block_FUN j m1 m1' m2 b ofs}.