1 Introduction to the **GAP** Character Table Library

1.2 What's New in **CTblLib**,
Compared to Older Versions?

1.2-1 What's New in Version 1.3.6? (May 2023)

1.2-2 What's New in Version 1.3.5? (March 2023)

1.2-3 What's New in Version 1.3.4? (April 2022)

1.2-4 What's New in Version 1.3.3? (January 2022)

1.2-5 What's New in Version 1.3.2? (March 2021)

1.2-6 What's New in Version 1.3.1? (April 2020)

1.2-7 What's New in Version 1.3.0? (December 2019)

1.2-8 What's New in Version 1.2.2? (March 2013)

1.2-9 What's New in Version 1.2.0 and 1.2.1? (May 2012)

1.2-10 What's New in Version 1.1? (November 2003)

1.2-1 What's New in Version 1.3.6? (May 2023)

1.2-2 What's New in Version 1.3.5? (March 2023)

1.2-3 What's New in Version 1.3.4? (April 2022)

1.2-4 What's New in Version 1.3.3? (January 2022)

1.2-5 What's New in Version 1.3.2? (March 2021)

1.2-6 What's New in Version 1.3.1? (April 2020)

1.2-7 What's New in Version 1.3.0? (December 2019)

1.2-8 What's New in Version 1.2.2? (March 2013)

1.2-9 What's New in Version 1.2.0 and 1.2.1? (May 2012)

1.2-10 What's New in Version 1.1? (November 2003)

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 sam@math.rwth-aachen.de.

It depends on your **GAP** installation whether the character table library is available. You can check this as follows.

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`

and`htm/ctbldeco.htm`

.Multiplicity-free permutation characters of the sporadic simple groups and their automorphism groups, see

`doc/multfree.pdf`

and`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`

and`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`

and`htm/ctblatlas.htm`

.The verification of the character table of the Baby Monster group, see [BMW20] or an updated version at

`doc/ctblbm.pdf`

and`htm/ctblbm.htm`

.

If you use the **GAP** Character Table Library to solve a problem then please send a short e-mail to sam@math.rwth-aachen.de about it. The **GAP** Character Table Library database should be referenced as follows.

@misc{ CTblLib1.3.6, author = {Breuer, T.}, title = {The \textsf{GAP} {C}haracter {T}able {L}ibrary, {V}ersion 1.3.6}, month = {May}, year = {2023}, 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

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`

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.

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 [BL23]) is available.

The release of Version 1.3.6 was necessary for technical reasons: The code for building the documentation of the package had to be adjusted to a change in **GAP** 4.13. This does not affect most users of the package because the package archive contains a ready documentation. (The ability to rebuild the package documentation had been requested by packagers for Linux distributions.)

**GAP**4.13 will provide the new "package extension" feature, which allows a package to execute**GAP**code*after*the package and some other required packages have been loaded. In**CTblLib**, this feature is now used for example in order to achieve that those functions which depend on the**Browse**package can be used also if this package gets (installed and) loaded after**CTblLib**has been loaded.A few (modular and ordinary) character tables have been added that were used for the computation of orthogonal discriminants of characters. Also a few formerly unknown 2-modular indicator values have been added.

Character parameters for modular tables of symmetric groups are now available. (Thanks to Jürgen Müller for these data.)

The identifier of one character table had to be changed from

`"D8.(S4x2)"`

to`"2^3.(S4×2)"`

because the old name suggested a wrong group structure. This bug had been announced in a StackExchange discussion.The 11-modular character tables of HN and HN.2 (and as a consequence also that of (D_10 × HN).2) had to be changed, in order to solve a generality problem. See CTblLibXpls: A generality problem concerning the group HN (August 2022) for the details.

A few class fusions had to be replaced; they were valid for the ordinary character tables in question but not for their Brauer tables.

The release of Version 1.3.4 was necessary for technical reasons: Now the testfile mentioned in `PackageInfo.g`

exits **GAP** in the end.

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.

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" 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).

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.

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.

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.

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 [BL23]) 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 [BL23]) has been loaded.An interactive overview of the contents is now available that is based on the

**Browse**package [BL23], 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.

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+22]) 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).

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" (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.

generated by GAPDoc2HTML