Proof with eauto.
induction l; intros; inversion_clear H. subst...
destruct IHl...
Qed.

Lemma In_map_inv T U (f: T -> U) (l: list T) (y: U): In y (map f l) -> exists x, f x = y /\ In x l.
Instance Permutation_NoDup {X}: Proper (Permutation ==> iff) (@NoDup X).