Section BILogicMorphisms.
Context {A : BILogicType} `{BIL: BILogic A}.
Global Instance sepSP_lentails_m:
Proper (lentails ++> lentails ++> lentails) sepSP.
Global Instance sepSP_lequiv_m:
Proper (lequiv ==> lequiv ==> lequiv) sepSP.
Global Instance wandSP_lentails_m:
Proper (lentails --> lentails ++> lentails) wandSP.
Global Instance wandSP_lequiv_m:
Proper (lequiv ==> lequiv ==> lequiv) wandSP.
End BILogicMorphisms.
Section DerivedInferenceRules.
Context {A : BILogicType} `{BILogic A}.

(* Specifications: *)
Lemma sepSP_falseR P : P ** lfalse -|- lfalse.
Lemma sepSP_falseL P : lfalse ** P -|- lfalse.
Lemma scME (P Q R S : A) (HPR: P |-- R) (HQS: Q |-- S) :
P ** Q |-- R ** S.
Lemma wandSPL P Q CL CR (HP: CL |-- P) (HR: Q |-- CR) :
(P -* Q) ** CL |-- CR.
Lemma siexistsE {T : Type} (P : T -> A) (Q : A) :
lexists P -* Q -|- Forall x, (P x -* Q).
Lemma septrue : forall p, p |-- p ** ltrue.
Lemma wand_curry : forall a b c, (a ** b) -* c -|- a -* (b -* c).
End DerivedInferenceRules.