Section setXY.
Variables X Y : elementType.
Implicit Types (x : X) (y : Y) (A : set X) (B : set Y) (f : setfun set X Y).

(* Specifications: *)
Lemma imsetP (f : setfun set X Y) A y :
reflect (exists2 x : X, x \in A & y = f x) (y \in imset f A).
Lemma mem_imset f A x : x \in A -> f x \in imset f A.
Lemma imset_eq0 f A : (imset f A == set0) = (A == set0).
Lemma imset_set1 f x : imset f [set x] = [set f x].
Lemma imsetS f A A' : A \subset A' -> imset f A \subset imset f A'.
Lemma imset_proper f A A' :
{in A' &, injective f} -> A \proper A' -> imset f A \proper imset f A'.