Definition incl (l m:list A) := forall a:A, In a l -> In a m.

(* Specifications: *)
Lemma incl_nil_l : forall l, incl [] l.
Lemma incl_l_nil : forall l, incl l [] -> l = [].
Lemma incl_refl : forall l:list A, incl l l.
Lemma incl_tl : forall (a:A) (l m:list A), incl l m -> incl l (a :: m).
Lemma incl_tran : forall l m n:list A, incl l m -> incl m n -> incl l n.
Lemma incl_appl : forall l m n:list A, incl l n -> incl l (n ++ m).
Lemma incl_appr : forall l m n:list A, incl l n -> incl l (m ++ n).
Lemma incl_cons : forall (a:A) (l m:list A), In a m -> incl l m -> incl (a :: l) m.
Lemma incl_cons_inv : forall (a:A) (l m:list A), incl (a :: l) m -> In a m /\ incl l m.
Lemma incl_app : forall l m n:list A, incl l n -> incl m n -> incl (l ++ m) n.
Lemma incl_app_app : forall l1 l2 m1 m2:list A, incl l1 m1 -> incl l2 m2 -> incl (l1 ++ l2) (m1 ++ m2).
Lemma incl_app_inv : forall l1 l2 m : list A, incl (l1 ++ l2) m -> incl l1 m /\ incl l2 m.
Lemma incl_filter f l : incl (filter f l) l.
Lemma remove_incl (eq_dec : forall x y : A, {x = y} + {x <> y}) : forall l1 l2 x, incl l1 l2 -> incl (remove eq_dec x l1) (remove eq_dec x l2).
Lemma incl_map A B (f : A -> B) l1 l2 : incl l1 l2 -> incl (map f l1) (map f l2).