intros x y.
simple induction a.
intros b H.
apply (dans_empty_imp_P x); auto.
intros a0 b H b0 H0.
cut (a0 = x :>Elt \/ dans x b).
2: apply dans_add; auto.
simpl in |- *.
intro H1; elim H1; clear H1.
intros H1 H2.
apply dans_union_inv.
left.
rewrite H1.
apply dans_single; auto.
intros H1 H2.
apply dans_union_inv.
right.
auto.
Qed.
Hint Resolve coupl2_inv.
(*  De meme on commence ici par monter que si x est dans		*)
(*  (singleprod x0 b) alors x est de la forme (x0,y) avec y dans b	*)

(* Specifications: *)
Lemma dans_singleprod2 :
forall (x x0 : Elt) (b : Ensf),
dans x (singleprod x0 b) -> exists y : Elt, x = couple x0 y /\ dans y b.