Require Import mathcomp.ssreflect.ssreflect.
Require Import CTL_def.
Set Implicit Arguments.
Import Prenex Implicits.
Require Import CTL_def.
Set Implicit Arguments.
Import Prenex Implicits.
Module IC.
Section Hilbert.
Inductive prv : form -> Prop :=
| rMP s t : prv (s ---> t) -> prv s -> prv t
| axK s t : prv (s ---> t ---> s)
| axS s t u : prv ((u ---> s ---> t) ---> (u ---> s) ---> u ---> t)
| axDN s : prv (((s ---> fF) ---> fF) ---> s)
| rNec s : prv s -> prv (fAX s)
| axN s t : prv (fAX (s ---> t) ---> fAX s ---> fAX t)
| AU_ind s t u : prv (t ---> u) -> prv (s ---> fAX u ---> u) -> prv ((fAU s t) ---> u)
| axAUI s t : prv (t ---> fAU s t)
| axAUf s t : prv (s ---> fAX (fAU s t) ---> fAU s t)
| rAR_ind s t u :
prv (u ---> t) -> prv (u ---> (s ---> fF) ---> fAX u) -> prv (u ---> fAR s t)
| axARE s t : prv (fAR s t ---> t)
| axARu s t : prv (fAR s t ---> (s ---> fF) ---> fAX (fAR s t))
| ax_serial : prv (fAX fF ---> fF).
The hilbert system for CTL can be seen as the composition of
Hilbert systems for minimal logic (M), classical propositional logic
(P), basic modal logic (K) and the rules and axioms specific to CTL
Canonical Structure prv_mSystem := MSystem rMP axK axS.
Canonical Structure prv_pSystem := PSystem axDN.
Canonical Structure prv_kSystem := KSystem rNec axN.
Canonical Structure prv_ctlSystem := CTLSystem AU_ind axAUI axAUf rAR_ind axARE axARu.
Canonical Structure form_slpType := @SLPType prv_pSystem form_slClass.