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