From ZornsLemma Require Export FunctionProperties.
From Coq Require Export Ensembles.
From ZornsLemma Require Export EnsemblesSpec.
Definition inverse_image {X Y:Type} (f:X->Y) (T:Ensemble Y) : Ensemble X :=
[ x:X | In T (f x) ].
Global Hint Unfold inverse_image : sets.
Global Hint Resolve inverse_image_increasing : sets.
Hint Rewrite @inverse_image_empty @inverse_image_full
@inverse_image_intersection @inverse_image_union
@inverse_image_complement @inverse_image_composition : sets.

Lemma inverse_image_finite {X Y : Type} (f : X -> Y) (F : Family X) :
surjective f ->
Finite F ->
Finite (inverse_image (inverse_image f) F).