UnionFind.Imperative
Imperative Union Find structures. These are mutable and can only grow (i.e. add new equalities), using union by size and lazy path compression.
Building nodes out of terms, relations and values
module MakeSimpleNode
(Term : Parameters.SIMPLE_GENERIC_TERM)
(Relation : Parameters.SIMPLE_GENERIC_GROUP) :
sig ... end
module MakeSimpleNumberedNode
(Term : PatriciaTree.HeterogeneousKey)
(Relation : Parameters.SIMPLE_GENERIC_GROUP) :
sig ... end
Same as MakeSimpleNode
, but also remembers all built node in a PatriciaTree
so we can check if terms already have an associated node
module MakeNode
(Term : Parameters.SIMPLE_GENERIC_TERM)
(Relation : Parameters.SIMPLE_GENERIC_GROUP)
(Value :
Parameters.SIMPLE_GENERIC_VALUE
with type ('a, 'b) relation = ('a, 'b) Relation.t) :
sig ... end
module MakeNumberedNode
(Term : PatriciaTree.HeterogeneousKey)
(Relation : Parameters.SIMPLE_GENERIC_GROUP)
(Value :
Parameters.SIMPLE_GENERIC_VALUE
with type ('a, 'b) relation = ('a, 'b) Relation.t) :
sig ... end
module GenericRelationalValued (Node : Parameters.UF_NODE) : sig ... end
Imperative union find
module GenericRelational (Node : Parameters.SIMPLE_UF_NODE) : sig ... end
Same as GenericRelationValued
, but without the values