Module ListAutomationNotations.
Notation "x 'el' L" := (In x L) (at level 70).
Notation "A '<<=' B" := (incl A B) (at level 70).
Notation "( A × B × .. × C )" := (list_prod .. (list_prod A B) .. C) (at level 0, left associativity).
Notation "[ s | p ∈ A ',' P ]" :=
(map (fun p => s) (filter (fun p => Dec P) A)) (p pattern).
Notation "[ s | p ∈ A ]" :=
(map (fun p => s) A) (p pattern).
End ListAutomationNotations.
Instance list_in_dec X (x : X) (A : list X) :
eq_dec X -> dec (x el A).

Lemma in_concat_iff A l (a:A) : a el concat l <-> exists l', a el l' /\ l' el l.