# 53 Character Table Libraries

The utility of GAP3 for character theoretical tasks depends on the availability of many known character tables, so there is a lot of tables in the GAP3 group collection.

There are three different libraries of character tables, namely ordinary character tables, Brauer tables and generic character tables.

Of course, these libraries are open'' in the sense that they shall be extended. So we would be grateful for any further tables of interest sent to us for inclusion into our libraries.

This chapter mainly explains properties not of single tables but of the libraries and their structure; for the format of character tables, see Character Table Records, Brauer Table Records and chapter Generic Character Tables.

• the actually available tables (see Contents of the Table Libraries),

• the sublibraries of ATLAS tables (see ATLAS Tables) and CAS tables (see CAS Tables),

• the organization of the libraries (see Organization of the Table Libraries),

• and how to extend a library (see How to Extend a Table Library).

## 53.1 Contents of the Table Libraries

As stated at the beginning of the chapter, there are three libraries of character tables: ordinary character tables, Brauer tables, and generic character tables.

Ordinary Character Tables

Two different aspects are useful to list up the ordinary character tables

available to GAP3:
the aspect of source of the tables and that of connections between the tables.

As for the source, there are two big sources, the ATLAS (see ATLAS Tables) and the CAS library of character tables. Many ATLAS tables are contained in the CAS library, and difficulties may arise because the succession of characters or classes in CAS tables and ATLAS tables are different, so see CAS Tables and Character Table Records for the relations between the (at least) two forms of the same table. A large subset of the CAS tables is the set of tables of Sylow normalizers of sporadic simple groups as published in Ost86, so this may be viewed as another source.

To avoid confusions about the actual format of a table, authorship and so on, the text component of the table contains the information

origin: ATLAS of finite groups:

for ATLAS tables (see ATLAS Tables)

origin: Ostermann:

for tables of Ost86 and

origin: CAS library:

for any table of the CAS table library that is contained neither in the ATLAS nor in Ost86.

If one is interested in the aspect of connections between the tables, i.e., the internal structure of the library of ordinary tables (which corresponds to the access to character tables, as described in CharTable), the contents can be listed up the following way:

We have

• all ATLAS tables (see ATLAS Tables), i.e. the tables of the simple groups which are contained in the ATLAS, and the tables of cyclic and bicyclic extensions of these groups;

• most tables of maximal subgroups of sporadic simple groups (not all for HN, F3+, B, M);

• some tables of maximal subgroups of other ATLAS tables (which?)

• most nontrivial Sylow normalizers of sporadic simple groups as printed in Ost86, where nontrivial means that the group is not contained in p:(p-1) (not J4N2, Co1N2, Co1N5, all of Fi23, Fi24, B, M, HN, and Fi22N2)

• some tables of element centralizers

• some tables of Sylow subgroups

• a few other tables, e.g. W(F4)
namely which?

Brauer Tables

This library contains the tables of the modular ATLAS which are yet known. Some of them still contain unknowns (see Unknown). Since there is ongoing work in computing new tables, this library is changed nearly every day.

These Brauer tables contain the information

 origin: modular ATLAS of finite groups

in their text component.

Generic Character Tables

At the moment, generic tables of the following groups are available in GAP3 (see CharTable):

• alternating groups

• cyclic groups,

• dihedral groups,

• some linear groups,

• quaternionic (dicyclic) groups

• Suzuki groups,

• symmetric groups,

• wreath products of a group with a symmetric group (see CharTableWreathSymmetric),

• Weyl groups of types Bn and Dn

## 53.2 Selecting Library Tables

Single library tables can be selected by their name (see CharTable for admissible names of library tables, and Contents of the Table Libraries for the organization of the library).

In general it does not make sense to select tables with respect to certain properties, as is useful for group libraries (see Group Libraries). But it may be useful to get an overview of all library tables, or all library tables of simple groups, or all library tables of sporadic simple groups. It is sufficient to know an admissible name of these tables, so they need not be loaded. A table can then be read using CharTable CharTable.

The mechanism is similar to that for group libraries.

AllCharTableNames():

returns a list with an admissible name for every library table,

AllCharTableNames( IsSimple ):

returns a list with an admissible name for every library table of a simple group,

AllCharTableNames( IsSporadicSimple ):

returns a list with an admissible name for every library table of a sporadic simple group.

Admissible names of maximal subgroups of sporadic simple groups are stored in the component maxes of the tables of the sporadic simple groups. Thus

    gap> maxes:= CharTable( "M11" ).maxes;
[ "A6.2_3", "L2(11)", "3^2:Q8.2", "A5.2", "2.S4" ] 

returns the list containing these names for the Mathieu group M11, and

    gap> List( maxes, CharTable );
