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 []