Module Union_Find_Lattice.Polymorphic
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 ArrayWithCopy
(Config : Parameters.ARRAY_CONFIG)
(Node : Parameters.POLYMORPHIC_NODE)
(Relation : Parameters.POLYMORPHIC_GROUP) :
Sig.POLYMORPHIC_LABELED_UNION_FIND_LATTICE
with type 'a node = 'a Node.t
and type ('a, 'b) relation = ('a, 'b) Relation.tArray based polymorphic labeled union-find lattice with values. Warning: this one is NOT persistent, and requires explicit calls to copy on version switch.
module PatriciaTree
(Config : Parameters.PATRICIA_TREE_CONFIG)
(Node : Parameters.POLYMORPHIC_NODE)
(Relation : Parameters.POLYMORPHIC_GROUP) :
Sig.POLYMORPHIC_LABELED_UNION_FIND_LATTICE
with type 'a node = 'a Node.t
and type ('a, 'b) relation = ('a, 'b) Relation.tPatricia Tree based polymorphic labeled union-find lattice with values.
module PersistentArray
(Config : Parameters.PERSISTENT_ARRAY_CONFIG)
(Node : Parameters.POLYMORPHIC_NODE)
(Relation : Parameters.POLYMORPHIC_GROUP) :
Sig.POLYMORPHIC_LABELED_UNION_FIND_LATTICE
with type 'a node = 'a Node.t
and type ('a, 'b) relation = ('a, 'b) Relation.tPersistent array based polymorphic labeled union-find lattice with values.
module PersistentArrayNCA
(Config : Parameters.PERSISTENT_ARRAY_CONFIG)
(Node : Parameters.POLYMORPHIC_NODE)
(Relation : Parameters.POLYMORPHIC_GROUP) :
Sig.POLYMORPHIC_LABELED_UNION_FIND_LATTICE
with type 'a node = 'a Node.t
and type ('a, 'b) relation = ('a, 'b) Relation.tPersistent array based polymorphic labeled union-find lattice with values. Same as PersitentArray, but builds join on the nearest common ancestor instead of one of the branches.