[ CharTable( "A6.2_3" ), CharTable( "L2(11)" ),
CharTable( "3^2:Q8.2" ), CharTable( "A5.2" ), CharTable( "2.S4" ) ] 

will read them from the library files.

## 53.3 ATLAS Tables

\def\ttquote\char13 \setlength\unitlength0.1cm

The GAP3 group collection contains all character tables that are included in the Atlas of finite groups (CCN85, from now on called ATLAS) and the Brauer tables contained in the modular ATLAS (JLPW95). Although the Brauer tables form a library of their own, they are described here since all conventions for ATLAS tables stated here hold for Brauer tables, too.

These tables have the information

 origin: ATLAS of finite groups

resp.

 origin: modular ATLAS of finite groups

in their text component, further on they are simply called ATLAS tables.

In addition to the information given in Chapters 6--8 of the ATLAS which tell how to read the printed tables, there are some rules relating these to the corresponding GAP3 tables.

Improvements

Note that for the GAP3 library not the printed ATLAS is relevant but the revised version given by the list of Improvements to the ATLAS which can be got from Cambridge.

Also some tables are regarded as ATLAS tables which are not printed in the ATLAS but available in ATLAS format from Cambridge; at the moment, these are the tables related to L2(49), L2(81), L6(2), O8-(3), O8+(3) and S10(2).

Powermaps

In a few cases (namely the tables of 3.McL, 32.U4(3) and its covers, 32.U4(3).23 and its covers) the powermaps are not uniquely determined by the given information but determined up to matrix automorphisms (see MatAutomorphisms) of the characters; then the first possible map according to lexicographical ordering was chosen, and the automorphisms are listed in the text component of the concerned table.

Projective Characters

For any nontrivial multiplier of a simple group or of an automorphic extension of a simple group, there is a component projectives in the table of G that is a list of records with the names of the covering group (e.g. "12_1.U4(3)") and the list of those faithful characters which are printed in the ATLAS (so--called proxy characters).

Projections

ATLAS tables contain the component projections: For any covering group of G for which the character table is available in ATLAS format a record is stored there containing components name (the name of the cover table) and map (the projection map); the projection maps any class of G to that preimage in the cover for that the column is printed in the ATLAS; it is called g0 in Chapter 7, Section 14 there.

(In a sense, a projection map is an inverse of the factor fusion from the cover table to the actual table (see ProjectionMap).)

Tables of Isoclinic Groups

As described in Chapter 6, Section 7 and Chapter 7, Section 18 of the ATLAS, there exist two different groups of structure 2.G.2 for a simple group G which are isoclinic. The ATLAS table in the library is that which is printed in the ATLAS, the isoclinic variant can be got using CharTableIsoclinic CharTableIsoclinic.

Succession of characters and classes

(Throughout this paragraph, G always means the involved simple group.)

• For G itself, the succession of classes and characters in the GAP3 table is as printed in the ATLAS.

• For an automorphic extension G.a, there are three types of characters: \beginitemize

• If a character χ of G extends to G.a, the different extensions χ01,...,χa-1 are consecutive (see ATLAS, Chapter 7, Section 16).

• If some characters of G fuse to give a single character of G.a, the position of that character is the position of the first involved character of G.

• If both, extension and fusion, occur, the result characters are consecutive, and each replaces the first involved character. \enditemize

• Similarly, there are different types of classes for an automorphic extension G.a: \beginitemize

• If some classes collapse, the result class replaces the first involved class.

• For a > 2, any proxy class and its followers are consecutive; if there are more than one followers for a proxy class (the only case that occurs is for a = 5), the succession of followers is the natural one of corresponding galois automorphisms (see ATLAS, Chapter 7, Section 19). \enditemize The classes of G.a1 always precede the outer classes of G.a2 for a1, a2 dividing a and a1 < a2. This succession is like in the ATLAS, with the only exception U3(8).6.

• For a central extension M.G, there are different types of characters: \beginitemize

• Every character can be regarded as a faithful character of the factor group m.G, where m divides M. Characters faithful for the same factor group are consecutive like in the ATLAS, the succession of these sets of characters is given by the order of precedence 1, 2, 4, 3, 6, 12 for the different values of m.

• If m > 2, a faithful character of m.G that is printed in the ATLAS (a so-called \mbox proxy) represents one or more \mbox followers, this means galois conjugates of the proxy; in any GAP3 table, the proxy precedes its followers; the case m = 12 is the only one that occurs with more than one follower for a proxy, then the three followers are ordered according to the corresponding galois automorphisms 5, 7, 11 (in that succession). \enditemize

• For the classes of a central extension we have: \beginitemize

• The preimages of a G-class in M.G are subsequent, the succession is the same as that of the lifting order rows in the ATLAS.

