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_pre_post : forall {Espec: OracleKind}{CS: compspecs},
forall P' (R': ret_assert) Delta P c (R: ret_assert) ,
(local (tc_environ Delta) && P |-- P') ->
local (tc_environ Delta) && RA_normal R' |-- RA_normal R ->
local (tc_environ Delta) && RA_break R' |-- RA_break R ->
local (tc_environ Delta) && RA_continue R' |-- RA_continue R ->
(forall vl, local (tc_environ Delta) && RA_return R' vl |-- RA_return R vl) ->
@semax CS Espec Delta P' c R' -> @semax CS Espec Delta P c R.