Section DEFIN.
(* un ensemble fini est un ensemble tel qu'il existe une liste contenant chaque element une fois et une seule *)
Variable E : Set.
Hypothesis eq_E_dec : eq_dec E.
Fixpoint only_once (x : E) (l : list E) {struct l} : Prop :=
match l with
| nil => False
| y :: l' =>
if eq_E_dec x y then ~ In x l' else only_once x l'
end.
Definition list_of_elements (l : list E) := forall x : E, only_once x l.

Lemma equality_from_membership :
forall (x y : E) (l : list E), In y l -> ~ In x l -> x <> y.