• The primitive roots of unity chosen to represent the generating central element (class 2) are E(3), E(4), E(6)^5 (= E(2) * E(3)) and E(12)^7 (= E(3) * E(4)) for m = 3, 4, 6 and 12, respectively. \enditemize

• For tables of bicyclic extensions m.G.a, both the rules for automorphic and central extensions hold; additionally we have: \beginitemize

• Whenever classes of the subgroup m.G collapse or characters fuse, the result class resp. character replaces the first involved class resp. character.

• Extensions of a character are subsequent, and the extensions of a proxy character precede the extensions of its followers.

• Preimages of a class are subsequent, and the preimages of a proxy class precede the preimages of its followers. \enditemize

## 53.4 Examples of the ATLAS format for GAP tables

We give three little examples for the conventions stated in ATLAS Tables, listing up the ATLAS format and the table displayed by GAP3.

First, let G be the trivial group. The cyclic group C6 of order 6 can be viewed in several ways:

• As a downward extension of the factor group C2 which contains G as a subgroup; equivalently, as an upward extension of the subgroup C3 which has a factor group G:

\beginpicture(110,55) \put(-2,23){ \beginpicture(29,29) \put(0,29){\line(1,0)14} \put(0,15){\line(1,0)14} \put(0,14){\line(1,0)14} \put(0,0){\line(1,0)14} \put(15,29){\line(1,0)14} \put(15,15){\line(1,0)14} \put(15,14){\line(1,0)14} \put(15,0){\line(1,0)14} \put(0,15){\line(0,1)14} \put(0,0){\line(0,1)14} \put(14,15){\line(0,1)14} \put(15,15){\line(0,1)14} \put(29,15){\line(0,1)14} \put(14,0){\line(0,1)14} \put(15,0){\line(0,1)14} \put(29,0){\line(0,1)14} \put(7,7){\makebox(0,0)3.G} \put(22,7){\makebox(0,0)3.G.2} \put(7,22){\makebox(0,0)G} \put(22,22){\makebox(0,0)G.2} \endpicture} \put(37,52){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip0.9ex \parskip0.2ex

; @ ; ; @

1 1

p power A

p\ttquote part A

ind 1A fus ind 2A

χ1 + 1 : ++ 1

ind 1 fus ind 2

3 6

3 6

χ2 o2 1 : oo2 1 \endminipage}}

\put(83,52){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip2.7ex \parskip0ex

2 1 1 1 1 1 1

3 1 1 1 1 1 1

1a 3a 3b 2a 6a 6b

2P 1a 3b 3a 1a 3b 3a

3P 1a 1a 1a 2a 2a 2a

X.1 1 1 1 1 1 1

X.2 1 1 1 -1 -1 -1

X.3 1 A /A 1 A /A

X.4 1 A /A -1 -A -/A

X.5 1 /A A 1 /A A

X.6 1 /A A -1 -/A -A

A = E(3)

= (-1+ER(-3))/2 = b3

\endminipage}} \endpicture

X.1, X.2 extend χ1. X.3, X.4 extend the proxy character χ2. X.5, X.6 extend its follower. 1a, 3a, 3b are preimages of 1A, and 2a, 6a, 6b are preimages of 2A.

• As a downward extension of the factor group C3 which contains G as a subgroup; equivalently, as an upward extension of the subgroup C2 which has a factor group G:

\beginpicture(110,55) \put(-2,23){ \beginpicture(29,29) \put(0,29){\line(1,0)14} \put(0,15){\line(1,0)14} \put(0,14){\line(1,0)14} \put(0,0){\line(1,0)14} \put(15,29){\line(1,0)14} \put(15,15){\line(1,0)14} \put(15,14){\line(1,0)14} \put(15,0){\line(1,0)14} \put(0,15){\line(0,1)14} \put(0,0){\line(0,1)14} \put(14,15){\line(0,1)14} \put(15,15){\line(0,1)14} \put(29,15){\line(0,1)14} \put(14,0){\line(0,1)14} \put(15,0){\line(0,1)14} \put(29,0){\line(0,1)14} \put(7,7){\makebox(0,0)2.G} \put(22,7){\makebox(0,0)2.G.3} \put(7,22){\makebox(0,0)G} \put(22,22){\makebox(0,0)G.3} \endpicture} \put(37,52){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip0.9ex \parskip0.2ex

; @ ; ; @

1 1

p power A

p\ttquote part A

ind 1A fus ind 3A

χ1 + 1 : +oo 1

ind 1 fus ind 3

2 6

χ2 + 1 : +oo 1

\endminipage}}

