Local Open Scope logic_base.
Local Open Scope syntax.
Section ContextProperties.
Context {L: Language}
{minL: MinimunLanguage L}
{pL: PropositionalLanguage L}
{sL: SeparationLanguage L}
{Gamma: ProofTheory L}.
Definition context_sepcon (Phi Psi: context): context :=
fun z => exists x y, z = x * y /\ Phi |-- x /\ Psi |-- y.
Definition context_sepcon_included_l (Phi2 Psi: context): context -> Prop :=
fun Phi1 => Included _ (context_sepcon Phi1 Phi2) Psi.
Definition context_sepcon_included_r (Phi1 Psi: context): context -> Prop :=
fun Phi2 => Included _ (context_sepcon Phi1 Phi2) Psi.
Context {SC: NormalSequentCalculus L Gamma}
{bSC: BasicSequentCalculus L Gamma}
{fwSC: FiniteWitnessedSequentCalculus L Gamma}
{minSC: MinimunSequentCalculus L Gamma}
{ipSC: IntuitionisticPropositionalSequentCalculus L Gamma}
{AX: NormalAxiomatization L Gamma}
{minAX: MinimunAxiomatization L Gamma}
{ipGamma: IntuitionisticPropositionalLogic L Gamma}
{sGamma: SeparationLogic L Gamma}.

(* Specifications: *)
Lemma context_sepcon_derivable:
forall (Phi Psi: context) z,
context_sepcon Phi Psi |-- z ->
exists x y, |-- x * y --> z /\ Phi |-- x /\ Psi |-- y.
Lemma context_sepcon_consistent_rev_left:
forall (Phi1 Phi2 Psi: context),
Included _ (context_sepcon Phi1 Phi2) Psi ->
consistent Psi ->
consistent Phi1.
Lemma context_sepcon_included_l_derivable_subset_preserved: forall Phi2 Psi,
derivable_subset_preserved (context_sepcon_included_l Phi2 Psi).
Lemma context_sepcon_included_l_subset_preserved: forall Phi2 Psi,
subset_preserved (context_sepcon_included_l Phi2 Psi).
Lemma context_sepcon_included_l_finite_captured: forall Phi2 Psi,
finite_captured (context_sepcon_included_l Phi2 Psi).
Lemma context_sepcon_included_l_context_orp_captured: forall Phi2 Psi
(DC: derivable_closed Psi)
(OW: orp_witnessed Psi),
context_orp_captured (context_sepcon_included_l Phi2 Psi).
Lemma wand_deduction_theorem:
forall (Phi: context) x y,
context_sepcon Phi (Union _ empty_context (Singleton _ x)) |-- y <->
Phi |-- x -* y.
Lemma context_sepcon_included_equiv: forall Phi Psi,
derivable_closed Psi ->
Same_set _ (context_sepcon_included_l Phi Psi) (context_sepcon_included_r Phi Psi).