Fixpoint list_nodups {A: Type}{EA: EqDec A} (vl: list A) : bool :=
  match vl with
  | nil => true
  | x::xl => andb (negb (inlist x xl)) (list_nodups xl)
  end.Inductive list_norepet {A: Type} : list A -> Prop :=
  | list_norepet_nil:
      list_norepet nil
  | list_norepet_cons:
      forall hd tl,
      ~(In hd tl) -> list_norepet tl -> list_norepet (hd :: tl).Inductive list_norepet {A: Type} : list A -> Prop :=
  | list_norepet_nil:
      list_norepet nil
  | list_norepet_cons:
      forall hd tl,
      ~(In hd tl) -> list_norepet tl -> list_norepet (hd :: tl).Inductive list_norepet {A: Type} : list A -> Prop :=
  | list_norepet_nil:
      list_norepet nil
  | list_norepet_cons:
      forall hd tl,
      ~(In hd tl) -> list_norepet tl -> list_norepet (hd :: tl).

(* Specifications: *)
Lemma nodups_norepet {A: Type}{EA: EqDec A} : forall l, list_nodups l = true -> list_norepet l.