\put(83,52){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip2.7ex \parskip0ex

2 1 1 1 1 1 1

3 1 1 1 1 1 1

1a 2a 3a 6a 3b 6b

2P 1a 1a 3b 3b 3a 3a

3P 1a 2a 1a 2a 1a 2a

X.1 1 1 1 1 1 1

X.2 1 1 A A /A /A

X.3 1 1 /A /A A A

X.4 1 -1 1 -1 1 -1

X.5 1 -1 A -A /A -/A

X.6 1 -1 /A -/A A -A

A = E(3)

= (-1+ER(-3))/2 = b3

\endminipage}} \endpicture

X.1-X.3 extend χ1, X.4-X.6 extend χ2. 1a, 2a are preimages of 1A. 3a, 6a are preimages of the proxy class 3A, and 3b, 6b are preimages of its follower class.

\newpage

• As a downward extension of the factor groups C3 and C2 which have G as a factor group:

\beginpicture(110,70) \put(-2,8){ \beginpicture(14,59) \put(0,59){\line(1,0)14} \put(0,45){\line(1,0)14} \put(0,44){\line(1,0)14} \put(0,30){\line(1,0)14} \put(0,29){\line(1,0)14} \put(0,15){\line(1,0)14} \put(0,14){\line(1,0)14} \put(0,0){\line(1,0)14} \put(0,45){\line(0,1)14} \put(0,30){\line(0,1)14} \put(0,15){\line(0,1)14} \put(0,0){\line(0,1)14} \put(14,45){\line(0,1)14} \put(14,30){\line(0,1)14} \put(14,15){\line(0,1)14} \put(14,0){\line(0,1)14} \put(7,7){\makebox(0,0)6.G} \put(7,22){\makebox(0,0)3.G} \put(7,37){\makebox(0,0)2.G} \put(7,52){\makebox(0,0)G} \endpicture} \put(37,67){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip0.9ex \parskip0.2ex

; @

1

p power

p\ttquote part

ind 1A

χ1 + 1

ind 1

2

χ2 + 1

ind 1

3

3

χ3 o2 1

ind 1

6

3

2

3

6

χ4 o2 1

\endminipage}}

\put(83,67){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip2.7ex \parskip0ex

2 1 1 1 1 1 1

3 1 1 1 1 1 1

1a 6a 3a 2a 3b 6b

2P 1a 3a 3b 1a 3a 3b

3P 1a 2a 1a 2a 1a 2a

X.1 1 1 1 1 1 1

X.2 1 -1 1 -1 1 -1

X.3 1 A /A 1 A /A

X.4 1 /A A 1 /A A

X.5 1 -A /A -1 A -/A

X.6 1 -/A A -1 /A -A

A = E(3)

= (-1+ER(-3))/2 = b3

\endminipage}} \endpicture

X.1, X.2 correspond to χ1, χ2, respectively; X.3, X.5 correspond to the proxies χ3, χ4, and X.4, X.6 to their followers. The factor fusion onto 3.G is [ 1, 2, 3, 1, 2, 3 ], that onto G.2 is [ 1, 2, 1, 2, 1, 2 ].

• As an upward extension of the subgroups C3 or C2 which both contain a subgroup G:

\beginpicture(110,55) \put(-2,38){ \beginpicture(59,14) \put(0,0){\line(1,0)14} \put(0,0){\line(0,1)14} \put(0,14){\line(1,0)14} \put(14,0){\line(0,1)14} \put(7,7){\makebox(0,0)G} \put(15,0){\line(1,0)14} \put(15,0){\line(0,1)14} \put(15,14){\line(1,0)14} \put(29,0){\line(0,1)14} \put(22,7){\makebox(0,0)G.2} \put(30,0){\line(1,0)14} \put(30,0){\line(0,1)14} \put(30,14){\line(1,0)14} \put(44,0){\line(0,1)14} \put(37,7){\makebox(0,0)G.3} \put(45,0){\line(1,0)14} \put(45,0){\line(0,1)14} \put(45,14){\line(1,0)14} \put(59,0){\line(0,1)14} \put(52,7){\makebox(0,0)G.6} \endpicture} \put(-2,30){\makebox(0,0)[tl]{ \small\tt \beginminipage4in \baselineskip0.9ex \parskip0.2ex

; @ ; ; @ ; ; @ ; ; @

1 1 1 1

p power A A AA

p\ttquote part A A AA

ind 1A fus ind 2A fus ind 3A fus ind 6A

χ1 + 1 : ++ 1 : +oo 1 :+oo+oo 1

\endminipage}}

\put(83,52){\makebox(0,0)[tl]{ \small\tt \beginminipage2in \baselineskip2.7ex \parskip0ex

2 1 1 1 1 1 1

3 1 1 1 1 1 1

1a 2a 3a 3b 6a 6b

2P 1a 1a 3b 3a 3b 3a

3P 1a 2a 1a 1a 2a 2a

X.1 1 1 1 1 1 1

X.2 1 -1 A /A -A -/A

X.3 1 1 /A A /A A

X.4 1 -1 1 1 -1 -1

X.5 1 1 A /A A /A

X.6 1 -1 /A A -/A -A

A = E(3)

= (-1+ER(-3))/2 = b3

\endminipage}} \endpicture

