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_app l1 l2 :
flat_map (l1 ++ l2) = flat_map l1 ++ flat_map l2.