Proof using.
induction xs; intros.
- destruct ys; simpl in *; congruence.
- invc_NoDup. concludes.
assert (In a ys) by eauto with *.
find_apply_lem_hyp in_split.
break_exists_name l1.
break_exists_name l2.
subst.
specialize (IHxs (l1 ++ l2)).
conclude_using ltac:(eauto using NoDup_remove_1).
forward IHxs.
intros x' Hx'.
assert (In x' (l1 ++ a :: l2)) by eauto with *.
do_in_app. simpl in *. intuition. subst. congruence.
concludes.
forward IHxs.
rewrite app_length in *. simpl in *. omega.
concludes.
do_in_app. simpl in *. intuition.
Qed.

(* Specifications: *)
Lemma remove_NoDup :
forall (x : A) xs,
NoDup xs ->
NoDup (remove A_eq_dec x xs).