1a, 2a correspond to 1A, 2A, respectively; 3a, 6a correspond to the proxies 3A, 6A, and 3b, 6b to their followers.

\newpage The second example explains the fusion case; again, G is the trivial group.

beg-picture(110,95) \put(0,33){ \beginpicture(29,59) \put(0,59){\line(1,0)14} \put(0,45){\line(1,0)14} \put(0,44){\line(1,0)14} \put(0,30){\line(1,0)14} \put(0,29){\line(1,0)14} \put(0,15){\line(1,0)14} \put(0,14){\line(1,0)14} \put(0,0){\line(1,0)14} \put(0,45){\line(0,1)14} \put(0,30){\line(0,1)14} \put(0,15){\line(0,1)14} \put(0,0){\line(0,1)14} \put(14,45){\line(0,1)14} \put(14,30){\line(0,1)14} \put(14,15){\line(0,1)14} \put(14,0){\line(0,1)14} \put(15,59){\line(1,0)14} \put(15,45){\line(1,0)14} \put(15,44){\line(1,0)14} \put(15,30){\line(1,0)14} \put(15,29){\line(1,0)14} \put(15,14){\line(1,0)14} \put(15,45){\line(0,1)14} \put(15,30){\line(0,1)14} \put(15,15){\line(0,1)14} \put(15,0){\line(0,1)14} \put(29,45){\line(0,1)14} \put(29,30){\line(0,1)14} \put(7,7){\makebox(0,0)6.G} \put(7,22){\makebox(0,0)3.G} \put(7,37){\makebox(0,0)2.G} \put(7,52){\makebox(0,0)G} \put(22,7){\makebox(0,0)6.G.2} \put(22,22){\makebox(0,0)3.G.2} \put(22,37){\makebox(0,0)2.G.2} \put(22,52){\makebox(0,0)G.2} end-picture} \put(39,92){\makebox(0,0)[tl]{ \small\tt beg-minipage2in \baselineskip0.9ex \parskip0.2ex

; @ ; ; @

1 1

p power A

p\ttquote part A

ind 1A fus ind 2A

χ1 + 1 : ++ 1

ind 1 fus ind 2

2 2

χ2 + 1 : ++ 1

ind 1 fus ind 2

3

3

χ3 o2 1 * +

ind 1 fus ind 2

6 2

3

2

3

6

χ4 o2 1 * +

end-minipage}}

\put(85,92){\makebox(0,0)[tl]{ \small\tt beg-minipage2in \baselineskip2.7ex \parskip0ex

3.G.2

2 1 . 1

3 1 1 .

1a 3a 2a

2P 1a 3a 1a

3P 1a 1a 2a

X.1 1 1 1

X.2 1 1 -1

X.3 2 -1 .

6.G.2

2 2 1 1 2 2 2

3 1 1 1 1 . .

1a 6a 3a 2a 2b 2c

2P 1a 3a 3a 1a 1a 1a

3P 1a 2a 1a 2a 2b 2c

Y.1 1 1 1 1 1 1

Y.2 1 1 1 1 -1 -1

Y.3 1 -1 1 -1 1 -1

Y.4 1 -1 1 -1 -1 1

Y.5 2 -1 -1 2 . .

Y.6 2 1 -1 -2 . .

end-minipage}} \endpicture

The tables of G, 2.G, 3.G, 6.G and G.2 are known from the first example, that of 2.G.2 ≅ V4 will be given in the next one. So here we only print the GAP3 tables of 3.G.2 ≅ D6 and 6.G.2 ≅ D12:

In 3.G.2, X.1, X.2 extend χ1; χ3 and its follower fuse to give X.3, and two of the preimages of 1A collapse.

In 6.G.2, Y.1-Y.4 are extensions of χ1, χ2, so these characters are the inflated characters from 2.G.2 (with respect to the factor fusion [ 1, 2, 1, 2, 3, 4 ]). Y.5 is inflated from 3.G.2 (with respect to the factor fusion [ 1, 2, 2, 1, 3, 3 ]), and Y.6 is the result of the fusion of χ4 and its follower.

\newpage For the last example, let G be the group 22. Consider the following tables:

