Fixpoint hasDups (A : Set)(eqd : EqDec A)(ls : list A) :=
  match ls with
    | nil => false
    | a :: ls' =>
      if (in_dec (EqDec_dec _) a ls') then true else
        (hasDups _ ls')
  end.

Theorem hasDups_inj_equiv : forall (A B : Set)(eqda : EqDec A)(eqdb : EqDec B)(lsa : list A)(inj : A -> B), (forall a1 a2, inj a1 = inj a2 -> a1 = a2) -> hasDups _ lsa = hasDups _ (map inj lsa).