sig
  type key = t
  type 'v map = 'Hptmap.Shape(Base).t
  val id : 'v map -> int
  val hash : 'v map -> int
  val equal : 'v map -> 'v map -> bool
  val compare : ('-> '-> int) -> 'v map -> 'v map -> int
  val pretty : '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 -> '-> 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 -> '-> unit) -> 'v map -> unit
  val for_all : (key -> '-> bool) -> 'v map -> bool
  val exists : (key -> '-> bool) -> 'v map -> bool
  val fold : (key -> '-> '-> 'b) -> 'v map -> '-> 'b
  val fold_rev : (key -> '-> '-> 'b) -> 'v map -> '-> 'b
  val cached_fold :
    cache_name:string ->
    temporary:bool ->
    f:(key -> '-> 'b) ->
    joiner:('-> '-> 'b) -> empty:'-> 'v map -> 'b
  val fold2_join_heterogeneous :
    cache:Hptmap_sig.cache_type ->
    empty_left:('b map -> 'c) ->
    empty_right:('a map -> 'c) ->
    both:(key -> '-> '-> 'c) ->
    join:('-> '-> 'c) -> empty:'-> '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 -> '-> bool) ->
    decide_snd:(key -> '-> bool) ->
    decide_both:(key -> '-> '-> 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 -> '-> bool) ->
    decide_both:(key -> '-> '-> 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