intros x y dans_x_u dans_y_u.
elimtype (dans x X \/ dans x V2).
intro dans_x.
replace (injproducd V2 x) with x.
elimtype (dans y X \/ dans y V2).
intros dans_y.
replace (injproducd V2 y) with y.
auto.
apply sym_equal; auto.
intros dans_y.
replace (injproducd V2 y) with (injdroite y).
unfold injdroite in |- *.
elim (Mots_X x dans_x).
intros x0 egal_x egal2_x.
absurd (word x0 = couple y un).
discriminate.
rewrite egal_x; assumption.
apply sym_equal; auto.
auto.
apply sym_equal; auto.
intro dans_x.
replace (injproducd V2 x) with (injdroite x).
elimtype (dans y X \/ dans y V2).
intros dans_y.
replace (injproducd V2 y) with y.
unfold injdroite in |- *.
elim (Mots_X y dans_y).
intros x0 egal_y egal2_y.
absurd (word x0 = couple x un).
discriminate.
rewrite egal2_y; assumption.
apply sym_equal; auto.
intro.
replace (injproducd V2 y) with (injdroite y).
unfold injdroite in |- *.
intros.
apply couple_couple_inv1 with un un; assumption.
apply sym_equal; auto.
auto.
apply sym_equal; auto.
auto.
Qed.
Hint Resolve is_mono_u_X_V2_injproducd_V2.

(* Specifications: *)
Lemma egal_LG_1_1' : l_egal (LG X V1 R1 S1) (LG X V1' R1' S1').
pattern X at 2 in |- *.