(********** composition ********)

Record Comp_inter (F G X Y Z : Ens) : Prop := 
  {Comp_inter_xy : IN (PAIR X Y) F; Comp_inter_yz : IN (PAIR Y Z) G}.(********** composition ********)

Record Comp_inter (F G X Y Z : Ens) : Prop := 
  {Comp_inter_xy : IN (PAIR X Y) F; Comp_inter_yz : IN (PAIR Y Z) G}.(********** composition ********)

Record Comp_inter (F G X Y Z : Ens) : Prop := 
  {Comp_inter_xy : IN (PAIR X Y) F; Comp_inter_yz : IN (PAIR Y Z) G}.Record Comp_prop (F G X : Ens) : Prop := 
  {Comp_pair : is_a_pair X;
   Comp_intern : EXISTS (fun Y : Ens => Comp_inter F G (PR1 X) Y (PR2 X))}.Record Comp_prop (F G X : Ens) : Prop := 
  {Comp_pair : is_a_pair X;
   Comp_intern : EXISTS (fun Y : Ens => Comp_inter F G (PR1 X) Y (PR2 X))}.Record Comp_prop (F G X : Ens) : Prop := 
  {Comp_pair : is_a_pair X;
   Comp_intern : EXISTS (fun Y : Ens => Comp_inter F G (PR1 X) Y (PR2 X))}.Definition Comp_INTER (F G X : Ens) :=
  CHOICE (fun Y : Ens => Comp_inter F G (PR1 X) Y (PR2 X)).

Theorem composition_bounded_by : forall F G : Ens, Bounded_By (Cartesian (Domain F) (Range G)) (Comp_prop F G).