
<!-- %W  ctbllibr.xml    GAP 4 package CTblLib              Thomas Breuer -->
<!-- %Y  Copyright 2011, Lehrstuhl D für Mathematik, RWTH Aachen, Germany -->


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Chapter Label="ch:ctbllibr">
<Heading>Contents of the &GAP; Character Table Library</Heading>

<Index>character tables!library of</Index>
<Index>tables!library of</Index>
<Index>library tables</Index>
<Index>generic character tables</Index>

This chapter informs you about
<List>
<Item>
  the currently available character tables
  (see Section&nbsp;<Ref Sect="sec:contents"/>),
</Item>
<Item>
  generic character tables
  (see Section&nbsp;<Ref Sect="sec:generictables"/>),
</Item>
<Item>
  the subsets of &ATLAS; tables
  (see Section&nbsp;<Ref Sect="sec:ATLAS Tables"/>)
  and &CAS; tables
  (see Section&nbsp;<Ref Sect="sec:CAS Tables"/>),
</Item>
<Item>
  installing the library, and related user preferences
  (see Section&nbsp;<Ref Sect="sec:customize"/>).
</Item>
</List>

<P/>

The following rather technical sections are thought for those
who want to maintain or extend the Character Table Library.

<P/>

<List>
<Item>
  the technicalities of the access to library tables
  (see Section&nbsp;<Ref Sect="sec:technicalities"/>),
</Item>
<Item>
  how to extend the library
  (see Section&nbsp;<Ref Sect="sec:extending"/>), and
</Item>
<Item>
  sanity checks
  (see Section&nbsp;<Ref Sect="sec:CTblLib Sanity Checks"/>).
</Item>
</List>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:contents">
<Heading>Ordinary and Brauer Tables in the &GAP; Character Table Library
</Heading>

<Index>character tables!library of</Index>
<Index>tables!library of</Index>
<Index>library of character tables</Index>

This section gives a brief overview of the contents of the &GAP;
character table library.
For the details about, e.&nbsp;g., the structure of data files,
see Section&nbsp;<Ref Sect="sec:technicalities"/>.

<P/>

The changes in the character table library since the first release of
&GAP;&nbsp;4 are listed in a file that can be fetched from

<P/>

<URL>https://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/ctbldiff.htm
</URL>.

<P/>

There are three different kinds of character tables in the &GAP; library,
namely <E>ordinary character tables</E>, <E>Brauer tables</E>,
and <E>generic character tables</E>.
Note that the Brauer table and the corresponding ordinary table of a group
determine the <E>decomposition matrix</E> 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 Section&nbsp;<Ref Sect="Operations Concerning Blocks" BookName="ref"/>
for details.
A collection of PDF files of the known decomposition matrices
of &ATLAS; tables in the &GAP; Character Table Library can also be
found at
 
<P/>

<URL>https://www.math.rwth-aachen.de/~MOC/decomposition/</URL>.

<P/>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:contents-ordinary">
<Heading>Ordinary Character Tables</Heading>

Two different aspects are useful to list the ordinary character tables
available in &GAP;, namely the aspect of the <E>source</E> of the tables
and that of <E>relations</E> between the tables.

<P/>

As for the source, there are first of all two big sources,
namely the &ATLAS; of Finite Groups
(see Section&nbsp;<Ref Sect="sec:ATLAS Tables"/>)
and the &CAS; library of character tables (see&nbsp;<Cite Key="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 Section&nbsp;<Ref Sect="sec:CAS Tables"/> for the relations between
these two variants of character tables of the same group.
A subset of the &CAS; tables is the set of tables of
Sylow normalizers of sporadic simple groups
as published in&nbsp;<Cite Key="Ost86"/>
&nbsp;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.&nbsp;Hanrath, see&nbsp;<Cite Key="Han88"/>)
that are part of&nbsp;<Cite Key="HP89"/>, in the form of two microfiches;
these tables are given in &CAS; format
(see Section&nbsp;<Ref Sect="sec:CAS Tables"/>) on the microfiches,
but they had not been part of the <Q>official</Q> &CAS; library.

<P/>

To avoid confusion about the ordering of classes and characters in a given
table, authorship and so on,
the <Ref Attr="InfoText" BookName="ref"/> value of the table
contains the information
<List>
<Mark><C>origin:&nbsp;ATLAS of finite groups</C></Mark>
<Item>
  for &ATLAS; tables (see Section&nbsp;<Ref Sect="sec:ATLAS Tables"/>),
</Item>
<Mark><C>origin:&nbsp;Ostermann</C></Mark>
<Item>
  for tables contained in&nbsp;<Cite Key="Ost86"/>,
</Item>
<Mark><C>origin:&nbsp;CAS library</C></Mark>
<Item>
  for any table of the &CAS; table library that is contained
  neither in the &ATLAS; nor in&nbsp;<Cite Key="Ost86"/>,
  and
</Item>
<Mark><C>origin:&nbsp;Hanrath library</C></Mark>
<Item>
  for tables contained in the microfiches in&nbsp;<Cite Key="HP89"/>.
</Item>
</List>

The <Ref Attr="InfoText" BookName="ref"/> 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 <Ref Func="CASInfo"/>
value.

<P/>

If one is interested in the aspect of relations between the tables,
i.&nbsp;e., the internal structure of the library of ordinary tables,
the contents can be listed up the following way.

<P/>

We have

<List>
<Item>
  all &ATLAS; tables (see Section&nbsp;<Ref Sect="sec:ATLAS Tables"/>),
  i.&nbsp;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>
<Item>
  most tables of maximal subgroups of sporadic simple groups
  (<E>not all</E> for the Monster group),
</Item>
<Item>
  many tables of maximal subgroups of other &ATLAS; tables;
  the <Ref Func="Maxes"/> value for the table is set if all tables of maximal
  subgroups are available,
</Item>
<Item>
  the tables of many Sylow <M>p</M>-normalizers of sporadic simple groups;
  this includes the tables printed in&nbsp;<Cite Key="Ost86"/>
  except <M>J_4N2</M>, <M>Co_1N2</M>, <M>Fi_{22}N2</M>,
  but also other tables are available;
  more generally,
  several tables of normalizers of other radical <M>p</M>-subgroups are
  available, such as normalizers of defect groups of <M>p</M>-blocks,
</Item>
<Item>
  some tables of element centralizers,
</Item>
<Item>
  some tables of Sylow <M>p</M>-subgroups,
