sig
  type ('k, +'v, 'cmp) interval_map
  module Key : Core_kernel.Std.Comparator.S
  module Interval :
    sig
      type t = Key.t Interval_map_intf.Interval.t
      val is_empty : Interval_map_intf.S.Interval.t -> bool
      val contains : Interval_map_intf.S.Interval.t -> Key.t -> bool
    end
  type 'a t =
      (Key.t, 'a, Key.comparator_witness) Interval_map_intf.S.interval_map
  val create :
    left_of_leftmost:'a ->
    value_right_of:(Key.t, 'a, Key.comparator_witness) Core_kernel.Std.Map.t ->
    'a Interval_map_intf.S.t
  val always : 'a -> 'a Interval_map_intf.S.t
  val find : 'v Interval_map_intf.S.t -> Key.t -> 'v
  val change :
    'v Interval_map_intf.S.t -> at:Key.t -> 'v -> 'v Interval_map_intf.S.t
  val map :
    'a Interval_map_intf.S.t -> f:('a -> 'b) -> 'b Interval_map_intf.S.t
  val map2 :
    'a Interval_map_intf.S.t ->
    'b Interval_map_intf.S.t ->
    f:('a -> 'b -> 'c) -> 'c Interval_map_intf.S.t
  val remove_changes_within :
    'v Interval_map_intf.S.t ->
    Interval_map_intf.S.Interval.t -> 'v Interval_map_intf.S.t
  val set_within :
    'v Interval_map_intf.S.t ->
    Interval_map_intf.S.Interval.t -> 'v -> 'v Interval_map_intf.S.t
  val map_within :
    'v Interval_map_intf.S.t ->
    Interval_map_intf.S.Interval.t ->
    f:('v -> 'v) -> 'v Interval_map_intf.S.t
  val construct_preimage :
    'v Interval_map_intf.S.t ->
    ('v * Interval_map_intf.S.Interval.t) Core_kernel.Std.Sequence.t
  val compare :
    ('a -> 'a -> int) ->
    'a Interval_map_intf.S.t -> 'a Interval_map_intf.S.t -> int
  val t_of_sexp :
    (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a Interval_map_intf.S.t
  val sexp_of_t :
    ('a -> Sexplib.Sexp.t) -> 'a Interval_map_intf.S.t -> Sexplib.Sexp.t
end