(* Copyright 2012-2015 by Adam Petcher.				* * Use of this source code is governed by the license described	* * in the LICENSE file at the root of the source tree.		*)
Set Implicit Arguments.
Section In_gen.
Variable A : Type.
Variable ea : A -> A -> Prop.
Hypothesis ea_symm :
forall a1 a2, ea a1 a2 -> ea a2 a1.
Hypothesis ea_trans :
forall a1 a2 a3,
ea a1 a2 ->
ea a2 a3 ->
ea a1 a3.
Fixpoint In_gen(a : A)(ls : list A) : Prop :=
match ls with
| nil => False
| a' :: ls' =>
ea a a' \/ In_gen a ls'
end.

Theorem In_gen_equiv_compat :
forall (ls : list A)(a1 a2 : A),
ea a1 a2 ->
In_gen a1 ls ->
In_gen a2 ls.