Fixpoint LNT2LNN_formula (f : Formula) : fol.Formula LNN :=
  match f with
  | fol.equal t1 t2 => fol.equal LNN (LNT2LNN_term t1) (LNT2LNN_term t2)
  | atomic r ts => match r with
                   end
  | fol.impH A B => fol.impH LNN (LNT2LNN_formula A) (LNT2LNN_formula B)
  | fol.notH A => fol.notH LNN (LNT2LNN_formula A)
  | fol.forallH v A => fol.forallH LNN v (LNT2LNN_formula A)
  end.

(* Specifications: *)
Lemma LNT2LNT_term : forall t : Term, LNN2LNT_term (LNT2LNN_term t) = t.
Lemma LNT2LNT_formula : forall f : Formula, LNN2LNT_formula (LNT2LNN_formula f) = f.
Lemma LNT2LNN_subTerm : forall (t : Term) (v : nat) (s : Term), LNT2LNN_term (substituteTerm LNT t v s) = substituteTerm LNN (LNT2LNN_term t) v (LNT2LNN_term s).
Lemma LNT2LNN_freeVarTerm : forall t : Term, freeVarTerm LNN (LNT2LNN_term t) = freeVarTerm LNT t.
Lemma LNT2LNN_freeVarFormula : forall f : Formula, freeVarFormula LNN (LNT2LNN_formula f) = freeVarFormula LNT f.
Lemma LNT2LNN_subFormula : forall (f : Formula) (v : nat) (s : Term), LNT2LNN_formula (substituteFormula LNT f v s) = substituteFormula LNN (LNT2LNN_formula f) v (LNT2LNN_term s).
Lemma translatePrf : forall f, forall axm, Prf LNN axm f -> (forall g, In g axm -> mem _ U g) -> exists Axm : Formulas, (exists prf : Prf LNT Axm (LNN2LNT_formula f), (forall g : Formula, In g Axm -> mem _ V g)) /\ forall v, In v (freeVarListFormula LNT Axm) -> (In v (freeVarListFormula LNN axm)).
Lemma translateProof : forall (U : fol.System LNN) (V : System), ClosedSystem LNT V -> (forall f : fol.Formula LNN, mem (fol.Formula LNN) U f -> SysPrf V (LNN2LNT_formula f)) -> forall f : fol.Formula LNN, folProof.SysPrf LNN U f -> SysPrf V (LNN2LNT_formula f).