sig   module type S =     sig       type key       type +'a t       val empty : 'a t       val is_empty : 'a t -> bool       val mem : key -> 'a t -> bool       val add : key -> '-> 'a t -> 'a t       val singleton : key -> '-> 'a t       val remove : key -> 'a t -> 'a t       val merge :         (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t       val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t       val compare : ('-> '-> int) -> 'a t -> 'a t -> int       val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool       val iter : (key -> '-> unit) -> 'a t -> unit       val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b       val for_all : (key -> '-> bool) -> 'a t -> bool       val exists : (key -> '-> bool) -> 'a t -> bool       val filter : (key -> '-> bool) -> 'a t -> 'a t       val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t       val cardinal : 'a t -> int       val bindings : 'a t -> (key * 'a) list       val split : key -> 'a t -> 'a t * 'a option * 'a t       val map : ('-> 'b) -> 'a t -> 'b t       val mapi : (key -> '-> 'b) -> 'a t -> 'b t       val find : key -> 'a t -> 'a option       val get : key -> 'a t -> 'a       val min_binding : 'a t -> (key * 'a) option       val get_min_binding : 'a t -> key * 'a       val max_binding : 'a t -> (key * 'a) option       val get_max_binding : 'a t -> key * 'a       val choose : 'a t -> (key * 'a) option       val get_any_binding : 'a t -> key * 'a       val to_list : 'a t -> (key * 'a) list       val of_list : (key * 'a) list -> 'a t       val pp :         ?sep:(Format.formatter -> unit -> unit) ->         (Format.formatter -> key * '-> unit) ->         Format.formatter -> 'a t -> unit       val dump :         (Format.formatter -> key * '-> unit) ->         Format.formatter -> 'a t -> unit     end   module type S_with_key_set =     sig       type key       type +'a t       val empty : 'a t       val is_empty : 'a t -> bool       val mem : key -> 'a t -> bool       val add : key -> '-> 'a t -> 'a t       val singleton : key -> '-> 'a t       val remove : key -> 'a t -> 'a t       val merge :         (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t       val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t       val compare : ('-> '-> int) -> 'a t -> 'a t -> int       val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool       val iter : (key -> '-> unit) -> 'a t -> unit       val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b       val for_all : (key -> '-> bool) -> 'a t -> bool       val exists : (key -> '-> bool) -> 'a t -> bool       val filter : (key -> '-> bool) -> 'a t -> 'a t       val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t       val cardinal : 'a t -> int       val bindings : 'a t -> (key * 'a) list       val split : key -> 'a t -> 'a t * 'a option * 'a t       val map : ('-> 'b) -> 'a t -> 'b t       val mapi : (key -> '-> 'b) -> 'a t -> 'b t       val find : key -> 'a t -> 'a option       val get : key -> 'a t -> 'a       val min_binding : 'a t -> (key * 'a) option       val get_min_binding : 'a t -> key * 'a       val max_binding : 'a t -> (key * 'a) option       val get_max_binding : 'a t -> key * 'a       val choose : 'a t -> (key * 'a) option       val get_any_binding : 'a t -> key * 'a       val to_list : 'a t -> (key * 'a) list       val of_list : (key * 'a) list -> 'a t       val pp :         ?sep:(Format.formatter -> unit -> unit) ->         (Format.formatter -> key * '-> unit) ->         Format.formatter -> 'a t -> unit       val dump :         (Format.formatter -> key * '-> unit) ->         Format.formatter -> 'a t -> unit       type key_set       val dom : 'a t -> Asetmap.Map.S_with_key_set.key_set     end   module Make :     functor (Ord : Map.OrderedType->       sig         type key = Ord.t         type +'a t         val empty : 'a t         val is_empty : 'a t -> bool         val mem : key -> 'a t -> bool         val add : key -> '-> 'a t -> 'a t         val singleton : key -> '-> 'a t         val remove : key -> 'a t -> 'a t         val merge :           (key -> 'a option -> 'b option -> 'c option) ->           'a t -> 'b t -> 'c t         val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t         val compare : ('-> '-> int) -> 'a t -> 'a t -> int         val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool         val iter : (key -> '-> unit) -> 'a t -> unit         val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b         val for_all : (key -> '-> bool) -> 'a t -> bool         val exists : (key -> '-> bool) -> 'a t -> bool         val filter : (key -> '-> bool) -> 'a t -> 'a t         val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t         val cardinal : 'a t -> int         val bindings : 'a t -> (key * 'a) list         val split : key -> 'a t -> 'a t * 'a option * 'a t         val map : ('-> 'b) -> 'a t -> 'b t         val mapi : (key -> '-> 'b) -> 'a t -> 'b t         val find : key -> 'a t -> 'a option         val get : key -> 'a t -> 'a         val min_binding : 'a t -> (key * 'a) option         val get_min_binding : 'a t -> key * 'a         val max_binding : 'a t -> (key * 'a) option         val get_max_binding : 'a t -> key * 'a         val choose : 'a t -> (key * 'a) option         val get_any_binding : 'a t -> key * 'a         val to_list : 'a t -> (key * 'a) list         val of_list : (key * 'a) list -> 'a t         val pp :           ?sep:(Format.formatter -> unit -> unit) ->           (Format.formatter -> key * '-> unit) ->           Format.formatter -> 'a t -> unit         val dump :           (Format.formatter -> key * '-> unit) ->           Format.formatter -> 'a t -> unit       end   module Make_with_key_set :     functor       (Ord : Map.OrderedType) (Key_set : sig                                            type elt = Ord.t                                            type t                                            val empty : t                                            val is_empty : t -> bool                                            val mem : elt -> t -> bool                                            val add : elt -> t -> t                                            val singleton : elt -> t                                            val remove : elt -> t -> t                                            val union : t -> t -> t                                            val inter : t -> t -> t                                            val diff : t -> t -> t                                            val compare : t -> t -> int                                            val equal : t -> t -> bool                                            val subset : t -> t -> bool                                            val iter :                                              (elt -> unit) -> t -> unit                                            val fold :                                              (elt -> '-> 'a) ->                                              t -> '-> 'a                                            val for_all :                                              (elt -> bool) -> t -> bool                                            val exists :                                              (elt -> bool) -> t -> bool                                            val filter :                                              (elt -> bool) -> t -> t                                            val partition :                                              (elt -> bool) -> t -> t * t                                            val cardinal : t -> int                                            val elements : t -> elt list                                            val split :                                              elt -> t -> t * bool * t                                            val find : elt -> t -> elt option                                            val get : elt -> t -> elt                                            val min_elt : t -> elt option                                            val get_min_elt : t -> elt                                            val max_elt : t -> elt option                                            val get_max_elt : t -> elt                                            val choose : t -> elt option                                            val get_any_elt : t -> elt                                            val to_list : t -> elt list                                            val of_list : elt list -> t                                            val pp :                                              ?sep:(Format.formatter ->                                                    unit -> unit) ->                                              (Format.formatter -> elt -> unit) ->                                              Format.formatter -> t -> unit                                            val dump :                                              (Format.formatter -> elt -> unit) ->                                              Format.formatter -> t -> unit                                          end->       sig         type key = Ord.t         type +'a t         val empty : 'a t         val is_empty : 'a t -> bool         val mem : key -> 'a t -> bool         val add : key -> '-> 'a t -> 'a t         val singleton : key -> '-> 'a t         val remove : key -> 'a t -> 'a t         val merge :           (key -> 'a option -> 'b option -> 'c option) ->           'a t -> 'b t -> 'c t         val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t         val compare : ('-> '-> int) -> 'a t -> 'a t -> int         val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool         val iter : (key -> '-> unit) -> 'a t -> unit         val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b         val for_all : (key -> '-> bool) -> 'a t -> bool         val exists : (key -> '-> bool) -> 'a t -> bool         val filter : (key -> '-> bool) -> 'a t -> 'a t         val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t         val cardinal : 'a t -> int         val bindings : 'a t -> (key * 'a) list         val split : key -> 'a t -> 'a t * 'a option * 'a t         val map : ('-> 'b) -> 'a t -> 'b t         val mapi : (key -> '-> 'b) -> 'a t -> 'b t         val find : key -> 'a t -> 'a option         val get : key -> 'a t -> 'a         val min_binding : 'a t -> (key * 'a) option         val get_min_binding : 'a t -> key * 'a         val max_binding : 'a t -> (key * 'a) option         val get_max_binding : 'a t -> key * 'a         val choose : 'a t -> (key * 'a) option         val get_any_binding : 'a t -> key * 'a         val to_list : 'a t -> (key * 'a) list         val of_list : (key * 'a) list -> 'a t         val pp :           ?sep:(Format.formatter -> unit -> unit) ->           (Format.formatter -> key * '-> unit) ->           Format.formatter -> 'a t -> unit         val dump :           (Format.formatter -> key * '-> unit) ->           Format.formatter -> 'a t -> unit         type key_set = Key_set.t         val dom : 'a t -> key_set       end end