Proof
fun (A B R : Ens) (s : SUB R (Cartesian A B)) =>
relation_sub (Cartesian A B) (cartesian_is_relation A B) R s.
(******* covering ***********)
Section covering_1.
Variable A B F G : Ens.
Hypothesis f : is_a_function F.
Hypothesis g : is_a_function G.
Hypothesis u : EQ (Domain F) (union A B).
Hypothesis v : EQ (Domain G) (union A B).
Hypothesis i : EQ (restricted_to A F) (restricted_to A G).
Hypothesis j : EQ (restricted_to B F) (restricted_to B G).
Variable X : Ens.
Hypothesis ix : IN X (Domain F).
Hypothesis jx : IN X (Domain G).
Let U := union A B.
Let step0a : SUB (Domain F) U.
Proof EQ_forwards (Domain F) U u.
Let iX : IN X U.
Proof step0a X ix.
Section covering_em.
Hypothesis contra : NEQ (EV F X) (EV G X).
Let step1 : SUB U (Domain F).
Proof EQ_backwards (Domain F) U u.
Let step2 : SUB U (Domain G).
Proof EQ_backwards (Domain G) U v.
Let step3 : SUB A (Domain F).
Proof SUB_trans A U (Domain F) (union_pr1 A B) step1.
Let step4 : SUB A (Domain G).
Proof SUB_trans A U (Domain G) (union_pr1 A B) step2.
Let step5 : SUB B (Domain F).
Proof SUB_trans B U (Domain F) (union_pr2 A B) step1.
Let step6 : SUB B (Domain G).
Proof SUB_trans B U (Domain G) (union_pr2 A B) step2.
Let step7 : IN X (Domain F).
Proof ix.
Let step8 : IN X (Domain G).
Proof jx.
Let FA := restricted_to A F.
Let FB := restricted_to B F.
Let GA := restricted_to A G.
Let GB := restricted_to B G.
Let step9 : EQ (EV FA X) (EV GA X).
Proof
Big_Extensionality (fun fn : Ens => EQ (EV FA X) (EV fn X)) FA GA
(EQ_refl (EV FA X)) i.
Let step10 : EQ (EV FB X) (EV GB X).
Proof
Big_Extensionality (fun fn : Ens => EQ (EV FB X) (EV fn X)) FB GB
(EQ_refl (EV FB X)) j.
Section covering_1_A.
Hypothesis iA : IN X A.
Let stepA1 : EQ (EV F X) (EV FA X).
Proof restricted_to_th9 A F f X iA step7.
Let stepA2 : EQ (EV G X) (EV GA X).
Proof restricted_to_th9 A G g X iA step8.
Let stepA3 : EQ (EV GA X) (EV G X).
Proof EQ_symm (EV G X) (EV GA X) stepA2.
Let stepA4 : EQ (EV F X) (EV GA X).
Proof EQ_trans (EV F X) (EV FA X) (EV GA X) stepA1 step9.
Let stepA5 : EQ (EV F X) (EV G X).
Proof EQ_trans (EV F X) (EV GA X) (EV G X) stepA4 stepA3.
Lemma  (*Fact*) stepA6 : False.
Proof contra stepA5.
End covering_1_A.
Let step11 : ~ IN X A.
Proof stepA6.
Section covering_1_B.
Hypothesis iB : IN X B.
Let stepB1 : EQ (EV F X) (EV FB X).
Proof restricted_to_th9 B F f X iB step7.
Let stepB2 : EQ (EV G X) (EV GB X).
Proof restricted_to_th9 B G g X iB step8.
Let stepB3 : EQ (EV GB X) (EV G X).
Proof EQ_symm (EV G X) (EV GB X) stepB2.
Let stepB4 : EQ (EV F X) (EV GB X).
Proof EQ_trans (EV F X) (EV FB X) (EV GB X) stepB1 step10.
Let stepB5 : EQ (EV F X) (EV G X).
Proof EQ_trans (EV F X) (EV GB X) (EV G X) stepB4 stepB3.
Lemma  (*Fact*) stepB6 : False.
Proof contra stepB5.
End covering_1_B.
Let step12 : ~ IN X B.
Proof stepB6.
Let step13 : ~ IN X U.
Proof union_th3 A B X step11 step12.
Lemma  (*Fact*) covering_em_Out : False.
Proof step13 iX.
End covering_em.

(* Specifications: *)
Lemma covering_1_Out : EQ (EV F X) (EV G X).
Proof excluded_middle (EQ (EV F X) (EV G X)) covering_em_Out.