Fixpoint subseq {A} (xs ys : list A) : Prop :=
  match xs, ys with
    | [], _ => True
    | x :: xs', y :: ys' => (x = y /\ subseq xs' ys') \/ subseq xs ys'
    | _, _ => False
  end.

Lemma subseq_2_3 : forall xs ys zs x y, subseq(A:=A) (xs ++ ys ++ zs) (xs ++ x :: ys ++ y :: zs).