Definition mkEI (j j': meminj) (m1 m2 m1':mem)
                (Ext12: Mem.extends m1 m2)
                (Fwd1: mem_forward m1 m1') m3
                (Inj23: Mem.inject j m2 m3)
                m3' (Fwd3: mem_forward m3 m3')
                (Inj13': Mem.inject j' m1' m3')
                (UnchOn3: Mem.unchanged_on (loc_out_of_reach j m1) m3 m3')
                (InjInc: inject_incr j j') (injSep: inject_separated j j' m1 m3)
                (UnchOn1: Mem.unchanged_on (loc_unmapped j) m1 m1')
             : Mem.mem'.

Lemma interpolate_EI: forall (m1 m2 m1':mem) (Ext12: Mem.extends m1 m2) (Fwd1: mem_forward m1 m1') m3 j (Inj23: Mem.inject j m2 m3) m3' (Fwd3: mem_forward m3 m3') j' (Inj13': Mem.inject j' m1' m3') (UnchOn3: Mem.unchanged_on (loc_out_of_reach j m1) m3 m3') (InjInc: inject_incr j j') (injSep: inject_separated j j' m1 m3) (UnchOn1: Mem.unchanged_on (loc_unmapped j) m1 m1'), exists m2', mem_forward m2 m2' /\ Mem.extends m1' m2' /\ Mem.inject j' m2' m3' /\ Mem.unchanged_on (loc_out_of_bounds m1) m2 m2' /\ Mem.unchanged_on (loc_unmapped j) m2 m2'.