Fixpoint removeFirst(A : Set)(eqd : eq_dec A)(ls : list A) a :=
  match ls with
    | nil => nil
    | a' :: ls' =>
      if (eqd a a') then ls' else a' :: (removeFirst eqd ls' a)
  end.

Lemma removeFirst_NoDup : forall (A : Set)(eqd : eq_dec A)(ls : list A) a, NoDup ls -> NoDup (removeFirst eqd ls a).