Remark inject_incr_separated_same:
  forall f1 f2 m1 m1',
  inject_incr f1 f2 -> inject_separated f1 f2 m1 m1' ->
  forall b, Mem.valid_block m1 b -> f2 b = f1 b.Remark inject_incr_separated_same':
  forall f1 f2 m1 m1',
  inject_incr f1 f2 -> inject_separated f1 f2 m1 m1' ->
  forall b b' delta,
  f2 b = Some(b', delta) -> Mem.valid_block m1' b' -> f1 b = Some(b', delta).

(* Specifications: *)
Lemma padding_freeable_invariant: forall f1 e tm1 sp sz cenv lo hi f2 tm2, padding_freeable f1 e tm1 sp sz -> match_env f1 cenv e sp lo hi -> (forall ofs, Mem.perm tm1 sp ofs Cur Freeable -> Mem.perm tm2 sp ofs Cur Freeable) -> (forall b, Plt b hi -> f2 b = f1 b) -> padding_freeable f2 e tm2 sp sz.
Lemma match_env_external_call: forall f1 cenv e sp lo hi f2 m1 m1' (WD2: SM_wd f2), match_env (restrict (as_inj f1) (vis f1)) cenv e sp lo hi -> extern_incr f1 f2 -> inject_separated (restrict (as_inj f1) (vis f1)) (as_inj f2) m1 m1' -> Ple hi (Mem.nextblock m1) -> Plt sp (Mem.nextblock m1') -> match_env (as_inj f2) cenv e sp lo hi.