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_bupd:
forall {CS: compspecs} {Espec: OracleKind} (Delta: tycontext),
forall P' (R': ret_assert) 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.