beg-picture(110,125) \put(0,93){ \beginpicture(29,29) \put(0,29){\line(1,0)14} \put(0,15){\line(1,0)14} \put(0,14){\line(1,0)14} \put(0,0){\line(1,0)14} \put(15,29){\line(1,0)14} \put(15,15){\line(1,0)14} \put(15,14){\line(1,0)14} \put(15,0){\line(1,0)14} \put(0,15){\line(0,1)14} \put(0,0){\line(0,1)14} \put(14,15){\line(0,1)14} \put(15,15){\line(0,1)14} \put(29,15){\line(0,1)14} \put(14,0){\line(0,1)14} \put(15,0){\line(0,1)14} \put(29,0){\line(0,1)14} \put(7,7){\makebox(0,0)2.G} \put(22,7){\makebox(0,0)2.G.3} \put(7,22){\makebox(0,0)G} \put(22,22){\makebox(0,0)G.3} end-picture}

\put(81,91){\line(0,1)8} \put(39,122){\makebox(0,0)[tl]{ \small\tt beg-minipage3in \baselineskip0.9ex \parskip0.2ex

; @ @ @ @ ; ; @

4 4 4 4 1

p power A A A A

p\ttquote part A A A A

ind 1A 2A 2B 2C fus ind 3A

χ1 + 1 1 1 1 : +oo 1

χ2 + 1 1 -1 -1 . + 0

χ3 + 1 -1 1 -1 .

χ4 + 1 -1 -1 1 .

ind 1 4 4 4 fus ind 3

2 6

χ5 - 2 0 0 0 : -oo 1

end-minipage}}

\put(102,122){\makebox(0,0)[tl]{ \small\tt beg-minipage3in \baselineskip2.7ex \parskip0ex G.3

2 2 2 . .

3 1 . 1 1

1a 2a 3a 3b

2P 1a 1a 3b 3a

3P 1a 2a 1a 1a

X.1 1 1 1 1

X.2 1 1 A /A

X.3 1 1 /A A

X.4 3 -1 . .

A = E(3)

= (-1+ER(-3))/2 = b3

end-minipage}}

\put(0,71){\makebox(0,0)[tl]{ \small\tt beg-minipage3in \baselineskip2.7ex \parskip0ex 2.G

2 3 3 2 2 2

1a 2a 4a 4b 4c

2P 1a 1a 2a 1a 1a

3P 1a 2a 4a 4b 4c

X.1 1 1 1 1 1

X.2 1 1 1 -1 -1

X.3 1 1 -1 1 -1

X.4 1 1 -1 -1 1

X.5 2 -2 . . .

end-minipage}}

\put(50,71){\makebox(0,0)[tl]{ \small\tt beg-minipage3in \baselineskip2.7ex \parskip0ex 2.G.3

2 3 3 2 1 1 1 1

3 1 1 . 1 1 1 1

1a 2a 4a 3a 6a 3b 6b

2P 1a 1a 2a 3b 3b 3a 3a

3P 1a 2a 4a 1a 2a 1a 2a

X.1 1 1 1 1 1 1 1

X.2 1 1 1 A A /A /A

X.3 1 1 1 /A /A A A

X.4 3 3 -1 . . . .

X.5 2 -2 . 1 1 1 1

X.6 2 -2 . A -A /A -/A

X.7 2 -2 . /A -/A A -A

A = E(3)

= (-1+ER(-3))/2 = b3

end-minipage}} \endpicture

In the table of G.3 ≅ A4, the characters χ2, χ3 and χ4 fuse, and the classes 2A, 2B and 2C collapse. To get the table of 2.G ≅ Q8 one just has to split the class 2A and adjust the representative orders. Finally, the table of 2.G.3 ≅ SL2(3) is given; the subgroup fusion corresponding to the injection 2.G → 2.G.3 is [ 1, 2, 3, 3, 3 ], and the factor fusion corresponding to the epimorphism 2.G.3 → G.3 is [ 1, 1, 2, 3, 3, 4, 4 ].

## 53.5 CAS Tables

All tables of the CAS table library are available in GAP3, too. This sublibrary has been completely revised, i.e., errors have been corrected and powermaps have been completed.

Any CAS table is accessible by each of its CAS names, that is, the table name or the filename (see CharTable):

    gap> t:= CharTable( "m10" );; t.name;
"A6.2_3"

One does, however, not always get the original CAS table: In many cases (mostly ATLAS tables, see ATLAS Tables) not only the name but also the succession of classes and characters has changed; the records in the component CAS of the table (see Character Table Records) contain the permutations which must be applied to classes and characters to get the original CAS table:

    gap> t.CAS;
