% This file was created automatically from ctbllibr.msk. % DO NOT EDIT! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W ctbllibr.msk GAP 4 package `ctbllib' Thomas Breuer %% %H @(#)$Id: ctbllibr.msk,v 1.16 2004/03/23 10:11:17 gap Exp $ %% %Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany %% \Chapter{The GAP Character Table Library} \index{character tables!library of}% \index{tables!library of}% \index{library tables}% \index{generic character tables} This chapter informs you about \beginlist \item{--} the currently available character tables (see~"Contents of the GAP Character Table Library"), \item{--} how to access library tables (see~"Access to Library Character Tables"), \item{--} generic character tables (see~"Generic Character Tables" and "Examples of Generic Character Tables"), \item{--} the subsets of {\ATLAS} tables (see~"ATLAS Tables" and "Examples of the ATLAS Format for GAP Tables") and {\sf CAS} tables (see~"CAS Tables"), \item{--} the organization of the table library (see~"Organization of the Character Table Library"), and \item{--} how to extend the library (see~"How to Extend the Character Table Library"). \endlist The latter two sections are rather technical, they are thought only for those who want to maintain or extend the table library. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Contents of the GAP Character Table Library} \index{character tables!library of}% \index{tables!library of}\index{library of character tables} 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 since the first release of {\GAP}~4 are listed in a file that can be fetched from \URL{http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/ctbldiff.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 (and the decomposition matrices of its blocks). These decomposition matrices can be computed from the ordinary and modular irreducibles with {\GAP} (see~"ref: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~\URL{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 first of all two big sources, namely the {\ATLAS} of Finite Groups (see~"ATLAS Tables") and the {\sf CAS} library of character tables (see~\cite{NPP84}). Many {\ATLAS} tables are contained in the {\sf CAS} library, and difficulties may arise because the succession of characters and classes in {\sf 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 {\sf CAS} tables is the set of tables of Sylow normalizers of sporadic simple groups as published in~\cite{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~\cite{Han88}) that are part of~\cite{HP89} via two microfiches; these tables are given in {\sf CAS} format (see~"CAS Tables") on the microfiches, but they had not been part of the ``official'' {\sf CAS} library. To avoid confusion about the ordering of classes and characters in a given table, authorship and so on, the `InfoText' (see~"ref:InfoText" in the {\GAP} Reference Manual) value of the table contains the information \beginitems `origin: ATLAS of finite groups' & for {\ATLAS} tables (see~"ATLAS Tables"), `origin: Ostermann' & for tables contained in~\cite{Ost86}, `origin: CAS library' & for any table of the {\sf CAS} table library that is contained neither in the {\ATLAS} nor in~\cite{Ost86}, and `origin: Hanrath library' & for tables contained in the microfiches in~\cite{HP89}. \enditems The `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 {\sf 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 \beginlist \item{-} all {\ATLAS} tables (see~"ATLAS Tables"), i.e., the tables of the simple groups which are contained in the {\ATLAS} of Finite Groups, and the tables of cyclic and bicyclic extensions of these groups, \item{-} most tables of maximal subgroups of sporadic simple groups (*not all* for $B$ and $M$), \item{-} some tables of maximal subgroups of other {\ATLAS} tables, where the list of maximal subgroups is complete if the `Maxes' value for the table is known (see~"Maxes"), \item{-} the tables of most Sylow normalizers of sporadic simple groups, as printed in~\cite{Ost86} (*not* $J_4N2$, $Co_1N2$, $Fi_{22}N2$, and several for $HN$, $Fi_{23}$, $Fi_{24}^{\prime}$, $B$, $M$) \item{-} some tables of element centralizers \item{-} some tables of Sylow subgroups \item{-} a few other tables, e.g.~`W(F4)' %T namely which? \endlist *Note* that class fusions stored on library tables are not guaranteed to be compatible for any two subgroups of a group and their intersection, and they are not guaranteed to be consistent w.r.t.~the composition of maps. *Brauer Tables* The library contains all tables of the {\ATLAS} of Brauer Tables (\cite{JLPW95}), and many other Brauer tables of bicyclic extensions of simple groups which are known yet. The Brauer tables in the library contain the information \begintt origin: modular ATLAS of finite groups \endtt in their `InfoText' string (see~"ref:InfoText" in the {\GAP} Reference Manual). *Generic Character Tables* See~"Generic Character Tables" for an overview of generic tables available. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Access to Library Character Tables} \index{character tables!access to} 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", "OneCharacterTableName"). \>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 \beginlist \item{-} an {\ATLAS} like name if $t$ is an {\ATLAS} table (see~"ATLAS Tables"), for example `\"M22\"' for the table of the Mathieu group $M_{22}$, `\"L2(13).2\"' for $L_2(13):2$, and `\"12_1.U4(3).2_1\"' for $12_1\.U_4(3)\.2_1$, (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.) \item{-} the names that were admissible for tables of $G$ in {\sf CAS} if the {\sf CAS} table library contained a table of $G$, for example `sl42' for the table of the alternating group $A_8$, (But note that the {\GAP} table may be different from that in {\sf CAS}, see~"CAS Tables".) \item{-} some ``relative'' names, as follows. 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 $J_3$ 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 $J_4$. 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 $A_{11}$. 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 $M_{11}$. \endlist The recommended way to access *Brauer tables* from the library is via the `mod' operator from the ordinary table and the desired characteristic (see~"ref:BrauerTable" and "ref: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~"ref: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. \beginexample 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(()) ) \endexample The above 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"). \beginexample gap> CharacterTable( "J5" ); fail gap> CharacterTable( "A5" ) mod 2; BrauerTable( "A5", 2 ) \endexample \>Maxes( <tbl> ) A is a list of identifiers of the tables of all maximal subgroups of <tbl>. This is meaningful 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>, and the tables of these maximal subgroups are available in the {\GAP} table library, and the fusions to <tbl> are stored on these tables. \beginexample 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" ) \endexample \>FusionToTom( <tbl> ) A If this attribute is set for an ordinary character table <tbl> then the {\GAP} Library of Tables of Marks contains the table of marks of the group of <tbl>, and the attribute value is a record with the following components. \beginitems `name' & the `Identifier' component of the table of marks of <tbl>, `map' & the fusion map, and `text' (optional) & a string describing the status of the fusion. \enditems \beginexample gap> FusionToTom( CharacterTable( "A5" ) ); rec( name := "A5", map := [ 1, 2, 3, 5, 5 ], text := "fusion map is unique" ) \endexample \>ProjectivesInfo( <tbl> ) A If this attribute is set for an ordinary character table <tbl> then the value is a list of records, each with the following components. \beginitems `name' & the `Identifier' value of the character table <mult> of the covering whose faithful irreducible characters are described by the record, `chars' & a list of values lists of faithful projective irreducibles; only one representative of each family of Galois conjugates is contained in this list, and `map' & a list of positions that maps each class of <tbl> to that preimage in <mult> for which the entries in `chars' give the values. In a sense, a projection map is an inverse of the factor fusion from the table of the covering to the given table (see~"ref:ProjectionMap" in the {\GAP} Reference Manual). \enditems \beginexample gap> ProjectivesInfo( CharacterTable( "A5" ) ); [ 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 ] ) ] \endexample \>ExtensionInfoCharacterTable( <tbl> ) A Let <tbl> be the ordinary character table of a group $G$, say. If this attribute is set for <tbl> then the value is a list of length two, the first entry being a string <M> that describes the Schur multiplier of $G$ and the second entry being a string <A> that describes the outer automorphism group of $G$. Trivial multiplier or outer automorphism group are denoted by an empty string. If <tbl> is a table from the {\GAP} Character Table Library and $G$ is (nonabelian and) simple then the value is set. In this case, an admissible name for the character table of the Darstellungsgruppe of $G$ (if this table is available and different from <tbl>) is given by the concatenation of <M>, `"."', and the `Identifier' value of <tbl>. Analogously, an admissible name for the character table of the automorphism group of $G$ (if this table is available and different from <tbl>) is given by the concatenation of the `Identifier' value of <tbl>, `"."', and <A>. \beginexample gap> ExtensionInfoCharacterTable( CharacterTable( "A5" ) ); [ "2", "2" ] \endexample \index{selection function!for character tables} \>AllCharacterTableNames( [<func>, <val>, ... ] ) F \>AllCharacterTableNames( <func>, <val>, ...[, OfThose, <func>] ) F Similar to group libraries (see Chapter~"ref: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 from the {\GAP} Character Table Library that have 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, \beginexample gap> names:= AllCharacterTableNames();; \endexample returns a list containing one admissible name of each ordinary character table in the {\GAP} library, and \beginexample gap> simpnames:= AllCharacterTableNames( IsSimple, true );; gap> AllCharacterTableNames( IsSimple, true, Size, [ 1 .. 100 ] ); [ "A5" ] \endexample 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~"ref:NamesOfFusionSources" in the {\GAP} Reference Manual). \beginexample gap> maxesnames:= AllCharacterTableNames( IsSporadicSimple, true, > HasMaxes, true, > OfThose, Maxes );; \endexample returns the union of names of ordinary tables of those maximal subgroups of sporadic simple groups that are contained in the table library in the sense that the attribute `Maxes' is set. For the sake of efficiency, `OfThose' followed by one of the arguments `AutomorphismGroup', `SchurCover', `CompleteGroup' is handled in a special way. \>OneCharacterTableName( {<func>, <val>} ) F \>OneCharacterTableName( <func>, <val>, ...{, OfThose, <func>} ) F The example function for character tables from the {\GAP} Character Table Library that have certain abstract properties is `OneCharacterTableName'. It is analogous to the selection function `AllCharacterTableNames' (see~"AllCharacterTableNames"), the difference is that it returns one `Identifier' value of a character table with the properties in question instead of the list of all such values. If no table with the required properties is contained in the {\GAP} Character Table Library then `fail' is returned. \beginexample gap> OneCharacterTableName( IsSimple, true, Size, 60 ); "A5" gap> OneCharacterTableName( IsSimple, true, Size, 20 ); fail \endexample \>CTblLibSetUnload( <value> ) F If <value> is `false' then the call to `CTblLibSetUnload' has the effect that data files from the {\GAP} Character TableLibrary are read only once in the current session. By default, the contents of only one data file is kept in memory, in order to keep the space small. This behaviour can be achieved also by calling `CTblLibSetUnload' with `true'. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Generic Character Tables} \index{character tables!generic}% \index{tables!generic}% \index{library tables!generic}% \index{spin groups!character table}% \index{symmetric groups!character table}% \index{alternating groups!character table}% \index{dihedral groups!character table}% \index{Suzuki groups!character table}% \index{Weyl groups!character table}% \index{cyclic groups!character table} 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 ${\rm GL}(2,q)$ where $q$ ranges over certain prime powers. Let $\{ G_q \| q \in I \}$ be such a series, where $I$ is an index set. The character table of one fixed member $G_q$ could be computed using a function that takes $q$ as only argument and constructs the table of $G_q$. 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 $S_n$ 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 another 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 $G_q$, and local evaluation (see~"ClassParameters" for an example). {\GAP} does *not* support the computation of, 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. \beginlist \item{} `CharacterTable( \"Alternating\", <n> )', the table of the *alternating* group on <n> letters, \item{} `CharacterTable( \"Cyclic\", <n> )', the table of the *cyclic* group of order <n>, \item{} `CharacterTable( \"Dihedral\", <2n> )', the table of the *dihedral* group of order <2n>, \item{} `CharacterTable( \"DoubleCoverAlternating\", <n> )', the table of the *Schur double cover of the alternating* group on <n> letters (see~\cite{Noe02}), \item{} `CharacterTable( \"DoubleCoverSymmetric\", <n> )', the table of the *standard Schur double cover of the symmetric* group on <n> letters (see~\cite{Noe02}), \item{} `CharacterTable( \"GL\", 2, <q> )', the table of the *general linear* group GL$(2,q)$, for a prime power <q>, \item{} `CharacterTable( \"GU\", 3, <q> )', the table of the *general unitary* group GU$(3,q)$, for a prime power <q>, \item{} `CharacterTable( \"P:Q\", [ <p>, <q> ] )' and `CharacterTable( \"P:Q\", [ <p>, <q>, <k> ] )', the table of the *Frobenius extension* of the cyclic group of order <p> by a cyclic group of order <q> where <q> divides $p-1$; if <p> is a prime integer then <q> determines the group uniquely and thus the first version can be used, otherwise the action of the residue class of <k> modulo <p> is taken for forming orbits of length <q> each on the nonidentity elements of the group of order <p>, \item{} `CharacterTable( \"PSL\", 2, <q> )', the table of the *projective special linear* group PSL$(2,q)$, for a prime power <q>, \item{} `CharacterTable( \"SL\", 2, <q> )', the table of the *special linear* group SL$(2,q)$, for a prime power <q>, \item{} `CharacterTable( \"SU\", 3, <q> )', the table of the *special unitary* group SU$(3,q)$, for a prime power <q>, \item{} `CharacterTable( \"Suzuki\", <q> )', the table of the *Suzuki* group $Sz(q) = {}^2B_2(q)$, for <q> an odd power of $2$, \item{} `CharacterTable( \"Symmetric\", <n> )', the table of the *symmetric* group on <n> letters, \item{} `CharacterTable( \"WeylB\", <n> )', the table of the *Weyl* group of type $B_n$, \item{} `CharacterTable( \"WeylD\", <n> )', the table of the *Weyl* group of type $D_n$. \endlist In addition to the above calls that really use generic tables, the following calls to `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. \beginlist \item{} `CharacterTable( \"Quaternionic\", <4n> )', the table of the *quaternionic* (dicyclic) group of order <4n>, \item{} `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~"ref:CharacterTableWreathSymmetric" in the {\GAP} Reference Manual). \endlist \>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>. \beginexample 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 \endexample (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 \in I$, a *parametrisation* of the classes in $t$ is a function that assigns to each conjugacy class of $G_q$ in $t$ a *parameter* by which it is uniquely determined. Thus the classes are indexed by pairs $[t,p_t]$ consisting of a type $t$ and a parameter $p_t$ for that type. For any generic table, there has to be a fixed number of types of irreducible characters of $G_q$, 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~"ref:OrdinaryCharacterTable" in the {\GAP} Reference Manual) of <tbl> then `ClassParameters' returns the sublist of class parameters of the ordinary table, for $p$-regular classes. \beginexample 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 ] ] ] \endexample 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. \beginexample 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 \endexample Any generic table in {\GAP} is represented by a record. The following components are supported for generic character table records. \beginitems `centralizers' & list of functions, one for each class type $t$, with arguments $q$ and $p_t$, returning the centralizer order of the class $[t,p_t]$, `charparam' & list of functions, one for each character type $t$, with argument $q$, returning the list of character parameters of type $t$, `classparam' & list of functions, one for each class type $t$, with argument $q$, returning the list of class parameters of type $t$, `classtext' & list of functions, one for each class type $t$, with arguments $q$ and $p_t$, returning a representative of the class with parameter $[t,p_t]$, `domain' & function of $q$ returning `true' if $q$ is a valid parameter, and `false' otherwise, `identifier' & identifier string of the generic table, `irreducibles' & list of list of functions, in row $i$ and column $j$ the function of three arguments, namely $q$ and the parameters $p_t$ and $p_s$ of the class type $t$ and the character type $s$, `isGenericTable' & always `true' `libinfo' & record with components `firstname' (`Identifier' value of the table) and `othernames' (list of other admissible names) `matrix' & function of $q$ returning the matrix of irreducibles of $G_q$, `orders' & list of functions, one for each class type $t$, with arguments $q$ and $p_t$, returning the representative order of elements of type $t$ and parameter $p_t$, `powermap' & list of functions, one for each class type $t$, each with three arguments $q$, $p_t$, and $k$, returning the pair $[s,p_s]$ of type and parameter for the $k$-th power of the class with parameter $[t,p_t]$, `size' & function of $q$ returning the order of $G_q$, `specializedname' & function of $q$ returning the `Identifier' value of the table of $G_q$, `text' & string informing about the generic table \enditems In the specialized table, the `ClassParameters' and `CharacterParameters' values are the lists of parameters $[t,p_t]$ 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 $G_q$ 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"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Examples of Generic Character Tables} \index{tables!generic}\index{character tables!generic} 1. The generic table of cyclic groups. For the cyclic group $C_q = \langle x \rangle$ of order $q$, there is one type of classes. The class parameters are integers $k \in \{ 0, \ldots, q-1 \}$, the class with parameter $k$ consists of the group element $x^k$. Group order and centralizer orders are the identity function $q \mapsto q$, independent of the parameter $k$. The representative order function maps the parameter pair $[q,k]$ to $\frac{q}{\gcd(q,k)}$, which is the order of $x^k$ in $C_q$; the $p$-th power map is the function mapping the triple $(q,k,p)$ to the parameter $[1,(kp \bmod q)]$. There is one type of characters, with parameters $l \in \{ 0, \ldots, q-1 \}$; for $e_q$ a primitive complex $q$-th root of unity, the character values are $\chi_l(x^k) = e_q^{kl}$. The library file contains the following generic table. \begintt 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 ) \endtt 2. The generic table of the general linear group $\rm{GL}(2,q)$. We have four types $t_1, t_2, t_3, t_4$ of classes, according to the rational canonical form of the elements. $t_1$ describes scalar matrices, $t_2$ nonscalar diagonal matrices, $t_3$ companion matrices of $(X-\rho)^2$ for elements $\rho\in \F_q^{\ast}$, and $t_4$ companion matrices of irreducible polynomials of degree 2 over $\F_q$. The sets of class parameters of the types are in bijection with $\F_q^{\ast}$ for $t_1$ and $t_3$, with the set $\{\{\rho,\tau\}; \rho, \tau\in \F_q^{\ast}, \rho\not=\tau\}$ for $t_2$, and with the set $\{\{\epsilon,\epsilon^q\}; \epsilon\in \F_{q^2}\setminus \F_q\}$ for $t_4$. The centralizer order functions are $q \mapsto (q^2-1)(q^2-q)$ for type $t_1$, $q \mapsto (q-1)^2$ for type $t_2$, $q \mapsto q(q-1)$ for type $t_3$, and $q \mapsto q^2-1$ for type $t_4$. The representative order function of $t_1$ maps $(q,\rho)$ to the order of $\rho$ in $\F_q$, that of $t_2$ maps $(q,\{\rho,\tau\})$ to the least common multiple of the orders of $\rho$ and $\tau$. The file contains something similar to the following table. \begintt 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 := IsPrimePowerInt, isGenericTable := true ) \endtt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{ATLAS Tables} \index{character tables!ATLAS}% \index{tables!library}\index{library of character tables} The {\GAP} character table library contains all character tables of bicyclic extensions of simple groups that are included in the {\ATLAS} of Finite Groups (\cite{CCN85}, from now on called {\ATLAS}), and the Brauer tables contained in the {\ATLAS} of Brauer Characters (\cite{JLPW95}). These tables have the information \begintt origin: ATLAS of finite groups \endtt or \begintt origin: modular ATLAS of finite groups \endtt in their `InfoText' value (see~"ref: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~"ref: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} Character Table Library not the printed versions of the {\ATLAS} of Finite Groups and the {\ATLAS} of Brauer Characters are relevant but the revised versions given by the currently three lists of improvements that are maintained by Simon Norton. The first such list is contained in~\cite{BN95}, and is printed in the Appendix of~\cite{JLPW95}; it contains the improvements that had been known until the ``{\ATLAS} of Brauer Characters'' was published. The second list contains the improvements to the {\ATLAS} of Finite Groups that were found since the publication of~\cite{JLPW95}. It can be found in the internet, namely, an HTML version at~\URL{http://web.mat.bham.ac.uk/atlas/html/atlasmods.html} and a DVI version at~\URL{http://web.mat.bham.ac.uk/atlas/html/atlasmods.dvi} The third list contains the improvements to the {\ATLAS} of Brauer Characters, HTML and PDF versions can be found in the internet at~\URL{http://www.math.rwth-aachen.de/~MOC/ABCerr.html} and~\URL{http://www.math.rwth-aachen.de/~MOC/ABCerr.pdf} respectively. 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 $L_2(49)$, $L_2(81)$, $L_6(2)$, $O_8^-(3)$, $O_8^+(3)$, $S_{10}(2)$, and ${}^2E_6(2)\.3$. *Power Maps* For the tables of $3\.McL$, $3_2\.U_4(3)$ and its covers, and $3_2\.U_4(3)\.2_3$ and its covers, the power maps are not uniquely determined by the information from the {\ATLAS} but determined only up to matrix automorphisms (see~"ref: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 attribute `ProjectivesInfo' of the {\GAP} table object of $G$ (or $G\.a$) is set (see~"ProjectivesInfo"); the `chars' component of the record in question is the list of values lists of those faithful projective irreducibles that are printed in the {\ATLAS} (so--called {\it proxy characters}), and the `map' component lists the positions of columns in the covering for which the column is printed in the {\ATLAS} (a so--called {\it proxy class}, this preimage is denoted by $g_0$ in Chapter~7, Section~14 of the {\ATLAS}). *Tables of Isoclinic Groups* As described in Chapter~6, Section~7 and in Chapter~7, Section~18 of the {\ATLAS}, there exist two (often nonisomorphic) groups of structure $2\.G\.2$ for a simple group $G$, which are isoclinic. The table in the {\GAP} Character Table Library is the one printed in the {\ATLAS}, the table of the other isoclinic variant can be constructed using `CharacterTableIsoclinic' (see~"ref:CharacterTableIsoclinic" in the {\GAP} Reference Manual). *Ordering of Characters and Classes* (Throughout this paragraph, $G$ always means the simple group involved.) \beginlist \item{1.} For $G$ itself, the ordering of classes and characters in the {\GAP} table coincides with the one in the {\ATLAS}. \item{2.} For an automorphic extension $G\.a$, there are three types of characters. If a character $\chi$ of $G$ extends to $G\.a$ then the different extensions $\chi^0, \chi^1, \ldots, \chi^{a-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$. \item{3.} Similarly, there are different types of classes for an automorphic extension $G\.a$, as follows. 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 $\ast k$ (see Chapter~7, Section~19 in the {\ATLAS}). For $a_1, a_2$ dividing $a$ such that $a_1 \< a_2$, the classes of $G\.a_1$ in $G\.a$ precede the classes of $G\.a_2$ not contained in $G\.a_1$. This ordering is the same as in the {\ATLAS}, with the only exception $U_3(8)\.6$. \item{4.} For a central extension $M\.G$, there are two different types of characters, as follows. 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 {\it 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 $\ast 5$, $\ast 7$, $\ast 11$ (in that succession). \item{5.} For the classes of a central extension we have the following. 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. \item{6.} For tables of bicyclic extensions $m\.G\.a$, both the rules for automorphic and central extensions hold. Additionally we have the following three rules. 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. \endlist \>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~\cite{CCN85} or the {\ATLAS} of Brauer Characters~\cite{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 $\chi$ by $\varphi$. First consider only downward extensions $m\.G$ of a simple group $G$. If $m \leq 2$ then only labels of the form $\chi_i$ occur, which denotes the $i$-th ordinary character shown in the {\ATLAS}. The labels of faithful ordinary characters of groups $m\.G$ with $m\geq 3$ are of the form $\chi_i$, $\chi_i^{\ast}$, or $\chi_i^{\ast k}$, which means the $i$-th character printed in the {\ATLAS}, the unique character that is not printed and for which $\chi_i$ acts as proxy (see~Sections~8 and~19 of Chapter~7 in the {\ATLAS} of Finite Groups), and the image of the printed character $\chi_i$ under the algebraic conjugacy operator $\ast 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. \beginlist \item{1.} If the ordinary irreducible character $\chi_i$ of $m\.G$ extends to $m\.G\.a$ then the $a^{\prime}$ extensions are denoted by $\chi_{i,0}, \chi_{i,1}, \ldots, \chi_{i,a^{\prime}}$, where $\chi_{i,0}$ is the character whose values are printed in the {\ATLAS}. \item{2.} The label $\chi_{i_1 + i_2 + \cdots + i_a}$ means that $a$ different characters $\chi_{i_1}, \chi_{i_2}, \ldots, \chi_{i_a}$ of $m\.G$ induce to an irreducible character of $m\.G\.a$ with this label. If the string `\"short\"' was entered as the second argument then the label has the short form $\chi_{i_1+}$. Note that $i_2, i_3, \ldots, i_a$ can be read off from the fusion signs in the {\ATLAS}. \item{3.} Finally, the label $\chi_{i_1,j_1 + i_2,j_2 + \cdots + i_{a^{\prime}},j_{a^{\prime}}}$ means that the characters $\chi_{i_1}, \chi_{i_2}, \ldots, \chi_{i_{a^{\prime}}}$ of $m\.G$ extend to a group that lies properly between $m\.G$ and $m\.G\.a$, and the extensions $\chi_{i_1,j_1}, \chi_{i_2,j_2}, \ldots \chi_{i_{a^{\prime}},j_{a^{\prime}}}$ induce to an irreducible character of $m\.G\.a$ with this label. Again, if the string `\"short\"' was entered as the second argument then the label has a short form, namely $\chi_{i,j+}$. \endlist \beginexample 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+}" ] \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Examples of the ATLAS Format for GAP Tables} \index{character tables!CAS}\index{tables!library} \index{library of character 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 $C_6$ of order $6$. It can be viewed in several ways, namely \beginlist \item{1.} as a downward extension of the factor group $C_2$ which contains $G$ as a subgroup, or equivalently, as an upward extension of the subgroup $C_3$ which has a factor group isomorphic to $G$, \item{2.} as a downward extension of the factor group $C_3$ which contains $G$ as a subgroup, or equivalently, as an upward extension of the subgroup $C_2$ which has a factor group isomorphic to $G$, \item{3.} as a downward extension of the factor groups $C_3$ and $C_2$ which have $G$ as a factor group, or \item{4.} as an upward extension of the subgroups $C_3$ or $C_2$ which both contain a subgroup isomorphic to $G$. \endlist % \def\ttquote{\char13} % \setlength{\unitlength}{0.1cm} % %ignore % \begin{picture}(110,55) % \put(-2,23){ % \begin{picture}(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}} % \end{picture}} % \put(37,52){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip0.9ex % \parskip0.2ex % % \ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \par % \ \par % \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1\ \par % \ \ p\ power\ \ \ \ \ \ \ \ \ \ \ A\ \par % \ \ p\ttquote\ part\ \ \ \ \ \ \ \ \ \ \ A\ \par % \ \ ind\ \ 1A\ fus\ ind\ \ 2A\ \par % \ \par % $\chi_1$\ \ +\ \ \ 1\ \ \ \:\ \ ++\ \ \ 1\ \par % \ \par % \ \ ind\ \ \ 1\ fus\ ind\ \ \ 2\ \par % \ \ \ \ \ \ \ \ 3\ \ \ \ \ \ \ \ \ \ \ 6\ \par % \ \ \ \ \ \ \ \ 3\ \ \ \ \ \ \ \ \ \ \ 6\ \par % \ \par % $\chi_2$\ o2\ \ \ 1\ \ \ \:\ oo2\ \ \ 1\ % \end{minipage}}} % % \put(83,52){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip2.7ex % \parskip0ex % % \ \ \ 2\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \par % \ \ \ \ \ \ 1a\ \ 3a\ \ 3b\ \ 2a\ \ 6a\ \ 6b \par % \ \ 2P\ \ 1a\ \ 3b\ \ 3a\ \ 1a\ \ 3b\ \ 3a \par % \ \ 3P\ \ 1a\ \ 1a\ \ 1a\ \ 2a\ \ 2a\ \ 2a \par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % X.2\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ -1\ \ -1\ \ -1 \par % X.3\ \ \ \ 1\ \ \ A\ \ /A\ \ \ 1\ \ \ A\ \ /A \par % X.4\ \ \ \ 1\ \ \ A\ \ /A\ \ -1\ \ -A\ -/A \par % X.5\ \ \ \ 1\ \ /A\ \ \ A\ \ \ 1\ \ /A\ \ \ A \par % X.6\ \ \ \ 1\ \ /A\ \ \ A\ \ -1\ -/A\ \ -A \par % \par % A\ =\ E(3) \par % \ \ =\ (-1+ER(-3))/2\ =\ b3 \par % % \end{minipage}}} % \end{picture} % %end % %display Situation 1.~is shown here. \begintt ------- ------- ; @ ; ; @ 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 \endtt `X.1', `X.2' extend $\chi_1$. `X.3', `X.4' extend the proxy character $\chi_2$. `X.5', `X.6' extend the not printed character with proxy $\chi_2$. The classes `1a', `3a', `3b' are preimages of `1A', and `2a', `6a', `6b' are preimages of `2A'. % %ignore % \begin{picture}(110,55) % \put(-2,23){ % \begin{picture}(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(37,52){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip0.9ex % \parskip0.2ex % % \ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @ \par % \ \par % \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1 \par % \ \ p\ power\ \ \ \ \ \ \ \ \ \ \ A \par % \ \ p\ttquote\ part\ \ \ \ \ \ \ \ \ \ \ A \par % \ \ ind\ \ 1A\ fus\ ind\ \ 3A \par % \ \par % $\chi_1$\ \ +\ \ \ 1\ \ \ \:\ +oo\ \ \ 1 \par % \ \par % \ \ ind\ \ \ 1\ fus\ ind\ \ \ 3 \par % \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ 6 \par % \ \par % $\chi_2$\ \ +\ \ \ 1\ \ \ \:\ +oo\ \ \ 1 \par % \end{minipage}}} % % \put(83,52){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip2.7ex % \parskip0ex % % \ \ \ 2\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \par % \ \ \ \ \ \ 1a\ \ 2a\ \ 3a\ \ 6a\ \ 3b\ \ 6b \par % \ \ 2P\ \ 1a\ \ 1a\ \ 3b\ \ 3b\ \ 3a\ \ 3a \par % \ \ 3P\ \ 1a\ \ 2a\ \ 1a\ \ 2a\ \ 1a\ \ 2a \par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % X.2\ \ \ \ 1\ \ \ 1\ \ \ A\ \ \ A\ \ /A\ \ /A \par % X.3\ \ \ \ 1\ \ \ 1\ \ /A\ \ /A\ \ \ A\ \ \ A \par % X.4\ \ \ \ 1\ \ -1\ \ \ 1\ \ -1\ \ \ 1\ \ -1 \par % X.5\ \ \ \ 1\ \ -1\ \ \ A\ \ -A\ \ /A\ -/A \par % X.6\ \ \ \ 1\ \ -1\ \ /A\ -/A\ \ \ A\ \ -A \par % \par % A\ =\ E(3) \par % \ \ =\ (-1+ER(-3))/2\ =\ b3 \par % \end{minipage}}} % \end{picture} % %end % %display Situation 2.~is shown here. \begintt ------- ------- ; @ ; ; @ 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 \endtt `X.1'--`X.3' extend $\chi_1$, `X.4'--`X.6' extend $\chi_2$. 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'. % %ignore % \begin{picture}(110,70) % \put(-2,8){ % \begin{picture}(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}} % \end{picture}} % \put(37,67){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip0.9ex % \parskip0.2ex % % \ \ \ \ ;\ \ \ @ \par % \ \ \par % \ \ \ \ \ \ \ \ 1 \par % \ \ p\ power \par % \ \ p\ttquote\ part \par % \ \ ind\ \ 1A \par % \ \ \par % $\chi_1$\ \ +\ \ \ 1 \par % \ \ \par % \ \ ind\ \ \ 1 \par % \ \ \ \ \ \ \ \ 2 \par % \ \ \par % $\chi_2$\ \ +\ \ \ 1 \par % \ \ \par % \ \ ind\ \ \ 1 \par % \ \ \ \ \ \ \ \ 3 \par % \ \ \ \ \ \ \ \ 3 \par % \ \ \par % $\chi_3$\ o2\ \ \ 1 \par % \ \ \par % \ \ ind\ \ \ 1 \par % \ \ \ \ \ \ \ \ 6 \par % \ \ \ \ \ \ \ \ 3 \par % \ \ \ \ \ \ \ \ 2 \par % \ \ \ \ \ \ \ \ 3 \par % \ \ \ \ \ \ \ \ 6 \par % \ \ \par % $\chi_4$\ o2\ \ \ 1 \par % \end{minipage}}} % % \put(83,67){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip2.7ex % \parskip0ex % % \ \ \ 2\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \par % \ \ \ \ \ \ 1a\ \ 6a\ \ 3a\ \ 2a\ \ 3b\ \ 6b \par % \ \ 2P\ \ 1a\ \ 3a\ \ 3b\ \ 1a\ \ 3a\ \ 3b \par % \ \ 3P\ \ 1a\ \ 2a\ \ 1a\ \ 2a\ \ 1a\ \ 2a \par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % X.2\ \ \ \ 1\ \ -1\ \ \ 1\ \ -1\ \ \ 1\ \ -1 \par % X.3\ \ \ \ 1\ \ \ A\ \ /A\ \ \ 1\ \ \ A\ \ /A \par % X.4\ \ \ \ 1\ \ /A\ \ \ A\ \ \ 1\ \ /A\ \ \ A \par % X.5\ \ \ \ 1\ \ -A\ \ /A\ \ -1\ \ \ A\ -/A \par % X.6\ \ \ \ 1\ -/A\ \ \ A\ \ -1\ \ /A\ \ -A \par % \par % A\ =\ E(3) \par % \ \ =\ (-1+ER(-3))/2\ =\ b3 \par % \end{minipage}}} % \end{picture} % %end % %display Situation 3.~is shown here. \begintt ------- ; @ 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 \endtt `X.1', `X.2' correspond to $\chi_1, \chi_2$, respectively; `X.3', `X.5' correspond to the proxies $\chi_3$, $\chi_4$, 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 ]'. % %ignore % \begin{picture}(110,55) % \put(-2,38){ % \begin{picture}(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}} % \end{picture}} % \put(-2,30){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{4in} % \baselineskip0.9ex % \parskip0.2ex % % \ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \ \ ;\ \ \ \ \ ;\ \ \ @\ \par % \ \par % \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \par % \ \ p\ power\ \ \ \ \ \ \ \ \ \ \ A\ \ \ \ \ \ \ \ \ \ \ A\ \ \ \ \ \ \ \ \ \ \ \ AA\ \par % \ \ p\ttquote\ part\ \ \ \ \ \ \ \ \ \ \ A\ \ \ \ \ \ \ \ \ \ \ A\ \ \ \ \ \ \ \ \ \ \ \ AA\ \par % \ \ ind\ \ 1A\ fus\ ind\ \ 2A\ fus\ ind\ \ 3A\ fus\ \ \ ind\ \ 6A\ \par % \ \par % $\chi_1$\ \ +\ \ \ 1\ \ \ \:\ \ ++\ \ \ 1\ \ \ \:\ +oo\ \ \ 1\ \ \ \:+oo+oo\ \ \ 1\ \par % \end{minipage}}} % % \put(83,52){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip2.7ex % \parskip0ex % % \ \ \ 2\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % \par % \ \ \ \ \ \ 1a\ \ 2a\ \ 3a\ \ 3b\ \ 6a\ \ 6b \par % \ \ 2P\ \ 1a\ \ 1a\ \ 3b\ \ 3a\ \ 3b\ \ 3a \par % \ \ 3P\ \ 1a\ \ 2a\ \ 1a\ \ 1a\ \ 2a\ \ 2a \par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % X.2\ \ \ \ 1\ \ -1\ \ \ A\ \ /A\ \ -A\ -/A \par % X.3\ \ \ \ 1\ \ \ 1\ \ /A\ \ \ A\ \ /A\ \ \ A \par % X.4\ \ \ \ 1\ \ -1\ \ \ 1\ \ \ 1\ \ -1\ \ -1 \par % X.5\ \ \ \ 1\ \ \ 1\ \ \ A\ \ /A\ \ \ A\ \ /A \par % X.6\ \ \ \ 1\ \ -1\ \ /A\ \ \ A\ -/A\ \ -A \par % \par % A\ =\ E(3) \par % \ \ =\ (-1+ER(-3))/2\ =\ b3 \par % \end{minipage}}} % \end{picture} % %end % %display Finally, situation 4.~is shown here. \begintt ------- ------- ------- ------- || || || || || || || || || 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 = b3 \endtt The 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. % %ignore % \begin{picture}(110,95) % \put(0,33){ % \begin{picture}(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 % \begin{minipage}{2in} % \baselineskip0.9ex % \parskip0.2ex % % \ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ @\ \par % \ \ \ \par % \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ 1\ \par % \ \ p\ power\ \ \ \ \ \ \ \ \ \ A\ \par % \ \ p\ttquote\ part\ \ \ \ \ \ \ \ \ \ A\ \par % \ \ ind\ \ 1A\ fus\ ind\ 2A\ \par % \ \ \ \par % $\chi_1$\ \ +\ \ \ 1\ \ \ \:\ \ ++\ \ 1\ \par % \ \ \ \par % \ \ ind\ \ \ 1\ fus\ ind\ \ 2\ \par % \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ 2\ \par % \ \ \ \par % $\chi_2$\ \ +\ \ \ 1\ \ \ \:\ \ ++\ \ 1\ \par % \ \ \ \par % \ \ ind\ \ \ 1\ fus\ ind\ \ 2\ \par % \ \ \ \ \ \ \ \ 3\ \par % \ \ \ \ \ \ \ \ 3\ \par % \ \ \ \par % $\chi_3$\ o2\ \ \ 1\ \ \ \*\ \ \ +\ \par % \ \ \ \par % \ \ ind\ \ \ 1\ fus\ ind\ \ 2\ \par % \ \ \ \ \ \ \ \ 6\ \ \ \ \ \ \ \ \ \ 2\par % \ \ \ \ \ \ \ \ 3\ \par % \ \ \ \ \ \ \ \ 2\ \par % \ \ \ \ \ \ \ \ 3\ \par % \ \ \ \ \ \ \ \ 6\ \par % \ \ \ \par % $\chi_4$\ o2\ \ \ 1\ \ \ \*\ \ \ +\ \par % \end{minipage}}} % % \put(85,92){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{2in} % \baselineskip2.7ex % \parskip0ex % % $3.G.2$ \par % \par % \ \ \ 2\ \ \ 1\ \ \ .\ \ \ 1 \par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ . \par % \par % \ \ \ \ \ \ 1a\ \ 3a\ \ 2a \par % \ \ 2P\ \ 1a\ \ 3a\ \ 1a \par % \ \ 3P\ \ 1a\ \ 1a\ \ 2a \par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1 \par % X.2\ \ \ \ 1\ \ \ 1\ \ -1 \par % X.3\ \ \ \ 2\ \ -1\ \ \ . \par % \par % \ % \par % $6.G.2$ \par % \par % \ \ \ 2\ \ \ 2\ \ \ 1\ \ \ 1\ \ \ 2\ \ \ 2\ \ \ 2 \par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ .\ \ \ . \par % \par % \ \ \ \ \ \ 1a\ \ 6a\ \ 3a\ \ 2a\ \ 2b\ \ 2c \par % \ \ 2P\ \ 1a\ \ 3a\ \ 3a\ \ 1a\ \ 1a\ \ 1a \par % \ \ 3P\ \ 1a\ \ 2a\ \ 1a\ \ 2a\ \ 2b\ \ 2c \par % \par % Y.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % Y.2\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ -1\ \ -1 \par % Y.3\ \ \ \ 1\ \ -1\ \ \ 1\ \ -1\ \ \ 1\ \ -1 \par % Y.4\ \ \ \ 1\ \ -1\ \ \ 1\ \ -1\ \ -1\ \ \ 1 \par % Y.5\ \ \ \ 2\ \ -1\ \ -1\ \ \ 2\ \ \ .\ \ \ . \par % Y.6\ \ \ \ 2\ \ \ 1\ \ -1\ \ -2\ \ \ .\ \ \ . \par % % \end{minipage}}} % \end{picture} % %end % %display The second example explains the fusion case; again, $G$ is the trivial group. \begintt ------- ------- ; @ ; ; @ 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 . . \endtt 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 \cong D_6$ and $6\.G\.2 \cong D_{12}$. In $3\.G\.2$, the characters `X.1', `X.2' extend $\chi_1$; $\chi_3$ 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 $\chi_1$, $\chi_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 $\chi_4$ and its non-printed partner. For the last example, let $G$ be the elementary abelian group $2^2$ of order $4$. Consider the following tables. % %ignore % \begin{picture}(110,125) % \put(0,93){ % \begin{picture}(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}} % fusion sign in picture % \put(39,122){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{3in} % \baselineskip0.9ex % \parskip0.2ex % % \ \ \ \ ;\ \ \ @\ \ \ @\ \ \ @\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \par % \ \par % \ \ \ \ \ \ \ \ 4\ \ \ 4\ \ \ 4\ \ \ 4\ \ \ \ \ \ \ \ \ \ \ 1\ \par % \ \ p\ power\ \ \ A\ \ \ A\ \ \ A\ \ \ \ \ \ \ \ \ \ \ A\ \par % \ \ p\ttquote\ part\ \ \ A\ \ \ A\ \ \ A\ \ \ \ \ \ \ \ \ \ \ A\ \par % \ \ ind\ \ 1A\ \ 2A\ \ 2B\ \ 2C\ fus\ ind\ \ 3A\ \par % \ \par % $\chi_1$\ \ +\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ \:\ +oo\ \ \ 1\ \par % \ \par % $\chi_2$\ \ +\ \ \ 1\ \ \ 1\ \ -1\ \ -1\ \ \ .\ \ \ +\ \ \ 0\ \par % \ \par % $\chi_3$\ \ +\ \ \ 1\ \ -1\ \ \ 1\ \ -1\ \ \ .\ \par % \ \par % $\chi_4$\ \ +\ \ \ 1\ \ -1\ \ -1\ \ \ 1\ \ \ .\ \par % \ \par % \ \ ind\ \ \ 1\ \ \ 4\ \ \ 4\ \ \ 4\ fus\ ind\ \ \ 3\ \par % \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 6\ \par % \ \par % $\chi_5$\ \ -\ \ \ 2\ \ \ 0\ \ \ 0\ \ \ 0\ \ \ \:\ -oo\ \ \ 1\ \par % \end{minipage}}} % % \put(102,122){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{3in} % \baselineskip2.7ex % \parskip0ex % $G.3$\par % \par % \ \ \ 2\ \ \ 2\ \ \ 2\ \ \ .\ \ \ . \par % \ \ \ 3\ \ \ 1\ \ \ .\ \ \ 1\ \ \ 1 \par % \par % \ \ \ \ \ \ 1a\ \ 2a\ \ 3a\ \ 3b \par % \ \ 2P\ \ 1a\ \ 1a\ \ 3b\ \ 3a \par % \ \ 3P\ \ 1a\ \ 2a\ \ 1a\ \ 1a \par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1 \par % X.2\ \ \ \ 1\ \ \ 1\ \ \ A\ \ /A \par % X.3\ \ \ \ 1\ \ \ 1\ \ /A\ \ \ A \par % X.4\ \ \ \ 3\ \ -1\ \ \ .\ \ \ . \par % \par % A\ =\ E(3) \par % \ \ =\ (-1+ER(-3))/2\ =\ b3 \par % \end{minipage}}} % % \put(0,71){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{3in} % \baselineskip2.7ex % \parskip0ex % $2.G$\par % \par % \ \ \ 2\ \ \ 3\ \ \ 3\ \ \ 2\ \ \ 2\ \ \ 2\par % \par % \ \ \ \ \ \ 1a\ \ 2a\ \ 4a\ \ 4b\ \ 4c\par % \ \ 2P\ \ 1a\ \ 1a\ \ 2a\ \ 1a\ \ 1a\par % \ \ 3P\ \ 1a\ \ 2a\ \ 4a\ \ 4b\ \ 4c\par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\par % X.2\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ -1\ \ -1\par % X.3\ \ \ \ 1\ \ \ 1\ \ -1\ \ \ 1\ \ -1\par % X.4\ \ \ \ 1\ \ \ 1\ \ -1\ \ -1\ \ \ 1\par % X.5\ \ \ \ 2\ \ -2\ \ \ .\ \ \ .\ \ \ .\par % \end{minipage}}} % % \put(50,71){\makebox(0,0)[tl]{ % \small\tt % \begin{minipage}{3in} % \baselineskip2.7ex % \parskip0ex % $2.G.3$\par % \par % \ \ \ 2\ \ \ 3\ \ \ 3\ \ \ 2\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\par % \ \ \ 3\ \ \ 1\ \ \ 1\ \ \ .\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\par % \par % \ \ \ \ \ \ 1a\ \ 2a\ \ 4a\ \ 3a\ \ 6a\ \ 3b\ \ 6b\par % \ \ 2P\ \ 1a\ \ 1a\ \ 2a\ \ 3b\ \ 3b\ \ 3a\ \ 3a\par % \ \ 3P\ \ 1a\ \ 2a\ \ 4a\ \ 1a\ \ 2a\ \ 1a\ \ 2a\par % \par % X.1\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\par % X.2\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ \ A\ \ \ A\ \ /A\ \ /A\par % X.3\ \ \ \ 1\ \ \ 1\ \ \ 1\ \ /A\ \ /A\ \ \ A\ \ \ A\par % X.4\ \ \ \ 3\ \ \ 3\ \ -1\ \ \ .\ \ \ .\ \ \ .\ \ \ .\par % X.5\ \ \ \ 2\ \ -2\ \ \ .\ \ \ 1\ \ \ 1\ \ \ 1\ \ \ 1\par % X.6\ \ \ \ 2\ \ -2\ \ \ .\ \ \ A\ \ -A\ \ /A\ -/A\par % X.7\ \ \ \ 2\ \ -2\ \ \ .\ \ /A\ -/A\ \ \ A\ \ -A\par % \par % A\ =\ E(3) \par % \ \ =\ (-1+ER(-3))/2\ =\ b3 \par % \end{minipage}}} % \end{picture} % %end % %display \begintt ------- ------- ; @ @ @ @ ; ; @ || || || || 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 = b3 \endtt In the table of $G\.3 \cong A_4$, the characters $\chi_2$, $\chi_3$, and $\chi_4$ fuse, and the classes `2A', `2B' and `2C' collapse. For getting the table of $2\.G \cong Q_8$, one just has to split the class `2A' and adjust the representative orders. Finally, the table of $2\.G\.3 \cong SL_2(3)$ is given; the class fusion corresponding to the injection $2\.G \hookrightarrow 2\.G\.3$ is `[ 1, 2, 3, 3, 3 ]', and the factor fusion corresponding to the epimorphism $2\.G\.3 \rightarrow G\.3$ is `[ 1, 1, 2, 3, 3, 4, 4 ]'. (The beautiful La{\TeX} pictures that were part of the {\GAP}~3 manual will be reintroduced as soon as the bad decision to use {\TeX} for the manual will be revised.) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{CAS Tables} \index{character tables!CAS}% \index{tables!library}\index{library of character tables} All character tables of the {\sf CAS} table library (see~\cite{NPP84}) are available in {\GAP} except if stated otherwise in the file `doc/ctbldiff.pdf'. 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 {\sf CAS} table is accessible by each of its {\sf CAS} names (except if stated otherwise in `doc/ctbldiff.pdf'), that is, the table name or the filename used in {\sf CAS}. \beginexample gap> tbl:= CharacterTable( "m10" ); CharacterTable( "A6.2_3" ) \endexample \>CASInfo( <tbl> ) A Let <tbl> be an ordinary character table <tbl> in the {\GAP} library that was (up to permutations of classes and characters) contained already in the {\sf CAS} table library. When one fetches <tbl> from the library, one does in general not get the original {\sf CAS} table. Namely, in many cases (mostly {\ATLAS} tables, see~"ATLAS Tables") the identifier of the table (see~"ref:Identifier!for character tables" in the {\GAP} Reference Manual) as well as the ordering of classes and characters are different for the {\sf CAS} table and its {\GAP} version. Note that in several cases, the {\sf 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 {\sf CAS} library. The records have the components \beginitems `name' & the name of the {\sf CAS} table, `permchars' and `permclasses' & permutations of the `Irr' values and the classes of <tbl>, respectively, that must be applied in order to get the orderings in the original {\sf CAS} table, and `text' & the text that was stored on the {\sf CAS} table (which may contain incorrect statements). \enditems \beginexample 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" ) ] \endexample The class fusions stored on tables from the {\sf 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 {\sf CAS} library --of course modulo the permutation of classes between the table in {\sf CAS} and its {\GAP} version. \beginexample 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" ) \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Organization of the Character Table Library} The data files of the {\GAP} Character Table Library reside in the `data' directory of the package `ctbllib'. 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 \beginlist \item{1.} comment lines, starting with `' in the first column, \item{2.} assignments to `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', \item{3.} assignments to `ALN' and to a component of `LIBTABLE.LOADSTATUS', at the end of the file, and \item{4.} function calls of the form `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. \endlist Besides the above calls, the data in files containing ordinary and Brauer tables may contain only the following {\GAP} functions. (Files containing generic character tables may contain calls to arbitrary {\GAP} library functions.) `ACM', `Concatenation', `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. A semicolon 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~"ref: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. {\GAP}'s knowledge about the ordinary tables in the table library is given by the file `ctprimar.tbl' (the ``primary file'' of the table library). This file can be 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. \beginitems `firstnames' & the list of `Identifier' (see~"ref:Identifier!for character tables" in the {\GAP} Reference Manual) values of the ordinary tables, `files' & the list of filenames containing the data of ordinary tables, `filenames' & a list of positive integers, value $j$ at position $i$ means that the table whose identifier is the $i$--th in the `firstnames' list is contained in the $j$-th file of the `files' component, `fusionsource' & a list containing at position $i$ the list of names of tables that store a fusion into the table whose identifier is the $i$--th in the `firstnames' list, `allnames' & a list of all admissible names of ordinary library tables, `position' & a list that stores at position $i$ the position in `firstnames' of the identifier of the table with the $i$--th admissible name in `allnames', `projections' & a list of triples $[ <name>, <factname>, <map> ]$ describing a factor fusion <map> from the table with identifier <name> to the table with identifier <factname> (this is used to construct the table of <name> using the data of the table of <factname>), `simpleinfo' & a list of triples $[ <m>, <name>, <a> ]$ describing the tables of simple groups in the library; <name> is the identifier of the table, `<m>.<name>' and `<name>.<a>' are admissible names for its Schur multiplier and automorphism group, respectively, `sporadicSimple' & a list of identifiers of the tables of the $26$ sporadic simple groups, and `GENERIC' & a record with information about generic tables (see~"Generic Character Tables"). \enditems 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 the attribute `ConstructionInfoCharacterTable' (see~"ConstructionInfoCharacterTable") set, with value a list that contains the name of the construction function used and the arguments for a call to this function; The function call is performed 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 compact way. \>LibInfoCharacterTable( <tblname> ) F is a record with components \beginitems `firstName' & the `Identifier' value (see~"ref:Identifier!for character tables" in the {\GAP} Reference Manual) of the library table for which <tblname> is an admissible name, and `fileName' & the name of the file in which the table data is stored. \enditems If no such table exists in the {\GAP} library then `fail' is returned. If <tblname> contains the substring `\"mod\"' then it is regarded as the name of a Brauer table. In this case the result is computed from that for the corresponding ordinary table and the characteristic. So if the ordinary table exists then the result is a record although the Brauer table in question need not be contained in the {\GAP} library. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{How to Extend the Character Table Library} \index{library tables!add}% \index{tables!add to the 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~"ref: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~"ref: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. \beginexample gap> CharacterTable( "private" ); fail gap> NotifyNameOfCharacterTable( "A5", [ "private" ] ); gap> a5:= CharacterTable( "private" ); CharacterTable( "A5" ) \endexample 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>, <spec>] ) 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. If the argument <spec> is given then it is added as `specification' 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~"ref:Identifier!for character tables" in the {\GAP} Reference Manual) of an ordinary character table in the {\GAP} library, and a record <fus> with the components `name' (the identifier of the destination table, or this table itself), `map' (the fusion map, a list of image positions), and optionally `text' (a string containing information about the fusion) and `specification' (a string or an integer), `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. \beginexample 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" ]); \endexample 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. \begintt gap> PrintToLib( "private", a5 ); \endtt The above command appends the data of the table `a5' to the file `private.tbl'; the first lines printed to this file are \begintt 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"]); \endtt 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' value <firstname>, it is contained (in library format, see~"PrintToLib") in the file with name <filename> (without suffix `.tbl'), and the names contained in the list <othernames> are admissible for it. If the initial part of <filename> is one of `~/', `/' or `./' then it is interpreted as an *absolute* path. Otherwise it is interpreted *relative* to the `data' directory of the `ctbllib' package. `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.) \begintt gap> NotifyCharacterTable( "icos", "private", [] ); gap> icos:= CharacterTable( "icos" ); 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 \endtt 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~"ref:The .gaprc File" in the {\GAP} Reference Manual), or into a file that is read via the `.gaprc' file. For adding interesting character tables to the {\GAP} distribution, please send the tables to the e-mail address mentioned in the first paragraph of this chapter. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %E