[GAP Forum] Working with large conjugacy class

Frank Lübeck frank.luebeck at math.rwth-aachen.de
Wed Aug 15 13:37:01 BST 2012


On Fri, Aug 03, 2012 at 08:42:41AM +0200, Marek Mitros wrote:
> I perform following code in GAP 4.5.5- see below. I see that single
> matrix 133x133 over GF(4) use 8902 bytes of memory. The size of 2A
> class is 1 539 000. So (1 539 000 * 8902)/2^20 = 13 065 MB.
> 
> I start gap session with option -o 15000m (is it OK to allocate 15 GB
> of memory ?). And I run command
> c2s:= AsList(c2);;
> 
> Is there hope to fit whole conjugacy class in memory ? Are there other
> ways to loop through all large conjugacy class without storing it in
> memory ? I could store it on the disk for example.

Dear Marek Mitros, dear Forum,

It was already discussed that listing the whole class is not very
feasible in this case. 

But let me mention the "orb" package which could be of some help
for such a task. It doesn't provide a simple push the button function
to run through the class, but with some effort one could find a way to
iterate over huge orbits while only storing a small proportion of 
the points explicitly at any given time. 

But I would not do this for your questions:

> I would like to get answer on following questions and other similar.
> Fix v0 in 2A conjugacy class. I call element x "perpendicular to v0"
> if Order(x*v0)=2. How many elements there are perpendicular to v0 ?
> What is the size of maximal commuting subset in 2A. What is the size
> of abelian group generated by it ? What is the size of set {x: x*v0
> belongs to 2A} ?

You can answer part of this just using the character table of "HN",
using the command 'ClassMultiplicationCoefficient' (and adjusting
numbers using the lengths of the conjugacy classes), the documentation
of the function contains an interpretation of these numbers:

# instead of working with the group
hn:=AtlasGroup("HN", Dimension, 133);

# use its character table
hntab := CharacterTable("HN");
# class 2a corresponds to column 2 of the table
2apos := Position(ClassNames(hntab), "2a");
# there are two classes of involutions corresp to cols 2 and 3
2poss := Positions(OrdersClassRepresentatives(hntab), 2);
cllens := SizesConjugacyClasses(hntab);;
# elements perpendicular to v0, class wise
perp2a := List([1..NrConjugacyClasses(hntab)], i->  
             List(2poss, k->
               ClassMultiplicationCoefficient(hntab, i, 2apos, k) *
               cllens[k])) / cllens[2apos];
# total number
nrperp2a := Sum(perp2a, Sum);

Similarly, you can answer your last question. 

For the "maximal commuting subset in 2A" I have no immediate answer,
but I think it should be possible to get at least a sensible upper bound
using the character table. And if you need to do some explicit computations
with elements you can at least reduce your question to a much smaller
set of elements: The centralizer of an element in 2A is of type 2.HS.2.
Then

ctab := CharacterTable("2.HS.2");
FusionConjugacyClasses(ctab,hntab);

shows that the central involution and the second class of the subgroup
contain elements in 2A of HN. So, you only need to consider 
1+5775 elements in 2.HS.2 to find a maximal commuting set you are looking
for.

With best regards,
  Frank Lübeck
-- 
///  Dr. Frank Lübeck, Lehrstuhl D für Mathematik, Templergraben 64,  ///
\\\                    52062 Aachen, Germany                          \\\
///  E-mail: Frank.Luebeck at Math.RWTH-Aachen.De                        ///
\\\  WWW:    http://www.math.rwth-aachen.de/~Frank.Luebeck/           \\\




More information about the Forum mailing list