Library for incremental computations


Each call to Incremental.Make creates shared state used by all the incremental functions.

type t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t

invariant checks invariants of all necessary nodes, as well as other data structures used for stabilization.

include Core_kernel.Invariant.S with type t := t
val invariant : t -> unit
val t : t

t is the shared state for this call to Incremental.Make.

val max_height_allowed : t -> int
val set_max_height_allowed : t -> int -> unit

set_max_height_allowed t height sets the maximum allowed height of nodes. set_max_height_allowed raises if called during stabilization, or if height < max_height_seen t.

val num_active_observers : t -> int

num_active_observers returns (in constant time) the number of observers that have been created and not yet disallowed (either explicitly or via finalization).

val max_height_seen : t -> int

constant-time stats.

val num_nodes_became_necessary : t -> int
val num_nodes_became_unnecessary : t -> int
val num_nodes_changed : t -> int
val num_nodes_created : t -> int
val num_nodes_invalidated : t -> int
val num_nodes_recomputed : t -> int
val num_nodes_recomputed_directly_because_one_child : t -> int
val num_nodes_recomputed_directly_because_min_height : t -> int
val num_stabilizes : t -> int
val num_var_sets : t -> int
module Stats : sig ... end

Stats contains information about the DAG intended for human consumption.

val stats : t -> Stats.t