(** *** Membership  We use the following lemmas from Coq's standard library List. - [in_eq :  x el x::A] - [in_nil :  ~ x el nil] - [in_cons :  x el A -> x el y::A] - [in_or_app :  x el A \/ x el B -> x el A++B] - [in_app_iff :  x el A++B <-> x el A \/ x el B] - [in_map_iff :  y el map f A <-> exists x, f x = y /\ x el A] *)
Hint Resolve in_eq in_nil in_cons in_or_app.
Section Membership.
Variable X : Type.
Implicit Types (x y: X) (A B: list X).

(* Specifications: *)
Lemma in_sing x y :
x el [y] -> x = y.
Lemma in_cons_neq x y A :
x el y::A -> x <> y -> x el A.
Lemma not_in_cons x y A :
~ x el y :: A -> x <> y /\ ~ x el A.
Lemma in_sing x y :
x el [y] -> x = y.
Lemma in_cons_neq x y A :
x el y::A -> x <> y -> x el A.
Lemma not_in_cons x y A :
~ x el y :: A -> x <> y /\ ~ x el A.