[ rec(
name := "m10",
permchars := (3,5)(4,8,7,6),
permclasses := (),
text := [ 'n', 'a', 'm', 'e', 's', ':', ' ', ' ', ' ', ' ',
' ', 'm', '1', '0', '\n', 'o', 'r', 'd', 'e', 'r', ':',
' ', ' ', ' ', ' ', ' ', '2', '^', '4', '.', '3', '^', '2',
'.', '5', ' ', '=', ' ', '7', '2', '0', '\n', 'n', 'u',
'm', 'b', 'e', 'r', ' ', 'o', 'f', ' ', 'c', 'l', 'a', 's',
's', 'e', 's', ':', ' ', '8', '\n', 's', 'o', 'u', 'r',
'c', 'e', ':', ' ', ' ', ' ', ' ', 'c', 'a', 'm', 'b', 'r',
'i', 'd', 'g', 'e', ' ', 'a', 't', 'l', 'a', 's', '\n',
'c', 'o', 'm', 'm', 'e', 'n', 't', 's', ':', ' ', ' ', 'p',
'o', 'i', 'n', 't', ' ', 's', 't', 'a', 'b', 'i', 'l', 'i',
'z', 'e', 'r', ' ', 'o', 'f', ' ', 'm', 'a', 't', 'h', 'i',
'e', 'u', '-', 'g', 'r', 'o', 'u', 'p', ' ', 'm', '1', '1',
'\n', 't', 'e', 's', 't', ':', ' ', ' ', ' ', ' ', ' ',
' ', 'o', 'r', 't', 'h', ',', ' ', 'm', 'i', 'n', ',', ' ',
's', 'y', 'm', '[', '3', ']', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '\n' ] ) ]

The subgroup fusions were computed anew; their record component text tells if the fusion is equal to that in the CAS library --of course modulo the permutation of classes.

Note that the fusions are neither tested to be consistent for any two subgroups of a group and their intersection, nor tested to be consistent with respect to composition of maps.

## 53.6 Organization of the Table Libraries

The primary files are TBLNAME/ctadmin.tbl and TBLNAME/ctprimar.tbl. The former contains the evaluation function CharTableLibrary (see CharTable) and some utilities, the latter contains the global variable LIBLIST which encodes all information where to find library tables; the file TBLNAME/ctprimar.tbl can be constructed from the data files of the table libraries using the awk script maketbl in the etc directory of the GAP3 distribution.

Also the secondary files are all stored in the directory TBLNAME; they are

    clmelab.tbl   clmexsp.tbl   ctadmin.tbl   ctbalter.tbl  ctbatres.tbl
ctbconja.tbl  ctbfisc1.tbl  ctbfisc2.tbl  ctbline1.tbl  ctbline2.tbl
ctbline3.tbl  ctbline4.tbl  ctbline5.tbl  ctbmathi.tbl  ctbmonst.tbl
ctborth1.tbl  ctborth2.tbl  ctborth3.tbl  ctbspora.tbl  ctbsympl.tbl
ctbtwis1.tbl  ctbtwis2.tbl  ctbunit1.tbl  ctbunit2.tbl  ctbunit3.tbl
ctbunit4.tbl  ctgeneri.tbl  ctoalter.tbl  ctoatres.tbl  ctocliff.tbl
ctoconja.tbl  ctofisc1.tbl  ctofisc2.tbl  ctoholpl.tbl  ctoinert.tbl
ctoline1.tbl  ctoline2.tbl  ctoline3.tbl  ctoline4.tbl  ctoline5.tbl
ctoline6.tbl  ctomathi.tbl  ctomaxi1.tbl  ctomaxi2.tbl  ctomaxi3.tbl
ctomaxi4.tbl  ctomaxi5.tbl  ctomaxi6.tbl  ctomisc1.tbl  ctomisc2.tbl
ctomisc3.tbl  ctomisc4.tbl  ctomisc5.tbl  ctomisc6.tbl  ctomonst.tbl
ctonews.tbl   ctoorth1.tbl  ctoorth2.tbl  ctoorth3.tbl  ctoorth4.tbl
ctoorth5.tbl  ctospora.tbl  ctosylno.tbl  ctosympl.tbl  ctotwis1.tbl
ctotwis2.tbl  ctounit1.tbl  ctounit2.tbl  ctounit3.tbl  ctounit4.tbl

The names start with ct for character table'', followed by o for ordinary'', b for Brauer'' or g for generic'', then an up to 5 letter description of the contents, e.g., alter for the alternating groups, and the extension .tbl.

The file ctbdescr.tbl contains (at most) the Brauer tables corresponding to the ordinary tables in ctodescr.tbl.

The format of library tables is always like this:

 MOT(tblname

,
...
# here the data components are stored
... );

Here tblname is the value of the identifier component of the table, e.g. "A5".

For the contents of the table record, there are three different ways how tables are stored:

Full tables (like that of A5) are stored similar to the internal format (see Character Table Records). Lists of characters, however, will be abbreviated in the following way:

