End Map.
Notation map := map.
(*****************)
(** ** Flat Map  *)
(*****************)
Section FlatMap.
Variables (A : Type) (B : Type).
Variable f : A -> list B.
(** [flat_map] *)
Fixpoint flat_map (l:list A) : list B :=
match l with
| [] => []
| x :: l => f x ++ flat_map l
end.

Lemma flat_map_concat_map l :
flat_map l = concat (map f l).