Section subseq.
Variable A B : Type.
Hypothesis A_eq_dec : forall x y : A, {x = y} + {x <> y}.
Proof using.
induction l; simpl; tauto.
Qed.
Proof using.
induction zs; intros; simpl in *;
repeat break_match; subst; simpl in *; intuition; subst; eauto;
right; (eapply IHzs; [|eauto]); simpl; eauto.
Qed.
Proof using.
induction ys; intros.
- destruct xs; simpl in *; intuition.
- simpl in *.
break_match; simpl in *; intuition auto; subst; intuition eauto;
right; (eapply IHys; [eauto| intuition auto with datatypes]).
Qed.
Proof using.
induction ys; intros.
- destruct xs; simpl in *; intuition.
- simpl in *. invc_NoDup.
break_match.
+ constructor.
+ intuition.
subst. constructor; eauto using subseq_In.
Qed.

Lemma subseq_remove :
forall (x : A) xs,
subseq (remove A_eq_dec x xs) xs.