simple induction E1; intros A1 f1 r1; simple induction E2; intros A2 f2 r2.
intros E1' E2' i.
elim (IN_EXType (Prod (sup A1 f1) (sup A2 f2)) (Couple E1' E2') i).
intros xx; elim xx; intros a1 a2 e.
change (EQ (Couple E1' E2') (Couple (f1 a1) (f2 a2))) in e.
cut (EQ E1' (f1 a1)).
cut (EQ E2' (f2 a2)).
intros e1 e2.
split.
apply IN_sound_left with (f1 a1); auto with zfc; simpl in |- *; exists a1;
auto with zfc.
apply IN_sound_left with (f2 a2); auto with zfc; simpl in |- *; exists a2;
auto with zfc.
apply Couple_inj_right with (A := E1') (B := f1 a1); auto with zfc.
apply Couple_inj_left with E2' (f2 a2); auto with zfc.
Qed.

(* Specifications: *)
Theorem IN_Prod_EXType :
forall E E' E'' : Ens,
IN E'' (Prod E E') ->
EXType _ (fun A : Ens => EXType _ (fun B : Ens => EQ (Couple A B) E'')).
Theorem IN_Prod_EXType :
forall E E' E'' : Ens,
IN E'' (Prod E E') ->
EXType _ (fun A : Ens => EXType _ (fun B : Ens => EQ (Couple A B) E'')).