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
find point returns the descriptor associated with
redundant maps all members of an equivalence class, but one, to