This chapter informs you about
2.1 Contents of the GAP Character Table Library
This section gives a brief overview of the contents of the GAP character table library. For the details about, e.g., the structure of data files, see Organization of the Character Table Library.
The changes in the character table library are listed in a file that can be reached from http://www.gap-system.org/Info4/changes.html
There are three different kinds of character tables in the GAP library, namely ordinary character tables, Brauer tables, and generic character tables. Note that the Brauer table and the corresponding ordinary table of a group determine the decomposition matrix of the group (or the decomposition matrices of its blocks). These decomposition matrices can be computed with GAP (see Operations Concerning Blocks in the GAP Reference Manual for details). A collection of DVI and PostScript files of the known decomposition matrices of almost simple groups in the GAP table library can also be found at http://www.math.rwth-aachen.de/~MOC/decomposition/
Ordinary Character Tables
Two different aspects are useful to list the ordinary character tables available in GAP, namely the aspect of the source of the tables and that of connections between the tables.
As for the source, there are two big sources, namely the ATLAS of Finite Groups (see ATLAS Tables) and the CAS library of character tables (see NPP84). Many ATLAS tables are contained in the CAS library, and difficulties may arise because the succession of characters and classes in CAS tables and ATLAS tables are in general different, so see CAS Tables for the relations between these two variants of character tables of the same group. A large subset of the CAS tables is the set of tables of Sylow normalizers of sporadic simple groups as published in Ost86 --this may be viewed as another source of character tables. The library also contains the character tables of factor groups of space groups (computed by W. Hanrath, see Han88) that are part of HP89 in form of two microfiches; these tables are given in CAS format (see CAS Tables) on the microfiches, but they had not been part of the ``official'' CAS library.
To avoid confusion about the ordering of classes and characters in a given
table, authorship and so on,
the InfoText
(see InfoText in the GAP Reference Manual)
value of the table contains the information
origin: ATLAS of finite groups
origin: Ostermann
origin: CAS library
origin: Hanrath library
InfoText
value usually contains more detailed information,
for example that the table in question is the character table of a maximal
subgroup of an almost simple group.
If the table was contained in the CAS library then additional
information may be available via the CASInfo
value (see CASInfo).
If one is interested in the aspect of connections between the tables, i.e., the internal structure of the library of ordinary tables, the contents can be listed up the following way.
We have
Maxes
value
for the table is known (see Maxes),
W(F4)
(namely which?)
Note that class fusions stored on library tables are neither guaranteed to be consistent for any two subgroups of a group and their intersection, nor tested to be consistent with respect to composition of maps.
Brauer Tables
The library contains all tables of the ATLAS of Brauer Tables (JLPW95), and many other Brauer tables of bicyclic extensions of simple groups which are known yet. There is ongoing work in computing new tables, so this part of the library is growing.
The Brauer tables in the library contain the information
origin: modular ATLAS of finite groupsin their
InfoText
string
(see InfoText in the GAP Reference Manual).
Generic Character Tables
See Generic Character Tables for an overview of generic tables available.
2.2 Access to Library Character Tables
This section describes how to access a specific character table (see CharacterTableFromLibrary), known character tables of maximal subgroups (see Maxes), and how to select character tables with prescribed properties (see AllCharacterTableNames).
CharacterTableFromLibrary(
tblname ) F
CharacterTableFromLibrary(
series,
param1[,
param2] ) F
If the only argument is a string tblname and if this is an admissible
name (see below) of a library character table then
CharacterTableFromLibrary
returns this library table, otherwise fail
.
If CharacterTableFromLibrary
is called with more than one argument
then the first must be a string series specifying a series of groups
which is implemented via a generic character table,
for example "Symmetric"
for symmetric groups;
the remaining arguments specialise then the desired member of the series
(see Generic Character Tables for a list of available generic tables).
If no generic table with name series is available or if the parameters
are not admissible then CharacterTableFromLibrary
returns fail
.
A call of CharacterTableFromLibrary
may cause to read some library
files and to construct the table object from the data stored in these
files,
so fetching a library table may take more time than on expects.
CharacterTableFromLibrary
is called by CharacterTable
if the first
argument is a string, so one may also call CharacterTable
.
Admissible names for the ordinary character table t of the group G are
"M22"
for the table of the Mathieu group M22,
"L2(13).2"
for L2(13):2, and
"12_1.U4(3).2_1"
for 121.U4(3).21,
(The difference to the name printed in the ATLAS is that subscripts and superscripts are omitted except if they are used to qualify integer values, and double dots are replaced by a single dot.)
sl42
for the table of the alternating group A8,
(But note that the GAP table may be different from that in CAS, see CAS Tables.)
If G is the n--th maximal subgroup (in decreasing group order)
of a group whose library table s is available in GAP and stores
the Maxes
value (see Maxes),
and if name is an admissible name for s
then name
M
n is admissible for t.
For example, the name
"J3M2"
can be used to access the second
maximal subgroup of the sporadic simple Janko group J3
which has the admissible name J3
.
If G is a nontrivial Sylow p normalizer in a sporadic simple
group with admissible name name,
--where nontrivial means that G is not isomorphic to a subgroup of
p:(p-1)--
then name
N
p is an admissible name of t.
For example, the name
"J4N11"
can be used to access the table of
the Sylow 11 normalizer in the sporadic simple Janko group J4.
In a few cases, the table of the Sylow p subgroup of G is
accessible via the name name
Syl
p where name is an admissible
name of the table of G.
For example,
"A11Syl2"
is an admissible name for the table of the
Sylow 2 subgroup of the alternating group A11.
In a few cases, the table of an element centralizer in G is
accessible via the name name
C
cl
where name is an admissible name of the table of G.
For example,
"M11C2"
is an admissible name for the table of an
involution centralizer in the Mathieu group M11.
The recommended way to access Brauer tables from the library is via the
mod
operator from the ordinary table and the desired characteristic
(see BrauerTable and Operators for Character Tables
in the GAP Reference Manual),
so it is not necessary to define admissible names of Brauer tables.
A generic character table (see Generic Character Tables) is
accessible only by the name given by its Identifier
value
(see Identifier!for character tables
in the GAP Reference Manual).
Case is not significant for character table names.
For example, both "suzm3"
and "SuzM3"
are admissible names for
the third maximal subgroup of the sporadic simple Suzuki group.
gap> s5:= CharacterTable( "A5.2" ); CharacterTable( "A5.2" ) gap> sym5:= CharacterTable( "Symmetric", 5 ); CharacterTable( "Sym(5)" ) gap> TransformingPermutationsCharacterTables( s5, sym5 ); rec( columns := (2,3,4,7,5), rows := (1,7,3,4,6,5,2), group := Group(()) )The two tables are tables of the symmetric group on five letters; the first is in ATLAS format (see ATLAS Tables), the second is constructed from the generic table for symmetric groups (see Generic Character Tables).
gap> CharacterTable( "J5" ); fail gap> CharacterTable( "A5" ) mod 2; BrauerTable( "A5", 2 )
Maxes(
tbl ) A
is a list of identifiers of the tables of all maximal subgroups of tbl. This is meaningful usually only for library tables, and there is no default method to compute the value.
If the Maxes
value of tbl is stored then it lists exactly one
representative for each conjugacy class of maximal subgroups of the group
of tbl;
the tables of these maximal subgroups are then available in the GAP
table library, and the fusions to tbl are stored on these tables.
gap> tbl:= CharacterTable( "M11" );; gap> HasMaxes( tbl ); true gap> maxes:= Maxes( tbl ); [ "A6.2_3", "L2(11)", "3^2:Q8.2", "A5.2", "2.S4" ] gap> CharacterTable( maxes[1] ); CharacterTable( "A6.2_3" )
AllCharacterTableNames(
func,
val ) F
AllCharacterTableNames(
func,
val, ..., OfThose,
func ) F
Similar to group libraries (see Chapter Group Libraries in the GAP Reference Manual), the GAP character table library can be used to search for ordinary character tables with prescribed properties.
A specific library table can be selected by an admissible name (see CharacterTableFromLibrary).
The selection function for character tables with certain abstract
properties is AllCharacterTableNames
.
Contrary to the situation in the case of group libraries,
the selection function returns a list not of library character tables
but of their names;
using CharacterTable
one can then access the tables themselves.
AllCharacterTableNames
takes an arbitrary even number of arguments.
The argument at each odd position must be a function, and
the argument at the subsequent even position must be a value that this
function must return when called for the character table in question,
in order to have the name of the table included in the selection,
or a list of such values.
For example,
gap> names:= AllCharacterTableNames();;returns a list containing one admissible name of each ordinary character table in the GAP library, and
gap> simpnames:= AllCharacterTableNames( IsSimple, true );; gap> AllCharacterTableNames( IsSimple, true, Size, [ 1 .. 100 ] ); [ "A5" ]return lists containing an admissible name of each ordinary character table in the GAP library whose groups are simple or are simple and have order at most 100, respectively.
For the sake of efficiency,
the arguments IsSimple
and IsSporadicSimple
followed by true
are
handled in a special way, GAP need not read all files of the table
library in these cases in order to find the desired names.
If the function OfThose
is an argument at an odd position then the
following argument func must be a function that takes a character table
and returns a name of a character table or a list of names;
this is interpreted as replacement of the names computed up to this
position by the union of names returned by func.
For example, func may be Maxes
(see Maxes) or
NamesOfFusionSources
(see NamesOfFusionSources in the GAP
Reference Manual).
gap> maxesnames:= AllCharacterTableNames( IsSporadicSimple, true, > HasMaxes, true, > OfThose, Maxes );;returns the union of names of ordinary tables of those maximal subgroups of sporadic simple groups that are contained in the table library.
Generic character tables provide a means for writing down the character tables of all groups in a (usually infinite) series of similar groups, e.g., cyclic groups, or symmetric groups, or the general linear groups GL(2,q) where q ranges over certain prime powers.
Let { Gq || q Î I } be such a series, where I is an index set. The character table of one fixed member Gq could be computed using a function that takes q as only argument and constructs the table of Gq. It is, however, often desirable to compute not only the whole table but to access just one specific character, or to compute just one character value, without computing the whole character table.
For example, both the conjugacy classes and the irreducible characters of the symmetric group Sn are in bijection with the partitions of n. Thus for given n it makes sense to ask for the character corresponding to a particular partition, or just for its character value at a partition.
A generic character table in GAP allows one such local evaluations. In this sense, GAP can deal also with character tables that are too big to be computed and stored as a whole.
Currently the only operations for generic tables supported by GAP are the specialisation of the parameter q in order to compute the whole character table of Gq, and local evaluation (see ClassParameters for an example). It is not possible to compute, e.g., generic scalar products.
Currently, generic tables of the following groups
--in alphabetical order-- are available in GAP.
(A list of the names of generic tables known to GAP is
LIBTABLE.GENERIC.firstnames
.)
We list the function calls needed to get a specialized table,
the generic table itself can be accessed by calling CharacterTable
with the first argument only;
for example, CharacterTable( "Cyclic" )
yields the generic table of
cyclic groups.
CharacterTable( "Alternating",
n )
,
the table of the alternating group on n letters,
CharacterTable( "Cyclic",
n )
,
the table of the cyclic group of order n,
CharacterTable( "Dihedral",
2n )
,
the table of the dihedral group of order 2n,
CharacterTable( "GL", 2,
q )
,
the table of the general linear group GL(2,q),
for a prime power q,
CharacterTable( "GU", 3,
q )
,
the table of the general unitary group GU(3,q),
for a prime power q,
CharacterTable( "P:Q", [
p,
q ] )
,
the table of the Frobenius extension of the cyclic group of prime order
p by a cyclic group of order q where q divides p-1,
CharacterTable( "PSL", 2,
q )
,
the table of the projective special linear group PSL(2,q),
for a prime power q,
CharacterTable( "SL", 2,
q )
,
the table of the special linear group SL(2,q),
for a prime power q,
CharacterTable( "SU", 3,
q )
,
the table of the special unitary group SU(3,q),
for a prime power q,
CharacterTable( "Suzuki",
q )
,
the table of the Suzuki group Sz(q) = 2B2(q),
for q an odd power of 2,
CharacterTable( "Symmetric",
n )
,
the table of the symmetric group on n letters,
CharacterTable( "WeylB",
n )
,
the table of the Weyl group of type Bn,
CharacterTable( "WeylD",
n )
,
the table of the Weyl group of type Dn.
CharacterTable
are to some extent ``generic''
constructions.
But note that no local evaluation is possible in these cases,
as no generic table object exists in GAP that can be asked for local
information.
CharacterTable( "Quaternionic",
4n )
,
the table of the quaternionic (dicyclic) group of order 4n,
CharacterTableWreathSymmetric(
tbl,
n )
,
the character table of the wreath product of the group whose table is
tbl with the symmetric group on n letters
(see CharacterTableWreathSymmetric in the GAP Reference Manual).
CharacterTableSpecialized(
generic_table,
q ) F
For a record generic_table representing a generic character table,
and a parameter value q,
CharacterTableSpecialized
returns a character table object computed by
evaluating generic_table at q.
gap> c5:= CharacterTableSpecialized( CharacterTable( "Cyclic" ), 5 ); CharacterTable( "C5" ) gap> Display( c5 ); C5 5 1 1 1 1 1 1a 5a 5b 5c 5d 5P 1a 1a 1a 1a 1a X.1 1 1 1 1 1 X.2 1 A B /B /A X.3 1 B /A A /B X.4 1 /B A /A B X.5 1 /A /B B A A = E(5) B = E(5)^2(Also
CharacterTable( "Cyclic", 5 )
could have been used to construct
the above table.)
While the numbers of conjugacy classes for the members of a series of groups are usually not bounded, there is always a fixed finite number of types (equivalence classes) of conjugacy classes; very often the equivalence relation is isomorphism of the centralizers of the representatives.
For each type t of classes and a fixed q Î I, a parametrisation of the classes in t is a function that assigns to each conjugacy class of Gq in t a parameter by which it is uniquely determined. Thus the classes are indexed by pairs [t,pt] consisting of a type t and a parameter pt for that type.
For any generic table, there has to be a fixed number of types of irreducible characters of Gq, too. Like the classes, the characters of each type are parametrised.
In GAP, the parametrisations of classes and characters for tables
computed from generic tables is stored using the attributes ClassParameters
and CharacterParameters
.
ClassParameters(
tbl ) A
CharacterParameters(
tbl ) A
are lists containing a parameter for each conjugacy class or irreducible character, respectively, of the character table tbl.
It depends on tbl what these parameters are, so there is no default to compute class and character parameters.
For example, the classes of symmetric groups can be parametrized by partitions, corresponding to the cycle structures of permutations. Character tables constructed from generic character tables (see Generic Character Tables) usually have class and character parameters stored.
If tbl is a p-modular Brauer table such that class parameters are
stored in the underlying ordinary table
(see OrdinaryCharacterTable in the GAP Reference Manual)
of tbl then ClassParameters
returns the sublist of class parameters
of the ordinary table, for p-regular classes.
gap> HasClassParameters( c5 ); HasCharacterParameters( c5 ); true true gap> ClassParameters( c5 ); CharacterParameters( c5 ); [ [ 1, 0 ], [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 1, 4 ] ] [ [ 1, 0 ], [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 1, 4 ] ] gap> ClassParameters( CharacterTable( "Symmetric", 3 ) ); [ [ 1, [ 1, 1, 1 ] ], [ 1, [ 2, 1 ] ], [ 1, [ 3 ] ] ]Here are examples for local evaluation of generic character tables, first a character value of the cyclic group shown above, then a character value and a representative order of a symmetric group.
gap> CharacterTable( "Cyclic" ).irreducibles[1][1]( 5, 2, 3 ); E(5) gap> tbl:= CharacterTable( "Symmetric" );; gap> tbl.irreducibles[1][1]( 5, [ 3, 2 ], [ 2, 2, 1 ] ); 1 gap> tbl.orders[1]( 5, [ 2, 1, 1, 1 ] ); 2
Any generic table in GAP is represented by a record. The following components are supported for generic character table records.
centralizers
charparam
classparam
classtext
domain
true
if q is a valid parameter,
and false
otherwise,
identifier
irreducibles
isGenericTable
true
libinfo
firstname
(Identifier
value of the table)
and othernames
(list of other admissible names)
matrix
orders
powermap
size
specializedname
Identifier
value of the table of Gq,
text
In the specialized table, the ClassParameters
and CharacterParameters
values are the lists of parameters [t,pt] of classes and characters,
respectively.
If the matrix
component is present then its value implements a method
to compute the complete table of small members Gq more efficiently
than via local evaluation;
this method will be called when the generic table is used to compute the
whole character table for a given q (see CharacterTableSpecialized).
2.4 Examples of Generic Character Tables
1. The generic table of cyclic groups.
For the cyclic group Cq = áx ñ of order q, there is one type of classes. The class parameters are integers k Î { 0, ¼, q-1 }, the class with parameter k consists of the group element xk. Group order and centralizer orders are the identity function q ® q, independent of the parameter k. The representative order function maps the parameter pair [q,k] to [(q)/(gcd(q,k))], which is the order of xk in Cq; the p-th power map is the function mapping the triple (q,k,p) to the parameter [1,(kp mod q)].
There is one type of characters, with parameters l Î { 0, ¼, q-1 }; for eq a primitive complex q-th root of unity, the character values are cl(xk) = eqkl.
The library file contains the following generic table.
rec( identifier := "Cyclic", specializedname := ( q -> Concatenation( "C", String(q) ) ), size := ( n -> n ), text := "generic character table for cyclic groups", centralizers := [ function( n, k ) return n; end ], classparam := [ ( n -> [ 0 .. n-1 ] ) ], charparam := [ ( n -> [ 0 .. n-1 ] ) ], powermap := [ function( n, k, pow ) return [ 1, k*pow mod n ]; end ], orders := [ function( n, k ) return n / Gcd( n, k ); end ], irreducibles := [ [ function( n, k, l ) return E(n)^(k*l); end ] ], domain := IsPosInt, libinfo := rec( firstname:= "Cyclic", othernames:= [] ), isGenericTable := true )
2. The generic table of the general linear group GL(2,q).
We have four types t1, t2, t3, t4 of classes, according to the rational canonical form of the elements. t1 describes scalar matrices, t2 nonscalar diagonal matrices, t3 companion matrices of (X-r)2 for elements r Î Fq*, and t4 companion matrices of irreducible polynomials of degree 2 over Fq.
The sets of class parameters of the types are in bijection with Fq* for t1 and t3, with the set {{r,t}; r, t Î Fq*, r ¹ t} for t2, and with the set {{e,eq}; e Î Fq2\Fq} for t4.
The centralizer order functions are q ® (q2-1)(q2-q) for type t1, q ® (q-1)2 for type t2, q ® q(q-1) for type t3, and q ® q2-1 for type t4.
The representative order function of t1 maps (q,r) to the order of r in Fq, that of t2 maps (q,{r,t}) to the least common multiple of the orders of r and t.
The file contains something similar to the following table.
rec( identifier := "GL2", specializedname := ( q -> Concatenation( "GL(2,", String(q), ")" ) ), size := ( q -> (q^2-1)*(q^2-q) ), text := "generic character table of GL(2,q), see Robert Steinberg: ...", centralizers := [ function( q, k ) return (q^2-1) * (q^2-q); end, ..., ..., ... ], classparam := [ ( q -> [ 0 .. q-2 ] ), ..., ..., ... ], charparam := [ ( q -> [ 0 .. q-2 ] ), ..., ..., ... ], powermap := [ function( q, k, pow ) return [ 1, (k*pow) mod (q-1) ]; end, ..., ..., ... ], orders:= [ function( q, k ) return (q-1)/Gcd( q-1, k ); end, ..., ..., ... ], irreducibles := [ [ function( q, k, l ) return E(q-1)^(2*k*l); end, ..., ..., ... ], [ ..., ..., ..., ... ], [ ..., ..., ..., ... ], [ ..., ..., ..., ... ] ], classtext := [ ..., ..., ..., ... ], domain := ( q -> IsInt(q) and q > 1 and Length( Set( FactorsInt(q) ) ) = 1 ), isGenericTable := true )
The GAP character table library 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 ATLAS of Brauer Characters (JLPW95).
These tables have the information
origin: ATLAS of finite groupsor
origin: modular ATLAS of finite groupsin their
InfoText
value (see InfoText in the GAP Reference Manual),
they are simply called ATLAS tables further on.
For displaying ATLAS tables with the row labels used in the ATLAS, or for displaying decomposition matrices, see LaTeXStringDecompositionMatrix in the GAP Reference Manual and AtlasLabelsOfIrreducibles.
In addition to the information given in Chapters 6--8 of the ATLAS which tell you how to read the printed tables, there are some rules relating these to the corresponding GAP tables.
Improvements
For the GAP library not the printed ATLAS is relevant but the revised version given by the lists of Improvements to the ATLAS maintained by Simon Norton. The first list is contained in BN95, and printed in the Appendix of JLPW95; it contains the improvements that had been known until the ``ATLAS of Brauer Characters'' was published. The second list can be found in the internet, namely, an HTML version at http://www.mat.bham.ac.uk/atlas/html/atlasmods.html
and a DVI version at http://www.mat.bham.ac.uk/atlas/html/atlasmods.dvi
This list contains the improvements found since the publication of JLPW95, it is updated regularly.
Also some tables are regarded as ATLAS tables which are not printed in the ATLAS but available in ATLAS format from Cambridge, according to the lists of improvements mentioned above. Currently these are the tables related to L2(49), L2(81), L6(2), O8-(3), O8+(3), S10(2), and 2E6(2).3.
Power Maps
For the tables of 3.McL, 32.U4(3) and its covers,
and 32.U4(3).23 and its covers,
the power maps are not uniquely determined by the information
from the ATLAS but determined only up to matrix automorphisms
(see MatrixAutomorphisms in the GAP Reference Manual)
of the irreducible characters.
In these cases, the first possible map according to lexicographical
ordering was chosen, and the automorphisms are listed in the InfoText
strings of the tables.
Projective Characters and Projections
If G (or G.a) has a nontrivial Schur multiplier then the component
projectives
of the GAP table object of G (or G.a) is present,
whose value is a list of records, each with the following components.
name
Identifier
value of the character table of the covering
whose faithful irreducible characters are described by the record,
chars
map
gap> CharacterTable( "A5" )!.projectives; [ rec( name := "2.A5", chars := [ [ 2, 0, -1, E(5)+E(5)^4, E(5)^2+E(5)^3 ], [ 2, 0, -1, E(5)^2+E(5)^3, E(5)+E(5)^4 ], [ 4, 0, 1, -1, -1 ], [ 6, 0, 0, 1, 1 ] ], map := [ 1, 3, 4, 6, 8 ] ) ]
Tables of Isoclinic Groups
As described in Chapter 6, Section 7 and in Chapter 7, Section 18 of the
ATLAS, there exist two (in general nonisomorphic) groups of structure
2.G.2 for a simple group G, which are isoclinic.
The table in the GAP library is the one printed in the ATLAS,
the table of the isoclinic group can be constructed using
CharacterTableIsoclinic
(see CharacterTableIsoclinic in the GAP
Reference Manual).
Ordering of Characters and Classes
(Throughout this paragraph, G always means the simple group involved.)
If a character c of G extends to G.a then the different extensions c0, c1, ¼, ca-1 are consecutive in the table of G.a (see Chapter 7, Section 16 of the ATLAS).
If some characters of G fuse to give a single character of G.a then the position of that character in the table of G.a is given by the position of the first involved character of G.
If both extension and fusion occur for a character then the resulting characters are consecutive in the table of G.a, and each replaces the first involved character of G.
If some classes collapse then the resulting class replaces the first involved class of G.
For a > 2, any proxy class and its algebraic conjugates that are not printed in the ATLAS are consecutive in the table of G.a; if more than two classes of G.a have the same proxy class (the only case that actually occurs is for a = 5) then the ordering of non-printed classes is the natural one of corresponding Galois conjugacy operators *k (see Chapter 7, Section 19 in the ATLAS).
For a1, a2 dividing a such that a1 < a2, the classes of G.a1 in G.a precede the classes of G.a2 not contained in G.a1. This ordering is the same as in the ATLAS, with the only exception U3(8).6.
Each character can be regarded as a faithful character of a factor group m.G, where m divides M. Characters with the same kernel are consecutive as in the ATLAS, the ordering of characters with different kernels 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 proxy character) represents two or more Galois conjugates. In each ATLAS table in GAP, a proxy character always precedes the non-printed characters with this proxy. The case m = 12 is the only one that actually occurs where more than one character for a proxy is not printed. In this case, the non-printed characters are ordered according to the corresponding Galois conjugacy operators *5, *7, *11 (in that succession).
The preimages of a G-class in M.G are subsequent, the ordering is the same as that of the lifting order rows in the ATLAS (see Chapter 7, Section 7 there).
The primitive roots of unity chosen to represent the generating
central element (i.e., the element in the second class of the GAP
table) 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.
Whenever classes of the subgroup m.G collapse in m.G.a then the resulting class replaces the first involved class.
Whenever characters of the subgroup m.G collapse fuse in m.G.a then the result character replaces the first involved character.
Extensions of a character are subsequent, and the extensions of a proxy character precede the extensions of characters with this proxy that are not printed.
Preimages of a class of G.a in m.G.a are subsequent, and the preimages of a proxy class precede the preimages of non-printed classes with this proxy.
AtlasLabelsOfIrreducibles(
tbl[, "short"] ) F
Let tbl be the (ordinary or Brauer) character table of a bicyclic
extension of a simple group that occurs in the
ATLAS of Finite Groups CCN85 or the
ATLAS of Brauer Characters JLPW95.
AtlasLabelsOfIrreducibles
returns a list of strings, the i-th entry
being a label for the i-th irreducible character of tbl.
The labels have the following form. We state the rules only for ordinary characters, the rules for Brauer characters are obtained by replacing c by j.
First consider only downward extensions m.G of a simple group G. If m £ 2 then only labels of the form ci occur, which denotes the i-th ordinary character shown in the ATLAS.
The labels of faithful ordinary characters of groups m.G with m ³ 3 are of the form ci, ci*, or ci*k, which means the i-th character printed in the ATLAS, the unique character that is not printed and for which ci acts as proxy (see Sections 8 and 19 of Chapter 7 in the ATLAS of Finite Groups), and the image of the printed character ci under the algebraic conjugacy operator *k, respectively.
For groups m.G.a with a > 1, the labels of the irreducible characters are derived from the labels of the irreducible constituents of their restrictions to m.G, as follows.
If the string "short"
was entered as the second argument then the
label has the short form ci1+.
Note that i2, i3, ¼, ia can be read off from the
fusion signs in the ATLAS.
Again, if the string "short"
was entered as the second argument
then the label has a short form, namely ci,j+.
gap> AtlasLabelsOfIrreducibles( CharacterTable( "3.A7.2" ) ); [ "\\chi_{1,0}", "\\chi_{1,1}", "\\chi_{2,0}", "\\chi_{2,1}", "\\chi_{3+4}", "\\chi_{5,0}", "\\chi_{5,1}", "\\chi_{6,0}", "\\chi_{6,1}", "\\chi_{7,0}", "\\chi_{7,1}", "\\chi_{8,0}", "\\chi_{8,1}", "\\chi_{9,0}", "\\chi_{9,1}", "\\chi_{17+17\\ast 2}", "\\chi_{18+18\\ast 2}", "\\chi_{19+19\\ast 2}", "\\chi_{20+20\\ast 2}", "\\chi_{21+21\\ast 2}", "\\chi_{22+23\\ast 8}", "\\chi_{22\\ast 8+23}" ] gap> AtlasLabelsOfIrreducibles( CharacterTable( "3.A7.2" ), "short" ); [ "\\chi_{1,0}", "\\chi_{1,1}", "\\chi_{2,0}", "\\chi_{2,1}", "\\chi_{3+}", "\\chi_{5,0}", "\\chi_{5,1}", "\\chi_{6,0}", "\\chi_{6,1}", "\\chi_{7,0}", "\\chi_{7,1}", "\\chi_{8,0}", "\\chi_{8,1}", "\\chi_{9,0}", "\\chi_{9,1}", "\\chi_{17+}", "\\chi_{18+}", "\\chi_{19+}", "\\chi_{20+}", "\\chi_{21+}", "\\chi_{22+}", "\\chi_{23+}" ]
2.6 Examples of the ATLAS Format for GAP Tables
We give three little examples for the conventions stated in ATLAS Tables, listing both the ATLAS format and the table displayed by GAP.
First, let G be the trivial group. We consider the cyclic group C6 of order 6. It can be viewed in several ways, namely
Situation 1. is shown here.
------- ------- ; @ ; ; @ 2 1 1 1 1 1 1 | | | | 1 1 3 1 1 1 1 1 1 | G | | G.2 | p power A | | | | p' part A 1a 3a 3b 2a 6a 6b ------- ------- ind 1A fus ind 2A 2P 1a 3b 3a 1a 3b 3a ------- ------- 3P 1a 1a 1a 2a 2a 2a | | | | chi1 + 1 : ++ 1 | 3.G | | 3.G.2 | X.1 1 1 1 1 1 1 | | | | ind 1 fus ind 2 X.2 1 1 1 -1 -1 -1 ------- ------- 3 6 X.3 1 A /A 1 A /A 3 6 X.4 1 A /A -1 -A -/A X.5 1 /A A 1 /A A chi2 o2 1 : oo2 1 X.6 1 /A A -1 -/A -A A = E(3) = (-1+ER(-3))/2 = b3
X.1
, X.2
extend c1.
X.3
, X.4
extend the proxy character c2.
X.5
, X.6
extend the not printed character with proxy c2.
The classes 1a
, 3a
, 3b
are preimages of 1A
,
and 2a
, 6a
, 6b
are preimages of 2A
.
Situation 2. is shown here.
------- ------- ; @ ; ; @ 2 1 1 1 1 1 1 | | | | 1 1 3 1 1 1 1 1 1 | G | | G.3 | p power A | | | | p' part A 1a 2a 3a 6a 3b 6b ------- ------- ind 1A fus ind 3A 2P 1a 1a 3b 3b 3a 3a ------- ------- 3P 1a 2a 1a 2a 1a 2a | | | | chi1 + 1 : +oo 1 | 2.G | | 2.G.3 | X.1 1 1 1 1 1 1 | | | | ind 1 fus ind 3 X.2 1 1 A A /A /A ------- ------- 2 6 X.3 1 1 /A /A A A X.4 1 -1 1 -1 1 -1 chi2 + 1 : +oo 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
X.1
--X.3
extend c1, X.4
--X.6
extend c2.
The classes 1a
and 2a
are preimages of 1A
,
3a
and 6a
are preimages of the proxy class 3A
,
and 3b
and 6b
are preimages of the not printed class with proxy 3A
.
Situation 3. is shown here.
------- ; @ 2 1 1 1 1 1 1 | | 1 3 1 1 1 1 1 1 | G | p power | | p' part 1a 6a 3a 2a 3b 6b ------- ind 1A 2P 1a 3a 3b 1a 3a 3b ------- 3P 1a 2a 1a 2a 1a 2a | | chi1 + 1 | 2.G | X.1 1 1 1 1 1 1 | | ind 1 X.2 1 -1 1 -1 1 -1 ------- 2 X.3 1 A /A 1 A /A ------- X.4 1 /A A 1 /A A | | chi2 + 1 X.5 1 -A /A -1 A -/A | 3.G | X.6 1 -/A A -1 /A -A | | ind 1 ------- 3 A = E(3) ------- 3 = (-1+ER(-3))/2 = b3 | | | 6.G | chi3 o2 1 | | ------- ind 1 6 3 2 3 6 chi4 o2 1
X.1
, X.2
correspond to c1, c2, respectively;
X.3
, X.5
correspond to the proxies c3, c4, and
X.4
, X.6
to the not printed characters with these proxies.
followers.
The factor fusion onto 3.G is given by [ 1, 2, 3, 1, 2, 3 ]
,
that onto G.2 by [ 1, 2, 1, 2, 1, 2 ]
.
Finally, situation 4. is shown here.
------- ------- ------- ------- | | | | | | | | | G | | G.2 | | G.3 | | G.6 | | | | | | | | | ------- ------- ------- ------- ; @ ; ; @ ; ; @ ; ; @ 1 1 1 1 p power A A AA p' part A A AA ind 1A fus ind 2A fus ind 3A fus ind 6A chi1 + 1 : ++ 1 : +oo 1 :+oo+oo 1 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 = b3The classes
1a
, 2a
correspond to 1A, 2A, respectively.
3a
, 6a
correspond to the proxies 3A, 6A,
and 3b
, 6b
to the not printed classes with these proxies.
The second example explains the fusion case; again, G is the trivial group.
------- ------- ; @ ; ; @ 3.G.2 | | | | 1 1 | G | | G.2 | p power A 2 1 . 1 | | | | p' part A 3 1 1 . ------- ------- ind 1A fus ind 2A ------- ------- 1a 3a 2a | | | | X1 + 1 : ++ 1 2P 1a 3a 1a | 2.G | | 2.G.2 | 3P 1a 1a 2a | | | | ind 1 fus ind 2 ------- ------- 2 2 X.1 1 1 1 ------- ------- X.2 1 1 -1 | | | X2 + 1 : ++ 1 X.3 2 -1 . | 3.G | | 3.G.2 | | | ind 1 fus ind 2 ------- 3 6.G.2 ------- ------- 3 | | | 2 2 1 1 2 2 2 | 6.G | | 6.G.2 X3 o2 1 * + 3 1 1 1 1 . . | | | ------- ind 1 fus ind 2 1a 6a 3a 2a 2b 2c 6 2 2P 1a 3a 3a 1a 1a 1a 3 3P 1a 2a 1a 2a 2b 2c 2 3 Y.1 1 1 1 1 1 1 6 Y.2 1 1 1 1 -1 -1 Y.3 1 -1 1 -1 1 -1 X4 o2 1 * + Y.4 1 -1 1 -1 -1 1 Y.5 2 -1 -1 2 . . Y.6 2 1 -1 -2 . .The tables of G, 2.G, 3.G, 6.G and G.2 are known from the first example, that of 2.G.2 will be given in the next one. So here we print only the GAP tables of 3.G.2 @ D6 and 6.G.2 @ D12.
In 3.G.2, the characters X.1
, X.2
extend c1;
c3 and its non-printed partner fuse to give X.3
,
and the two preimages of 1A
of order 3 collapse.
In 6.G.2, Y.1
--Y.4
are extensions of c1, c2,
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 c4 and its non-printed
partner.
For the last example, let G be the elementary abelian group 22 of order 4. Consider the following tables.
------- ------- ; @ @ @ @ ; ; @ | | | | 4 4 4 4 1 | G | | G.3 | p power A A A A | | | | p' part A A A A ------- ------- ind 1A 2A 2B 2C fus ind 3A ------- ------- | | | | chi1 + 1 1 1 1 : +oo 1 | 2.G | | 2.G.3 | chi2 + 1 1 -1 -1 . + 0 | | | | chi3 + 1 -1 1 -1 | ------- ------- chi4 + 1 -1 -1 1 | ind 1 4 4 4 fus ind 3 2 6 chi5 - 2 0 0 0 : -oo 1 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 2.G 2.G.3 2 3 3 2 2 2 2 3 3 2 1 1 1 1 3 1 1 . 1 1 1 1 1a 2a 4a 4b 4c 2P 1a 1a 2a 1a 1a 1a 2a 4a 3a 6a 3b 6b 3P 1a 2a 4a 4b 4c 2P 1a 1a 2a 3b 3b 3a 3a 3P 1a 2a 4a 1a 2a 1a 2a X.1 1 1 1 1 1 X.2 1 1 1 -1 -1 X.1 1 1 1 1 1 1 1 X.3 1 1 -1 1 -1 X.2 1 1 1 A A /A /A X.4 1 1 -1 -1 1 X.3 1 1 1 /A /A A A X.5 2 -2 . . . 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 = b3In the table of G.3 @ A4, the characters c2, c3, and c4 fuse, and the classes
2A
, 2B
and 2C
collapse.
For getting 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 class 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 ]
.
(The beautiful LaTeX pictures that were part of the GAP 3 manual will be reintroduced as soon as the decision to use TeX for the manual will be revised.)
All character tables of the CAS table library (see NPP84) are available in GAP. This sublibrary has been completely revised before it was included in GAP, for example, errors have been corrected and power maps have been completed.
Any CAS table is accessible by each of its CAS names, that is, the table name or the filename used in CAS.
gap> tbl:= CharacterTable( "m10" ); CharacterTable( "A6.2_3" )
CASInfo(
tbl ) A
Let tbl be an ordinary character table tbl in the GAP library that was contained already in the CAS table library. When one fetches tbl from the library, one does in general not get the original CAS table. Namely, in many cases (mostly ATLAS tables, see ATLAS Tables) the identifier of the table (see Identifier!for character tables in the GAP Reference Manual) as well as the ordering of classes and characters are different for the CAS table and its GAP version.
Note that in several cases, the CAS library contains different tables of the same group, in particular these tables may have different names and orderings of classes and characters.
The CASInfo
value of tbl, if stored, is a list of records,
each describing the relation between tbl and a character table in the
CAS library.
The records have the components
name
permchars
and permclasses
Irr
values and the classes of tbl,
respectively, that must be applied in order to get the orderings in
the original CAS table, and
text
gap> HasCASInfo( tbl ); true gap> CASInfo( tbl ); [ rec( name := "m10", permchars := (3,5)(4,8,7,6), permclasses := (), text := "names: m10\norder: 2^4.3^2.5 = 720\nnumber of classes: \ 8\nsource: cambridge atlas\ncomments: point stabilizer of mathieu-group m1\ 1\ntest: orth, min, sym[3]\n" ) ]
The class fusions stored on tables from the CAS library have been
computed anew;
the text
component of such a fusion record tells if the fusion map is equal
to that in the CAS library
--of course modulo the permutation of classes between the table in CAS
and its GAP version.
gap> First( ComputedClassFusions( tbl ), x -> x.name = "M11" ); rec( name := "M11", map := [ 1, 2, 3, 4, 5, 4, 7, 8 ], text := "fusion is unique up to table automorphisms,\nthe representative is \ equal to the fusion map on the CAS table" )
2.8 Organization of the Character Table Library
The data files of the GAP character table library
reside in the data
directory of the ctbllib
package.
The filenames start with ct
(for ``character table''),
followed by either o
(for ``ordinary''), b
(for ``Brauer''),
or g
(for ``generic''),
then a description of the contents (up to 5 characters, e.g., alter
for the tables of alternating and related groups),
and the suffix .tbl
.
The file ctb
descr.tbl
contains the known Brauer tables
corresponding to the ordinary tables in the file cto
descr.tbl
.
Each data file of the table library is supposed to consist of
in the first column,
ALN
(short for ``add library name'',
see NotifyNameOfCharacterTable)
and to a component of Revision
, at the beginning of the file,
for example in the file with name ctoalter.tbl
a value is assigned
to Revision.ctoalter_tbl
,
ALN
and to a component of LIBTABLE.LOADSTATUS
,
at the end of the file, and
SET_TABLEFILENAME(
filename );
,
MBT(
name,
data );
(``make Brauer table''),
MOT(
name,
data );
(``make ordinary table''),
ALF(
from,
to,
map );
,
ALF(
from,
to,
map,
textlines );
(``add library fusion''),
ALN(
name,
listofnames );
, and
ARC(
name,
component,
compdata );
(``add record component'').
Here filename must be a string corresponding to the filename but
without suffix, for example "ctoalter"
if the file has the name
ctoalter.tbl
;
name must be the identifier value of the ordinary character table
corresponding to the table to which the command refers;
data must be a comma separated sequence of GAP objects;
from and to must be identifier values of ordinary character
tables,
map a list of positive itegers,
textlines and listofnames lists list of strings,
component a string, and
compdata any GAP object.
MOT
, ALF
, ALN
, and ARC
occur only in files containing
ordinary character tables,
and MBT
occurs only in files containing Brauer tables.
ACM
,
Concatenation
,
ConstructClifford
,
ConstructDirectProduct
,
ConstructFactor
,
ConstructGS3
,
ConstructIsoclinic
,
ConstructMixed
,
ConstructPermuted
,
ConstructProj
,
ConstructSubdirect
,
ConstructV4G
,
E
,
EvalChars
,
GALOIS
,
Length
,
NotifyCharTableName
,
ShallowCopy
,
TENSOR
, and
TransposedMat
.
The awk
script maketbl
in the etc
directory of the ctbllib
package expects the file format described above,
and to some extent this format is checked by this script.
The function calls may be continued over several lines of a file.
The ;
is assumed to be the last character in its line if and only if
it terminates a function call.
Names of character tables are strings
(see Chapter Strings and Characters in the GAP Reference Manual),
i.e., they are enclosed in double quotes;
strings in table library files must not be split over several lines,
because otherwise the awk
script may get confused.
Additionally, no character table name is allowed to contain double
quotes.
The knowledge of GAP about the ordinary tables in the table library
is contained in the file ctprimar.tbl
(the ``primary file'' of the
table library).
This file is automatically produced from the library files by the script
maketbl
in the etc
directory of the ctbllib
package.
The information is stored in the global variable LIBLIST
,
which is a record with the following components.
firstnames
Identifier
(see Identifier!for character tables
in the GAP Reference Manual) values of the ordinary tables,
files
filenames
firstnames
list is
contained in the j-th file of the files
component,
fusionsource
firstnames
list,
allnames
position
firstnames
of the identifier of the table with the i--th admissible name in
allnames
,
projections
simpleinfo
m.
name
and
name.
a
are admissible names for its
Schur multiplier and automorphism group, respectively,
sporadicSimple
GENERIC
There are three different ways how the table data can be stored in the file.
Full ordinary tables are encoded by a call to the function MOT
,
where the arguments correspond to the relevant attribute values;
each fusion into another library table is added by a call to ALF
,
values to be stored in components of the table object are added with
ARC
, and admissible names are notified with ALN
.
The argument of MOT
that encodes the irreducible characters is
abbreviated as follows.
For each subset of characters that differ just by multiplication with a
linear character or by Galois conjugacy, only the first 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 in the list)
or [GALOIS,[
i,
j]]
(which means that the character is obtained from
the i-th character by applying GaloisCyc( .,
j )
to it.
Brauer tables are stored relative to the corresponding ordinary tables; attribute values that can be got by restriction from the ordinary table to p--regular classes are not stored, and instead of the irreducible characters the files contain (inverses of) decomposition matrices or Brauer trees for the blocks of nonzero defects.
Ordinary construction tables have a component construction
,
with value a function of one argument that is called by CharacterTable
when the table is constructed
(not when the file containing the table is read).
The aim of this mechanism is to store structured character tables such as
tables of direct products and tables of central extensions of other
tables in a very compact way.
2.9 How to Extend the Character Table Library
GAP users may want to extend the character table library in different
respects.
Probably the easiest change is to add new admissible names to library tables,
in order to use these names in calls of CharacterTable
(see CharacterTable in the GAP Reference Manual,
and CharacterTableFromLibrary).
This can be done as follows.
NotifyNameOfCharacterTable(
firstname,
newnames ) F
ALN(
firstname,
newnames ) F
notifies the strings in the list newnames as new admissible names for
the library table with Identifier
value firstname,
see Identifier!for character tables in the GAP Reference Manual.
If there is already another library table for which some of these names
are admissible then an error is signaled.
NotifyNameOfCharacterTable
modifies the global variable LIBLIST
.
ALN
is a shorthand for NotifyNameOfCharacterTable
.
In those library files for which the maketbl
script has produced the
necessary information for LIBLIST
, ALN
is set to Ignore
in the beginning and back to NotifyNameOfCharacterTable
in the end.
gap> CharacterTable( "private" ); fail gap> NotifyNameOfCharacterTable( "A5", [ "private" ] ); gap> a5:= CharacterTable( "private" ); CharacterTable( "A5" )
The next kind of changes is the addition of new fusions between library
tables.
Once a fusion map is known, it can be added to the library file containing
the table of the subgroup, using the format produced by LibraryFusion
.
ALF(
from,
to,
map[,
text] ) F
ALF
stores the fusion map map between the ordinary character tables
with identifier strings from and to in the record encoding the table
with identifier from.
If the string text is given then it is added as text
component of the
fusion.
ALF
changes the global list LIBLIST.fusionsource
.
Note that the ALF
statement should be placed in the file containing the
data for the table with identifier from.
LibraryFusion(
name,
fus ) F
For a string name that is an Identifier
value
(see Identifier!for character tables in the GAP Reference
Manual) of an ordinary character table in the GAP library,
and a record fus with components name
(the identifier of the
destination table), map
(the fusion map, a list of image positions),
and optionally text
(a string containing information about the fusion),
LibraryFusion
returns a string whose printed value can be used to add
the fusion in question to the library file containing the data for the
table with identifier name.
name may also be a character table, in this case its Identifier
value
is used as string.
gap> s5:= CharacterTable( "S5" ); CharacterTable( "A5.2" ) gap> fus:= PossibleClassFusions( a5, s5 ); [ [ 1, 2, 3, 4, 4 ] ] gap> fusion:= rec( name:= Identifier( s5 ), map:= fus[1], text:= "unique" );; gap> Print( LibraryFusion( "A5", fusion ) ); ALF("A5","A5.2",[1,2,3,4,4],[ "unique" ]);
The last kind of changes is the addition of new character tables to the
GAP character table library.
Data files containing tables in library format
(i.e., in the form of calls to MOT
or MBT
)
can be produced using PrintToLib
.
PrintToLib(
file,
tbl ) F
prints the (ordinary or Brauer) character table tbl in library format
to the file file
.tbl
or file
(if this has already the suffix .tbl
), respectively.
If tbl is an ordinary table then the value of the attribute
NamesOfFusionSources
is ignored by PrintToLib
,
since for library tables this information is extracted from the source
files by the maketbl
script.
gap> PrintToLib( "private", a5 );The above command appends the data of the table
a5
to the file
private.tbl
;
the first lines printed to this file are
SET_TABLEFILENAME("private"); MOT("A5", [ "origin: ATLAS of finite groups, tests: 1.o.r., pow[2,3,5]" ], [60,4,3,5,5], [,[1,1,3,5,4],[1,2,1,5,4],,[1,2,3,1,1]], [[1,1,1,1,1],[3,-1,0,-E(5)-E(5)^4,-E(5)^2-E(5)^3], [GALOIS,[2,2]],[4,0,1,-1,-1],[5,1,-1,0,0]], [(4,5)]); ARC("A5","projectives",["2.A5",[[2,0,-1,E(5)+E(5)^4,E(5)^2+E(5)^3], [GALOIS,[1,2]],[4,0,1,-1,-1],[6,0,0,1,1]],]); ARC("A5","extInfo",["2","2"]);
If you have an ordinary character table in library format which you want to
add to the table library, for example because it shall be accessible via
CharacterTable
(see CharacterTableFromLibrary),
you must notify this table, i.e., tell GAP in which file it can be found,
and which names shall be admissible for it.
NotifyCharacterTable(
firstname,
filename,
othernames ) F
notifies a new ordinary table to the library.
This table has identifier
component firstname,
it is contained (in library format, see PrintToLib) in the file with
name filename
(without suffix .tbl
, and relative to the pkg/ctbllib/data
directory
of the GAP installation),
and the names contained in the list othernames are admissible for it.
NotifyCharacterTable
modifies the global variable LIBLIST
for the
current GAP session,
after having checked that there is no other library table yet with an
admissible name equal to firstname or contained in othernames.
For example, let us change the name A5
to icos
wherever it occurs in
the file private.tbl
that was produced above,
and then notify the ``new'' table in this file as follows.
(The name change is needed because GAP knows already a table with name
A5
and would not accept to add another table with this name.)
gap> NotifyCharacterTable( "icos", "private", [] ); gap> icos:= CharacterTable( "icos" ); #W revision entry missing in "private.tbl" CharacterTable( "icos" ) gap> Display( icos ); icos 2 2 2 . . . 3 1 . 1 . . 5 1 . . 1 1 1a 2a 3a 5a 5b 2P 1a 1a 3a 5b 5a 3P 1a 2a 1a 5b 5a 5P 1a 2a 3a 1a 1a X.1 1 1 1 1 1 X.2 3 -1 . A *A X.3 3 -1 . *A A X.4 4 . 1 -1 -1 X.5 5 1 -1 . . A = -E(5)-E(5)^4 = (1-ER(5))/2 = -b5
So the private table is treated as a library table.
Note that the table can be accessed only if it has been notified in the
current GAP session.
For frequently used private tables, it may be reasonable to put the
NotifyCharacterTable
statements into your .gaprc
file
(see The .gaprc File in the GAP Reference Manual),
or into a file that is read via the .gaprc
file.
For adding character tables to the GAP distribution,
please send the tables to the e-mail address mentioned in the first paragraph
of this chapter.
CTblLib manual