let partition s =
  Set.fold 
    (fun x -> 
       Map.add x (ext s x)) 
    (canrepr s) 
    Map.empty