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 chapter informs about
• 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).
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
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
:
origin: Ostermann
:
origin: CAS library
: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
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()
:
AllCharTableNames( IsSimple )
:
AllCharTableNames( IsSporadicSimple )
:
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.
\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.
Additionally some conventions are necessary about follower characters!
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 χ0,χ1,...,χ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 ]
.
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 directorytables
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 filemytables.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.
FirstNameCharTable( name )
returns the value of the identifier
component of the character table
with admissible name name, if exists; otherwise false
is returned.
For each admissible name, also the lowercase string is admissible.
gap> FirstNameCharTable( "m22mod3" ); "M22mod3" gap> FirstNameCharTable( "s5" ); "A5.2" gap> FirstNameCharTable( "J5" ); false
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