Parameter MC_order :  core_data -> core_data -> Prop.Parameter MC_wellfounded: well_founded MC_order.Definition MC_measure (q:CSharpMin_core): nat :=
  match q with
  | CSharpMin_State fn s k e lenv => seq_left_depth s
  | _ => O
  end.

Lemma MS_step_case_Return: forall j m tm cs f e lenv k tk cenv v tv optid (MINJ : Mem.inject j m tm) (MCS : match_callstack prog j m tm cs (Mem.nextblock m) (Mem.nextblock tm)) (MK : match_cont (Csharpminor.Kcall optid f e lenv k) tk cenv nil cs) (RESINJ : val_inject j v tv) (*NEW:*) (PG: meminj_preserves_globals ge j), exists c2' : CMin_core, exists m2' : mem, corestep_plus CMin_core_sem tge (CMin_Returnstate tv tk) tm c2' m2' /\ match_cores (CSharpMin_State f Csharpminor.Sskip k e (set_optvar optid v lenv)) j (CSharpMin_State f Csharpminor.Sskip k e (set_optvar optid v lenv)) m c2' m2' .