This module implements a simple and efficient union/find algorithm. See Robert E. Tarjan, ``Efficiency of a Good But Not Linear Set Union Algorithm'', JACM 22(2), 1975.
The abstraction defined by this module is a set of points,
partitioned into equivalence classes. With each equivalence class,
a piece of information, of abstract type 'a
, is associated; we
call it a descriptor.
fresh desc
creates a fresh point and returns it. It forms an
equivalence class of its own, whose descriptor is desc
.
find point
returns the descriptor associated with point
's
equivalence class.