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.