Fixpoint LNN2LNT_term (t : fol.Term LNN) : Term :=
  match t with
  | fol.var v => var v
  | apply f ts => apply LNT f (LNN2LNT_terms _ ts)
  end
 
 with LNN2LNT_terms (n : nat) (ts : fol.Terms LNN n) {struct ts} : 
 Terms n :=
  match ts in (fol.Terms _ n0) return (Terms n0) with
  | Tnil => Tnil LNT
  | Tcons m s ss => Tcons LNT m (LNN2LNT_term s) (LNN2LNT_terms m ss)
  end.Definition LTFormula :=
  existH 2 (equal (Plus (var 0) (Succ (var 2))) (var 1)).Definition translateLT (ts : fol.Terms LNN (arity LNN (inl _ LT))) : Formula.

(* Specifications: *)
Lemma LNN2LNT_natToTerm : forall n : nat, LNN2LNT_term (natToTermLNN n) = natToTerm n.
Lemma translateLT1 : forall a a0 b0, translateLT (Tcons LNN 1 a (Tcons LNN 0 a0 b0)) = subAllFormula LNT LTFormula (fun H : nat => nat_rec (fun _ : nat => fol.Term LNT) (LNN2LNT_term a) (fun (H0 : nat) (_ : fol.Term LNT) => nat_rec (fun _ : nat => fol.Term LNT) (LNN2LNT_term a0) (fun (H1 : nat) (_ : fol.Term LNT) => var H1) H0) H).