> < ^ From:

< ^ Subject:

Dear GAP Forum,

Jeremy Rickard asked how to use groups together with the character tables

in the GAP library.

Suppose I have a finite simple group G and want to work with its

Brauer characters. Then I can just use the Brauer character tables in

GAP4's libraries.Suppose I then want to construct subgroups of G and work with

induced/restricted characters and so on. Then I can get a group

(isomorphic to) G from the libraries with which I can do as I will,

but to use the library character tables I have to use the function

ConnectGroupAndCharacterTable to associate columns of the character

table with conjugacy classes of G in the proper way.First question: Is this a sensible way to do this, or am I missing

something easier?Occasionally, ConnectGroupAndCharacterTable will fail. For example, if

G=J2, then up to automorphisms of the character table there are two

ways of associating columns with conjugacy classes that the function

can't decide between.Second question: If I know which way is correct, is there some way to

tell GAP to use that way to connect the group and character table?

First answer:

Yes, currently this is the intended way to use the ``interface''

between concretely given groups and character tables in the GAP library.

Eventually this interface will be improved by using more database

information.

For many almost simple groups, Rob Wilson and his collaborators

have defined conjugacy class representatives in terms of standard

generators of the groups; this reduces the problem to identify the

classes with the columns of the character tables (in ATLAS format)

to the problem to find standard generators from the given generators.

(See http://www.mat.bham.ac.uk/atlas/ for details.)

A GAP interface to this database will soon be provided.

Second answer:

Yes, such a possibility exists, but it could be more user-friendly.

(The next version of GAP will provide a better solution;

To those interested in it right now,

I can send the function in question in a separate mail on request.)

For the example $G = J_2$, this might look as follows.

First we fetch the group and the library table.

(By the way, the GAP table of marks might be very useful

if one wants to deal with many subgroups of $J_2$.)

gap> tom:= TableOfMarks( "J2" );

TableOfMarks( "J2" )

gap> j2:= UnderlyingGroup( tom );

<permutation group of size 604800 with 2 generators>

gap> tbl:= CharacterTable( "J2" );

CharacterTable( "J2" )

gap> ConnectGroupAndCharacterTable( j2, tbl );

false

So GAP cannot automatically identify the classes of $J_2$.

In order to see which classes cause problems,

we use `CompatibleConjugacyClasses'.

gap> CompatibleConjugacyClasses( tbl ); [ [ 17, 18 ], [ 9, 10 ] ]

The problem is that after choosing one class of element order $5$

and centralizer order $300$ as class {\tt 5A}, distinguishing the

classes {\tt 5C} and {\tt 5D} (and their square roots in the classes

{\tt 10C} and {\tt 10D}) is beyond the criteria used by

`ConnectGroupAndCharacterTable'.

Let us see how we can identify the classes by hand.

gap> ccl:= ConjugacyClasses( j2 );; gap> reps:= List( ccl, Representative );; gap> List( reps, Order ); [ 1, 15, 15, 5, 5, 3, 10, 10, 2, 6, 3, 8, 4, 2, 5, 5, 10, 10, 7, 12, 6 ] gap> reps[2]^3 in ccl[4]; true

We may choose the class at position $2$ in the list {\tt ccl} to be

{\tt 15A}, then class number $4$ is {\tt 5B}, according to the ATLAS.

gap> OrdersClassRepresentatives( tbl ); [ 1, 2, 2, 3, 3, 4, 5, 5, 5, 5, 6, 6, 7, 8, 10, 10, 10, 10, 12, 15, 15 ] gap> nr:= NrConjugacyClasses( tbl ); 21 gap> List( [ 1 .. 21 ], > i -> ClassMultiplicationCoefficient( tbl, 8, 7, i ) ); [ 0, 160, 0, 0, 15, 0, 1, 1, 2, 2, 0, 12, 7, 0, 4, 4, 0, 0, 32, 8, 8 ] gap> List( [ 1 .. 21 ], > i -> ClassMultiplicationCoefficient( tbl, 8, 9, i ) ); [ 0, 0, 48, 216, 0, 96, 12, 360, 252, 2, 48, 12, 35, 16, 20, 4, 20, 100, 24, 18, 93 ] gap> List( [ 1 .. 21 ], > i -> ClassMultiplicationCoefficient( tbl, 8, 10, i ) ); [ 0, 0, 0, 0, 36, 0, 12, 72, 2, 60, 24, 48, 35, 32, 104, 0, 20, 60, 48, 81, 18 ]

Thus the classes {\tt 5C} and {\tt 5D} can be distinguished by inspecting

products of a {\tt 5B} element with elements in the other conjugacy classes

of element order $5$.

gap> moved:= NrMovedPoints( j2 ); 100 gap> IsTransitive( j2, MovedPoints( j2 ) ); true gap> PermChars( tbl, moved ); [ Character( CharacterTable( "J2" ), [ 100, 20, 0, 10, 4, 8, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0 ] ) ] gap> repeat > y:= reps[4] * reps[15]^Random( j2 ); > until Order( y ) = 3; gap> moved - NrMovedPoints( y ); 10

We found a {\tt 3A} element as a product of a {\tt 5B} element and an element

in the $15$-th conjugacy class, so this class must be {\tt 5C}.

So we are now able to set up the part of the bijection we need.

gap> bij:= [];; gap> bij[20]:= 2;; gap> bij[ 9]:= 15;;

Completing this bijection by hand is not difficult but tedious,

and apparently GAP does not provide the possibility to deal with

partial bijections.

As said above, the next version of GAP will behave nicer in this

respect, and this will look as follows.

gap> CompatibleConjugacyClasses( j2, ccl, tbl, rec( bijection:= bij ) ); [ 1, 14, 9, 6, 11, 13, 5, 4, 15, 16, 21, 10, 19, 12, 7, 8, 18, 17, 20, 2, 3 ] gap> ConnectGroupAndCharacterTable( j2, tbl, rec( bijection:= bij ) ); true

I hope this helps.

Kind regards,

Thomas

> < [top]