intros f.
simple induction a.
simpl in |- *.
intros x H.
absurd (dans x empty); auto.
intros a0 b H x.
simpl in |- *.
intro.
cut (f a0 = x :>Elt \/ dans x (map f b)).
2: apply dans_add; auto.
intro H1; elim H1; clear H1.
intro; exists a0; auto.
intro.
cut (exists y : Elt, dans y b /\ x = f y).
intro H2; elim H2; clear H2.
2: auto.
intros x0 H2; elim H2; clear H2.
intros.
exists x0.
split; auto.
Qed.
Hint Resolve dans_map.

(* Specifications: *)
Lemma dans_map_inv :
forall (f : Elt -> Elt) (x : Elt) (a : Ensf),
dans x a -> dans (f x) (map f a).