Definition Extensionally_equivalent (F G : Ens) :=
  forall (X : Ens) (i : IN X (Domain F)) (j : IN X (Domain G)),
  EQ (EV F X) (EV G X).

(* Specifications: *)
Lemma ee_symm_Out : EQ (EV G X) (EV F X).
Theorem ex_eq_symm : forall F G : Ens, Extensionally_equivalent F G -> Extensionally_equivalent G F.
Lemma ee_sub_Out : IN M G.
Theorem ex_eq_sub : forall (F G : Ens) (f : is_a_function F) (s : SUB (Domain F) (Domain G)) (e : Extensionally_equivalent F G), SUB F G.
Lemma ee_eq_Out : EQ F G.
Theorem Extensionality_for_functions : forall (F G : Ens) (f : is_a_function F) (g : is_a_function G) (d : EQ (Domain F) (Domain G)) (e : Extensionally_equivalent F G), EQ F G.
Lemma fe_Out : EQ Y Z.
Theorem function_evaluation : forall (F X Y : Ens) (f : is_a_function F) (i : IN (PAIR X Y) F), EQ Y (EV F X).