(* A minimal preservation property we sometimes require.*)
Definition mem_forward (m1 m2:mem) :=
(forall b, Mem.valid_block m1 b ->
Mem.valid_block m2 b /\
forall ofs p, Mem.perm m2 b ofs Max p -> Mem.perm m1 b ofs Max p).

Lemma compose_meminj_inject_separated': forall j12 j12' j23 j23' m1 m2 m3
(InjSep12 : inject_separated j12 j12' m1 m2)
(InjSep23 : inject_separated j23 j23' m2 m3)
(InjIncr12: inject_incr j12 j12') (InjIncr23: inject_incr j23 j23')
(MInj12: Mem.inject j12 m1 m2)
(MInj23: Mem.inject j23 m2 m3),
inject_separated (compose_meminj j12 j23) (compose_meminj j12' j23') m1 m3.