(* 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.