Definition rec_co_rec_def_0 (d : preDTA) (a a0 : ad)
(t : term) (pr : reconnaissance_co d a a0 t) := reconnaissance d a t.
Definition rec_co_rec_def_1 (d : preDTA) (s : state)
(a0 : ad) (t : term) (pr : state_reconnait_co d s a0 t) :=
state_reconnait d s t.
Definition rec_co_rec_def_2 (d : preDTA) (p : prec_list)
(a0 : ad) (tl : term_list) (pr : liste_reconnait_co d p a0 tl) :=
liste_reconnait d p tl.

(* Specifications: *)
Lemma rec_co_rec_0 :
forall (d : preDTA) (a b : ad) (t : term) (ladj : state)
(e : MapGet state d a = Some ladj)
(s : state_reconnait_co d ladj b t),
rec_co_rec_def_1 d ladj b t s ->
forall c : coacc d b a,
rec_co_rec_def_0 d a b t (rec_co_dta d a b t ladj e s c).
Lemma rec_co_rec_1 :
forall (d : preDTA) (s : state) (c b : ad) (tl : term_list)
(l : prec_list) (e : MapGet prec_list s c = Some l)
(l0 : liste_reconnait_co d l b tl),
rec_co_rec_def_2 d l b tl l0 ->
rec_co_rec_def_1 d s b (app c tl) (rec_co_st d s c b tl l e l0).
Lemma rec_co_rec_2 :
forall (d : preDTA) (b : ad),
rec_co_rec_def_2 d prec_empty b tnil (rec_co_empty d b).
Lemma rec_co_rec_3 :
forall (d : preDTA) (a : ad) (la ls : prec_list) (hd : term)
(b : ad) (tl : term_list) (r : reconnaissance_co d a b hd),
rec_co_rec_def_0 d a b hd r ->
forall l : liste_reconnait_co d la b tl,
rec_co_rec_def_2 d la b tl l ->
rec_co_rec_def_2 d (prec_cons a la ls) b (tcons hd tl)
(rec_co_consi d a la ls hd b tl r l).
Lemma rec_co_rec_4 :
forall (d : preDTA) (a : ad) (la ls : prec_list) (hd : term)
(b : ad) (tl : term_list) (l : liste_reconnait_co d ls b (tcons hd tl)),
rec_co_rec_def_2 d ls b (tcons hd tl) l ->
rec_co_rec_def_2 d (prec_cons a la ls) b (tcons hd tl)
(rec_co_consn d a la ls hd b tl l).
Lemma rec_co_rec :
forall (d : preDTA) (a a0 : ad) (t : term),
reconnaissance_co d a a0 t -> reconnaissance d a t.