sig
  type 'a point
  val fresh : '-> 'UnionFind.point
  val find : 'UnionFind.point -> 'a
  val union : 'UnionFind.point -> 'UnionFind.point -> unit
  val equivalent : 'UnionFind.point -> 'UnionFind.point -> bool
  val redundant : 'UnionFind.point -> bool
  val change : 'UnionFind.point -> '-> 'a
end