Module Union_Find_Lattice

module Classic : sig ... end

Classic union-find lattice with no extensions (values or labels)

module DefaultConfig : sig ... end

A default configuration that can be passed to the various union-find functors

module Labeled : sig ... end

Labeled union-find: an extension of union find where nodes are related to each other via a relation (for example x --(+2)--> y). This allows representing more complex relation than equality, like equality up to a constant. Relations form a mathematical group.

module LabeledValued : sig ... end

Labeled union-find with values attached to each class.

module Parameters : sig ... end

Common module types for the various functors creating union-finds lattices.

module Polymorphic : sig ... end

Polymorphic labeled union-find I.E. this is a variant of Labeled, where instead of having simple type node and relation, we use polymorphic type 'a node, ('a, 'b) relation. An ('a,'b) relation relates a 'a node and a 'b node.

module PolymorphicValued : sig ... end

Polymorphic labeled union-find with values attached to each class. I.E. this is a variant of LabeledValued, where instead of having simple type node, relation, and value, we use polymorphic type 'a node, ('a, 'b) relation and 'b value.

module Sig : sig ... end

The common signatures of union-finds. Each implementation should have the same interface, among one of those below.

module Valued : sig ... end

Valued union-find: these attach an optional Sig.VALUE to each equivalence class, with values forming a lattice.