Definition mkIE (j j': meminj) (m1 m1' m2 m3':Mem.mem)
                (VB': forall (b1 b3 : block) (delta : Z),
                       j' b1 = Some (b3, delta) ->
                       (Mem.valid_block m1' b1 /\ Mem.valid_block m3' b3))
                (VB: (Mem.nextblock m2 <= Mem.nextblock m3')%positive)
               : Mem.mem'.

(* Specifications: *)
Lemma interpolate_IE: forall m1 m1' m2 j (Minj12 : Mem.inject j m1 m2) (Fwd1: mem_forward m1 m1') j' (InjInc: inject_incr j j') (Sep12 : inject_separated j j' m1 m2) (UnchLUj: Mem.unchanged_on (loc_unmapped j) m1 m1') m3 m3' (Ext23 : Mem.extends m2 m3) (Fwd3: mem_forward m3 m3') (UnchLOORj1_3: Mem.unchanged_on (loc_out_of_reach j m1) m3 m3') (Inj13' : Mem.inject j' m1' m3') (UnchLOOB23_3': Mem.unchanged_on (loc_out_of_bounds m2) m3 m3'), exists m2', mem_forward m2 m2' /\ Mem.extends m2' m3' /\ Mem.inject j' m1' m2' /\ Mem.unchanged_on (loc_out_of_reach j m1) m2 m2' .