Section INJEXT.
End INJEXT.

Lemma initial_inject_split: forall j m1 m3 (Inj:Mem.inject j m1 m3),
exists m2 j1 j2, j = compose_meminj j1 j2 /\
Mem.inject j1 m1 m2 /\ Mem.inject j2 m2 m3 /\
(forall b1 b2 ofs2, j1 b1 = Some(b2,ofs2) -> (b1=b2 /\ ofs2=0)) /\
(forall (b2 b3 : block) (ofs3 : Z),
j2 b2 = Some (b3, ofs3) ->
Mem.flat_inj 1%positive b2 = Some (b3, ofs3) \/
b2 = Mem.nextblock Mem.empty /\
compose_meminj j1 j2 (Mem.nextblock Mem.empty) = Some (b3, ofs3) \/
(exists m : positive,
b2 = (Mem.nextblock Mem.empty + m)%positive /\
compose_meminj j1 j2 (Mem.nextblock Mem.empty + m)%positive =
Some (b3, ofs3))).