Fixpoint mkInjectionsN (N:nat)(n1 n2:block)(j k l: meminj)
:  meminj * meminj * block * block :=
match N with O => (j,k,n1,n2)
| S M => mkInjectionsN M (Pos.succ n1) (Pos.succ n2)
(fun b => if eq_block b n1
then Some (n2,0)
else j b)
(fun b => if eq_block b n2 then l n1 else k b)
l
end.

Lemma mkInjectionsN_3V: forall N n1 n2 j k l j' k' n1' n2'
(HI: mkInjectionsN N n1 n2 j k l = (j',k',n1',n2'))
(HJ: forall b1 b2 ofs2, j b1 = Some(b2,ofs2) -> (b1 < n1 /\ b2 < n2)%positive)
(HK: forall b2 b3 ofs3, k b2 = Some(b3,ofs3) -> (b2 < n2)%positive)
b1 b2 ofs2,
j' b1 = Some(b2,ofs2) ->
(j b1 = Some (b2,ofs2) /\ (b1 < n1 /\ b2 < n2)%positive) \/
(b1 = n1 /\ b2=n2 /\ ofs2=0 /\ (b1 < n1' /\ b2<n2')%positive) \/
(exists m, (b1 = n1 + m)%positive /\ (b2=n2 + m)%positive /\
ofs2=0 /\ (b1 < n1' /\ b2<n2')%positive).