Section NoDup_gen.
Variable A : Type.
Variable ea : A -> A -> Prop.
Inductive NoDup_gen : list A -> Prop :=
| NoDup_gen_nil : NoDup_gen nil
| NoDup_gen_cons :
forall (a : A)(ls : list A),
(~In_gen ea a ls) ->
NoDup_gen ls ->
NoDup_gen (a :: ls).
End NoDup_gen.

Theorem NoDup_gen_eq :
forall (A : Type)(ls : list A),
NoDup ls <-> NoDup_gen eq ls.