(* Proof of lem_x_not_in_x                                                 *)
elim (axs_vide_or_not x); intros.
generalize H; clear H; rewrite H0; clear H0; intros.
generalize lem_not_vide_in_vide; intros.
absurd (In Vide Vide); auto with zfc.
generalize (axs_fundation (singleton x) (lem_sing_not_empty x)); intros.
elim H1; clear H1; intros; elim H1; clear H1; intros.
elim (axs_paire x x x0); intros; generalize (H3 H1); clear H1 H3 H4; intros.
generalize (lem_or_contract (x0 = x) H1); clear H1; intros.
generalize H2; clear H2; rewrite H1; clear H1; intros.
cut (In x (inter x (singleton x))); intros.
generalize H1; clear H1; rewrite H2; unfold Vide in |- *; intros.
generalize (lem_vide_propertie x var_vide); intros.
absurd (In x (vide var_vide)); auto with zfc.
unfold inter in |- *; unfold def_F_inter in |- *.
elim (axs_comprehension (fun x0 : E => In x0 (singleton x)) x x); intros;
apply H3; clear H1 H3; intros.
split; [ auto with zfc | apply lem_x_in_sing_x ].
Qed.
(* End of proof of lem_x_not_in_x                                          *)

(* Specifications: *)
(***************************************************************************)
(* Une propriete sur les intersections vides                               *)
(***************************************************************************)
Lemma lem_inter_is_empty :
forall a b : E,
(forall x : E, In x a -> ~ In x b) ->
(forall y : E, In y b -> ~ In y a) -> inter a b = Vide.