Require Import mathcomp.ssreflect.ssreflect.
Require Import CTL_def gen_def hilbert hilbert_hist.
Import IC.
Set Implicit Arguments.
Import Prenex Implicits.
Require Import CTL_def gen_def hilbert hilbert_hist.
Import IC.
Set Implicit Arguments.
Import Prenex Implicits.
Definition hist (H : {fset clause}) := \and_(C <- H) ~~: [af C].
Lemma histU C (H : {fset clause}) :
prv (hist (C |` H) <--> ~~: [af C] :/\: hist H).
Definition interp_a A :=
match A with
| aVoid => Top
| aAU (s, t, H) => AU (s :/\: hist H) (t :/\: hist H)
| aAXU (s, t, H) => AX (AU (s :/\: hist H) (t :/\: hist H))
| aAR (s, t, H) => EU (~~:s :/\: hist H) (~~: t :/\: hist H)
| aAXR (s, t, H) => EX (EU (~~:s :/\: hist H) (~~: t :/\: hist H))
end.
Lemma annot_request E : prv (interp_a E ---> AX (interp_a (aR E))).
Lemma hist0 s : prv (s ---> s :/\: hist fset0).
Lemma hilbert_soundness A : gen A -> prv ([af A.1] ---> interp_a A.2 ---> Bot).
Lemma plain_soundness C : gen (C,aVoid) -> prv (~~: [af C]).