# Maintenance Issues for the GAP Character Table Library

### THOMAS BREUER
Lehrstuhl D für Mathematik
RWTH, 52056 Aachen, Germany

### November 24th, 2006

This note collects examples of computations that arose in the context of maintaining the GAP Character Table Library.

# Contents

1 Disproving Possible Character Tables
1.1 A Perfect Pseudo Character Table (November 2006)

## 1 Disproving Possible Character Tables

I do not know a necessary and sufficient criterion for checking whether a given matrix together with a list of power maps describes the character table of a finite group. Examples of pseudo character tables (tables which satisfy certain necessary conditions but for which actually no group exists) have been given in [Gag86].
Another such example is described in another collection of examples.
The tables in the GAP Character Table Library satisfy the usual tests. However, there are table candidates for which these tests are not good enough.

### 1.1 A Perfect Pseudo Character Table (November 2006)

(This example arose from a discussion with Jack Schmidt.)
Up to version 1.1.3 of the GAP Character Table Library, the table with identifier `"P41/G1/L1/V4/ext2"` was not correct. The problem occurs already in the microfiches that are attached to [HP89].
In the following, we show that this table is not the character table of a finite group, using the GAP library of perfect groups. Currently we do not know how to prove this inconsistency alone from the table.
We start with the construction of the inconsistent table; apart from a little editing, the following input equals the data formerly stored in the file `data/ctoholpl.tbl` of the GAP Character Table Library.

        gap> tbl:= rec(
        >   Identifier:= "P41/G1/L1/V4/ext2",
        >   InfoText:= Concatenation( [
        >     "origin: Hanrath library,\n",
        >     "structure is 2^7.L2(8),\n",
        >     "characters sorted with permutation (12,14,15,13)(19,20)" ] ),
        >   UnderlyingCharacteristic:= 0,
        >   SizesCentralizers:= [64512,1024,1024,64512,64,64,64,64,128,128,64,64,128,
        >     128,18,18,14,14,14,14,14,14,18,18,18,18,18,18],
        >   ComputedPowerMaps:= [,[1,1,1,1,2,3,3,2,3,2,2,1,3,2,16,16,20,20,22,22,18,
        >     18,26,26,27,27,23,23],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,4,1,21,22,17,
        >     18,19,20,16,15,15,16,16,15],,,,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
        >     4,1,4,1,4,1,26,25,28,27,23,24]],
        >   Irr:= 0,
        >   AutomorphismsOfTable:= Group( [(23,26,27)(24,25,28),(9,13)(10,14),
        >     (17,19,21)(18,20,22)] ),
        >   ConstructionInfoCharacterTable:= ["ConstructClifford",[[[1,2,3,4,5,6,7,8,
        >     9],[1,7,8,3,9,2],[1,4,5,6,2],[1,2,2,2,2,2,2,2]],[["L2(8)"],["Dihedral",
        >     18],["Dihedral",14],["2^3"]],[[[1,2,3,4],[1,1,1,1],["elab",4,25]],[[1,
        >     2,3,4,4,4,4,4,4,4],[2,6,5,2,3,4,5,6,7,8],["elab",10,17]],[[1,2],[3,4],[
        >     [1,1],[-1,1]]],[[1,3],[4,2],[[1,1],[-1,1]]],[[1,3],[5,3],[[1,1],[-1,1]]
        >     ],[[1,3],[6,4],[[1,1],[-1,1]]],[[1,2],[7,2],[[1,1],[1,-1]]],[[1,2],[8,
        >     3],[[1,1],[-1,1]]],[[1,2],[9,5],[[1,1],[1,-1]]]]]],
        >   );;
        gap> ConstructClifford( tbl, tbl.ConstructionInfoCharacterTable[2] );
        gap> ConvertToLibraryCharacterTableNC( tbl );;

Suppose that there is a group G, say, with this table. Then G is perfect since the table has only one linear character.

        gap> Length( LinearCharacters( tbl ) );
        1
        gap> IsPerfectCharacterTable( tbl );
        true

The table satisfies the orthogonality relations, the structure constants are nonnegative integers, and symmetrizations of the irreducibles decompose into the irreducibles, with nonnegative integral coefficients.

        gap> IsInternallyConsistent( tbl );
        true
        gap> irr:= Irr( tbl );;
        gap> test:= Concatenation( List( [ 2 .. 7 ],
        >               n -> Symmetrizations( tbl, irr, n ) ) );;
        gap> Append( test, Set( Tensored( irr, irr ) ) );
        gap> fail in Decomposition( irr, test, "nonnegative" );
        false
        gap> if ForAny( Tuples( [ 1 .. NrConjugacyClasses( tbl ) ], 3 ),
        >      t -> not ClassMultiplicationCoefficient( tbl, t[1], t[2], t[3] )
        >               in NonnegativeIntegers ) then
        >      Error( "contradiction" );
        > fi;

