Module Hcexprs.HCESet

module HCESet: Hptset.S  with type elt = HCE.t
                         and type 'a map = 'a Hptmap.Shape(HCE).t

Hashconsed sets of symbolic expressions.


type 'a map 
include Datatype.S_with_collections
include Hptset.S_Basic_Compare

The datatype of sets.

val contains_single_elt : t -> elt option
val intersects : t -> t -> bool

intersects s1 s2 returns true if and only if s1 and s2 have an element in common

type action = 
| Neutral
| Absorbing
| Traversing of (elt -> bool)
val merge : cache:Hptmap_sig.cache_type ->
symmetric:bool ->
idempotent:bool ->
decide_both:(elt -> bool) ->
decide_left:action -> decide_right:action -> t -> t -> t
val from_map : 'a map -> t
val fold2_join_heterogeneous : cache:Hptmap_sig.cache_type ->
empty_left:('a map -> 'b) ->
empty_right:(t -> 'b) ->
both:(elt -> 'a -> 'b) ->
join:('b -> 'b -> 'b) -> empty:'b -> t -> 'a map -> 'b
val replace : elt map -> t -> bool * t

replace shape set replaces the elements of set according to shape. The returned boolean indicates whether the set has been modified; it is false when the intersection between shape and set is empty.

val clear_caches : unit -> unit

Clear all the caches used internally by the functions of this module. Those caches are not project-aware, so this function must be called at least each a project switch occurs.

val pretty_debug : t Pretty_utils.formatter