[GAP Forum] conjugacy class arrangement

Alexander Hulpke ahulpke at gmail.com
Mon Dec 29 20:38:03 GMT 2008


Dear Forum, Dear Lenny Chaskofsky,

> In computing conjugacy classes for a group, I believe that I got    
> different arrangements
> of the classes for the same group, on the same computer, running the  
> same version of gap at different times.
> I was using the default method for computing conjugacy classes.
> The manual says that the arrangement of classes depends on the  
> method chosen.
> Is it possible that I could get different arrangements with the  
> default method?

Some of the methods for computing conjugacy classes(implicitly) use  
random numbers. Unless the sequence of commands used since the start  
of GAP is exactly the same, this can cause classes to be obtained in a  
different arrangement.
>
> What would be the best way to ensure a consistent arrangement?
When computing from scratch, I fear one cannot do anything. (One would  
have to determine a ``canonical'' ordering of classes, but some  
classes are extremely hard to distinguish. (E.g. once you start  
looking at modular character tables).

If you need consistency amongst different calculations, your best bet  
is probably to once compute the classes, and then use this arrangement  
of classes. You can do this by defining the group, computing the  
conjugacy classes and then either

- Save a workspace, and have all your other calculations start with  
loading this workspace.
or (for example if you cannot load the workspace because you already  
stared another calculation
- Save information about the classes in a file and then (instead of  
computing the classes from scratch) create the classes from this  
stored information. Typically, representative and centralizer  
generators are sufficient information, to recreate classes very quickly.
The following commands do for example such a save/load sequence:

Saving classes of group G:

save:=List(ConjugacyClasses(G),i->[Representative(i),
GeneratorsOfGroup(StabilizerOfExternalSet(i))]);;
PrintTo("savefile","save:=",save,";\n");



Loading classes and storing them in G (assuming we did not yet compute  
classes for G!):

Read("savefile");
cl:=[];
for i in save do
   c:=ConjugacyClass(G,i[1]);
   SetStabilizerOfExternalSet(c,SubgroupNC(G,i[2]));
   Add(cl,c);
od;
SetConjugacyClasses(G,cl);

At this point (the new) G now has the same classes as before.

I hope this helps.  Best wishes and a good 2009,

    Alexander Hulpke




More information about the Forum mailing list