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

Lemma impI : forall (T : System) (f g : Formula), SysPrf (Ensembles.Add _ T g) f -> SysPrf T (impH g f).