apply mem_step_refl.
destruct H0 as [m'' [CS CSN]]. eapply mem_step_trans.
eapply corestep_mem; eassumption.
eapply IHn; eassumption.
Qed.

(* Specifications: *)
Lemma corestep_plus_mem c m c' m' (H:corestep_plus M c m c' m'): mem_step m m'.
destruct H as [n H]. eapply corestepN_mem; eassumption. Qed.
Lemma corestep_star_mem c m c' m' (H:corestep_star M c m c' m'): mem_step m m'.
destruct H as [n H]. eapply corestepN_mem; eassumption. Qed.
Lemma memsem_preservesN P (HP: memstep_preserve P)
n c m c' m' (H: corestepN M n c m c' m'): P m m'.
Lemma corestep_plus_mem c m c' m' (H:corestep_plus M c m c' m'): mem_step m m'.
destruct H as [n H]. eapply corestepN_mem; eassumption. Qed.
Lemma corestep_star_mem c m c' m' (H:corestep_star M c m c' m'): mem_step m m'.
destruct H as [n H]. eapply corestepN_mem; eassumption. Qed.
Lemma memsem_preservesN P (HP: memstep_preserve P)
n c m c' m' (H: corestepN M n c m c' m'): P m m'.