Record nested_IN (A B C : Ens) : Prop :=
{nested_IN_ab : IN A B; nested_IN_bc : IN B C}.
Definition b_in_Union_a (A B : Ens) :=
EXISTS (fun C : Ens => nested_IN B C A).

(* Specifications: *)
Axiom Union_bounded : forall F : Ens, Bounded (b_in_Union_a F).
Parameter Singleton : Ens -> Ens.
(******** singletons ****************)
Axiom Singleton_pr1 : forall X : Ens, IN X (Singleton X).
Axiom Singleton_pr2 : forall (X Y : Ens) (h : IN Y (Singleton X)), EQ X Y.
(********* extensionality ******************)
Axiom Extensionality : forall (X Y Z : Ens) (h : EQ X Y) (k : IN Y Z), IN X Z.
(********* powerset ******************)
Axiom Powerset_bounded : forall X : Ens, Bounded (fun Y : Ens => SUB Y X).
Parameter REPLACEMENT : forall P : Ens -> Prop, Ens.