(* 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.