Definition Formula := Formula LNT.Definition Formulas := Formulas LNT.Definition System := System LNT.Definition Sentence := Sentence LNT.Definition Term := Term LNT.Definition Terms := Terms LNT.Definition var := var LNT.Definition equal := equal LNT.Definition impH := impH LNT.Definition notH := notH LNT.Definition iffH := iffH LNT.Definition forallH := forallH LNT.Definition orH := orH LNT.Definition andH := andH LNT.Definition existH := existH LNT.Definition ifThenElseH := ifThenElseH LNT.Definition SysPrf := SysPrf LNT.Definition Plus (x y : Term) : Term :=
  apply LNT Plus (Tcons LNT 1 x (Tcons LNT 0 y (Tnil LNT))).Definition Times (x y : Term) : Term :=
  apply LNT Times (Tcons LNT 1 x (Tcons LNT 0 y (Tnil LNT))).Definition Succ (x : Term) : Term :=
  apply LNT Succ (Tcons LNT 0 x (Tnil LNT)).Definition Zero : Term := apply LNT Zero (Tnil LNT).

(* Specifications: *)
Lemma LNT_dec : language_decideable LNT.
Lemma freeVarPlus : forall x y : Term, freeVarTerm LNT (Plus x y) = freeVarTerm LNT x ++ freeVarTerm LNT y.
Lemma freeVarTimes : forall x y : Term, freeVarTerm LNT (Times x y) = freeVarTerm LNT x ++ freeVarTerm LNT y.
Lemma freeVarSucc : forall x : Term, freeVarTerm LNT (Succ x) = freeVarTerm LNT x.
Lemma freeVarZero : freeVarTerm LNT Zero = nil.
Lemma Axm : forall (T : System) (f : Formula), mem _ T f -> SysPrf T f.
Lemma sysExtend : forall (T U : System) (f : Formula), Included _ T U -> SysPrf T f -> SysPrf U f.
Lemma sysWeaken : forall (T : System) (f g : Formula), SysPrf T f -> SysPrf (Ensembles.Add _ T g) f.
Lemma impI : forall (T : System) (f g : Formula), SysPrf (Ensembles.Add _ T g) f -> SysPrf T (impH g f).
Lemma impE : forall (T : System) (f g : Formula), SysPrf T (impH g f) -> SysPrf T g -> SysPrf T f.
Lemma contradiction : forall (T : System) (f g : Formula), SysPrf T f -> SysPrf T (notH f) -> SysPrf T g.
Lemma nnE : forall (T : System) (f : Formula), SysPrf T (notH (notH f)) -> SysPrf T f.
Lemma noMiddle : forall (T : System) (f : Formula), SysPrf T (orH (notH f) f).
Lemma nnI : forall (T : System) (f : Formula), SysPrf T f -> SysPrf T (notH (notH f)).
Lemma cp1 : forall (T : System) (f g : Formula), SysPrf T (impH (notH f) (notH g)) -> SysPrf T (impH g f).
Lemma cp2 : forall (T : System) (f g : Formula), SysPrf T (impH g f) -> SysPrf T (impH (notH f) (notH g)).
Lemma orI1 : forall (T : System) (f g : Formula), SysPrf T f -> SysPrf T (orH f g).
Lemma orI2 : forall (T : System) (f g : Formula), SysPrf T g -> SysPrf T (orH f g).
Lemma orE : forall (T : System) (f g h : Formula), SysPrf T (orH f g) -> SysPrf T (impH f h) -> SysPrf T (impH g h) -> SysPrf T h.
Lemma orSys : forall (T : System) (f g h : Formula), SysPrf (Ensembles.Add _ T f) h -> SysPrf (Ensembles.Add _ T g) h -> SysPrf (Ensembles.Add _ T (orH f g)) h.
Lemma andI : forall (T : System) (f g : Formula), SysPrf T f -> SysPrf T g -> SysPrf T (andH f g).
Lemma andE1 : forall (T : System) (f g : Formula), SysPrf T (andH f g) -> SysPrf T f.
Lemma andE2 : forall (T : System) (f g : Formula), SysPrf T (andH f g) -> SysPrf T g.
Lemma iffI : forall (T : System) (f g : Formula), SysPrf T (impH f g) -> SysPrf T (impH g f) -> SysPrf T (iffH f g).
Lemma iffE1 : forall (T : System) (f g : Formula), SysPrf T (iffH f g) -> SysPrf T (impH f g).
Lemma iffE2 : forall (T : System) (f g : Formula), SysPrf T (iffH f g) -> SysPrf T (impH g f).
Lemma forallI : forall (T : System) (f : Formula) (v : nat), ~ In_freeVarSys LNT v T -> SysPrf T f -> SysPrf T (forallH v f).
Lemma forallE : forall (T : System) (f : Formula) (v : nat) (t : Term), SysPrf T (forallH v f) -> SysPrf T (substituteFormula LNT f v t).
Lemma forallSimp : forall (T : System) (f : Formula) (v : nat), SysPrf T (forallH v f) -> SysPrf T f.
Lemma existI : forall (T : System) (f : Formula) (v : nat) (t : Term), SysPrf T (substituteFormula LNT f v t) -> SysPrf T (existH v f).
Lemma existE : forall (T : System) (f g : Formula) (v : nat), ~ In_freeVarSys LNT v T -> ~ In v (freeVarFormula LNT g) -> SysPrf T (existH v f) -> SysPrf T (impH f g) -> SysPrf T g.
Lemma existSimp : forall (T : System) (f : Formula) (v : nat), SysPrf T f -> SysPrf T (existH v f).
Lemma existSys : forall (T : System) (f g : Formula) (v : nat), ~ In_freeVarSys LNT v T -> ~ In v (freeVarFormula LNT g) -> SysPrf (Ensembles.Add _ T f) g -> SysPrf (Ensembles.Add _ T (existH v f)) g.
Lemma absurd1 : forall (T : System) (f : Formula), SysPrf T (impH f (notH f)) -> SysPrf T (notH f).
Lemma nImp : forall (T : System) (f g : Formula), SysPrf T (andH f (notH g)) -> SysPrf T (notH (impH f g)).
Lemma nOr : forall (T : System) (f g : Formula), SysPrf T (andH (notH f) (notH g)) -> SysPrf T (notH (orH f g)).
Lemma nAnd : forall (T : System) (f g : Formula), SysPrf T (orH (notH f) (notH g)) -> SysPrf T (notH (andH f g)).
Lemma nForall : forall (T : System) (f : Formula) (v : nat), SysPrf T (existH v (notH f)) -> SysPrf T (notH (forallH v f)).
Lemma nExist : forall (T : System) (f : Formula) (v : nat), SysPrf T (forallH v (notH f)) -> SysPrf T (notH (existH v f)).
Lemma impRefl : forall (T : System) (f : Formula), SysPrf T (impH f f).
Lemma impTrans : forall (T : System) (f g h : Formula), SysPrf T (impH f g) -> SysPrf T (impH g h) -> SysPrf T (impH f h).
Lemma orSym : forall (T : System) (f g : Formula), SysPrf T (orH f g) -> SysPrf T (orH g f).
Lemma andSym : forall (T : System) (f g : Formula), SysPrf T (andH f g) -> SysPrf T (andH g f).
Lemma iffRefl : forall (T : System) (f : Formula), SysPrf T (iffH f f).
Lemma iffSym : forall (T : System) (f g : Formula), SysPrf T (iffH f g) -> SysPrf T (iffH g f).
Lemma iffTrans : forall (T : System) (f g h : Formula), SysPrf T (iffH f g) -> SysPrf T (iffH g h) -> SysPrf T (iffH f h).
Lemma eqRefl : forall (T : System) (a : Term), SysPrf T (equal a a).
Lemma eqSym : forall (T : System) (a b : Term), SysPrf T (equal a b) -> SysPrf T (equal b a).
Lemma eqTrans : forall (T : System) (a b c : Term), SysPrf T (equal a b) -> SysPrf T (equal b c) -> SysPrf T (equal a c).
Lemma eqPlus : forall (T : System) (a b c d : Term), SysPrf T (equal a b) -> SysPrf T (equal c d) -> SysPrf T (equal (Plus a c) (Plus b d)).
Lemma eqTimes : forall (T : System) (a b c d : Term), SysPrf T (equal a b) -> SysPrf T (equal c d) -> SysPrf T (equal (Times a c) (Times b d)).
Lemma eqSucc : forall (T : System) (a b : Term), SysPrf T (equal a b) -> SysPrf T (equal (Succ a) (Succ b)).