Module CConseqFacts :=
SeparationLogicFacts.GenCConseqFacts
(SeparationLogicAsLogicSoundness.MainTheorem.CSHL_PracticalLogic.CSHL_MinimumLogic.CSHL_Def)
(SeparationLogicAsLogicSoundness.MainTheorem.CSHL_PracticalLogic.CSHL_MinimumLogic).
Module Conseq :=
SeparationLogicFacts.GenConseq
(SeparationLogicAsLogicSoundness.MainTheorem.CSHL_PracticalLogic.CSHL_MinimumLogic.CSHL_Def)
(SeparationLogicAsLogicSoundness.MainTheorem.CSHL_PracticalLogic.CSHL_MinimumLogic).
Module ConseqFacts :=
SeparationLogicFacts.GenConseqFacts
(SeparationLogicAsLogicSoundness.MainTheorem.CSHL_PracticalLogic.CSHL_MinimumLogic.CSHL_Def)
(Conseq).

Lemma semax_post:
forall (R': ret_assert) Espec {cs: compspecs} Delta (R: ret_assert) P c,
ENTAIL Delta, RA_normal R' |-- RA_normal R ->
ENTAIL Delta, RA_break R' |-- RA_break R ->
ENTAIL Delta, RA_continue R' |-- RA_continue R ->
(forall vl, ENTAIL Delta, RA_return R' vl |-- RA_return R vl) ->
@semax cs Espec Delta P c R' ->  @semax cs Espec Delta P c R.