#[local]
Hint Resolve remove_neq_o : map.

(* Specifications: *)
Lemma remove_o : forall m x y,
find y (remove x m) = if eq_dec x y then None else find y m.
Lemma remove_eq_b : forall m x y,
E.eq x y -> mem y (remove x m) = false.
Lemma remove_neq_b : forall m x y,
~ E.eq x y -> mem y (remove x m) = mem y m.
Lemma remove_b : forall m x y,
mem y (remove x m) = negb (eqb x y) && mem y m.
Lemma map_o : forall m x (f:elt->elt'),
find x (map f m) = Datatypes.option_map f (find x m).
Lemma map_b : forall m x (f:elt->elt'),
mem x (map f m) = mem x m.
Lemma mapi_b : forall m x (f:key->elt->elt'),
mem x (mapi f m) = mem x m.
Lemma mapi_o : forall m x (f:key->elt->elt'),
(forall x y e, E.eq x y -> f x e = f y e) ->
find x (mapi f m) = Datatypes.option_map (f x) (find x m).
Lemma map2_1bis : forall (m: t elt)(m': t elt') x
(f:option elt->option elt'->option elt''),
f None None = None ->
find x (map2 f m m') = f (find x m) (find x m').
Lemma elements_o : forall m x,
find x m = findA (eqb x) (elements m).
Lemma elements_b : forall m x,
mem x m = existsb (fun p => eqb x (fst p)) (elements m).