intros A B R S f H' l H'0; elim H'0; simpl in |- *; auto.
intros a l0 H'1; apply FoundG; auto.
apply subPredExistsL with (P := fun x : A => R x a); auto.
Qed.
Inductive Bar (A : Set) (P : list A -> Set) : list A -> Set :=
| Base : forall l : list A, P l -> Bar A P l
| Ind : forall l : list A, (forall a : A, Bar A P (a :: l)) -> Bar A P l.
Hint Resolve Base Ind.
Definition GRBar (A : Set) (R : Rel A) := Bar A (GoodR A R).
Definition WR (A : Set) (R : Rel A) := GRBar A R nil.
Hint Unfold GRBar WR.

(* Specifications: *)
Lemma subRelGRBar :
forall (A B : Set) (R : Rel A) (S : Rel B) (f : A -> B),
(forall a b : A, R a b -> S (f a) (f b)) ->
(forall b : B, {a : A | b = f a}) ->
forall l : list A, GRBar A R l -> GRBar B S (map f l).