(* End of proof of lem_cartesian_cons                                      *)

(***************************************************************************)
(* Somme disjointe de deux ensembles                                       *)
(***************************************************************************)
(* Old Release                                                             *)
Parameter Odisj_l : E -> E.Axiom
  axs_Odisj_l :
    forall a x : E,
    In x (Odisj_l a) <-> (exists y : E, In y a /\ x = couple y Vide).Parameter Odisj_r : E -> E.Axiom
  axs_Odisj_r :
    forall a x : E,
    In x (Odisj_r a) <->
    (exists y : E, In y a /\ x = couple y (singleton Vide)).Definition Osomme_disj (a b : E) := union (Odisj_l a) (Odisj_r b).(* New Release                                                             *)
Definition disj_l (a : E) :=
  subset (fun y : E => exists x : E, y = couple x Vide /\ In x a)
    (cartesien a (singleton Vide)).Definition disj_r (a : E) :=
  subset (fun y : E => exists x : E, y = couple x (singleton Vide) /\ In x a)
    (cartesien a (singleton (singleton Vide))).Definition somme_disj (a b : E) := union (disj_l a) (disj_r b).

(* Specifications: *)
Lemma lem_OaN : forall a b : E, somme_disj a b = Osomme_disj a b.
Lemma lem_reunion_couple : forall a b : E, reunion (couple a b) = paire a b.