(********* existence definitions **********************)
Definition DOESNT_EXIST (P : Ens -> Prop) := forall A : Ens, ~ P A.
Definition EXISTS (P : Ens -> Prop) := ~ DOESNT_EXIST P.
(********* the axiom of choice, applied to the whole Ens *******)
Parameter CHOICE : forall P : Ens -> Prop, Ens.

(* Specifications: *)
Axiom CHOICE_pr : forall (P : Ens -> Prop) (h : EXISTS P), P (CHOICE P).
Parameter EmptySet : Ens.
(**** we need to assume that something exists, for simplicity assume the emptyset  *****)
Axiom EmptySet_pr : DOESNT_EXIST (fun X : Ens => IN X EmptySet).
Definition Bounded_By (A : Ens) (P : Ens -> Prop) :=
forall X : Ens, P X -> IN X A.