Library hydras.Ackermann.Deduction

FOL's deduction Lemma
Original file by Russel O'Connor

From Coq Require Import Ensembles List.

From hydras.Ackermann Require Import folProof folProp.
Import FolNotations.

Section Deduction_Theorem.

Variable L : Language.
Let Formula := Formula L.
Let Formulas := Formulas L.
Let System := System L.
Let Term := Term L.
Let Terms := Terms L.
Let Prf := Prf L.
Let SysPrf := SysPrf L.

Let list_incl (X: Ensemble Formula) (l: list Formula) :=
     x, List.In x l mem _ X x.

Lemma SysPrf_rephrase X F : SysPrf X F s (_ : Prf s F), list_incl X s.

Theorem DeductionTheorem :
   (T : System) (f g : Formula)
         (prf : SysPrf (Ensembles.Add _ T g) f),
    SysPrf T (g f)%fol.

End Deduction_Theorem.