module Make_Hashconsed_Lattice_Set:
See e.g. base.ml and locations.ml to see how this functor should be
applied. The O
module passed as argument is the same as O
in the
result. It is passed here to avoid having multiple modules calling
Hptset.Make
on the same argument (which is forbidden by the datatype
library, and would cause hashconsing problems)
module O: Lattice_type.Hptset
type
t = private
include Lattice_type.AI_Lattice_with_cardinal_one
val inject_singleton : O.elt -> t
val inject : O.t -> t
val empty : t
val apply2 : (O.elt -> O.elt -> O.elt) ->
t ->
t -> t
val apply1 : (O.elt -> O.elt) -> t -> t
val fold : (O.elt -> 'a -> 'a) -> t -> 'a -> 'a
val iter : (O.elt -> unit) -> t -> unit
val exists : (O.elt -> bool) -> t -> bool
val for_all : (O.elt -> bool) -> t -> bool
val filter : (O.elt -> bool) -> t -> t
val project : t -> O.t
val mem : O.elt -> t -> bool