functor (Ord : Datatype.S) (Value : Value->
  sig
    type key = Ord.t
    type value = Value.t
    type rangemap
    type t = rangemap
    val ty : t Type.t
    val name : string
    val descr : t Descr.t
    val packed_descr : Structural_descr.pack
    val reprs : t list
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val hash : t -> int
    val pretty_code : Format.formatter -> t -> unit
    val internal_pretty_code :
      Type.precedence -> Format.formatter -> t -> unit
    val pretty : Format.formatter -> t -> unit
    val varname : t -> string
    val mem_project : (Project_skeleton.t -> bool) -> t -> bool
    val copy : t -> t
    val create : t -> key -> value -> t -> t
    val empty : t
    val is_empty : t -> bool
    val add : key -> value -> t -> t
    val singleton : key -> value -> t
    val find : key -> t -> value
    val remove : key -> t -> t
    val mem : key -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val mapii : (key -> value -> key * value) -> t -> t
    val fold : (key -> value -> '-> 'a) -> t -> '-> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val max_binding : t -> key * value
    val choose : t -> key * value
    val merge :
      (key -> value option -> value option -> value option) -> t -> t -> t
    val for_all2 :
      (key -> value option -> value option -> bool) -> t -> t -> bool
    val exists2 :
      (key -> value option -> value option -> bool) -> t -> t -> bool
    val iter2 :
      (key -> value option -> value option -> unit) -> t -> t -> unit
    val fold2 :
      (key -> value option -> value option -> '-> 'a) -> t -> t -> '-> 'a
    val fold_range :
      (key -> Rangemap.fuzzy_order) ->
      (key -> Rangemap.Value.t -> '-> 'a) -> t -> '-> 'a
    val height : t -> int
    val concerned_intervals :
      (key -> key -> Rangemap.fuzzy_order) ->
      key -> t -> (key * Rangemap.Value.t) list
    exception Empty_rangemap
    val lowest_binding : t -> key * Rangemap.Value.t
    exception No_such_binding
    val lowest_binding_above : (key -> bool) -> t -> key * Rangemap.Value.t
    val add_whole :
      (key -> key -> Rangemap.fuzzy_order) ->
      key -> Rangemap.Value.t -> t -> t
    val remove_whole : (key -> key -> Rangemap.fuzzy_order) -> key -> t -> t
  end