let classes () =
let repr2class = ElemTable.create 17 in
ElemTable.iter (fun e _ ->
let r = repr e in
try
let c = ElemTable.find repr2class r in
let c = ElemSet.add e c in
ElemTable.replace repr2class r c
with Not_found ->
ElemTable.add repr2class r (ElemSet.singleton e)
) table;
ElemTable.fold (fun r c ls -> ElemSet.add r c :: ls) repr2class []