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}.