Section Uniq.
Variable A: Type.
Inductive uniq: list A -> Prop :=
uniq_nil: uniq nil
| uniq_cons: forall a l, ~ In a l -> uniq l -> uniq (a::l).
End Uniq.
destruct l as [|a l]; simpl; auto.
right; intros HH; discriminate.
Qed.

Lemma list_dec (A: Type) (P: A -> Prop) l:
(forall x, P x \/ ~ P x) -> (forall x, In x l -> P x) \/ (exists x, In x l /\ ~ P x).