KM.GHC.KMH
From Stdlib Require Import Ensembles.
Require Import syntax.
(* We define here the intuitionistic axioms. *)
Inductive IAxioms (F : form) : Prop :=
| IA1 A B : F = (A → (B → A)) -> IAxioms F
| IA2 A B C : F = ((A → (B → C)) → ((A → B) → (A → C))) -> IAxioms F
| IA3 A B : F = (A → (A ∨ B)) -> IAxioms F
| IA4 A B : F = (B → (A ∨ B)) -> IAxioms F
| IA5 A B C : F = ((A → C) → ((B → C) → ((A ∨ B) → C))) -> IAxioms F
| IA6 A B : F = ((A ∧ B) → A) -> IAxioms F
| IA7 A B : F = ((A ∧ B) → B) -> IAxioms F
| IA8 A B C : F = ((A → B) → ((A → C) → (A → (B ∧ C)))) -> IAxioms F
| IA9 A : F = (⊥ → A) -> IAxioms F.
(* We then define the modal axioms. *)
Inductive MAxioms (F : form) : Prop :=
| K A B : F = ((□ (A → B)) → ((□ A) → □ B)) -> MAxioms F
| L A : F = (((□ A) → A) → A) -> MAxioms F
| NA A B : F = ((□ A) → (B ∨ (B → A))) -> MAxioms F.
(* And join both set of axioms. *)
Definition Axioms (A : form) : Prop := IAxioms A \/ MAxioms A.
(* We can then define the generalised Hilbert system for local and
global KM, i.e. lKM and gKM. *)
Inductive KMH_prv : (form -> Prop) -> form -> Prop :=
| Id Γ A : In _ Γ A -> KMH_prv Γ A
| Ax Γ A : Axioms A -> KMH_prv Γ A
| MP Γ A B : KMH_prv Γ (A → B) -> KMH_prv Γ A -> KMH_prv Γ B
| Nec Γ A : KMH_prv (Empty_set _) A -> KMH_prv Γ (□ A).
Inductive gKMH_prv : (form -> Prop) -> form -> Prop :=
| gId Γ A : In _ Γ A -> gKMH_prv Γ A
| gAx Γ A : Axioms A -> gKMH_prv Γ A
| gMP Γ A B : gKMH_prv Γ (A → B) -> gKMH_prv Γ A -> gKMH_prv Γ B
| gNec Γ A : gKMH_prv Γ A -> gKMH_prv Γ (□ A).
Require Import syntax.
(* We define here the intuitionistic axioms. *)
Inductive IAxioms (F : form) : Prop :=
| IA1 A B : F = (A → (B → A)) -> IAxioms F
| IA2 A B C : F = ((A → (B → C)) → ((A → B) → (A → C))) -> IAxioms F
| IA3 A B : F = (A → (A ∨ B)) -> IAxioms F
| IA4 A B : F = (B → (A ∨ B)) -> IAxioms F
| IA5 A B C : F = ((A → C) → ((B → C) → ((A ∨ B) → C))) -> IAxioms F
| IA6 A B : F = ((A ∧ B) → A) -> IAxioms F
| IA7 A B : F = ((A ∧ B) → B) -> IAxioms F
| IA8 A B C : F = ((A → B) → ((A → C) → (A → (B ∧ C)))) -> IAxioms F
| IA9 A : F = (⊥ → A) -> IAxioms F.
(* We then define the modal axioms. *)
Inductive MAxioms (F : form) : Prop :=
| K A B : F = ((□ (A → B)) → ((□ A) → □ B)) -> MAxioms F
| L A : F = (((□ A) → A) → A) -> MAxioms F
| NA A B : F = ((□ A) → (B ∨ (B → A))) -> MAxioms F.
(* And join both set of axioms. *)
Definition Axioms (A : form) : Prop := IAxioms A \/ MAxioms A.
(* We can then define the generalised Hilbert system for local and
global KM, i.e. lKM and gKM. *)
Inductive KMH_prv : (form -> Prop) -> form -> Prop :=
| Id Γ A : In _ Γ A -> KMH_prv Γ A
| Ax Γ A : Axioms A -> KMH_prv Γ A
| MP Γ A B : KMH_prv Γ (A → B) -> KMH_prv Γ A -> KMH_prv Γ B
| Nec Γ A : KMH_prv (Empty_set _) A -> KMH_prv Γ (□ A).
Inductive gKMH_prv : (form -> Prop) -> form -> Prop :=
| gId Γ A : In _ Γ A -> gKMH_prv Γ A
| gAx Γ A : Axioms A -> gKMH_prv Γ A
| gMP Γ A B : gKMH_prv Γ (A → B) -> gKMH_prv Γ A -> gKMH_prv Γ B
| gNec Γ A : gKMH_prv Γ A -> gKMH_prv Γ (□ A).