(* ---------------------------------------------------------------------------- *)
(* Interaction between [lookup] and [map]. *)

(* Specifications: *)
Lemma lookup_map_none:
forall A B x e (f : A -> B),
lookup x e = None ->
lookup x (map f e) = None.
Lemma lookup_map_some:
forall A B x a e (f : A -> B),
lookup x e = Some a ->
lookup x (map f e) = Some (f a).
Lemma lookup_map_some_reverse:
forall A B x b e (f : A -> B),
lookup x (map f e) = Some b ->
exists a,
lookup x e = Some a /\ b = f a.