Proof using.
intros.
induction xs; simpl; repeat (break_match; simpl);
auto using f_equal2; try discriminate.
+ exfalso. apply n. apply in_app_iff. apply in_app_or in i. intuition.
+ exfalso. apply n. apply in_app_or in i. intuition.
* simpl in *. intuition. congruence.
Qed.

(* Specifications: *)
Lemma dedup_app : forall (xs ys : list A),
(forall x y, In x xs -> In y ys -> x <> y) ->
dedup (xs ++ ys) = dedup xs ++ dedup ys.