Section memstepN.
Context {C:Type} (M:@MemSem C).
induction n; intros; inv H.
apply mem_step_refl.
destruct H0 as [m'' [CS CSN]]. eapply mem_step_trans.
eapply corestep_mem; eassumption.
eapply IHn; eassumption.
Qed.
destruct H as [n H]. eapply corestepN_mem; eassumption. Qed.
destruct H as [n H]. eapply corestepN_mem; eassumption. Qed.
apply corestepN_mem in H. apply HP; trivial. Qed.
destruct H. apply (memsem_preservesN _ HP) in H; trivial. Qed.

Lemma memsem_preserves_star P (HP:memstep_preserve P)
c m c' m' (H: corestep_star M c m c' m'): P m m'.