Fixpoint In_gen(a : A)(ls : list A) : Prop :=
    match ls with
      | nil => False
      | a' :: ls' =>
        ea a a' \/ In_gen a ls'
    end.

(* Specifications: *)
Theorem In_gen_equiv_compat : forall (ls : list A)(a1 a2 : A), ea a1 a2 -> In_gen a1 ls -> In_gen a2 ls.
Theorem In_gen_eq : forall (A : Type)(a : A)(ls : list A), In a ls <-> In_gen eq a ls.