Module Make.CLMap

type 'a t
type !'a value = 'a
module BaseMap : sig ... end
val empty : 'a t
val is_empty : 'a t -> bool
val unsigned_min_binding : 'a t -> key * 'a value
val unsigned_max_binding : 'a t -> key * 'a value
val singleton : key -> 'a value -> 'a t
val cardinal : 'a t -> int
val is_singleton : 'a t -> (key * 'a value) option
val find : key -> 'a t -> 'a value
val find_opt : key -> 'a t -> 'a value option
val mem : key -> 'a t -> bool
val remove : key -> 'a t -> 'a t
val pop_unsigned_minimum : 'a t -> (key * 'a value * 'a t) option
val pop_unsigned_maximum : 'a t -> (key * 'a value * 'a t) option
val insert : key -> ('a value option -> 'a value) -> 'a t -> 'a t
val update : key -> ('a value option -> 'a value option) -> 'a t -> 'a t
val add : key -> 'a value -> 'a t -> 'a t
val split : key -> 'a t -> 'a t * 'a value option * 'a t
val iter : (key -> 'a value -> unit) -> 'a t -> unit
val fold : (key -> 'a value -> 'acc -> 'acc) -> 'a t -> 'acc -> 'acc
val fold_on_nonequal_inter : (key -> 'a value -> 'a value -> 'acc -> 'acc) -> 'a t -> 'a t -> 'acc -> 'acc
val fold_on_nonequal_union : (key -> 'a value option -> 'a value option -> 'acc -> 'acc) -> 'a t -> 'a t -> 'acc -> 'acc
val filter : (key -> 'a value -> bool) -> 'a t -> 'a t
val for_all : (key -> 'a value -> bool) -> 'a t -> bool
val map : ('a value -> 'a value) -> 'a t -> 'a t
val map_no_share : ('a value -> 'b value) -> 'a t -> 'b t
val mapi : (key -> 'a value -> 'a value) -> 'a t -> 'a t
val mapi_no_share : (key -> 'a value -> 'b value) -> 'a t -> 'b t
val filter_map : (key -> 'a value -> 'a value option) -> 'a t -> 'a t
val filter_map_no_share : (key -> 'a value -> 'b value option) -> 'a t -> 'b t
val reflexive_same_domain_for_all2 : (key -> 'a value -> 'a value -> bool) -> 'a t -> 'a t -> bool
val nonreflexive_same_domain_for_all2 : (key -> 'a value -> 'b value -> bool) -> 'a t -> 'b t -> bool
val reflexive_subset_domain_for_all2 : (key -> 'a value -> 'a value -> bool) -> 'a t -> 'a t -> bool
val reflexive_equal : ('a value -> 'a value -> bool) -> 'a t -> 'a t -> bool
val reflexive_compare : ('a value -> 'a value -> int) -> 'a t -> 'a t -> int
val disjoint : 'a t -> 'a t -> bool
val min_binding_inter : 'a t -> 'b t -> (key * 'a value * 'b value) option
val max_binding_inter : 'a t -> 'b t -> (key * 'a value * 'b value) option
val idempotent_union : (key -> 'a value -> 'a value -> 'a value) -> 'a t -> 'a t -> 'a t
val idempotent_inter : (key -> 'a value -> 'a value -> 'a value) -> 'a t -> 'a t -> 'a t
val nonidempotent_inter_no_share : (key -> 'a value -> 'b value -> 'c value) -> 'a t -> 'b t -> 'c t
val idempotent_inter_filter : (key -> 'a value -> 'a value -> 'a value option) -> 'a t -> 'a t -> 'a t
val slow_merge : (key -> 'a value option -> 'b value option -> 'c value option) -> 'a t -> 'b t -> 'c t
val symmetric_difference : (key -> 'a value -> 'a value -> 'a value option) -> 'a t -> 'a t -> 'a t
val difference : (key -> 'a value -> 'a value -> 'a value option) -> 'a t -> 'a t -> 'a t
module WithForeign (Map2 : sig ... end) : sig ... end
val pretty : ?pp_sep:(Stdlib.Format.formatter -> unit -> unit) -> (Stdlib.Format.formatter -> key -> 'a value -> unit) -> Stdlib.Format.formatter -> 'a t -> unit
val to_seq : 'a t -> (key * 'a value) Stdlib.Seq.t
val to_rev_seq : 'a t -> (key * 'a value) Stdlib.Seq.t
val add_seq : (key * 'a value) Stdlib.Seq.t -> 'a t -> 'a t
val of_seq : (key * 'a value) Stdlib.Seq.t -> 'a t
val of_list : (key * 'a value) list -> 'a t
val to_list : 'a t -> (key * 'a value) list