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_frame1:
forall {Espec: OracleKind} {cs: compspecs} QFrame Frame Delta Delta1
P Q c R P1 Q1 R1 P2 Q2 R2,
semax Delta1 (PROPx P1 (LOCALx Q1 (SEPx R1))) c
(normal_ret_assert (PROPx P2 (LOCALx Q2 (SEPx R2)))) ->
Delta1 = Delta ->
ENTAIL Delta, PROPx P (LOCALx Q (SEPx R)) |--
PROPx P1 (LOCALx (Q1++QFrame) (SEPx (R1 ++ Frame))) ->
closed_wrt_modvars c (LOCALx QFrame (SEPx Frame)) ->
semax Delta (PROPx P (LOCALx Q (SEPx R))) c
(normal_ret_assert (PROPx P2 (LOCALx (Q2++QFrame) (SEPx (R2++Frame))))).