Section Membership.
Variable X : Type.
Implicit Types (x y: X) (A B: list X).
(* *** Disjointness *)
Definition disjoint A B :=
~ exists x, x el A /\ x el B.
End Membership.
Hint Resolve disjoint_nil disjoint_nil' : core.
(* *** Inclusion  We use the following lemmas from Coq's standard library List. - [incl_refl :  A <<= A] - [incl_tl :  A <<= B -> A <<= x::B] - [incl_cons : x el B -> A <<= B -> x::A <<= B] - [incl_appl : A <<= B -> A <<= B++C] - [incl_appr : A <<= C -> A <<= B++C] - [incl_app : A <<= C -> B <<= C -> A++B <<= C] *)
Hint Resolve incl_refl incl_tl incl_cons incl_appl incl_appr incl_app : core.

Lemma incl_nil X (A : list X) :
nil <<= A.