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}.

Lemma context_sepcon_derivable:
forall (Phi Psi: context) z,
context_sepcon Phi Psi |-- z ->
exists x y, |-- x * y --> z /\ Phi |-- x /\ Psi |-- y.