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_flipped:
forall (R' : ret_assert) Espec {cs: compspecs} (Delta : tycontext) (R : ret_assert)
(P : environ->mpred) (c : statement),
@semax cs Espec Delta P c R' ->
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.