Module ConseqFacts :=
SeparationLogicFacts.GenConseqFacts
(SeparationLogicAsLogicSoundness.MainTheorem.CSHL_PracticalLogic.CSHL_MinimumLogic.CSHL_Def)
(Conseq).
(* OLD VERSION: Lemma semax_post': forall R' Espec {cs: compspecs} Delta R P c, R' |-- R -> @semax cs Espec Delta P c (normal_ret_assert R') -> @semax cs Espec Delta P c (normal_ret_assert R). *)
intros.
destruct Q as [?Q ?Q ?Q ?Q].
eapply semax_post; eauto; intros; apply andp_left2; simpl; auto; normalize.
Qed.

Lemma semax_seq':
forall Espec {cs: compspecs} Delta P c1 P' c2 Q,
@semax cs Espec Delta P c1 (normal_ret_assert P') ->
@semax cs Espec Delta P' c2 Q ->
@semax cs Espec Delta P (Ssequence c1 c2) Q.