intros X V R x u Regles_R dans_couple_R.
(**) cut (ex2 (fun A : Elt => dans A V) (fun A : Elt => ex2 (fun B : Word => couple x (word u) = couple A (word B)) (fun B : Word => inmonoid (union X V) B))). intro temp; elim temp; clear temp. intros x0 dans_x0_V temp; elim temp; clear temp. intros u0 eg_couple inmonoid_u0. replace u with u0; prolog [ sym_equal couple_couple_inv2 word_word_inv ] 4. (*Assumption. Apply word_word_inv. Apply couple_couple_inv2 with x0 x;Auto.*)
(**) auto. Qed.   (* Definition d'une grammaire, *)
(*X : ensemble des terminaux, *)
(*V ensemble des non-terminaux, *)
(*R ensemble des productions A -> w, *)
(*S axiome *)
Definition isGram (X V R : Ensf) (S : Elt) : Prop :=
Mots X /\ inter X V empty /\ dans S V /\ Regles X V R.
Section Easy_lemma_isGram.
Variable X V R : Ensf.
Variable S : Elt.
Let H := isGram X V R S.

(* Specifications: *)
Lemma isGram1 : H -> Mots X.
intro H1.