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).