(****************The following three conditions are new******************)

Lemma MS_match_callstack_alloc_variables_aux:
forall tm1 sp tm2 m1 vars e m2 cenv f1 cs fn le te,
Mem.alloc tm1 0 (fn_stackspace fn) = (tm2, sp) ->
fn_stackspace fn <= Int.max_unsigned ->
alloc_variables empty_env m1 vars e m2 ->
list_norepet (map fst vars) ->
cenv_compat cenv vars (fn_stackspace fn) ->
cenv_separated cenv vars ->
(forall id ofs, cenv!id = Some ofs -> In id (map fst vars)) ->
Mem.inject f1 m1 tm1 ->
match_callstack prog f1 m1 tm1 cs (Mem.nextblock m1) (Mem.nextblock tm1) ->
match_temps f1 le te ->
exists f2,
match_callstack prog f2 m2 tm2 (Frame cenv fn e le te sp (Mem.nextblock m1) (Mem.nextblock m2) :: cs)
(Mem.nextblock m2) (Mem.nextblock tm2)
/\ Mem.inject f2 m2 tm2
/\ (*LENB: THIS IS NEW*) inject_incr f1 f2
/\ (forall b, Mem.valid_block m1 b -> f2 b = f1 b)
/\ (forall b b' d', f1 b = None -> f2 b = Some (b',d') -> b' = sp)
/\ forall j',  inject_incr f2 j' -> Events.inject_separated f2 j' m2 tm2 ->
Events.inject_separated f2 j' m1 tm1.