Definition AccessMap_IE_FUN (j12 j12':meminj) (m1 m1' m2 m3':Mem.mem) (b2:block):
Z -> perm_kind -> option permission :=
if plt b2 (Mem.nextblock m2)
then (fun ofs2 k =>
match source j12 m1 b2 ofs2 with
Some(b1,ofs1) => PMap.get b1 m1'.(Mem.mem_access) ofs1 k
| None => PMap.get b2 m2.(Mem.mem_access) ofs2 k
end)
else (fun ofs2 k =>
match source j12' m1' b2 ofs2 with
Some(b1,ofs1) => PMap.get b1 m1'.(Mem.mem_access) ofs1 k
| None => PMap.get b2 m3'.(Mem.mem_access) ofs2 k
end).

(* Specifications: *)
Lemma mkAccessMap_IE_existsT: forall j12 j12'(m1 m1' m2 m3':Mem.mem)
(VB': forall b1 b3 delta, j12' b1 = Some (b3, delta) ->
(Mem.valid_block m1' b1 /\ Mem.valid_block m3' b3))
(VB : (Mem.nextblock m2 <= Mem.nextblock m3')%positive),
{ M : PMap.t (Z -> perm_kind -> option permission) |
fst M = (fun k ofs => None) /\
forall b, PMap.get b M = AccessMap_IE_FUN j12 j12' m1 m1' m2 m3' b}.