intros X.
simple induction w1.
auto.
intros x w H w2 H0 H1.
replace (Append (cons x w) w2) with (cons x (Append w w2)); auto.
apply inmonoid_cons.
apply (H w2); auto.
apply inmonoid_cons_inv with x; auto.
apply inmonoid_cons_inv2 with w; auto.
Qed.
(*									*)
(*  On definit tout d'abord le type wordset, qui est Word->Prop		*)
(*  et qui definit un ensemble de mots par sa fonction caracteristique.	*)
(*  									*)
(*  L'egalite de 2 wordset est definie comme la double implication.	*)
(*									*)
Definition wordset := Word -> Prop.
Definition eqwordset (l1 l2 : wordset) : Prop :=
forall w : Word, (l1 w -> l2 w) /\ (l2 w -> l1 w).

(* Specifications: *)
Lemma eqwordset_refl : forall L : wordset, eqwordset L L.
red in |- *.