Alg.sBIH_implicative
Require Import Ensembles.
Require Import Syntax.
Require Import BIH_export.
Section implicative.
Theorem sBIH_IL1 ϕ : sBIH_prv (Empty_set _) (ϕ --> ϕ).
Proof.
apply simp_Id_gen.
Qed.
Theorem sBIH_IL2 ϕ ψ χ : sBIH_prv (fun δ => δ = ϕ --> ψ \/ δ = ψ --> χ) (ϕ --> χ).
Proof.
eapply meta_sImp_trans.
- apply sId ; left ; split.
- apply sId ; right ; split.
Qed.
Theorem sBIH_IL4 ϕ ψ : sBIH_prv (fun δ => δ = ϕ \/ δ = ϕ --> ψ) ψ.
Proof.
eapply sMP.
- apply sId ; right ; split.
- apply sId ; left ; split.
Qed.
Theorem sBIH_IL5 ϕ ψ : sBIH_prv (Singleton _ ϕ) (ψ --> ϕ).
Proof.
eapply sMP.
- apply sThm_irrel.
- apply sId ; split.
Qed.
Theorem sBIH_IL3_Top :
sBIH_prv (Empty_set _) (⊤ --> ⊤).
Proof.
apply simp_Id_gen.
Qed.
Theorem sBIH_IL3_Bot :
sBIH_prv (Empty_set _) (⊥ --> ⊥).
Proof.
apply simp_Id_gen.
Qed.
Definition EqImp ϕ1 ϕ2 ψ1 ψ2 := fun δ => δ = ϕ1 --> ϕ2 \/ δ = ψ1 --> ψ2 \/ δ = ϕ2 --> ϕ1 \/ δ = ψ2 --> ψ1.
Theorem sBIH_IL3_And ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 ∧ ψ1) --> (ϕ2 ∧ ψ2)).
Proof.
eapply sMP.
- eapply sMP.
+ apply sAx ; eapply A8 ; reflexivity.
+ eapply meta_sImp_trans.
* apply sAx ; eapply A6 ; reflexivity.
* apply sId ; firstorder.
- eapply meta_sImp_trans.
+ apply sAx ; eapply A7 ; reflexivity.
+ apply sId ; firstorder.
Qed.
Theorem sBIH_IL3_Or ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 ∨ ψ1) --> (ϕ2 ∨ ψ2)).
Proof.
eapply sMP.
- eapply sMP.
+ apply sAx ; eapply A5 ; reflexivity.
+ eapply meta_sImp_trans.
* apply sId. left ; reflexivity.
* apply sAx ; eapply A3 ; reflexivity.
- apply meta_sImp_trans with ψ2.
+ apply sId ; firstorder.
+ apply sAx ; eapply A4 ; reflexivity.
Qed.
Theorem sBIH_IL3_Imp ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 --> ψ1) --> (ϕ2 --> ψ2)).
Proof.
eapply sMP.
- apply sAnd_Imp.
- apply meta_sImp_trans with ψ1.
+ apply meta_sImp_trans with ((ϕ1 --> ψ1) ∧ ϕ1).
* eapply sMP.
-- eapply sMP.
++ apply sAx ; eapply A8 ; reflexivity.
++ apply sAx ; eapply A6 ; reflexivity.
-- apply meta_sImp_trans with ϕ2.
++ apply sAx ; eapply A7 ; reflexivity.
++ apply sId ; firstorder.
* eapply sMP ; [ apply sImp_And | apply simp_Id_gen].
+ apply sId ; firstorder.
Qed.
Theorem sBIH_IL3_Excl ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 --< ψ1) --> (ϕ2 --< ψ2)).
Proof.
eapply meta_sImp_trans with (ϕ1 --< ψ2).
- apply smonoL_Excl. apply sId ; firstorder.
- apply smonoR_Excl. apply sId ; firstorder.
Qed.
End implicative.
Require Import Syntax.
Require Import BIH_export.
Section implicative.
Theorem sBIH_IL1 ϕ : sBIH_prv (Empty_set _) (ϕ --> ϕ).
Proof.
apply simp_Id_gen.
Qed.
Theorem sBIH_IL2 ϕ ψ χ : sBIH_prv (fun δ => δ = ϕ --> ψ \/ δ = ψ --> χ) (ϕ --> χ).
Proof.
eapply meta_sImp_trans.
- apply sId ; left ; split.
- apply sId ; right ; split.
Qed.
Theorem sBIH_IL4 ϕ ψ : sBIH_prv (fun δ => δ = ϕ \/ δ = ϕ --> ψ) ψ.
Proof.
eapply sMP.
- apply sId ; right ; split.
- apply sId ; left ; split.
Qed.
Theorem sBIH_IL5 ϕ ψ : sBIH_prv (Singleton _ ϕ) (ψ --> ϕ).
Proof.
eapply sMP.
- apply sThm_irrel.
- apply sId ; split.
Qed.
Theorem sBIH_IL3_Top :
sBIH_prv (Empty_set _) (⊤ --> ⊤).
Proof.
apply simp_Id_gen.
Qed.
Theorem sBIH_IL3_Bot :
sBIH_prv (Empty_set _) (⊥ --> ⊥).
Proof.
apply simp_Id_gen.
Qed.
Definition EqImp ϕ1 ϕ2 ψ1 ψ2 := fun δ => δ = ϕ1 --> ϕ2 \/ δ = ψ1 --> ψ2 \/ δ = ϕ2 --> ϕ1 \/ δ = ψ2 --> ψ1.
Theorem sBIH_IL3_And ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 ∧ ψ1) --> (ϕ2 ∧ ψ2)).
Proof.
eapply sMP.
- eapply sMP.
+ apply sAx ; eapply A8 ; reflexivity.
+ eapply meta_sImp_trans.
* apply sAx ; eapply A6 ; reflexivity.
* apply sId ; firstorder.
- eapply meta_sImp_trans.
+ apply sAx ; eapply A7 ; reflexivity.
+ apply sId ; firstorder.
Qed.
Theorem sBIH_IL3_Or ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 ∨ ψ1) --> (ϕ2 ∨ ψ2)).
Proof.
eapply sMP.
- eapply sMP.
+ apply sAx ; eapply A5 ; reflexivity.
+ eapply meta_sImp_trans.
* apply sId. left ; reflexivity.
* apply sAx ; eapply A3 ; reflexivity.
- apply meta_sImp_trans with ψ2.
+ apply sId ; firstorder.
+ apply sAx ; eapply A4 ; reflexivity.
Qed.
Theorem sBIH_IL3_Imp ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 --> ψ1) --> (ϕ2 --> ψ2)).
Proof.
eapply sMP.
- apply sAnd_Imp.
- apply meta_sImp_trans with ψ1.
+ apply meta_sImp_trans with ((ϕ1 --> ψ1) ∧ ϕ1).
* eapply sMP.
-- eapply sMP.
++ apply sAx ; eapply A8 ; reflexivity.
++ apply sAx ; eapply A6 ; reflexivity.
-- apply meta_sImp_trans with ϕ2.
++ apply sAx ; eapply A7 ; reflexivity.
++ apply sId ; firstorder.
* eapply sMP ; [ apply sImp_And | apply simp_Id_gen].
+ apply sId ; firstorder.
Qed.
Theorem sBIH_IL3_Excl ϕ1 ϕ2 ψ1 ψ2 :
sBIH_prv (EqImp ϕ1 ϕ2 ψ1 ψ2) ((ϕ1 --< ψ1) --> (ϕ2 --< ψ2)).
Proof.
eapply meta_sImp_trans with (ϕ1 --< ψ2).
- apply smonoL_Excl. apply sId ; firstorder.
- apply smonoR_Excl. apply sId ; firstorder.
Qed.
End implicative.