intros.
cut (exists y : Elt, dans y e /\ x = injgauche y).
2: apply dans_map; auto.
intro Ht; elim Ht; clear Ht.
intros y Ht; elim Ht; clear Ht.
intros.
red in |- *.
intro.
cut (exists y' : Elt, dans y' f /\ x = injdroite y' :>Elt).
2: apply dans_map; auto.
intro Ht; elim Ht; clear Ht.
intros y' Ht; elim Ht; clear Ht.
intros.
absurd (zero = un :>Elt).
unfold zero in |- *.
unfold un in |- *.
discriminate.
unfold injdroite in H4.
unfold injgauche in H1.
replace zero with (second (couple y zero)); auto.
replace un with (second (couple y' un)); auto.
rewrite <- H4.
rewrite <- H1.
auto.
Qed.
(*									*)
(*  On montre ici que si x est dans l'union disjointe de A et B alors	*)
(*  x est soit de la forme (injgauche y) avec y dans A, soit de la 	*)
(*  forme (injdroite y) avec y dans B					*)
(*									*)

(* Specifications: *)
Lemma union_disj1 :
forall (x : Elt) (a b : Ensf),
dans x (union_disj a b) ->
(exists y : Elt, dans y a /\ x = injgauche y :>Elt) \/
(exists y : Elt, dans y b /\ x = injdroite y :>Elt).