destruct H. apply (memsem_preservesN _ HP) in H; trivial. Qed.

(* Specifications: *)
Lemma memsem_preserves_star P (HP:memstep_preserve P)
c m c' m' (H: corestep_star M c m c' m'): P m m'.
Lemma corestepN_fwd n  c m c' m'
(CS:corestepN M n c m c' m'): mem_forward m m'.
Lemma corestep_plus_fwd c m c' m'
(CS:corestep_plus M c m c' m'): mem_forward m m'.
Lemma corestep_star_fwd c m c' m'
(CS:corestep_star M c m c' m'): mem_forward m m'.
Lemma corestepN_rdonly n c m c' m'
(CS:corestepN M n c m c' m') b (VB:Mem.valid_block m b): readonly m b m'.
Lemma corestep_plus_rdonly c m c' m'
(CS:corestep_plus M c m c' m') b (VB:Mem.valid_block m b): readonly m b m'.
Lemma corestep_star_rdonly c m c' m'
(CS:corestep_star M c m c' m')b (VB:Mem.valid_block m b): readonly m b m'.
Lemma memsem_preserves_star P (HP:memstep_preserve P)
c m c' m' (H: corestep_star M c m c' m'): P m m'.
Lemma corestepN_fwd n  c m c' m'
(CS:corestepN M n c m c' m'): mem_forward m m'.
Lemma corestep_plus_fwd c m c' m'
(CS:corestep_plus M c m c' m'): mem_forward m m'.
Lemma corestep_star_fwd c m c' m'
(CS:corestep_star M c m c' m'): mem_forward m m'.
Lemma corestepN_rdonly n c m c' m'
(CS:corestepN M n c m c' m') b (VB:Mem.valid_block m b): readonly m b m'.
Lemma corestep_plus_rdonly c m c' m'
(CS:corestep_plus M c m c' m') b (VB:Mem.valid_block m b): readonly m b m'.
Lemma corestep_star_rdonly c m c' m'
(CS:corestep_star M c m c' m')b (VB:Mem.valid_block m b): readonly m b m'.