(* lemmes d'équivalence sémantique entre la fonction calculatoire (Fixpoint) *)
(* et la définition par Inductive *)
Definition sem_equiv_prop_t (t : term) :=
forall (d : preDTA) (a : ad) (n : nat),
rec_term d a t n = true -> reconnaissance d a t.
Definition sem_equiv_prop_l (l : term_list) :=
forall (d : preDTA) (p : prec_list) (n : nat),
rec_list_terms d p l n = true -> liste_reconnait d p l.

Lemma semantic_equiv_0_4 :
forall (d : preDTA) (a a' : ad) (l : term_list) (n : nat) (s : state),
MapGet state d a = Some s ->
rec_term d a (app a' l) (S n) = true ->
exists p : prec_list, MapGet prec_list s a' = Some p.