(* This code is copyrighted by its authors; it is distributed under  *)
(* the terms of the LGPL license (see LICENSE and description files) *)
Definition Pred (A : Set) := A -> Prop.
Definition Rel (A : Set) := A -> A -> Prop.
Inductive ExistsL (A : Set) (P : Pred A) : list A -> Set :=
| FoundE : forall (a : A) (l : list A), P a -> ExistsL A P (a :: l)
| SearchE :
forall (a : A) (l : list A), ExistsL A P l -> ExistsL A P (a :: l).
Hint Resolve FoundE SearchE.
intros A P xs; elim xs; simpl in |- *; auto.
Qed.
Hint Resolve monExistsL1.

Lemma monExistsL :
forall (A : Set) (P : Pred A) (xs bs cs : list A),
ExistsL A P (xs ++ bs) -> ExistsL A P (xs ++ cs ++ bs).