1 Introduction to the GAP Character Table Library The usefulness of GAP for character theoretic tasks depends on the availability of many known character tables, and there are a lot of character tables in the GAP table library. Of course, this library is open in the sense that it shall be extended. So we would be grateful for any further tables of interest sent to us for inclusion into our library. Please offer interesting new character tables via e-mail to mailto:sam@math.rwth-aachen.de. It depends on your GAP installation whether the character table library is available. You can check this as follows.  Example  gap> InstalledPackageVersion( "ctbllib" ) <> fail; true  If the result is false then the library is not installed, and you may ask your system administrator for installing it, or install the library in your home directory, see Section 4.5-1. For general information about character tables in GAP, see Chapter 'Reference: Character Tables'. Examples of character theoretic computations involving the GAP Character Table Library are part of the package. They are dealing with the following aspects.  Maintenance issues concerning the GAP Character Table Library 'CTblLibXpls: Maintenance Issues for the GAP Character Table Library'.  Constructions of character tables using table automorphisms, see 'CTblLibXpls: Using Table Automorphisms for Constructing Character Tables in GAP'.  Computations of common central extensions, see 'CTblLibXpls: Constructing Character Tables of Central Extensions in GAP'.  Hamiltonian cycles in the generating graphs of finite groups, see 'CTblLibXpls: GAP Computations Concerning Hamiltonian Cycles in the Generating Graphs of Finite Groups'.  A question about the group PSO^+(8,5).S_3, see 'CTblLibXpls: GAP Computations with O_8^+(5).S_3 and O_8^+(2).S_3'.  Solvable subgroups of maximal order in sporadic simple groups 'CTblLibXpls: Solvable Subgroups of Maximal Order in Sporadic Simple Groups'.  Large Nilpotent Subgroups of sporadic simple groups 'CTblLibXpls: Large Nilpotent Subgroups of Sporadic Simple Groups'.  Computations of possible permutation characters, see 'CTblLibXpls: Permutation Characters in GAP'.  Ambiguous class fusions, see 'CTblLibXpls: Ambiguous Class Fusions in the GAP Character Table Library'.  Some computations concerning the classification of groups with the property that all complex irreducible characters of the same degree are Galois conjugate (together with Klaus Lux), see 'CTblLibXpls: GAP computations needed in the proof of [DNT13, Theorem 6.1 (ii)]'.  Probabilistic generation of finite simple groups, see [Bree] or an updated version at 'CTblLibXpls: GAP Computations Concerning Probabilistic Generation of Finite Simple Groups'.  Ordinary character tables, Brauer tables, and decomposition matrices, see doc/ctbldeco.pdf ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/doc/ctbldeco.pdf ) and htm/ctbldeco.htm ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/ctbldeco.htm ).  Multiplicity-free permutation characters of the sporadic simple groups and their automorphism groups, see doc/multfree.pdf ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/doc/multfree.pdf ) and htm/multfree.htm ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/multfree.htm ).  Multiplicity-free permutation characters of central extensions of the sporadic simple groups, and their automorphic extensions (together with Jürgen Müller), see doc/multfre2.pdf ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/doc/multfre2.pdf ) and htm/multfre2.htm ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/multfre2.htm ).  The construction of some character tables of Atlas groups, using character theoretic methods, see [Brec] or an updated version at doc/ctblatlas.pdf ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/doc/ctblatlas.pdf ) and htm/ctblatlas.htm ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/ctblatlas.htm ).  The verification of the character table of the Baby Monster group, see [BMW20] or an updated version at doc/ctblbm.pdf (http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/doc/ctblbm.pdf) and htm/ctblbm.htm ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/htm/ctblbm.htm). If you use the GAP Character Table Library to solve a problem then please send a short e-mail to mailto:sam@math.rwth-aachen.de about it. The GAP Character Table Library database should be referenced as follows.  @misc{ CTblLib1.3.4,  author = {Breuer, T.},  title = {The \textsf{GAP} {C}haracter {T}able {L}ibrary,  {V}ersion 1.3.4},  month = {April},  year = {2022},  note = {\textsf{GAP} package},  howpublished = {http://www.math.rwth-aachen.de/\~{}Thomas.Breuer/ctbllib} }  For referencing the GAP system in general, use the entry [GAP21] in the bibliography of this manual, see also http://www.gap-system.org. 1.1 History of the GAP Character Table Library The first version of the GAP Character Table Library was released with GAP 3.1 in March 1992. It was the first aim of this library to continue the character table library of the CAS system (see [NPP84]) in GAP, as a part of the process of reimplementing the algorithms of CAS in GAP, see 'Reference: History of Character Theory Stuff in GAP'. GAP 3.1 provided only very restricted methods for computing character tables from groups, so its character theory part was concerned mainly with library tables. A second aspect of the character table library was to make all character tables shown in the Atlas of Finite Groups [CCN+85] available in GAP. In fact GAP turned out to provide a very good environment for systematic checks of these character tables. To some extent, the access to the (ordinary) character tables in [CCN+85] was a prerequisite for storing also the corresponding Brauer character tables in the GAP Character Table Library. Already GAP 3.1 contained many of these tables. They have been computed mainly outside of GAP, using the methods described in [HJLP], and part of the library has been published in the Atlas of Brauer Characters [JLPW95]. One of the roles of GAP was again to perform systematic checks. Besides these projects, many individual character tables have been added to the GAP Character Table Library since the times of GAP 3.1. They were computed from groups or with character theoretic methods or using a combination of these two possibilities (see, e. g., [NPP84] and [LP91]). Section 4.1 lists some of the sources. The changes in the GAP Character Table Library since the release of GAP 4.1 (in July 1999) are individually documented in the file doc/ctbldiff.pdf (http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/doc/ctbldiff.pdf) of the package. Currently the main focus in the development of the GAP Character Table Library is –besides the addition of tables that appear to be interesting– the better interaction with other databases, such as the Atlas of Group Representations and the GAP Library of Tables of Marks (see the GAP packages AtlasRep and TomLib) and GAP's group libraries, and an improvement of the database aspect of the character table library itself, see the sections 3.1 and 3.5. Until the release of GAP 4.3 in spring 2002, the GAP Character Table Library had been a part of the main GAP library. With GAP 4.3, it was split off as a GAP package. 1.2 What's New in CTblLib, Compared to Older Versions? The PDF file doc/ctbldiff.pdf of the package lists the important changes to the data since October 1996, mainly related to the relevant simple groups. A perhaps more suitable overview of these changes is given by the GAP readable file data/ctbldiff.json, which contains a complete overview of all changes, including the additions of class fusions. (Note that each added or changed fusion is mentioned twice in this list, once for the from table and once for the to table.) This list of changes can be shown and evaluated using BrowseCTblLibDifferences (3.5-4) if the Browse package (see [BL18]) is available. 1.2-1 What's New in Version 1.3.4? (April 2022) The release of Version 1.3.4 was necessary for technical reasons: Now the testfile mentioned in PackageInfo.g exits GAP in the end. 1.2-2 What's New in Version 1.3.3? (January 2022) The reason for this release was the addition of the new example section 'CTblLibXpls: Generation of sporadic simple groups by π- and π'-subgroups (December 2021)', which requires the new data file data/prim_perm_M.json. (The data had already been used before in the example section 'CTblLibXpls: The Monster', which has now been changed accordingly.) The database attribute IsQuasisimple has been added, which describes perfect central extensions of nonabelian simple groups. It can be used for example to select the character tables of quasisimple groups with AllCharacterTableNames (3.1-4). Thanks to Gunter Malle for suggesting this addition. No new character tables have been added, and there are only a few new class fusions, admissible names, and group constructions. 1.2-3 What's New in Version 1.3.2? (March 2021) The main new features of this release are technical.  The initialization of the database (at the time when the package gets loaded) has been changed. Instead of executing GAP code in the formerly available (huge) file data/ctprimar.tbl, now one calls a few short GAP functions, in the new file gap4/ctprimar.g, which evaluate JSON format files. This was one more step on the way to make the database independent of GAP.  Also the files with the precomputed attribute values are now in JSON format, since now the Browse supports this format.  The WWW table of contents ( http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/ctbltoc/index.html ) of the package has been updated in the sense that it shows the same as the functions DisplayCTblLibInfo (3.5-1) and BrowseCTblLibInfo (3.5-2); at the same time, these functions have been extended in order to link each table to its main table and to its duplicates. The code for creating the HTML files is now distributed with the package, in the ctbltoc directory.  The mechanism for processing the package documentation (which contains two GAPDoc books) has been changed to a more standard way. Now it is enough to process one GAP input file in the package directory. In several InfoText (3.7-5) values of character tables, information about group constructions has been added; where possible, these constructions are now also available via GroupInfoForCharacterTable (3.3-1); for example, this function now supports also the construction of a group as the automorphism group of a simple group. (Thanks to Gunter Malle for ideas and discussions about this feature.) The function BrowseAtlasImprovements (3.5-10) can now show (also) the improvements for the Atlas of Brauer Characters [JLPW95]. The strings "L2(49)" and "L2(81)" are now valid inputs for DisplayAtlasMap (3.5-8) and BrowseAtlasTable (3.5-9), and DisplayAtlasContents (3.5-6) and BrowseAtlasContents (3.5-5) now show information about these two and "L6(2)" and "S10(2)". Besides these changes, a few new tables and class fusions have been added. A few new examples of applications have been added, see the sections 2.3-10, 'CTblLibXpls: The Character Table of 4.L_2(49).2_3 (December 2020)', 'CTblLibXpls: The Character Table of 4.L_2(81).2_3 (December 2020)'. 1.2-4 What's New in Version 1.3.1? (April 2020) This release was motivated by small technical changes: A few typos were fixed, an acknowledgement was added, the directory name of the package now contains the version number (in order not to overwrite older versions), and the process to generate the package documentation was made independent of other packages. Besides that, the function CharacterTableComputedByMagma (6.5-3) was made more robust. In particular, the data part of the package was not changed at all. 1.2-5 What's New in Version 1.3.0? (December 2019) We distinguish bug fixes, new features, new character table data, new data of other kind, and changed documentation. The following bugs were fixed.  The 2-modular Brauer table of the character table with the identifier "3.(2x2^(1+8)):(U4(2):2x2)" was wrong, due to an error in the GAP function that constructs this Brauer table from the known Brauer table of U_4(2).2; this was the only case in the library that was affected by this bug. (Thanks to Jürgen Müller who pointed out this error.)  The 2-power map of the character table with the identifier "2.F4(2).2" was wrong, see Section 'CTblLibXpls: An Error in a Power Map of the Character Table of 2.F_4(2).2 (November 2015)'. (This error has been found in the context of the computations that are described in [BMO17].)  The character table of E_6(2) was wrong w. r. t. some irrational character values and power maps on the classes of element order 91, see Section 'CTblLibXpls: An Error in the Character Table of E_6(2) (March 2016)'. (Thanks to Bill Unger who pointed out this error.)  Character tables with construction info ConstructAdjusted (5.8-12) had immutable ComputedPowerMaps (Reference: ComputedPowerMaps) values, which made it impossible to add more power maps. (Thanks to Fabian Gundlach who pointed out this error.) The following features have been added.  The functions AllCharacterTableNames (3.1-4), OneCharacterTableName (3.1-5), and BrowseCTblLibInfo (3.5-2) support now the global option OrderedBy.  The operation BrauerTable (3.1-3) now admits also a string as its first argument, and then delegates to the ordinary character table with this name.  The operation BrauerTable (3.1-3) is now successful also if the ordinary character table in question has the attribute ConstructionInfoCharacterTable (3.7-4) set and the first entry of the attribute value is the string "ConstructGS3" and the Brauer tables for the character tables involved in the construction are available, see Section 'CTblLibXpls: Examples for the Type G.S_3'.  The function CambridgeMaps (6.4-1) has been improved in the sense that relative class names such as "B*2" occur whenever this is possible, where the element order does not appear in the class name, and a Galois automorphism describes the relation to another class. (The character table with identifier "L2(13)" is an example for which the result is now different.)  The function ConstructIsoclinic (5.8-10) has been extended, according to the extended functionality of CharacterTableIsoclinic (Reference: CharacterTableIsoclinic). For examples, see the sections 'CTblLibXpls: Groups of the Structures 3.U_3(8).3_1 and 3.U_3(8).6 (February 2017)' and 'CTblLibXpls: The Character Table of 9.U_3(8).3_3 (March 2017)'.  There is now a default InfoText (3.7-5) method for library character tables, which returns an empty string. This admits searches for properties of the info text via AllCharacterTableNames (3.1-4). Similarly, also properties of Identifier (Reference: Identifier for character tables) can now be searched efficiently, see AllCharacterTableNames (3.1-4) for examples.  With the user preference DisplayFunction of the AtlasRep package (see Section 4.5-3), one can configure how functions like DisplayCTblLibInfo (3.5-1) place their output on the screen. (Up to now, the function Pager (Reference: Pager) had always been called.)  The definition of duplicate tables has been extended in order to get a better integration of the SpinSym package, see Section 3.6.  A new variant of the function GAPTableOfMagmaFile (6.5-2) admits entering a MAGMA format string instead of the name of a file that contains this string.  The new function CharacterTableComputedByMagma (6.5-3) uses the MAGMA system (if this is available) for computing the character table of a permutation group.  The new function NotifyCharacterTables (4.7-6) is more efficient than NotifyCharacterTable (4.7-5) if one wants to add several private character tables at the same time.  In the tables of maximal subgroups and Sylow p normalizers shown by DisplayCTblLibInfo (3.5-1) and BrowseCTblLibInfo (3.5-2), the former Name column has been replaced by two columns Structure (which tries to show information about the structures of the groups, using StructureDescriptionCharacterTableName (7.2-1)) and Name (which just shows the identifiers of the character tables). This improvement arose from a discussion with Gabriel Navarro.  The former GAP readable text file data/ctbldiff.dat has been replaced by the (still GAP readable) JSON format file data/ctbldiff.json. (It is planned for future releases to replace more data files by JSON format files, in order to make the data independent of GAP.)  Two filenames of the package have been changed, from ctadmin.tbd and ctadmin.tbi to ctadmin.gd and ctadmin.gi, respectively. Concerning added character table data, the full list of differences w. r. t. earlier versions can be found in the file data/ctbldiff.json of the package; see BrowseCTblLibDifferences (3.5-4) for a way to utilize this list in a GAP session. The following other data have been added.  GroupInfoForCharacterTable (3.3-1) works now for more character tables than before. In particular there are representations for all Atlas groups (bicyclic extensions of simple groups whose character tables are shown in the Atlas of Finite Groups [CCN+85], up to isoclinism), except the groups 2.B and M; several of these representations were computed in the context of the computations that are described in [BMO17]. Also the library tables of groups that occur in GAP's library of primitive groups (the GAP package PrimGrp) know about this fact; note that older versions of PrimGrp contained only groups of degree at most 2499. See Section 'CTblLibXpls: Some finite factor groups of perfect space groups (February 2014)' for some other representations that are now available. Finally, the documentation was changed as follows.  Several of the files showing examples of character theoretic computations with GAP have been turned into the GAPDoc book CTblLibXpls, see above. Some advantages of this new setup are that the contents can be accessed also in GAP's interactive help, and that cross-referencing is simpler. 1.2-6 What's New in Version 1.2.2? (March 2013) The following bugs were fixed.  The functions AllCharacterTableNames (3.1-4) and OneCharacterTableName (3.1-5) ran into an error in certain situations, if the library had been extended by private tables, see Section 4.7. (As a consequence, the description of IsDuplicateTable (3.6-1) has been extended.) Thanks to Alexander Konovalov and Lukas Maas for pointing out this error.  The function CharacterTableOfIndexTwoSubdirectProduct (5.5-1) returned a wrong result if the two factors were given by the same character table. An example is (A_5 × A_5).2, created as a subdirect product of two copies of S_5. 1.2-7 What's New in Version 1.2.0 and 1.2.1? (May 2012) Concerning character table data, we have the following.  A few bugs in character tables have been fixed.  Several class fusions stored in character tables have been changed, in order to be more consistent with related data, see Section 4.9 for reasons of such changes.  Many new character tables have been added. For example, a character table is available for each table of marks in the TomLib package. Besides these changes of the data, the following features are new.  A tutorial for beginners was added to the package manual, see Chapter 2, and the package manual was restructured. The manual is now based on the GAPDoc package (see [LN18]).  Generic constructions of Brauer tables are now available if the underlying ordinary table is encoded via ConstructMGA (5.8-1), ConstructIndexTwoSubdirectProduct (5.5-2), or ConstructV4G (5.8-4), and if the Brauer tables of the compound tables are known.  The attributes FusionToTom (3.2-4) and Maxes (3.7-1) are no longer set in duplicate tables. This can be regarded as a bugfix, in the following sense. For the sake of consistency, it would in general be necessary to apply a permutation to the fusion into the table of marks, and to add the class fusions from the tables of the maximal subgroups to the duplicate table.  The consistency checks for character tables have been improved and are now documented, see Section 4.8. Due to these checks, several class fusions had to be replaced.  The concept of duplicate character tables is now documented, see Section 3.6. As a consequence, the behaviour of AllCharacterTableNames (3.1-4) has changed in situations where IsSimple (Reference: IsSimple for a character table) or IsSporadicSimple (Reference: IsSporadicSimple for a character table) occur as arguments (see 'Reference: Group Operations Applicable to Character Tables'), as follows. In earlier versions of the package, duplicate tables had automatically been excluded. From now on, duplicates can be excluded if one wants so, but they are not automatically excluded. This change may be regarded as a bugfix.  Several attribute values for character tables, such as Size (Reference: Size) and NrConjugacyClasses (Reference: NrConjugacyClasses) are now available without reading the character table data files, provided that the Browse package (see [BL18]) has been loaded. See the documentation of AllCharacterTableNames (3.1-4) for details; this function is much faster if only these attributes appear in the conditions given. Thus it is now more reasonable to use this function for searches in the table library.  GAP's group libraries provide many groups for which the Character Table Library contains the character tables. Given a character table from the library, one can list and access available groups with the functions described in Section 3.3, provided that the Browse package (see [BL18]) has been loaded.  An interactive overview of the contents is now available that is based on the Browse package [BL18], see Section 3.5.  Information about Deligne-Lusztig names of unipotent characters of finite groups of Lie type is now available, see Section 3.4.  An interface for reading MAGMA tables was added, see Section 6.5. 1.2-8 What's New in Version 1.1? (November 2003) First of all, of course several character tables were added; for an overview, see the file doc/ctbldiff.pdf in the home directory of the package. Also lots of class fusions were added. This includes factor fusions onto the tables of the factor groups modulo the largest normal p-subgroups whenever the tables of the factors are available; these maps admit the automatic construction of the p-modular Brauer tables if the corresponding tables of the factors are available. For example, the 2-modular Brauer table of the maximal subgroup of the type 2^10:M_22 in the group Fi_22 is available because of the known 2-modular table of M_22 and the stored factor fusion onto the table of M_22. Second, more information has been made more explicit, in the following sense.  Identifier (Reference: Identifier for character tables) values of tables that are constructed from generic tables are now valid arguments of CharacterTable (Reference: CharacterTable), for example CharacterTable( "C10" ) and CharacterTable( "Sym(5)" ) can be used to create the character table of the cyclic group of order 10 and of the symmetric group of degree 5, respectively.  Attributes have been introduced that replace more or less hidden components (see Section 3.7); in particular, the way how many ordinary tables are encoded via the construction from other tables is no longer encapsulated in a function call but instead the name of the function and the arguments are stored as an attribute value (see ConstructionInfoCharacterTable (3.7-4)).  The functions that are used for the table constructions have been documented (see Chapter 5).  Several consistency checks are now part of the package distribution, in the files gap4/test.gd and gap4/test.gi. However, currently they are not documented. The new file tst/testall.g lists the files that belong to the standard test suite. Further checks involving the GAP Character Table Library are parts of the GAP packages AtlasRep (see [WPN+19]) and TomLib.  As a part of the consistency checks, class fusions between character tables and from character tables into corresponding tables of marks have been recomputed, and the text components have been standardized; this means that the texts express whether the maps are unique, unique up to table automorphisms, or ambiguous. However, currently this is not documented.  One can now avoid unloading the contents of data files, which can speed up computations involving many library tables. (In version 1.1, the function CTblLibSetUnload had been provided for that. Since version 1.2, a GAP 4.5 user preference replaces this function.) Third, several errors have been corrected (again see doc/ctbldiff.pdf). Most of them affect class fusions, and for most of those, the term error could be regarded as not really appropriate. See 4.9 for details. Finally, the GAP functions for reading and writing other formats of character tables have been moved from the main GAP library to this package (see Chapter 6), because they are useful only for library tables. The GAP 3 format is now also supported, mainly for documentation purposes (see Section 6.3). 1.3 Acknowledgements The development of the GAP Character Table Library has been supported by several DFG grants, in particular the project Representation Theory of Finite Groups and Finite Dimensional Algebras (until 1991), the Schwerpunkt Algorithmische Zahlentheorie und Algebra (from 1991 until 1997), and the SFB-TRR 195 Symbolic Tools in Mathematics and their Applications (https://www.computeralgebra.de/sfb/) (Project-ID 286237555, since 2017). The functions for the conversion of CAS tables to GAP format have been written by Götz Pfeiffer. The functions for converting the so-called Cambridge format (in which the original data of the Atlas of Finite Groups had been stored) to GAP format have been written by Christoph Jansen. The generic character tables of double covers of alternating and symmetric groups were contributed by Felix Noeske, see [Noe02]. The functions in Section 3.4 (DeligneLusztigName (3.4-3), DeligneLusztigNames (3.4-2), and UnipotentCharacter (3.4-1)) as well as the corresponding data for the finite groups of Lie type in the GAP Character Table Library have been contributed by Michael Claßen-Houben, see [CH05]. Several character tables of maximal subgroups of covering groups of simple groups have been computed by Sebastian Dany, see [Dan06]. Thanks to Frank Lübeck and Max Neunhöffer for their help with solving technical problems concerning the HMTL part of the example files that belong to the package documentation, and to Ian Hutchinson whose TeX to HTML translator TtH was used to provide these HTML files. Thanks to Frank Lübeck and Max Neunhöffer also for developing the GAPDoc package (see [LN18]), on which the manual of the CTblLib package is based. The previously available documentation format had been completely inappropriate.