The GAP Library of Perfect Groups contains representatives of the four isomorphism types of perfect groups of order |G| = 64 512.

        gap> n:= Size( tbl );
        64512
        gap> NumberPerfectGroups( n );
        4
        gap> grps:= List( [ 1 .. 4 ], i -> PerfectGroup( IsPermGroup, n, i ) );
        [ L2(8) 2^6 E 2^1, L2(8) N 2^6 E 2^1 I, L2(8) N 2^6 E 2^1 II,
          L2(8) N 2^6 E 2^1 III ]

If we believe that the classification of perfect groups of order |G| is correct then all we have to do is to show that none of the character tables of these four groups is equivalent to the given table.

        gap> tbls:= List( grps, CharacterTable );;
        gap> List( tbls, x -> TransformingPermutationsCharacterTables( x, tbl ) );
        [ fail, fail, fail, fail ]

In fact, already the matrices of irreducible characters of the four groups do not fit to the given table.

        gap> List( tbls, t -> TransformingPermutations( Irr( t ), Irr( tbl ) ) );
        [ fail, fail, fail, fail ]

Let us look closer at the tables in question. Each character table of a perfect group of order 64 512 has exactly one irreducible character of degree 63 that takes exactly the values −1, 0, 7, and 63; moreover, the value 7 occurs in exactly two classes.

        gap> testchars:= List( tbls,
        >   t -> Filtered( Irr( t ),
        >          x -> x[1] = 63 and Set( x ) = [ -1, 0, 7, 63 ] ) );;
        gap> List( testchars, Length );
        [ 1, 1, 1, 1 ]
        gap> List( testchars, l -> Number( l[1], x -> x = 7 ) );
        [ 2, 2, 2, 2 ]

(Another way to state this is that in each of the four tables t in question, there are ten preimage classes of the involution class in the simple factor group L2(8), there are eight preimage classes of this class in the factor group 26.L2(8), and that the unique class in which an irreducible degree 63 character of this factor group takes the value 7 splits in t.)
In the erroneous table, however, there is only one class with the value 7 in this character.

        gap> testchars:= List( [ tbl ],
        >   t -> Filtered( Irr( t ),
        >          x -> x[1] = 63 and Set( x ) = [ -1, 0, 7, 63 ] ) );;
        gap> List( testchars, Length );
        [ 1 ]
        gap> List( testchars, l -> Number( l[1], x -> x = 7 ) );
        [ 1 ]

This property can be checked easily for the displayed table stored in fiche 2, row 4, column 7 of [HP89], with the name `6L1<>Z^7<>L2(8); V4; MOD 2`, and it turns out that this table is not correct.
Note that these microfiches contain two tables of order 64 512, and there were three tables in the GAP Character Table Library that contain `origin: Hanrath library` in their `InfoText` value. Besides the incorrect table, these library tables are the character tables of the groups `PerfectGroup( 64512, 1 )` and `PerfectGroup( 64512, 3 )`, respectively. (The matrices of irreducible characters of these tables are equivalent.)

        gap> Filtered( [ 1 .. 4 ], i ->
        >        TransformingPermutationsCharacterTables( tbls[i],
        >            CharacterTable( "P41/G1/L1/V1/ext2" ) ) <> fail );
        [ 1 ]
        gap> Filtered( [ 1 .. 4 ], i ->
        >        TransformingPermutationsCharacterTables( tbls[i],
        >            CharacterTable( "P41/G1/L1/V2/ext2" ) ) <> fail );
        [ 3 ]
        gap> TransformingPermutations( Irr( tbls[1] ), Irr( tbls[3] ) ) <> fail;
        true

Since version 1.2 of the GAP Character Table Library, the character table with the `Identifier` value `"P41/G1/L1/V4/ext2"` corresponds to the group `PerfectGroup( 64512, 4 )`. The choice of this group was somewhat arbitrary since the vector system `V4` seems to be not defined in [HP89]; anyhow, this group and the remaining perfect group, `PerfectGroup( 64512, 2 )`, have equivalent matrices of irreducibles.

        gap> Filtered( [ 1 .. 4 ], i ->
        >        TransformingPermutationsCharacterTables( tbls[i],
        >            CharacterTable( "P41/G1/L1/V4/ext2" ) ) <> fail );
        [ 4 ]
        gap> TransformingPermutations( Irr( tbls[2] ), Irr( tbls[4] ) ) <> fail;
        true

## References

[Bre]
  T. Breuer, Using table automorphisms for constructing character tables in GAP, `http://www.math.rwth-aachen.de/` ``~`Thomas.Breuer/` `ctbllib/``doc/` `ctblcons.pdf`.
[Gag86]
  S. M. Gagola, Jr., Formal character tables, Michigan Math. J. 33 (1986), no. 1, 3-10. MR 817904 (86k:20010)
[HP89]
  D. F. Holt and W. Plesken, Perfect groups, Oxford Mathematical Monographs, The Clarendon Press Oxford University Press, New York, 1989, With an appendix by W. Hanrath, Oxford Science Publications. MR 1025760 (91c:20029)

File translated from TEX by TTH, version 3.59.
On 30 May 2012, 15:44.