For each subset of characters which differ just by multiplication with a linear character or by Galois conjugacy, only one is given by its values, the others are replaced by [TENSOR,[i,j]] (which means that the character is the tensor product of the i-th and the j-th character) or [GALOIS,[i,j]] (which means that the character is the j-th Galois conjugate of the i-th character.

Brauer tables (like that of A5 mod 2) are stored relative to the corresponding ordinary table; instead of irreducible characters the files contain decomposition matrices or Brauer trees for the blocks of nonzero defect (see Brauer Table Records), and components which can be got by restriction to p--regular classes are not stored at all.

Construction tables (like that of O8-(3)M7) have a component construction that is a function of one variable. This function is called by CharTable (see CharTable) when the table is constructed, i.e. not when the file containing the table is read.

The aim of this rather complicated way to store a character table is that big tables with a simple structure (e.g. direct products) can be stored in a very compact way.

Another special case where construction tables are useful is that of projective tables:

In their component irreducibles they do not contain irreducible characters but a list with information about the factor groups: Any entry is a list of length 2 that contains at position 1 the name of the table of the factor group, at the second position a list of integers representing the Galois automorphisms to get follower characters. E.g., for 12.M22, the value of irreducibles is

    [["M22",[]],["2.M22",[]],
["3.M22",[-1,-13,-13,-1,23,23,-1,-1,-1,-1,-1]],
["4.M22",[-1,-1,15,15,23,23,-1,-1]],,
["6.M22",[-13,-13,-1,23,23,-1,-7,-7,-1,-1]],,,,,,
["12.M22",[[17,-17,-1],[17,-17,-1],[-55,-377,-433],[-55,-377,-433],
[89,991,1079],[89,991,1079],[-7,7,-1]]]]

Using this and the projectives component of the table of the smallest nontrivial factor group, CharTable CharTable constructs the irreducible characters. The table head, however, need not be constructed.

## 53.7 How to Extend a Table Library

If you have some ordinary character tables which are not (or not yet) in a GAP3 table library, but which you want to treat as library tables, e.g., assign them to variables using CharTable CharTable, you can include these tables. For that, two things must be done:

First you must notify each table, i.e., tell GAP3 on which file it can be found, and which names are admissible; this can be done using

NotifyCharTable( firstname, filename, othernames ),

with strings firstname (the identifier component of the table) and filename (the name of the file containing the table, relative to TBLNAME, and without extension .tbl), and a list othernames of strings which are other admissible names of the table (see CharTable).

NotifyCharTable will add the necessary information to LIBLIST. A warning is printed for each table libtbl that was already accessible by some of the names, and these names are ignored for the new tables. Of course this affects only the value of LIBLIST in the current GAP3 session, not that on the file.

Note that an error is raised if you want to notify a table with firstname or name in othernames which is already the identifier component of a library table.

    gap> Append( TBLNAME, ";tables/" );
# tells GAP3 that the directory tables is a place to look for
# library tables
gap> NotifyCharTable( "Private", "mytables", [ "My" ] );
# tells GAP3 that the table with names "Private" and "My"
# is stored on file mytables.tbl
gap> FirstNameCharTable( "My" );
"Private"
gap> FileNameCharTable( "My" );
"mytables"

The second condition is that each file must contain tables in library format as described in Organization of the Table Libraries; in the example, the contents of the file tables/mytables.tbl may be this:

    SET_TABLEFILENAME("mytables");
ALN:= Ignore;
MOT("Private",
[
"my private character table"
],
[2,2],
[],
[[1,1],[1,-1]],
[]);
ALN("Private",["my"]);
LIBTABLE.LOADSTATUS.("mytables"):="loaded";

We simulate reading this file by explicitly assigning some of the components.

    gap> LIBTABLE.("mytables"):= rec(
> Private:= rec( identifier:= "Private",
>                centralizers:= [2,2],
>                irreducibles:= [[1,1],[1,-1]] ) );;
gap> LIBTABLE.LOADSTATUS.("mytables"):="loaded";;

Now the private table is a library table:

    gap> CharTable( "My" );
CharTable( "Private" ) 

To append the table tbl in library format to the file with name file, use

PrintToLib( file, tbl ).

Note that here file is the absolute name of the file, not the name relative to TBLNAME. Thus the filename in the row with the assignment to LIBTABLE must be adjusted to make the file a library file.

## 53.8 FirstNameCharTable

FirstNameCharTable( name )

returns the value of the identifier component of the character table with admissible name name, if exists; otherwise false is returned.

    gap> FirstNameCharTable( "m22mod3" );
"M22mod3"
gap> FirstNameCharTable( "s5" );
"A5.2"
gap> FirstNameCharTable( "J5" );
false

## 53.9 FileNameCharTable

FileNameCharTable( tblname )

returns the value of the filename component of the information record in LIBLIST for the table with admissible name tblname, if exists; otherwise false is returned.

    gap> FileNameCharTable( "M22mod3" );
"ctbmathi"
gap> FileNameCharTable( "J5" );
false

gap3-jm
19 Feb 2018