(** [fold] **)
Definition fold {A B : Type} (f : key -> A -> B -> B) dom (m : t A dom) (i : B) : B := S.fold f (proj1_sig m) i.

(* Specifications: *)
(** [map] **)
Lemma map_OK : forall A B (f : A -> B) dom (m : t A dom), OK dom (S.map f (proj1_sig m)).
Definition map {A B : Type} (f : A -> B) dom (m : t A dom) : t B dom :=
exist (OK dom) (S.map f (proj1_sig m)) (map_OK f m).