(** [match_env] and allocations *)

(* Specifications: *)
Lemma match_env_alloc:
forall f1 id cenv e sp lo m1 sz m2 b ofs f2,
match_env f1 (PTree.remove id cenv) e sp lo (Mem.nextblock m1) ->
Mem.alloc m1 0 sz = (m2, b) ->
cenv!id = Some ofs ->
inject_incr f1 f2 ->
f2 b = Some(sp, ofs) ->
(forall b', b' <> b -> f2 b' = f1 b') ->
e!id = None ->
match_env f2 cenv (PTree.set id (b, sz) e) sp lo (Mem.nextblock m2).
Lemma match_env_alloc:
forall f1 id cenv e sp lo m1 sz m2 b ofs f2,
match_env f1 (PTree.remove id cenv) e sp lo (Mem.nextblock m1) ->
Mem.alloc m1 0 sz = (m2, b) ->
cenv!id = Some ofs ->
inject_incr f1 f2 ->
f2 b = Some(sp, ofs) ->
(forall b', b' <> b -> f2 b' = f1 b') ->
e!id = None ->
match_env f2 cenv (PTree.set id (b, sz) e) sp lo (Mem.nextblock m2).