sig
  module type T =
    sig
      type +'a t
      module Key : sig type t end
      val nil : 'Cf_map.T.t
      val empty : 'Cf_map.T.t -> bool
      val size : 'Cf_map.T.t -> int
      val min : 'Cf_map.T.t -> Cf_map.T.Key.t * 'a
      val max : 'Cf_map.T.t -> Cf_map.T.Key.t * 'a
      val search : Cf_map.T.Key.t -> 'Cf_map.T.t -> 'a
      val member : Cf_map.T.Key.t -> 'Cf_map.T.t -> bool
      val insert :
        Cf_map.T.Key.t * '-> 'Cf_map.T.t -> 'Cf_map.T.t * 'a option
      val replace : Cf_map.T.Key.t * '-> 'Cf_map.T.t -> 'Cf_map.T.t
      val modify :
        Cf_map.T.Key.t -> ('-> 'a) -> 'Cf_map.T.t -> 'Cf_map.T.t
      val extract : Cf_map.T.Key.t -> 'Cf_map.T.t -> 'a * 'Cf_map.T.t
      val delete : Cf_map.T.Key.t -> 'Cf_map.T.t -> 'Cf_map.T.t
      val of_list : (Cf_map.T.Key.t * 'a) list -> 'Cf_map.T.t
      val of_list_incr : (Cf_map.T.Key.t * 'a) list -> 'Cf_map.T.t
      val of_list_decr : (Cf_map.T.Key.t * 'a) list -> 'Cf_map.T.t
      val of_seq : (Cf_map.T.Key.t * 'a) Cf_seq.t -> 'Cf_map.T.t
      val of_seq_incr : (Cf_map.T.Key.t * 'a) Cf_seq.t -> 'Cf_map.T.t
      val of_seq_decr : (Cf_map.T.Key.t * 'a) Cf_seq.t -> 'Cf_map.T.t
      val to_list_incr : 'Cf_map.T.t -> (Cf_map.T.Key.t * 'a) list
      val to_list_decr : 'Cf_map.T.t -> (Cf_map.T.Key.t * 'a) list
      val to_seq_incr : 'Cf_map.T.t -> (Cf_map.T.Key.t * 'a) Cf_seq.t
      val to_seq_decr : 'Cf_map.T.t -> (Cf_map.T.Key.t * 'a) Cf_seq.t
      val nearest_decr :
        Cf_map.T.Key.t -> 'Cf_map.T.t -> (Cf_map.T.Key.t * 'a) Cf_seq.t
      val nearest_incr :
        Cf_map.T.Key.t -> 'Cf_map.T.t -> (Cf_map.T.Key.t * 'a) Cf_seq.t
      val iterate : (Cf_map.T.Key.t * '-> unit) -> 'Cf_map.T.t -> unit
      val predicate : (Cf_map.T.Key.t * '-> bool) -> 'Cf_map.T.t -> bool
      val fold :
        ('-> Cf_map.T.Key.t * '-> 'b) -> '-> 'Cf_map.T.t -> 'b
      val filter :
        (Cf_map.T.Key.t * '-> bool) -> 'Cf_map.T.t -> 'Cf_map.T.t
      val map : (Cf_map.T.Key.t * '-> 'b) -> 'Cf_map.T.t -> 'Cf_map.T.t
      val optmap :
        (Cf_map.T.Key.t * '-> 'b option) -> 'Cf_map.T.t -> 'Cf_map.T.t
      val partition :
        (Cf_map.T.Key.t * '-> bool) ->
        'Cf_map.T.t -> 'Cf_map.T.t * 'Cf_map.T.t
    end
end