Definition liste_rec_length_def (d : preDTA) (pl : prec_list)
  (tl : term_list) : Prop :=
  forall n : nat,
  liste_reconnait d pl tl -> pl_tl_length pl n -> n = lst_length tl.

(* Specifications: *)
Lemma liste_rec_length_0 : forall d : preDTA, liste_rec_length_def d prec_empty tnil.
Lemma liste_rec_length_1 : forall (d : preDTA) (a : ad) (la ls : prec_list) (hd : term) (tl : term_list), reconnaissance d a hd -> liste_reconnait d la tl -> liste_rec_length_def d la tl -> liste_rec_length_def d (prec_cons a la ls) (tcons hd tl).
Lemma liste_rec_length_2 : forall (d : preDTA) (a : ad) (la ls : prec_list) (hd : term) (tl : term_list), liste_reconnait d ls (tcons hd tl) -> liste_rec_length_def d ls (tcons hd tl) -> liste_rec_length_def d (prec_cons a la ls) (tcons hd tl).
Lemma liste_rec_length_3 : forall (p : preDTA) (p0 : prec_list) (t : term_list), liste_reconnait p p0 t -> liste_rec_length_def p p0 t.
Lemma liste_rec_length : forall (pl : prec_list) (tl : term_list) (d : preDTA) (n : nat), liste_reconnait d pl tl -> pl_tl_length pl n -> n = lst_length tl.