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.