sig
type key = t
type 'v map = 'v Hptmap.Shape(Base).t
val id : 'v map -> int
val hash : 'v map -> int
val equal : 'v map -> 'v map -> bool
val compare : ('v -> 'v -> int) -> 'v map -> 'v map -> int
val pretty : 'v Pretty_utils.formatter -> 'v map Pretty_utils.formatter
val is_empty : 'v map -> bool
val is_singleton : 'v map -> (key * 'v) option
val on_singleton : (key -> 'v -> bool) -> 'v map -> bool
val cardinal : 'v map -> int
val find : key -> 'v map -> 'v
val find_check_missing : key -> 'v map -> 'v
val find_key : key -> 'v map -> key
val mem : key -> 'v map -> bool
val min_binding : 'v map -> key * 'v
val max_binding : 'v map -> key * 'v
val iter : (key -> 'v -> unit) -> 'v map -> unit
val for_all : (key -> 'v -> bool) -> 'v map -> bool
val exists : (key -> 'v -> bool) -> 'v map -> bool
val fold : (key -> 'v -> 'b -> 'b) -> 'v map -> 'b -> 'b
val fold_rev : (key -> 'v -> 'b -> 'b) -> 'v map -> 'b -> 'b
val cached_fold :
cache_name:string ->
temporary:bool ->
f:(key -> 'v -> 'b) ->
joiner:('b -> 'b -> 'b) -> empty:'b -> 'v map -> 'b
val fold2_join_heterogeneous :
cache:Hptmap_sig.cache_type ->
empty_left:('b map -> 'c) ->
empty_right:('a map -> 'c) ->
both:(key -> 'a -> 'b -> 'c) ->
join:('c -> 'c -> 'c) -> empty:'c -> 'a map -> 'b map -> 'c
type predicate_type = ExistentialPredicate | UniversalPredicate
type predicate_result = PTrue | PFalse | PUnknown
val binary_predicate :
Hptmap_sig.cache_type ->
predicate_type ->
decide_fast:('a map -> 'b map -> predicate_result) ->
decide_fst:(key -> 'a -> bool) ->
decide_snd:(key -> 'b -> bool) ->
decide_both:(key -> 'a -> 'b -> bool) -> 'a map -> 'b map -> bool
val symmetric_binary_predicate :
Hptmap_sig.cache_type ->
predicate_type ->
decide_fast:('v map -> 'v map -> predicate_result) ->
decide_one:(key -> 'v -> bool) ->
decide_both:(key -> 'v -> 'v -> bool) -> 'v map -> 'v map -> bool
val decide_fast_inclusion : 'v map -> 'v map -> predicate_result
val decide_fast_intersection : 'v map -> 'v map -> predicate_result
val clear_caches : unit -> unit
end