Require Import mathcomp.ssreflect.ssreflect.
Require Import CTL_def hilbert hilbert_hist.

Set Implicit Arguments.
Import Prenex Implicits.

Axiomatization of Lange and Stirling

Lange and Stirling give an axiomatization of CTL based on a game semantics. We show that this axiomatization is equivalent to the Hilbert system employed in our completeness proof.
Note: The Infrastructure for Hilbert proofs only works for the "Canonical" Hilbert system for a given type of formulas. We use modules to ensure that the right system is considered canonical at the right time.

Module LS.
Section Hilbert.

The defined logical operations are only available once the respective records (pSystem etc.) have been declared. Hence we introduce local notations and later restate some of the axioms and rules using the defined notations from modular_hilbert.v

  Definition fEX s := (~~: fAX (~~: s)).
  Definition fER s t := (~~: fAU (~~: s) (~~: t)).

  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)

  | axSer s : prv (fAX (~~: s) ---> ~~: fAX s)

  | axARf' s t : prv (fAR s t ---> t :/\: (s :\/: fAX (fAR s t)))
  | ARel' s t u :
      prv (u ---> t :/\: (s :\/: fAX (fAR (s :\/: u) (t :\/: u)))) ->
      prv (u ---> fAR s t)

  | axERf' s t : prv (fER s t ---> t :/\: (s :\/: fEX (fER s t)))
  | ERel' s t u :
      prv (u ---> t :/\: (s :\/: fEX (fER (s :\/: u) (t :\/: u)))) ->
      prv (u ---> fER s t)

  | axAUcmp' s t : prv (fAU s t <--> ~~: fER (~~: s) (~~: t)).
End Hilbert.

Canonical Structure prv_mSystem := MSystem rMP axK axS.
Canonical Structure prv_pSystem := PSystem axDN.
Canonical Structure prv_kSystem := KSystem rNec axN.

restate axioms/rule using notations from modular_hilbert.v

Lemma ARel s t u :
  prv (u ---> t :/\: (s :\/: fAX (fAR (s :\/: u) (t :\/: u)))) ->
  prv (u ---> fAR s t).

Lemma axARf s t : prv (fAR s t ---> t :/\: (s :\/: fAX (fAR s t))).

Lemma ERel s t u :
      prv (u ---> t :/\: (s :\/: fEX (fER (s :\/: u) (t :\/: u)))) ->
      prv (u ---> fER s t).

Lemma axERf s t : prv (fER s t ---> t :/\: (s :\/: fEX (fER s t))).

Lemma axAUcmp s t : prv (fAU s t <--> ~~: fER (~~: s) (~~: t)).

Completeness

We show completenes of the Hilbert system LS by showing admissibility of the rules and axoms of the Hilbert system IC.
Helper Lemmas

Lemma ARI s t : prv (s ---> t ---> fAR s t).

Lemma ERI s t : prv (s ---> t ---> fER s t).

Rules/Axioms of inductive Hilbert system

Lemma AR_ind s t u : prv (u ---> t) -> prv (u ---> (s ---> fF) ---> fAX u) -> prv (u ---> fAR s t).

Lemma axARE s t : prv (fAR s t ---> t).

Lemma axARu s t : prv (fAR s t ---> ~~: s ---> fAX (fAR s t)).

Lemma AU_ind s t u : prv (t ---> u) -> prv (s ---> fAX u ---> u) -> prv ((fAU s t) ---> u).

Lemma axAUI s t : prv (t ---> fAU s t).

Lemma axAUf s t : prv (s ---> fAX (fAU s t) ---> fAU s t).

Lemma ax_serial : prv (~~: (fAX fF)).

End LS.

Theorem LS_translation s : IC.prv s -> LS.prv s.

Soundness

We show soundness by proving all rules admissible in IC
Set up the Infrastructure for Hilbert proofs for the system IC
Import IC.

The lemmas below correspond, up to propositional reasoning, to the hilbert lemmas for the soundness proof of the Gentzen system (file hilbert_hist.v)

Lemma ERel (s t u : form) :
      prv (u ---> t :/\: (s :\/: EX (ER (s :\/: u) (t :\/: u)))) ->
      prv (u ---> ER s t).

Lemma ARel s t u :
  prv (u ---> t :/\: (s :\/: AX (AR (s :\/: u) (t :\/: u)))) ->
  prv (u ---> AR s t).

Lemma axARf s t : prv (fAR s t ---> t :/\: (s :\/: fAX (fAR s t))).

Lemma axERf s t : prv (ER s t ---> t :/\: (s :\/: EX (ER s t))).

Lemma axAUcmp s t : prv (fAU s t <--> ~~: ER (~~: s) (~~: t)).

Lemma axSer s : prv (fAX (~~: s) ---> ~~: fAX s).

Lemma LS_sound s : LS.prv s -> prv s.