(*									*)
(*  Si un automate (q (singleton e) qa d) reconnait exactement {w0}	*)
(*  et si e0 n'est pas dans q alors l'automate ((add e0 q) 		*)
(*  (singleton e0) qa (add (e0,a,e) d)) reconnait exactement		*)
(*  {cons a w0}.							*)
(*									*)

Axiom
  auto_cons :
    forall (q qa d : Ensf) (e0 e a : Elt) (w0 : Word),
    dans a alph ->
    automate q (singleton e) qa d ->
    eqwordset (reconnait q (singleton e) qa d) (lword w0) ->
    ~ dans e0 q ->
    eqwordset
      (reconnait (add e0 q) (singleton e0) qa
         (add (couple e0 (couple a e)) d)) (lword (cons a w0)).

(* Specifications: *)
Lemma lword_is_regS : forall w : Word, inmonoid alph w -> exists q : Ensf, (exists e : Elt, (exists qa : Ensf, (exists d : Ensf, automate q (singleton e) qa d /\ eqwordset (reconnait q (singleton e) qa d) (lword w)))).
Lemma lword_is_reg : forall w : Word, inmonoid alph w -> isregular (lword w).