(*--------------------------------------------------------------------*)

(*NEW:*) (PG: meminj_preserves_globals ge j), exists c2' : CMin_core, exists m2' : mem, corestep_plus CMin_core_sem tge (CMin_State tfn (Sassign id x) tk (Vptr sp Int.zero) te) tm c2' m2' /\ match_cores (CSharpMin_State f Csharpminor.Sskip k e (PTree.set id v lenv)) j (CSharpMin_State f Csharpminor.Sskip k e (PTree.set id v lenv)) m c2' m2'. (*  exists c' : CSharpMin_core, inj_match_states_star unit match_cores MC_measure (tt,c') j (CSharpMin_State f Csharpminor.Sskip k e lenv) m' c2' m2'.*)
(*no case Set in CompCert 2.0 Lemma MS_step_case_Set: forall cenv sz f tfn j m tm e lenv te sp lo hi cs k tk xenv x x0 v a id (H: Csharpminor.eval_expr ge e lenv m a v) (TRF : transl_funbody cenv sz f = OK tfn) (MINJ : Mem.inject j m tm) (MCS : match_callstack prog j m tm (Frame cenv tfn e lenv te sp lo hi :: cs) (Mem.nextblock m) (Mem.nextblock tm)) (MK : match_cont k tk (fn_return f) cenv xenv cs) (EQ : transl_expr cenv a = OK (x, x0)), exists c2' : CMin_core, exists m2' : mem, corestep_plus CMin_core_sem tge (CMin_State  tfn (Sassign (for_temp id) x) tk (Vptr sp Int.zero) te) tm c2' m2' /\ match_cores (CSharpMin_State f Csharpminor.Sskip k e (PTree.set id v lenv)) j (CSharpMin_State f Csharpminor.Sskip k e (PTree.set id v lenv)) m c2' m2' . (*  exists c' : CSharpMin_core, inj_match_states_star unit match_cores MC_measure (tt,c') j (CSharpMin_State f Csharpminor.Sskip k e (PTree.set id v lenv)) m c2' m2' .*)
Lemma MS_step_case_Store:
forall cenv sz f tfn j m tm e lenv te sp lo hi cs k tk xenv x x0 x1 x2
chunk m' a addr vaddr v
(CH: Mem.storev chunk m vaddr v = Some m')
(EvAddr : Csharpminor.eval_expr ge e lenv m addr vaddr)
(EvA : Csharpminor.eval_expr ge e lenv m a v)
(TRF : transl_funbody cenv sz f = OK tfn)
(MINJ : Mem.inject j m tm)
(MCS : match_callstack prog j m tm (Frame cenv tfn e lenv te sp lo hi :: cs)
(Mem.nextblock m) (Mem.nextblock tm))
(MK : match_cont k tk cenv xenv cs)
(EQ : transl_expr cenv addr = OK (x, x0))
(EQ1 : transl_expr cenv a = OK (x1, x2))