proposition: Lemma finite_eq_nodup P : finite P <-> exists l, P [=] of_list l /\ nodup l.
proof: Proof. split. rewrite finite_eq. intros [l e]. ex (remdup eq_dec l). split. rewrite e. intro x. sym. apply In_remdup. apply nodup_remdup. intros [l [e _]]. rewrite e. apply finite_of_list. Qed.
imports: Coq(Basics Morphisms Setoid) CoLoR(ClassicUtil IotaUtil EpsilonUtil LogicUtil NatUtil FunUtil ListUtil ListNodup SetUtil BoundNat)