</Item>
<Item>
  and a few other tables, e.&nbsp;g.&nbsp;<C>W(F4)</C>
<!-- %T namely which? -->
</Item>
</List>

<P/>

<E>Note</E> 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.&nbsp;r.&nbsp;t.&nbsp;the composition of maps.

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:contents-modular">
<Heading>Brauer Tables</Heading>

The library contains all tables of the &ATLAS; of
Brauer Tables (<Cite Key="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
<Verb>
origin: modular ATLAS of finite groups
</Verb>
in their <Ref Attr="InfoText" BookName="ref"/> string.

</Subsection>

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:generictables">
<Heading>Generic Character Tables</Heading>

<Index>character tables!generic</Index>
<Index>tables!generic</Index>
<Index>library tables!generic</Index>
<Index>spin groups!character table</Index>
<Index>symmetric groups!character table</Index>
<Index>alternating groups!character table</Index>
<Index>dihedral groups!character table</Index>
<Index>Suzuki groups!character table</Index>
<Index>Weyl groups!character table</Index>
<Index>cyclic groups!character table</Index>

Generic character tables provide a means for writing down the character
tables of all groups in a (usually infinite) series of similar groups,
e.&nbsp;g., cyclic groups, or symmetric groups, or the general linear groups
GL<M>(2,q)</M> where <M>q</M> ranges over certain prime powers.

<P/>

Let <M>\{ G_q | q \in I \}</M> be such a series,
where <M>I</M> is an index set.
The character table of one fixed member <M>G_q</M> could be computed using a
function that takes <M>q</M> as only argument
and constructs the table of <M>G_q</M>.
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.

<P/>

For example, both the conjugacy classes and the irreducible characters of
the symmetric group <M>S_n</M> are in bijection with the partitions of
<M>n</M>.
Thus for given <M>n</M> it makes sense to ask for the character corresponding
to a particular partition,
or just for its character value at another partition.

<P/>

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.

<P/>

Currently the only operations for generic tables supported by &GAP; are
the specialisation of the parameter <M>q</M> in order to compute the whole
character table of <M>G_q</M>, and local evaluation
(see&nbsp;<Ref Func="ClassParameters" BookName="ref"/> for an example).
&GAP; does <E>not</E> support the computation of, e.&nbsp;g.,
generic scalar products.

<P/>

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 <E>types</E> (equivalence classes)
of conjugacy classes;
very often the equivalence relation is isomorphism of the centralizers of the
representatives.

<P/>

For each type <M>t</M> of classes and a fixed <M>q \in I</M>,
a <E>parametrisation</E> of the classes in <M>t</M> is a function
that assigns to each conjugacy class of <M>G_q</M> in <M>t</M>
a <E>parameter</E> by which it is uniquely determined.
Thus the classes are indexed by pairs <M>[t,p_t]</M> consisting of
a type <M>t</M> and a parameter <M>p_t</M> for that type.

<P/>

For any generic table, there has to be a fixed number of types of irreducible
characters of <M>G_q</M>, too.
Like the classes, the characters of each type are parametrised.

<P/>

In &GAP;, the parametrisations of classes and characters for tables
computed from generic tables is stored using the attributes
<Ref Attr="ClassParameters" BookName="ref"/> and
<Ref Attr="CharacterParameters" BookName="ref"/>.


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:generictablesavailable">
<Heading>Available generic character tables</Heading>

Currently, generic tables of the following groups
&ndash;in alphabetical order&ndash; are available in &GAP;.
(A list of the names of generic tables known to &GAP; is
<C>LIBTABLE.GENERIC.firstnames</C>.)
We list the function calls needed to get a specialized table,
the generic table itself can be accessed by calling
<Ref Func="CharacterTable" BookName="ref"/>
with the first argument only;
for example, <C>CharacterTable( "Cyclic" )</C> yields the generic table of
cyclic groups.

<List>
<Mark><C>CharacterTable( "Alternating", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>alternating</E> group on <M>n</M> letters,
</Item>
<Mark><C>CharacterTable( "Cyclic", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>cyclic</E> group of order <M>n</M>,
</Item>
<Mark><C>CharacterTable( "Dihedral", </C><M>2n</M><C> )</C></Mark>
<Item>
  the table of the <E>dihedral</E> group of order <M>2n</M>,
</Item>
<Mark><C>CharacterTable( "DoubleCoverAlternating", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>Schur double cover of the alternating</E> group
  on <M>n</M> letters (see&nbsp;<Cite Key="Noe02"/>),
</Item>
<Mark><C>CharacterTable( "DoubleCoverSymmetric", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>standard Schur double cover of the symmetric</E> group
  on <M>n</M> letters (see&nbsp;<Cite Key="Noe02"/>),
</Item>
<Mark><C>CharacterTable( "GL", 2, </C><M>q</M><C> )</C></Mark>
<Item>
  the table of the <E>general linear</E> group <C>GL(2,</C><M>q</M><C>)</C>,
  for a prime power <M>q</M>,
</Item>
<Mark><C>CharacterTable( "GU", 3, </C><M>q</M><C> )</C></Mark>
<Item>
  the table of the <E>general unitary</E> group <C>GU(3,</C><M>q</M><C>)</C>,
  for a prime power <M>q</M>,
</Item>
<Mark><C>CharacterTable( "P:Q", </C><M>[ p, q ]</M><C> )</C> and
  <C>CharacterTable( "P:Q", </C><M>[ p, q, k ]</M><C> )</C></Mark>
<Item>
  the table of the <E>Frobenius extension</E> of the nontrivial cyclic group
  of odd order <M>p</M> by the nontrivial cyclic group of order <M>q</M>
  where <M>q</M> divides <M>p_i-1</M> for all prime divisors <M>p_i</M> of
  <M>p</M>;
  if <M>p</M> is a prime power then <M>q</M> determines the group uniquely
  and thus the first version can be used,
  otherwise the action of the residue class of <M>k</M> modulo <M>p</M> is
  taken for forming orbits of length <M>q</M> each on the nonidentity
  elements of the group of order <M>p</M>,
</Item>
<Mark><C>CharacterTable( "PSL", 2, </C><M>q</M><C> )</C></Mark>
<Item>
  the table of the <E>projective special linear</E> group
  <C>PSL(2,</C><M>q</M><C>)</C>, for a prime power <M>q</M>,
</Item>
<Mark><C>CharacterTable( "SL", 2, </C><M>q</M><C> )</C></Mark>
<Item>
  the table of the <E>special linear</E> group <C>SL(2,</C><M>q</M><C>)</C>,
  for a prime power <M>q</M>,
</Item>
<Mark><C>CharacterTable( "SU", 3, </C><M>q</M><C> )</C></Mark>
<Item>
  the table of the <E>special unitary</E> group <C>SU(3,</C><M>q</M><C>)</C>,
  for a prime power <M>q</M>,
</Item>
<Mark><C>CharacterTable( "Suzuki", </C><M>q</M><C> )</C></Mark>
<Item>
  the table of the <E>Suzuki</E> group
  <C>Sz(</C><M>q</M><C>)</C> <M>= {}^2B_2(q)</M>,
  for <M>q</M> an odd power of <M>2</M>,
</Item>
<Mark><C>CharacterTable( "Symmetric", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>symmetric</E> group on <M>n</M> letters,
</Item>
<Mark><C>CharacterTable( "WeylB", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>Weyl</E> group of type <M>B_n</M>,
</Item>
<Mark><C>CharacterTable( "WeylD", </C><M>n</M><C> )</C></Mark>
<Item>
  the table of the <E>Weyl</E> group of type <M>D_n</M>.
</Item>
</List>

In addition to the above calls that really use generic tables,
the following calls to
<Ref Func="CharacterTable" BookName="ref"/> are to some extent <Q>generic</Q>
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.

<List>
<Mark><C>CharacterTable( "Quaternionic", </C><M>4n</M><C> )</C></Mark>
<Item>
  the table of the <E>generalized quaternionic</E> group of order <M>4n</M>,
</Item>
<Mark><C>CharacterTableWreathSymmetric( tbl, </C><M>n</M><C> )</C></Mark>
<Item>
  the character table of the wreath product of the group whose table is
  <C>tbl</C> with the symmetric group on <M>n</M> letters,
  see&nbsp;<Ref Func="CharacterTableWreathSymmetric" BookName="ref"/>.
</Item>
</List>

</Subsection>

<#Include Label="CharacterTableSpecialized">


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:generictablecomponents">
<Heading>Components of generic character tables</Heading>

Any generic table in &GAP; is represented by a record.
The following components are supported for generic character table records.

<List>
<Mark><C>centralizers</C></Mark>
<Item>
    list of functions, one for each class type <M>t</M>,
    with arguments <M>q</M> and <M>p_t</M>,
    returning the centralizer order of the class <M>[t,p_t]</M>,
</Item>
<Mark><C>charparam</C></Mark>
<Item>
    list of functions, one for each character type <M>t</M>,
    with argument <M>q</M>, returning the list of character parameters
    of type <M>t</M>,
</Item>
<Mark><C>classparam</C></Mark>
<Item>
    list of functions, one for each class type <M>t</M>,
    with argument <M>q</M>,
    returning the list of class parameters of type <M>t</M>,
</Item>
<Mark><C>classtext</C></Mark>
<Item>
    list of functions, one for each class type <M>t</M>,
    with arguments <M>q</M> and <M>p_t</M>,
    returning a representative of the class with parameter <M>[t,p_t]</M>
    (note that this element need <E>not</E> actually lie in the group
    in question,
    for example it may be a diagonal matrix but the characteristic polynomial
    in the group s irreducible),
</Item>
<Mark><C>domain</C></Mark>
<Item>
    function of <M>q</M> returning <K>true</K> if <M>q</M>
    is a valid parameter, and <K>false</K> otherwise,
</Item>
<Mark><C>identifier</C></Mark>
<Item>
    identifier string of the generic table,
</Item>
<Mark><C>irreducibles</C></Mark>
<Item>
    list of list of functions,
    in row <M>i</M> and column <M>j</M> the function of three arguments,
    namely <M>q</M> and the parameters <M>p_t</M> and <M>p_s</M>
    of the class type <M>t</M> and the character type <M>s</M>,
</Item>
<Mark><C>isGenericTable</C></Mark>
<Item>
    always <K>true</K>
</Item>
<Mark><C>libinfo</C></Mark>
<Item>
    record with components <C>firstname</C>
    (<Ref Attr="Identifier" Label="for character tables" BookName="ref"/>
    value of the table)
    and <C>othernames</C> (list of other admissible names)
</Item>
<Mark><C>matrix</C></Mark>
<Item>
    function of <M>q</M> returning the matrix of irreducibles of <M>G_q</M>,
</Item>
<Mark><C>orders</C></Mark>
<Item>
    list of functions, one for each class type <M>t</M>,
    with arguments <M>q</M> and <M>p_t</M>, returning the representative order
    of elements of type <M>t</M> and parameter <M>p_t</M>,
</Item>
<Mark><C>powermap</C></Mark>
<Item>
    list of functions, one for each class type <M>t</M>,
    each with three arguments <M>q</M>, <M>p_t</M>, and <M>k</M>,
    returning the pair <M>[s,p_s]</M> of type and parameter for the
    <M>k</M>-th power of the class with parameter <M>[t,p_t]</M>,
</Item>
<Mark><C>size</C></Mark>
<Item>
    function of <M>q</M> returning the order of <M>G_q</M>,
</Item>
<Mark><C>specializedname</C></Mark>
<Item>
    function of <M>q</M> returning the
    <Ref Attr="Identifier" Label="for character tables" BookName="ref"/>
    value of the table of <M>G_q</M>,
</Item>
<Mark><C>text</C></Mark>
<Item>
    string informing about the generic table
</Item>
</List>

<P/>

In the specialized table, the <Ref Func="ClassParameters" BookName="ref"/>
and <Ref Func="CharacterParameters" BookName="ref"/> values
are the lists of parameters <M>[t,p_t]</M> of classes and characters,
respectively.

<P/>

If the <C>matrix</C> component is present then its value implements a method
to compute the complete table of small members <M>G_q</M> 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 <M>q</M>
(see&nbsp;<Ref Func="CharacterTableSpecialized"/>).

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:generictableCn">
<Heading>Example: The generic table of cyclic groups</Heading>

For the cyclic group <M>C_q = \langle x \rangle</M> of order <M>q</M>,
there is one type of classes.
The class parameters are integers <M>k \in \{ 0, \ldots, q-1 \}</M>,
the class with parameter <M>k</M> consists of the group element <M>x^k</M>.
Group order and centralizer orders are the identity function
<M>q \mapsto q</M>, independent of the parameter <M>k</M>.
The representative order function maps the parameter pair <M>[q,k]</M> to
<M>q / \gcd(q,k)</M>, which is the order of <M>x^k</M> in <M>C_q</M>;
the <M>p</M>-th power map is the function mapping the triple <M>(q,k,p)</M>
to the parameter <M>[1,(kp \bmod q)]</M>.

<P/>

There is one type of characters,
with parameters <M>l \in \{ 0, \ldots, q-1 \}</M>;
for <M>e_q</M> a primitive complex <M>q</M>-th root of unity,
the character values are <M>\chi_l(x^k) = e_q^{kl}</M>.

<P/>

<Example><![CDATA[
gap> Print( CharacterTable( "Cyclic" ), "\n" );
rec(
  centralizers := [ function ( n, k )
            return n;
        end ],
  charparam := [ function ( n )
            return [ 0 .. n - 1 ];
        end ],
  classparam := [ function ( n )
            return [ 0 .. n - 1 ];
        end ],
  domain := <Category "(IsInt and IsPosRat)">,
  identifier := "Cyclic",
  irreducibles := [ [ function ( n, k, l )
                return E( n ) ^ (k * l);
            end ] ],
  isGenericTable := true,
  libinfo := rec(
      firstname := "Cyclic",
      othernames := [  ] ),
  orders := [ function ( n, k )
            return n / Gcd( n, k );
        end ],
  powermap := [ function ( n, k, pow )
            return [ 1, k * pow mod n ];
        end ],
  size := function ( n )
        return n;
    end,
  specializedname := function ( q )
        return Concatenation( "C", String( q ) );
    end,
  text := "generic character table for cyclic groups" )
]]></Example>

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:generictableGL2">
<Heading>Example: The generic table of the general linear group GL<M>(2,q)</M>
</Heading>

We have four types <M>t_1, t_2, t_3, t_4</M> of classes,
according to the rational canonical form of the elements.
<M>t_1</M> describes scalar matrices,
<M>t_2</M> nonscalar diagonal matrices,
<M>t_3</M> companion matrices of <M>(X - \rho)^2</M> for nonzero elements
<M>\rho \in F_q</M>,
and
<M>t_4</M> companion matrices of irreducible polynomials of degree <M>2</M>
over <M>F_q</M>.

<P/>

The sets of class parameters of the types are in bijection with
nonzero elements in <M>F_q</M> for <M>t_1</M> and <M>t_3</M>,
with the set
<Display Mode="M">
  \{ \{ \rho, \tau \};
     \rho, \tau \in F_q, \rho &noteq; 0, \tau &noteq; 0, \rho &noteq; \tau \}
</Display>
for <M>t_2</M>,
and with the set
<M>\{ \{ \epsilon, \epsilon^q \}; \epsilon \in F_{{q^2}} \setminus F_q \}</M>
for <M>t_4</M>.

<P/>

The centralizer order functions are
<M>q \mapsto (q^2-1)(q^2-q)</M> for type <M>t_1</M>,
<M>q \mapsto (q-1)^2</M> for type <M>t_2</M>,
<M>q \mapsto q(q-1)</M> for type <M>t_3</M>, and
<M>q \mapsto q^2-1</M> for type <M>t_4</M>.

<P/>

The representative order function of <M>t_1</M> maps <M>(q, \rho)</M> to the
order of <M>\rho</M> in <M>F_q</M>,
that of <M>t_2</M> maps <M>(q, \{ \rho, \tau \})</M> to the least common
multiple of the orders of <M>\rho</M> and <M>\tau</M>.

<P/>

The file contains something similar to the following table.

<P/>

<Listing>
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 )
</Listing>

</Subsection>
</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:ATLAS Tables">
<Heading>&ATLAS; Tables</Heading>

<Index>character tables!ATLAS</Index>
<Index>tables!library</Index>
<Index>library of character tables</Index>

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 Key="CCN85"/>, from now on called &ATLAS;),
and the Brauer tables contained in the &ATLAS; of Brauer
Characters (<Cite Key="JLPW95"/>).

<P/>

These tables have the information
<Verb>
origin: ATLAS of finite groups
</Verb>
or
<Verb>
origin: modular ATLAS of finite groups
</Verb>
in their <Ref Attr="InfoText" BookName="ref"/> value,
they are simply called &ATLAS; tables further on.

<P/>

For displaying &ATLAS; tables with the row labels used in
the &ATLAS;, or for displaying decomposition matrices,
see&nbsp;<Ref Func="LaTeXStringDecompositionMatrix" BookName="ref"/>
and&nbsp;<Ref Func="AtlasLabelsOfIrreducibles"/>.

<P/>

In addition to the information given in Chapters&nbsp;6 to&nbsp;8 of the
&ATLAS; which tell you how to read the printed tables,
there are some rules relating these to the corresponding &GAP; tables.


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:Improvements">
<Heading>Improvements to the &ATLAS;</Heading>

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&nbsp;<Cite Key="BN95"/>,
and is printed in the Appendix of&nbsp;<Cite Key="JLPW95"/>;
it contains the improvements that had been known until the
<Q>&ATLAS; of Brauer Characters</Q> was published.
The second list contains the improvements to the &ATLAS; of Finite Groups
that were found since the publication of&nbsp;<Cite Key="JLPW95"/>.
It can be found in the internet, an HTML version at

<P/>

<URL>http://web.mat.bham.ac.uk/atlas/html/atlasmods.html</URL>

<P/>

and a DVI version at

<P/>

<URL>http://web.mat.bham.ac.uk/atlas/html/atlasmods.dvi</URL>.

<!-- find better addresses, and update the lists -->

<P/>

The third list contains the improvements to the &ATLAS; of Brauer Characters,
HTML and PDF versions can be found in the internet at

<P/>

<URL>https://www.math.rwth-aachen.de/~MOC/ABCerr.html</URL>

<P/>

and

<P/>

<URL>https://www.math.rwth-aachen.de/~MOC/ABCerr.pdf</URL>,

<P/>

respectively.

<P/>

Also some tables are regarded as &ATLAS; tables that are
not printed in the &ATLAS; but available in &ATLAS; format,
according to the lists of improvements mentioned above.
Currently these are the tables related to <M>L_2(49)</M>, <M>L_2(81)</M>,
<M>L_6(2)</M>, <M>O_8^-(3)</M>, <M>O_8^+(3)</M>, <M>S_{10}(2)</M>,
and <M>{}^2E_6(2).3</M>.

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:Power Maps">
<Heading>Power Maps</Heading>

For the tables of <M>3.McL</M>, <M>3_2.U_4(3)</M> and its covers,
and <M>3_2.U_4(3).2_3</M> and its covers,
the power maps are not uniquely determined by the information
from the &ATLAS; but determined only up to matrix automorphisms
(see&nbsp;<Ref Func="MatrixAutomorphisms" BookName="ref"/>)
of the irreducible characters.
In these cases, the first possible map according to lexicographical
ordering was chosen, and the automorphisms are listed in the
<Ref Attr="InfoText" BookName="ref"/> strings of the tables.

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:Projective Characters and Projections">
<Heading>Projective Characters and Projections</Heading>

If <M>G</M> (or <M>G.a</M>) has a nontrivial Schur multiplier then the
attribute <Ref Func="ProjectivesInfo"/> of the &GAP; table object of <M>G</M>
(or <M>G.a</M>) is set;
the <C>chars</C> 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 <E>proxy character</E>),
and the <C>map</C> component lists the positions of columns in the covering
for which the column is printed in the &ATLAS;
(a so-called <E>proxy class</E>, this preimage is denoted by <M>g_0</M> in
Chapter&nbsp;7, Section&nbsp;14 of the &ATLAS;).

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:Tables of Isoclinic Groups">
<Heading>Tables of Isoclinic Groups</Heading>

As described in Chapter&nbsp;6, Section&nbsp;7 and
in Chapter&nbsp;7, Section&nbsp;18 of the &ATLAS;,
there exist two (often nonisomorphic) groups of structure
<M>2.G.2</M> for a simple group <M>G</M>, which are isoclinic.
The table in the &GAP; Character Table Library is the one printed in the
&ATLAS;,
the table of the isoclinic variant can be constructed using
<Ref Func="CharacterTableIsoclinic" BookName="ref"/>.

</Subsection>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsec:Ordering of Characters and Classes">
<Heading>Ordering of Characters and Classes</Heading>

(Throughout this section, <M>G</M> always means the simple group involved.)
<Enum>
<Item>
  For <M>G</M> itself, the ordering of classes and characters in the &GAP;
  table coincides with the one in the &ATLAS;.
</Item>
<Item>
  For an automorphic extension <M>G.a</M>,
  there are three types of characters.
  <List>
  <Item>
    If a character <M>\chi</M> of <M>G</M> extends to <M>G.a</M> then the
    different extensions <M>\chi^0, \chi^1, \ldots, \chi^{{a-1}}</M>
    are consecutive in the table of <M>G.a</M>
    (see <Cite Key="CCN85" Where="Chapter&nbsp;7, Section&nbsp;16"/>).
  </Item>
  <Item>
    If some characters of <M>G</M> fuse to give a single character of
    <M>G.a</M> then the position of that character in the table of <M>G.a</M>
    is given by the position of the first involved character of <M>G</M>.
  </Item>
  <Item>
    If both extension and fusion occur for a character
    then the resulting characters are consecutive in the table of <M>G.a</M>,
    and each replaces the first involved character of <M>G</M>.
  </Item>
  </List>
</Item>
<Item>
  Similarly, there are different types of classes for an automorphic
  extension <M>G.a</M>, as follows.
  <List>
  <Item>
    If some classes collapse then the resulting class replaces the first
    involved class of <M>G</M>.
  </Item>
  <Item>
    For <M>a &gt; 2</M>,
    any proxy class and its algebraic conjugates that are not
    printed in the &ATLAS; are consecutive in the table of <M>G.a</M>;
    if more than two classes of <M>G.a</M> have the same proxy class
    (the only case that actually occurs is for <M>a = 5</M>)
    then the ordering of non-printed classes is the natural one of
    corresponding Galois conjugacy operators <M>*k</M>
    (see <Cite Key="CCN85" Where="Chapter&nbsp;7, Section&nbsp;19"/>).
  </Item>
  <Item>
    For <M>a_1</M>, <M>a_2</M> dividing <M>a</M> such that <M>a_1 \leq a_2</M>,
    the classes of <M>G.a_1</M> in <M>G.a</M> precede the classes of
    <M>G.a_2</M> not contained in <M>G.a_1</M>.
    This ordering is the same as in the &ATLAS;,
    with the only exception <M>U_3(8).6</M>.
  </Item>
  </List>
</Item>
<Item>
  For a central extension <M>M.G</M>, there are two different types of
  characters, as follows.
  <List>
  <Item>
    Each character can be regarded as a faithful character of a factor group
    <M>m.G</M>, where <M>m</M> divides <M>M</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 <M>1, 2, 4, 3, 6, 12</M> for the different values of <M>m</M>.
  </Item>
  <Item>
    If <M>m &gt; 2</M>,
    a faithful character of <M>m.G</M> that is printed in the &ATLAS;
    (a so-called <E>proxy character</E>) 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>m = 12</M> 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 <M>*5</M>, <M>*7</M>,
    <M>*11</M>
    (in this order).
  </Item>
  </List>
</Item>
<Item>
  For the classes of a central extension we have the following.
  <List>
  <Item>
    The preimages of a <M>G</M>-class in <M>M.G</M> are subsequent,
    the ordering is the same as that of the lifting order rows in
    <Cite Key="CCN85" Where="Chapter&nbsp;7, Section&nbsp;7"/>.
  </Item>
  <Item>
    The primitive roots of unity chosen to represent the generating
    central element (i.&nbsp;e., the element in the second class of the &GAP;
    table) are  <C>E(3)</C>, <C>E(4)</C>,
    <C>E(6)^5</C> (<C>= E(2)*E(3)</C>),
    and <C>E(12)^7</C> (<C>= E(3)*E(4)</C>),
    for <M>m = 3</M>, <M>4</M>, <M>6</M>, and <M>12</M>, respectively.
  </Item>
  </List>
</Item>
<Item>
  For tables of bicyclic extensions <M>m.G.a</M>, both the rules for
  automorphic and central extensions hold.
  Additionally we have the following three rules.
  <List>
  <Item>
    Whenever classes of the subgroup <M>m.G</M> collapse in <M>m.G.a</M>
    then the resulting class replaces the first involved class.
  </Item>
  <Item>
    Whenever characters of the subgroup <M>m.G</M> collapse fuse in <M>m.G.a</M>
    then the result character replaces the first involved character.
  </Item>
  <Item>
    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.
  </Item>
  <Item>
    Preimages of a class of <M>G.a</M> in <M>m.G.a</M> are subsequent,
    and the preimages of a proxy class precede the preimages of non-printed
    classes with this proxy.
  </Item>
  </List>
</Item>
</Enum>

</Subsection>

<#Include Label="AtlasLabelsOfIrreducibles">


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsect:explsATLAS">
<Heading>Examples of the &ATLAS; Format for &GAP; Tables</Heading>

<Index>character tables!CAS</Index>
<Index>tables!library</Index>
<Index>library of character tables</Index>

We give three little examples for the conventions stated in
Section&nbsp;<Ref Sect="sec:ATLAS Tables"/>,
listing both the &ATLAS; format and the table displayed by &GAP;.

<P/>

First, let <M>G</M> be the trivial group.
We consider the cyclic group <M>C_6</M> of order <M>6</M>.
It can be viewed in several ways, namely
<List>
<Item>
  as a downward extension of the factor group <M>C_2</M> which contains
  <M>G</M> as a subgroup,
  or equivalently,
  as an upward extension of the subgroup <M>C_3</M> which has a factor group
  isomorphic to <M>G</M>:
</Item>
</List>

<Alt Only="LaTeX">
<![CDATA[
\setlength{\unitlength}{0.1cm}
\begin{picture}(110,67)
\put(8,36){
\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(50,65){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2in}
\baselineskip2.7ex
\parskip0ex

\ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \par
\ \par
\ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1\ \par
\ \ p\ power\ \ \ \ \ \ \ \ \ \ \ A\ \par
\ \ p'\ 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(99,65){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2.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}
]]>
</Alt>
<Alt Not="LaTeX">
<Listing>
┌───────┐ ┌───────┐       ;   @   ;   ;   @      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
│       │ │       │  χ_1  +   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
                     χ_2 o2   1   : oo2   1   X.6    1  /A   A  -1 -/A  -A

                                              A = E(3)
                                                = (-1+ER(-3))/2 = b3
</Listing>
</Alt>

<List>
<Mark></Mark>
<Item>
<C>X.1</C>, <C>X.2</C> extend  <M>\chi_1</M>.
<C>X.3</C>, <C>X.4</C> extend the proxy character <M>\chi_2</M>.
<C>X.5</C>, <C>X.6</C> extend the not printed character with proxy
<M>\chi_2</M>.
The classes <C>1a</C>, <C>3a</C>, <C>3b</C> are preimages of <C>1A</C>,
and <C>2a</C>, <C>6a</C>, <C>6b</C> are preimages of <C>2A</C>.
</Item>
</List>

<List>
<Item>
  as a downward extension of the factor group <M>C_3</M> which contains
  <M>G</M> as a subgroup,
  or equivalently,
  as an upward extension of the subgroup <M>C_2</M> which has a factor group
  isomorphic to <M>G</M>:
</Item>
</List>

<Alt Only="LaTeX">
<![CDATA[
\begin{picture}(110,67)
\put(8,36){
\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(50,65){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2in}
\baselineskip2.7ex
\parskip0ex

\ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @ \par
\ \par
\ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1 \par
\ \ p\ power\ \ \ \ \ \ \ \ \ \ \ A \par
\ \ p'\ 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(99,65){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2.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}
]]>
</Alt>
<Alt Not="LaTeX">
<Listing>
┌───────┐ ┌───────┐       ;   @   ;   ;   @      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
│       │ │       │  χ_1  +   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
                     χ_2  +   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
</Listing>
</Alt>

<List>
<Mark></Mark>
<Item>
<C>X.1</C> to <C>X.3</C> extend <M>\chi_1</M>,
<C>X.4</C> to <C>X.6</C> extend <M>\chi_2</M>.
The classes <C>1a</C> and <C>2a</C> are preimages of <C>1A</C>,
<C>3a</C> and <C>6a</C> are preimages of the proxy class <C>3A</C>,
and <C>3b</C> and <C>6b</C> are preimages of the not printed class
with proxy <C>3A</C>.
</Item>
</List>

<List>
<Item>
  as a downward extension of the factor groups <M>C_3</M> and <M>C_2</M> which
  have <M>G</M> as a factor group:
</Item>
</List>

<Alt Only="LaTeX">
<![CDATA[
\begin{picture}(110,120)
\put(8,58){
\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(50,117){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2in}
\baselineskip2.7ex
\parskip0ex

\ \ \ \ ;\ \ \ @ \par
\ \  \par
\ \ \ \ \ \ \ \ 1 \par
\ \ p\ power \par
\ \ p'\ 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(99,117){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2.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}
]]>
</Alt>
<Alt Not="LaTeX">
<Listing>
┌───────┐           ;   @        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
│       │      χ_1  +   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
│       │      χ_2  +   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  │      χ_3 o2   1
│       │
└───────┘         ind   1
                        6
                        3
                        2
                        3
                        6

               χ_4 o2   1
</Listing>
</Alt>

<List>
<Mark></Mark>
<Item>
<C>X.1</C>, <C>X.2</C> correspond to <M>\chi_1, \chi_2</M>, respectively;
<C>X.3</C>, <C>X.5</C> correspond to the proxies <M>\chi_3</M>,
<M>\chi_4</M>, and
<C>X.4</C>, <C>X.6</C> to the not printed characters with these proxies.
The factor fusion onto <M>3.G</M> is given by <C>[ 1, 2, 3, 1, 2, 3 ]</C>,
that onto <M>G.2</M> by <C>[ 1, 2, 1, 2, 1, 2 ]</C>.
</Item>
</List>

<List>
<Item>
  as an upward extension of the subgroups <M>C_3</M> or <M>C_2</M> which both
  contain a subgroup isomorphic to <M>G</M>:
</Item>
</List>

<Alt Only="LaTeX">
<![CDATA[
\begin{picture}(110,65)
\put(8,49){
\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(8,41){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{4in}
\baselineskip2.7ex
\parskip0ex

\ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \ \ ;\ \ \ \ \ ;\ \ \ @\ \par
\ \par
\ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \par
\ \ p\ power\ \ \ \ \ \ \ \ \ \ \ A\ \ \ \ \ \ \ \ \ \ \ A\ \ \ \ \ \ \ \ \ \ \ \ AA\ \par
\ \ p'\ 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(103,63){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2.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}
]]>
</Alt>
<Alt Not="LaTeX">
<Listing>
┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐
│       │ │       │ │       │ │       │
│   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

χ_1  +   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
</Listing>
</Alt>

<List>
<Mark></Mark>
<Item>
The classes <C>1a</C>, <C>2a</C> correspond to <M>1A</M>, <M>2A</M>,
respectively.
<C>3a</C>, <C>6a</C> correspond to the proxies <M>3A</M>, <M>6A</M>,
and <C>3b</C>, <C>6b</C> to the not printed classes with these proxies.
</Item>
</List>

<P/>

The second example explains the fusion case.
Again, <M>G</M> is the trivial group.

<P/>

<Alt Only="LaTeX">
<![CDATA[
\setlength{\unitlength}{0.1cm}
\begin{picture}(110,125)
\put(0,63){
\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(44,122){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2in}
\baselineskip2.7ex
\parskip0ex

\ \ \ \ ;\ \ \ @\ \ \ ;\ \ \ ;\ \ @\ \par
\ \ \ \par
\ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ 1\ \par
\ \ p\ power\ \ \ \ \ \ \ \ \ \ A\ \par
\ \ p'\ 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(95,122){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{2.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}
]]>
</Alt>
<Alt Not="LaTeX">
<Listing>
┌───────┐ ┌───────┐        ;   @   ;   ;  @      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
│       │ │       │   χ_1  +   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
│       │ │           χ_2  +   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     χ_3 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
                      χ_4 o2   1   *   +         Y.4    1 -1  1 -1 -1  1
                                                 Y.5    2 -1 -1  2  .  .
                                                 Y.6    2  1 -1 -2  .  .
</Listing>
</Alt>

<P/>

The tables of <M>G</M>, <M>2.G</M>, <M>3.G</M>, <M>6.G</M> and <M>G.2</M>
are known from the first
example, that of <M>2.G.2</M> will be given in the next one.
So here we print only the &GAP; tables of <M>3.G.2 \cong D_6</M> and
<M>6.G.2 \cong D_{12}</M>.

<P/>

In <M>3.G.2</M>, the characters <C>X.1</C>, <C>X.2</C> extend <M>\chi_1</M>;
<M>\chi_3</M> and its non-printed partner fuse to give <C>X.3</C>,
and the two preimages of <C>1A</C> of order <M>3</M> collapse.

<P/>

In  <M>6.G.2</M>,  <C>Y.1</C> to <C>Y.4</C> are extensions of <M>\chi_1</M>,
<M>\chi_2</M>,
so these characters are the inflated characters from <M>2.G.2</M>
(with respect to the factor fusion <C>[ 1, 2, 1, 2, 3, 4 ]</C>).
<C>Y.5</C> is inflated from <M>3.G.2</M>
(with respect to the factor fusion <C>[ 1, 2, 2, 1, 3, 3 ]</C>),
and <C>Y.6</C> is the result of the fusion of <M>\chi_4</M> and its
non-printed partner.

<P/>

For the last example, let <M>G</M> be the elementary abelian group <M>2^2</M>
of order <M>4</M>.
Consider the following tables.

<P/>

<Alt Only="LaTeX">
<![CDATA[
\begin{picture}(110,175)
\put(0,143){
\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(84.9,116.8){\line(0,1){16.4}}  % fusion sign in picture

\put(39,172){\makebox(0,0)[tl]{
\small\tt
\begin{minipage}{3in}
\baselineskip2.7ex
\parskip0ex

\ \ \ \ ;\ \ \ @\ \ \ @\ \ \ @\ \ \ @\ \ \ ;\ \ \ ;\ \ \ @\ \par
\ \par
\ \ \ \ \ \ \ \ 4\ \ \ 4\ \ \ 4\ \ \ 4\ \ \ \ \ \ \ \ \ \ \ 1\ \par
\ \ p\ power\ \ \ A\ \ \ A\ \ \ A\ \ \ \ \ \ \ \ \ \ \ A\ \par
\ \ p'\ 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(107,172){\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,81){\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(70,81){\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}
]]>
</Alt>
<Alt Not="LaTeX">
<Listing>
┌───────┐ ┌───────┐          ;   @   @   @   @   ;   ;   @
│       │ │       │              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
┌───────┐ ┌───────┐
│       │ │       │     χ_1  +   1   1   1   1   : +oo   1
│  2.G  │ │ 2.G.3 │     χ_2  +   1   1  ─1  ─1   .   +   0
│       │ │       │     χ_3  +   1  ─1   1  ─1   |
└───────┘ └───────┘     χ_4  +   1  ─1  ─1   1   |

                           ind   1   4   4   4 fus ind   3
                                 2                       6

                        χ_5  -   2   0   0   0   : -oo   1

  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         2.G.3
  X.4    3  -1   .   .
                                  2   3   3   2   1   1   1   1
  A = E(3)                        3   1   1   .   1   1   1   1
    = (-1+ER(-3))/2 = b3
                                     1a  2a  4a  3a  6a  3b  6b
  2.G                            2P  1a  1a  2a  3b  3b  3a  3a
                                 3P  1a  2a  4a  1a  2a  1a  2a
     2   3   3   2   2   2
                               X.1    1   1   1   1   1   1   1
        1a  2a  4a  4b  4c     X.2    1   1   1   A   A  /A  /A
    2P  1a  1a  2a  1a  1a     X.3    1   1   1  /A  /A   A   A
    3P  1a  2a  4a  4b  4c     X.4    3   3  -1   .   .   .   .
                               X.5    2  -2   .   1   1   1   1
  X.1    1   1   1   1   1     X.6    2  -2   .   A  -A  /A -/A
  X.2    1   1   1  -1  -1     X.7    2  -2   .  /A -/A   A  -A
  X.3    1   1  -1   1  -1
  X.4    1   1  -1  -1   1     A = E(3)
  X.5    2  -2   .   .   .       = (-1+ER(-3))/2 = b3
</Listing>
</Alt>

<P/>

In the table of <M>G.3 \cong A_4</M>, the characters <M>\chi_2</M>,
<M>\chi_3</M>, and <M>\chi_4</M> fuse,
and the classes <C>2A</C>, <C>2B</C>  and <C>2C</C> collapse.
For getting the table of <M>2.G \cong Q_8</M>,
one just has to split the class <C>2A</C> and adjust the representative
orders.
Finally, the table of <M>2.G.3 \cong SL_2(3)</M> is given;
the class fusion corresponding to the injection
<M>2.G \hookrightarrow 2.G.3</M>
is <C>[ 1, 2, 3, 3, 3 ]</C>, and the factor fusion corresponding to the
epimorphism <M>2.G.3 \rightarrow G.3</M> is <C>[ 1, 1, 2, 3, 3, 4, 4 ]</C>.

</Subsection>

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:CAS Tables">
<Heading>&CAS; Tables</Heading>

<Index Subkey="CAS">character tables</Index>
<Index Subkey="library">tables</Index>
<Index>library of character tables</Index>

One of the predecessors of &GAP; was
&CAS; (<E>C</E>haracter <E>A</E>lgorithm <E>S</E>ystem,
see&nbsp;<Cite Key="NPP84"/>),
which had also a library of character tables.
All these character tables are available in &GAP;
except if stated otherwise in the file <F>doc/ctbldiff.pdf</F>.
This sublibrary has been completely revised before it was included in &GAP;,
for example, errors have been corrected and power maps have been completed.

<P/>

Any &CAS; table is accessible by each of its &CAS; names
(except if stated otherwise in <F>doc/ctbldiff.pdf</F>), that is,
the table name or the filename used in &CAS;.

<P/>

<#Include Label="CASInfo">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:customize">
<Heading>Customizations of the &GAP; Character Table Library</Heading>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="subsect:install">
<Heading>Installing the &GAP; Character Table Library</Heading>

To install the package unpack the archive file in a
directory in the <F>pkg</F> directory of your local copy of &GAP;&nbsp;4.
This might be the <F>pkg</F> directory of the &GAP;&nbsp;4 home directory,
see Section&nbsp;<Ref Sect="Installing a GAP Package" BookName="ref"/>
for details.
It is however also possible to keep an additional <F>pkg</F> directory
in your private directories,
see&nbsp;<Ref Sect="GAP Root Directories" BookName="ref"/>.
The latter possibility <E>must</E> be chosen if you do not have write access
to the &GAP; root directory.

<P/>

The package consists entirely of &GAP; code,
no external binaries need to be compiled.

<P/>

<#Include Label="testinst">

<P/>

PDF and HTML versions of the package manual are available
in the <F>doc</F> directory of the package.

</Subsection>

<#Include Label="UnloadCTblLibFiles">
<#Include Label="DisplayFunction">
<#Include Label="MagmaPath">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:technicalities">
<Heading>Technicalities of the Access to Character Tables from the Library
</Heading>

<#Include Label="organization">

<#Include Label="LIBLIST">

<#Include Label="LibInfoCharacterTable">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:extending">
<Heading>How to Extend the &GAP; Character Table Library</Heading>

<Index>library tables!add</Index>
<Index>tables!add to the library</Index>

&GAP; users may want to extend the character table library in different
respects.

<P/>

<List>
<Item>
  Probably the easiest change is to <E>add new admissible names</E>
  to library tables, in order to use these names in calls of
  <Ref Meth="CharacterTable" Label="for a string"/>.
  This can be done using <Ref Func="NotifyNameOfCharacterTable"/>.
</Item>
<Item>
  The next kind of changes is the <E>addition of new fusions</E>
  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
  <Ref Func="LibraryFusion"/>.
</Item>
<Item>
  The last kind of changes is the <E>addition of new character tables</E>
  to the &GAP; character table library.
  Data files containing tables in library format
  (i.&nbsp;e., in the form of calls to <C>MOT</C> or <C>MBT</C>)
  can be produced using <Ref Func="PrintToLib"/>.
  <P/>
  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
  <Ref Meth="CharacterTable" Label="for a string"/>,
  you must notify this table, i.&nbsp;e., tell &GAP; in which file it can be
  found,
  and which names shall be admissible for it.
  This can be done using <Ref Func="NotifyCharacterTable"/>.
</Item>
</List>

<#Include Label="NotifyNameOfCharacterTable">

<#Include Label="LibraryFusion">
<#Include Label="LibraryFusionTblToTom">

<#Include Label="PrintToLib">

<#Include Label="NotifyCharacterTable">

<#Include Label="NotifyCharacterTables">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:CTblLib Sanity Checks">
<Heading>Sanity Checks for the &GAP; Character Table Library</Heading>

<#Include Label="tests">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sec:CTblLib Maintenance">
<Heading>Maintenance of the &GAP; Character Table Library</Heading>

It is of course desirable that the information in the
&GAP; Character Table Library is consistent with related data.
For example, the ordering of the classes of maximal subgroups stored in
the <Ref Attr="Maxes"/> list of the character table of a group <M>G</M>, say,
should correspond to the ordering shown for <M>G</M> in the
&ATLAS; of Finite Groups <Cite Key="CCN85"/>,
to the ordering of maximal subgroups used for <M>G</M> in the
<Package>AtlasRep</Package>,
and to the ordering of maximal subgroups in the table of marks of <M>G</M>.
The fact that the related data collections are developed independently
makes it difficult to achieve this kind of consistency.
Sometimes it is unavoidable to <Q>adjust</Q> data of the
&GAP; Character Table Library to external data.

<P/>

An important issue is the consistency of class fusions.
Usually such fusions are determined only up to table automorphisms,
and one candidate can be chosen.
However, other conditions such as known Brauer tables may restrict the
choice.
The point is that there are class fusions which predate the availability of
Brauer tables in the Character Table Library (in fact many of them have been
inherited from the table library of the <Package>CAS</Package> system),
but they are not compatible with the Brauer tables.
For example, there are four possible class fusion from <M>M_{23}</M> into
<M>Co_3</M>,
which lie in one orbit under the relevant groups of table automorphisms;
two of these maps are not compatible with the <M>3</M>-modular Brauer tables
of <M>M_{23}</M> and <M>Co_3</M>, and unfortunately the class fusion that was
stored on the <Package>CAS</Package> tables
&ndash;and that was available in version 1.0 of the &GAP;
Character Table Library&ndash; was one of the <E>not</E> compatible maps.
One could argue that the class fusion has older rights,
and that the Brauer tables should be adjusted to them, but the Brauer tables
are published in the &ATLAS; of Brauer Characters <Cite Key="JLPW95"/>,
which is an accepted standard.

</Section>

</Chapter>

