(*  On definit le predicat (inmonoid X w) qui signifie que le mot w	*)
(*  est dans le monoide libre engendre par X.				*)
Hint Resolve inmonoid_nil.
Hint Resolve inmonoid_cons.
(*  Inversion de la definition 						*)
(* Fixpoint Inmonoid [X:Ensf; w:Word] : Prop := (<Prop>Case w of (* nil  *) True (* cons *) [a:Elt][w':Word]( (dans a X) /\ (Inmonoid X w') ) end ). *)
Fixpoint Inmonoid (X : Ensf) (w : Word) {struct w} : Prop :=
match w with
| nil => True
| cons a w' => dans a X /\ Inmonoid X w'
end.

(* Specifications: *)
Lemma i_I : forall (X : Ensf) (w : Word), inmonoid X w -> Inmonoid X w.
intros X w H.