Definition MATCH (d:CMinSel_core) mu c1 m1 c2 m2:Prop :=
  match_states (restrict (as_inj mu) (vis mu)) c1 m1 c2 m2 /\
  REACH_closed m1 (vis mu) /\
  meminj_preserves_globals ge (as_inj mu) /\
  globalfunction_ptr_inject (as_inj mu) /\
  (forall b, isGlobalBlock ge b = true -> frgnBlocksSrc mu b = true) /\
  sm_valid mu m1 m2 /\ SM_wd mu /\ Mem.inject (as_inj mu) m1 m2.

Lemma MATCH_corestep: forall st1 m1 st1' m1' (CS: corestep cminsel_eff_sem ge st1 m1 st1' m1') st2 mu m2 (MTCH: MATCH st1 mu st1 m1 st2 m2), exists st2' m2' mu', (corestep_plus rtl_eff_sem tge st2 m2 st2' m2' \/ (corestep_star rtl_eff_sem tge st2 m2 st2' m2' /\ lt_state st1' st1)) /\ intern_incr mu mu' /\ sm_inject_separated mu mu' m1 m2 /\ sm_locally_allocated mu mu' m1 m2 m1' m2' /\ MATCH st1' mu' st1' m1' st2' m2' /\ SM_wd mu' /\ sm_valid mu' m1' m2'.