Main Results

Equivalence of Hilbert Systems

Theorem IC_soundness s : IC.prv s -> forall (M:cmodel) (w:M), eval s w.

Theorem IC_LS_equivalence s : IC.prv s <-> LS.prv s.

Theorem IC_Eme90_equivalence s : IC.prv s <-> Eme90.prv s.

Soundness and Completeness for IC
Import IC.

Theorem soundness s : prv s -> forall (M:cmodel) (w:M), eval s w.

Theorem informative_completeness s :
     ( prv (~~: s) )
  + (exists2 M : fmodel, #|M| <= f_size s * 2^(4 * f_size s + 2) & exists (w:M), eval s w).

Corollary fin_completeness s : (forall (M:fmodel) (w:M), eval s w) -> prv s.

Decidability and Small-Model-Property

Corollary prv_dec s : decidable (prv s).

Corollary sat_dec s : decidable (exists (M:cmodel) (w:M), eval s w).

Corollary valid_dec s : decidable (forall (M:cmodel) (w:M), eval s w).

Corollary small_models s :
  (exists (M:cmodel) (w:M), eval s w) ->
  (exists2 M : fmodel, #|M| <= f_size s * 2^(4 * f_size s + 2) & exists (w:M), eval s w).

Gentzen System

Theorem plain_soundness C : gen (C,aVoid) -> prv (~~: [af C]).

Theorem gen_complete C :
  gen (C,aVoid) + (exists (M:fmodel) (w:M), forall s, s \in C -> eval (interp s) w).

Theorem gen_dec (A : clause * annot) : decidable (gen A).

Agreement of Path semantics with Inductive Semantics

Lemma evalP2 (M:fmodel) s (w : M) : (@satisfies M s w) <-> (@eval M s w).

Lemma fin_path_soundness s : prv s -> forall (M : fmodel) (w:M), @satisfies M s w.

Lemma sts_agreement : XM -> DC -> forall (M:sts) (w :M) s, eval s w <-> satisfies s w.

Soundness wrt. to Path semantics implies XM and DX

Lemma XM_required :
  (forall s, prv s -> forall (M : sts) (w : M), satisfies s w) -> XM.

Lemma DC_required :
  (forall s, prv s -> forall (M : sts) (w : M), satisfies s w) -> DC.

Agreement of coinductive AR and disjunctive AR implies LPO

Section LPO.
  Hypothesis hyp_AR : forall (M : fmodel) (w : M) (s t : form),
    cAR (@trans M) (eval s) (eval t) w -> pAR' (@trans M) (satisfies s) (satisfies t) w.

  Lemma LPO_of_disjunctive_AR (f : nat -> bool) :
    (forall n, f n = false) \/ exists n, f n = true.
End LPO.