Functor Ptmap.Make


module Make: 
functor (X : sig
type t 
val name : string
val id : t -> int
val pretty : Format.formatter -> t -> unit
val equal : t -> t -> bool
module Datatype: Project.Datatype.S  with type t = t
end) ->
functor (V : Tagged_type) ->
functor (Initial_Values : sig
val v : (X.t * V.t) list list
end) -> sig .. end
Parameters:
X : sig type t val name : string val id: t -> int val pretty: Format.formatter -> t -> unit val equal:t -> t-> bool module Datatype : Project.Datatype.S with type t = t end
V : Tagged_type
Initial_Values : sig val v : (X.t*V.t) list list end

type t 
type key = X.t 
val empty : t
val tag : t -> int
val hash_debug : t -> int
val equal : t -> t -> bool
val is_empty : t -> bool
val add : key -> V.t -> t -> t
val find : key -> t -> V.t
val remove : key -> t -> t
val iter : (X.t -> V.t -> unit) -> t -> unit
val map : (V.t -> V.t) -> t -> t
val fold : (X.t -> V.t -> 'a -> 'a) -> t -> 'a -> 'a
val generic_merge : cache:string * int ->
decide:(X.t -> V.t option -> V.t option -> V.t) ->
t -> t -> t
val symetric_merge : cache:string * int ->
decide_none:(X.t -> V.t -> V.t) ->
decide_some:(V.t -> V.t -> V.t) ->
t -> t -> t
val generic_is_included : exn ->
cache:string * int ->
decide_fst:(X.t -> V.t -> unit) ->
decide_snd:(X.t -> V.t -> unit) ->
decide_both:(V.t -> V.t -> unit) -> t -> t -> unit
val cached_fold : cache:string * int ->
f:(key -> V.t -> 'a) ->
joiner:('a -> 'a -> 'a) -> empty:'a -> t -> 'a
val cached_map : cache:string * int ->
f:(key -> V.t -> V.t) -> t -> t
val is_singleton : t -> (key * V.t) option
val min_binding : t -> key * V.t
module Datatype: Project.Datatype.S  with type t = t
val pretty : Format.formatter -> t -> unit