(*                                                                    *)
(*  APPARTENANCE :                                                    *)
(*    On definit le predicat (dans x E) pour un element x et un       *)
(*    ensemble E.                                                     *)
(*                                                                    *)
 
Inductive dans : Elt -> Ensf -> Prop :=
  | dans_add1 : forall (x : Elt) (e : Ensf), dans x (add x e)
  | dans_add2 : forall (x y : Elt) (e : Ensf), dans x e -> dans x (add y e).(*                                                                    *)
(*  APPARTENANCE :                                                    *)
(*    On definit le predicat (dans x E) pour un element x et un       *)
(*    ensemble E.                                                     *)
(*                                                                    *)
 
Inductive dans : Elt -> Ensf -> Prop :=
  | dans_add1 : forall (x : Elt) (e : Ensf), dans x (add x e)
  | dans_add2 : forall (x y : Elt) (e : Ensf), dans x e -> dans x (add y e).(*                                                                    *)
(*  APPARTENANCE :                                                    *)
(*    On definit le predicat (dans x E) pour un element x et un       *)
(*    ensemble E.                                                     *)
(*                                                                    *)
 
Inductive dans : Elt -> Ensf -> Prop :=
  | dans_add1 : forall (x : Elt) (e : Ensf), dans x (add x e)
  | dans_add2 : forall (x y : Elt) (e : Ensf), dans x e -> dans x (add y e).

Lemma dans_empty_imp_P : forall (x : Elt) (P : Prop), dans x empty -> P.