unfold inclus in |- *.
intros.
unfold union_disj in H1.
cut (dans x (map injgauche a) \/ dans x (map injdroite b)); auto.
intro Ht; elim Ht; clear Ht.
intro.
cut (exists y : Elt, dans y a /\ x = injgauche y).
2: apply dans_map; auto.
intro Ht; elim Ht; clear Ht.
intros y Ht; elim Ht; clear Ht; intros H3 H4.
cut (dans y c); auto.
intro.
unfold union_disj in |- *.
apply union_g.
rewrite H4.
apply dans_map_inv; auto.
intro.
cut (exists y : Elt, dans y b /\ x = injdroite y :>Elt).
2: apply dans_map; auto.
intro Ht; elim Ht; clear Ht.
intros y Ht; elim Ht; clear Ht; intros H3 H4.
cut (dans y d); auto.
intro.
unfold union_disj in |- *.
apply union_d.
rewrite H4.
apply dans_map_inv; auto.
Qed.
(* 									*)
(*  Resultats n'ayant rien a voir avec les ensembles finis mais n'ayant	*)
(*  pas de place dans un fichier particulier.				*)
(*									*)

(* Specifications: *)
Lemma pair_equal :
forall (A B : Set) (x x' : A) (y y' : B),
x = x' :>A -> y = y' :>B -> pair x y = pair x' y' :>A * B.