Module Plugin.Make

Create a plugin builder from the given per-class monoid

Parameters

module M : sig ... end

Signature

module M = M
module type DYN_PL_FOR_M = sig ... end
type t = (module DYN_PL_FOR_M)
val create_and_setup : ?size:int -> CC.t -> t

Create a new monoid state

val mem : t -> E_node.t -> bool

Does the CC.E_node.t have a monoid value?

val get : t -> E_node.t -> M.t option

Get monoid value for this CC.E_node.t, if any

val iter_all : t -> (CC.repr * M.t) Iter.t
include Sidekick_sigs.BACKTRACKABLE0 with type t := t
val n_levels : t -> int

Number of levels

val push_level : t -> unit

Push a backtracking point

val pop_levels : t -> int -> unit

pop_levels st n removes n levels

include Sidekick_sigs.PRINT with type t := t