Inductive Exists2 {A B} (R: A -> B -> Prop) : list A -> list B -> Prop :=
| Exists2_cons_hd : forall x xs y ys, R x y -> Exists2 R (x::xs) (y::ys)
| Exists2_cons_tl : forall x xs y ys, Exists2 R xs ys -> Exists2 R (x::xs) (y::ys).
Hint Constructors Exists2.

Lemma In_prefix_suffix (A : Type) (a : A) l :
In a l -> exists l1 l2, l = l1 ++ a :: l2.