Goto Chapter: Top 1 2 3 4 5 6 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

3 The User Interface to the GAP Character Table Library
 3.1 Accessing Data of the CTblLib Package
 3.2 The Interface to the TomLib Package
 3.3 The Interface to GAP's Group Libraries
 3.4 Unipotent Characters of Finite Groups of Lie Type
 3.5 Browse Applications Provided by CTblLib
 3.6 Duplicates of Library Character Tables
 3.7 Attributes for Library Character Tables

3 The User Interface to the GAP Character Table Library

3.1 Accessing Data of the CTblLib Package

3.1-1 Admissible Names for Character Tables in CTblLib

When you access a character table from the GAP Character Table Library, this table is specified by an admissible name.

Admissible names for the ordinary character table tbl of the group G are

The recommended way to access a Brauer table is via applying the mod operator to the ordinary table and the desired characteristic (see BrauerTable (Reference: BrauerTable) and Section Reference: Operators for Character Tables), so it is not necessary to define admissible names of Brauer tables.

A generic character table (see Section 4.2) is accessible only by the name given by its Identifier (Reference: Identifier (for character tables)) value.

3.1-2 CharacterTable
‣ CharacterTable( tblname[, para1[, para2]] )( method )

If the only argument is a string tblname and if this is an admissible name (see 3.1-1) of a library character table then CharacterTable returns this library table, otherwise fail.

If CharacterTable is called with more than one argument then the first must be a string tblname specifying a series of groups which is implemented via a generic character table, for example "Symmetric" for symmetric groups; the remaining arguments specialize the desired member of the series (see Section 4.2 for a list of available generic tables). If no generic table with name tblname is available or if the parameters are not admissible then CharacterTable returns fail.

A call of CharacterTable may cause that some library files are read and that some table objects are constructed from the data stored in these files, so fetching a library table may take more time than one expects.

Case is not significant for tblname. For example, both "suzm3" and "SuzM3" can be entered in order to access the character table of the third class of maximal subgroups of the sporadic simple Suzuki group.

gap> s5:= CharacterTable( "A5.2" );
CharacterTable( "A5.2" )
gap> sym5:= CharacterTable( "Symmetric", 5 );
CharacterTable( "Sym(5)" )
gap> TransformingPermutationsCharacterTables( s5, sym5 );
rec( columns := (2,3,4,7,5), group := Group(()), 
  rows := (1,7,3,4,6,5,2) )

The above two tables are tables of the symmetric group on five letters; the first is in Atlas format (see Section 4.3), the second is constructed from the generic table for symmetric groups (see 4.2).

gap> CharacterTable( "J5" );
fail
gap> CharacterTable( "A5" ) mod 2;
BrauerTable( "A5", 2 )

3.1-3 AllCharacterTableNames
‣ AllCharacterTableNames( [func, val, ...[, OfThose, func]] )( function )

Similar to group libraries (see Chapter Reference: Group Libraries), the GAP Character Table Library can be used to search for ordinary character tables with prescribed properties.

A specific library table can be selected by an admissible name, see 3.1-1.

The selection function (see Reference: Selection Functions) for character tables from the GAP Character Table Library that have certain abstract properties is AllCharacterTableNames. Contrary to the situation in the case of group libraries, the selection function returns a list not of library character tables but of their names; using CharacterTable (3.1-2) one can then access the tables themselves.

AllCharacterTableNames takes an arbitrary even number of arguments. The argument at each odd position must be a function, and the argument at the subsequent even position must be either a value that this function must return when called for the character table in question, in order to have the name of the table included in the selection, or a list of such values, or a function that returns true for such a value, and false otherwise. For example,

gap> names:= AllCharacterTableNames();;

returns a list containing one admissible name of each ordinary character table in the GAP library,

gap> simpnames:= AllCharacterTableNames( IsSimple, true,
>                                        IsAbelian, false );;

returns a list containing an admissible name of each ordinary character table in the GAP library whose groups are nonabelian and simple, and

gap> AllCharacterTableNames( IsSimple, true, IsAbelian, false,
>                            Size, [ 1 .. 100 ] );
[ "A5", "A6M2" ]

returns a list containing an admissible name of each ordinary character table in the GAP library whose groups are nonabelian and simple and have order at most 100, respectively. (Note that "A5" and "A6M2" are identifiers of permutation equivalent character tables. It would be possible to exclude duplicates, see Section 3.6).

Similarly,

gap> AllCharacterTableNames( Size, IsPrimeInt );
[ "C3" ]

returns the list of all identifiers of library tables whose Size (Reference: Size) value is a prime integer.

For the sake of efficiency, the attributes whose names are listed in CTblLib.SupportedAttributes are handled in a special way, GAP need not read all files of the table library in these cases in order to find the desired names.

gap> CTblLib.SupportedAttributes;
[ "AbelianInvariants", "IdentifiersOfDuplicateTables", "InfoText", 
  "IsAbelian", "IsAlmostSimple", "IsDuplicateTable", 
  "IsNontrivialDirectProduct", "IsPerfect", "IsSimple", 
  "IsSporadicSimple", "KnowsDeligneLusztigNames", 
  "KnowsSomeGroupInfo", "Maxes", "NamesOfFusionSources", 
  "NrConjugacyClasses", "Size" ]

If the Browse package (see [BL12]) is not loaded then CTblLib.SupportedAttributes is an empty list, AllCharacterTableNames will be very slow when one selects character tables according to attributes from the list shown above.

If the dummy function OfThose is an argument at an odd position then the following argument func must be a function that takes a character table and returns a name of a character table or a list of names; this is interpreted as replacement of the names computed up to this position by the union of names returned by func. For example, func may be Maxes (3.7-1) or NamesOfFusionSources (Reference: NamesOfFusionSources)).

gap> maxesnames:= AllCharacterTableNames( IsSporadicSimple, true,
>                                         HasMaxes, true,
>                                         OfThose, Maxes );;

returns the union of names of ordinary tables of those maximal subgroups of sporadic simple groups that are contained in the table library in the sense that the attribute Maxes (3.7-1) is set.

For the sake of efficiency, OfThose followed by one of the arguments AutomorphismGroup (Reference: AutomorphismGroup), SchurCover (Reference: SchurCover), CompleteGroup is handled in a special way.

3.1-4 OneCharacterTableName
‣ OneCharacterTableName( [func, val, ...[, OfThose, func]] )( function )

The example function for character tables from the GAP Character Table Library that have certain abstract properties is OneCharacterTableName. It is analogous to the selection function AllCharacterTableNames (3.1-3), the difference is that it returns one Identifier (Reference: Identifier (for character tables)) value of a character table with the properties in question instead of the list of all such values. If no table with the required properties is contained in the GAP Character Table Library then fail is returned.

gap> OneCharacterTableName( IsSimple, true, Size, 60 );
"A5"
gap> OneCharacterTableName( IsSimple, true, Size, 20 );
fail

3.1-5 NameOfEquivalentLibraryCharacterTable
‣ NameOfEquivalentLibraryCharacterTable( ordtbl )( function )
‣ NamesOfEquivalentLibraryCharacterTables( ordtbl )( function )

Let ordtbl be an ordinary character table. NameOfEquivalentLibraryCharacterTable returns the Identifier (Reference: Identifier (for character tables)) value of a character table in the GAP Character Table Library that is permutation equivalent to ordtbl (see TransformingPermutationsCharacterTables (Reference: TransformingPermutationsCharacterTables)) if such a character table exists, and fail otherwise. NamesOfEquivalentLibraryCharacterTables returns the list of all Identifier (Reference: Identifier (for character tables)) values of character tables in the GAP Character Table Library that are permutation equivalent to ordtbl; thus an empty list is returned in this case if no equivalent library table exists.

gap> tbl:= CharacterTable( "Alternating", 5 );;
gap> NameOfEquivalentLibraryCharacterTable( tbl );
"A5"
gap> NamesOfEquivalentLibraryCharacterTables( tbl );
[ "A5", "A6M2" ]
gap> tbl:= CharacterTable( "Cyclic", 17 );;
gap> NameOfEquivalentLibraryCharacterTable( tbl );
fail
gap> NamesOfEquivalentLibraryCharacterTables( tbl );
[  ]

3.2 The Interface to the TomLib Package

The GAP Character Table Library contains ordinary character tables of all groups for which the TomLib package [NMP11] contains the table of marks. This section describes the mapping between these character tables and their tables of marks.

If the TomLib package is not loaded then FusionToTom (3.2-4) is the only available function from this section, but of course it is of little interest in this situation.

3.2-1 TableOfMarks
‣ TableOfMarks( tbl )( method )

Let tbl be an ordinary character table from the GAP Character Table Library, for the group G, say. If the TomLib package is loaded and contains the table of marks of G then there is a method based on TableOfMarks (Reference: TableOfMarks (for a string)) that returns this table of marks. If there is no such table of marks but tbl knows its underlying group then this method delegates to the group. Otherwise fail is returned.

gap> TableOfMarks( CharacterTable( "A5" ) );
TableOfMarks( "A5" )
gap> TableOfMarks( CharacterTable( "M" ) );
fail

3.2-2 CharacterTable
‣ CharacterTable( tom )( method )

For a table of marks tom, this method for CharacterTable (Reference: CharacterTable (for a group)) returns the character table corresponding to tom.

If tom comes from the TomLib package, the character table comes from the GAP Character Table Library. Otherwise, if tom stores an UnderlyingGroup (Reference: UnderlyingGroup (for tables of marks)) value then the task is delegated to a CharacterTable (Reference: CharacterTable (for a group)) method for this group, and if no underlying group is available then fail is returned.

gap> CharacterTable( TableOfMarks( "A5" ) );
CharacterTable( "A5" )

3.2-3 FusionCharTableTom
‣ FusionCharTableTom( tbl, tom )( method )

Let tbl be an ordinary character table from the GAP Character Table Library with the attribute FusionToTom (3.2-4), and let tom be the table of marks from the GAP package TomLib that corresponds to tbl. In this case, a method for FusionCharTableTom (Reference: FusionCharTableTom) is available that returns the fusion from tbl to tom that is given by the FusionToTom (3.2-4) value of tbl.

gap> tbl:= CharacterTable( "A5" );
CharacterTable( "A5" )
gap> tom:= TableOfMarks( "A5" );
TableOfMarks( "A5" )
gap> FusionCharTableTom( tbl, tom );
[ 1, 2, 3, 5, 5 ]

3.2-4 FusionToTom
‣ FusionToTom( tbl )( attribute )

If this attribute is set for an ordinary character table tbl then the GAP Library of Tables of Marks contains the table of marks of the group of tbl, and the attribute value is a record with the following components.

name

the Identifier (Reference: Identifier (for tables of marks)) component of the table of marks of tbl,

map

the fusion map,

text (optional)

a string describing the status of the fusion, and

perm (optional)

a permutation that establishes the bijection between the classes of maximal subgroups in the table of marks (see MaximalSubgroupsTom (Reference: MaximalSubgroupsTom)) and the Maxes (3.7-1) list of tbl. Applying the permutation to the sublist of permutation characters (see PermCharsTom (Reference: PermCharsTom (via fusion map))) at the positions of the maximal subgroups of the table of marks yields the list of primitive permutation characters computed from the character tables described by the Maxes (3.7-1) list. Usually, there is no perm component, which means that the two lists of primitive permutation characters are equal. See Section 2.3-5 for an example.

gap> FusionToTom( CharacterTable( "2.A6" ) );
rec( map := [ 1, 2, 5, 4, 8, 3, 7, 11, 11, 6, 13, 6, 13 ], 
  name := "2.A6", perm := (4,5), 
  text := "fusion map is unique up to table autom." )

3.2-5 NameOfLibraryCharacterTable
‣ NameOfLibraryCharacterTable( tomname )( function )

This function returns the Identifier (Reference: Identifier (for character tables)) value of the character table corresponding to the table of marks with Identifier (Reference: Identifier (for tables of marks)) value tomname. If no such character table exists in the GAP Character Table Library or if the TomLib package is not loaded then fail is returned.

gap> NameOfLibraryCharacterTable( "A5" );
"A5"
gap> NameOfLibraryCharacterTable( "S5" );
"A5.2"

3.3 The Interface to GAP's Group Libraries

Sometimes it is useful to extend a character-theoretic computation with computations involving a group that has the character table in question. For many character tables in the GAP Character Table Library, corresponding groups can be found in the various group libraries that are distributed with GAP. This section describes how one can access the library groups that belong to a given character table.

3.3-1 GroupInfoForCharacterTable
‣ GroupInfoForCharacterTable( tbl )( attribute )

Let tbl be an ordinary character table from the GAP Character Table Library. GroupInfoForCharacterTable returns a sorted list of pairs such that calling GroupForGroupInfo (3.3-4) with any of these pairs yields a group whose ordinary character table is tbl, up to permutations of rows and columns.

Note that this group is in general not determined up to isomorphism, since nonisomorphic groups may have the same character table (including power maps).

Contrary to the attribute UnderlyingGroup (Reference: UnderlyingGroup (for tables of marks)), the entries of the GroupInfoForCharacterTable list for tbl are not related to the ordering of the conjugacy classes in tbl.

Sources for this attribute are the GAP databases of groups described in Chapter Reference: Group Libraries, and the packages AtlasRep and TomLib, see also GroupForTom (3.3-5) and AtlasStabilizer (3.3-6). If these packages are not loaded then part of the information may be missing. If the Browse (see [BL12]) is not loaded then GroupInfoForCharacterTable returns always an empty list.

gap> GroupInfoForCharacterTable( CharacterTable( "A5" ) );
[ [ "AlternatingGroup", [ 5 ] ], [ "AtlasGroup", [ "A5" ] ], 
  [ "AtlasStabilizer", [ "A6", "A6G1-p6aB0" ] ], 
  [ "AtlasStabilizer", [ "A6", "A6G1-p6bB0" ] ], 
  [ "AtlasStabilizer", [ "L2(11)", "L211G1-p11aB0" ] ], 
  [ "AtlasStabilizer", [ "L2(11)", "L211G1-p11bB0" ] ], 
  [ "AtlasStabilizer", [ "L2(19)", "L219G1-p57aB0" ] ], 
  [ "AtlasStabilizer", [ "L2(19)", "L219G1-p57bB0" ] ], 
  [ "AtlasSubgroup", [ "A5.2", 1 ] ], [ "AtlasSubgroup", [ "A6", 1 ] ]
    , [ "AtlasSubgroup", [ "A6", 2 ] ], 
  [ "AtlasSubgroup", [ "J2", 9 ] ], 
  [ "AtlasSubgroup", [ "L2(109)", 4 ] ], 
  [ "AtlasSubgroup", [ "L2(109)", 5 ] ], 
  [ "AtlasSubgroup", [ "L2(11)", 1 ] ], 
  [ "AtlasSubgroup", [ "L2(11)", 2 ] ], 
  [ "AtlasSubgroup", [ "S6(3)", 11 ] ], 
  [ "GroupForTom", [ "2^4:A5", 68 ] ], 
  [ "GroupForTom", [ "2^4:A5`", 56 ] ], [ "GroupForTom", [ "A5" ] ], 
  [ "GroupForTom", [ "A5xA5", 85 ] ], [ "GroupForTom", [ "A6", 21 ] ],
  [ "GroupForTom", [ "J2", 99 ] ], 
  [ "GroupForTom", [ "L2(109)", 25 ] ], 
  [ "GroupForTom", [ "L2(11)", 15 ] ], 
  [ "GroupForTom", [ "L2(125)", 18 ] ], 
  [ "GroupForTom", [ "L2(16)", 18 ] ], 
  [ "GroupForTom", [ "L2(19)", 17 ] ], 
  [ "GroupForTom", [ "L2(29)", 19 ] ], 
  [ "GroupForTom", [ "L2(31)", 25 ] ], 
  [ "GroupForTom", [ "S5", 18 ] ], [ "PSL", [ 2, 4 ] ], 
  [ "PSL", [ 2, 5 ] ], [ "PerfectGroup", [ 60, 1 ] ], 
  [ "PrimitiveGroup", [ 5, 4 ] ], [ "PrimitiveGroup", [ 6, 1 ] ], 
  [ "PrimitiveGroup", [ 10, 1 ] ], [ "SmallGroup", [ 60, 5 ] ], 
  [ "TransitiveGroup", [ 5, 4 ] ], [ "TransitiveGroup", [ 6, 12 ] ], 
  [ "TransitiveGroup", [ 10, 7 ] ], [ "TransitiveGroup", [ 12, 33 ] ],
  [ "TransitiveGroup", [ 15, 5 ] ], [ "TransitiveGroup", [ 20, 15 ] ],
  [ "TransitiveGroup", [ 30, 9 ] ] ]

3.3-2 KnowsSomeGroupInfo
‣ KnowsSomeGroupInfo( tbl )( property )

For an ordinary character table tbl, this function returns true if the list returned by GroupInfoForCharacterTable (3.3-1) is nonempty, and false otherwise.

gap> KnowsSomeGroupInfo( CharacterTable( "A5" ) );
true
gap> KnowsSomeGroupInfo( CharacterTable( "M" ) );
false

3.3-3 CharacterTableForGroupInfo
‣ CharacterTableForGroupInfo( info )( attribute )

This function is a partial inverse of GroupInfoForCharacterTable (3.3-1). If info has the form [ funcname, args ] and occurs in the list returned by GroupInfoForCharacterTable (3.3-1) when called with a character table t, say, then CharacterTableForGroupInfo returns a character table from the GAP Character Table that is equivalent to t. Otherwise fail is returned.

gap> CharacterTableForGroupInfo( [ "AlternatingGroup", [ 5 ] ] );
CharacterTable( "A5" )

3.3-4 GroupForGroupInfo
‣ GroupForGroupInfo( info )( attribute )

If info has the form [ funcname, args ] and occurs in the list returned by GroupInfoForCharacterTable (3.3-1) when called with a character table tbl, say, then GroupForGroupInfo returns a group that is described by info and whose character table is equal to tbl, up to permutations of rows and columns. Otherwise fail is returned.

Typically, funcname is a string that is the name of a global GAP function fun, say, and args is a list of arguments for this function such that CallFuncList( fun, args ) yields the desired group.

gap> GroupForGroupInfo( [ "AlternatingGroup", [ 5 ] ] );
Alt( [ 1 .. 5 ] )
gap> GroupForGroupInfo( [ "PrimitiveGroup", [ 5, 4 ] ] );
A(5)

3.3-5 GroupForTom
‣ GroupForTom( tomidentifier[, repnr] )( attribute )

Let tomidentifier be a string that is an admissible name for a table of marks from the GAP Library of Tables of Marks (the TomLib package [NMP11]). Called with one argument, GroupForTom returns the UnderlyingGroup (Reference: UnderlyingGroup (for tables of marks)) value of this table of marks. If a positive integer repnr is given as the second argument then a representative of the repnr-th class of subgroups of this group is returned, see RepresentativeTom (Reference: RepresentativeTom).

The string"GroupForTom" may occur in the entries of the list returned by GroupInfoForCharacterTable (3.3-1), and therefore may be called by GroupForGroupInfo (3.3-4).

If the TomLib package is not loaded or if it does not contain a table of marks with identifier tomidentifier then fail is returned.

gap> g:= GroupForTom( "A5" );  u:= GroupForTom( "A5", 2 );
Group([ (2,4)(3,5), (1,2,5) ])
Group([ (2,3)(4,5) ])
gap> IsSubset( g, u );
true
gap> GroupForTom( "J4" );
fail

3.3-6 AtlasStabilizer
‣ AtlasStabilizer( gapname, repname )( function )

Let gapname be an admissible name of a group G, say, in the sense of the AtlasRep package (see Section AtlasRep: Group Names Used in the AtlasRep Package), and repname be a string that occurs as the repname component of a record returned by AllAtlasGeneratingSetInfos (AtlasRep: AllAtlasGeneratingSetInfos) when this function is called with first argument gapname and further arguments IsTransitive (Reference: IsTransitive) and true. In this case, repname describes a transitive permutation representation of G.

If the AtlasRep package is available and if the permutation group in question can be fetched then AtlasStabilizer returns a point stabilizer. Otherwise fail is returned.

The string"AtlasStabilizer" may occur in the entries of the list returned by GroupInfoForCharacterTable (3.3-1), and therefore may be called by GroupForGroupInfo (3.3-4).

gap> AtlasStabilizer( "A5","A5G1-p5B0");
Group([ (1,2)(3,4), (2,3,4) ])

3.3-7 IsNontrivialDirectProduct
‣ IsNontrivialDirectProduct( tbl )( property )

For an ordinary character table tbl of the group G, say, this function returns true if G is the direct product of smaller groups, and false otherwise.

gap> mx:= Maxes( CharacterTable( "J1" ) );
[ "L2(11)", "2^3.7.3", "2xA5", "19:6", "11:10", "D6xD10", "7:6" ]
gap> List( mx, name -> IsNontrivialDirectProduct(
>                          CharacterTable( name ) ) );
[ false, false, true, false, false, true, false ]

3.4 Unipotent Characters of Finite Groups of Lie Type

Unipotent characters are defined for finite groups of Lie type. For most of these groups whose character table is in the GAP Character Table Library, the unipotent characters are known and parametrised by labels. This labeling is due to the work of P. Deligne and G. Lusztig, thus the label of a unipotent character is called its Deligne-Lusztig name (see [Cla05]).

3.4-1 UnipotentCharacter
‣ UnipotentCharacter( tbl, label )( function )

Let tbl be the ordinary character table of a finite group of Lie type in the GAP Character Table Library. UnipotentCharacter returns the unipotent character with Deligne-Lusztig name label.

The object label must be either a list of integers which describes a partition (if the finite group of Lie type is of the type A_l or ^2A_l), a list of two lists of integers which describes a symbol (if the group is of classical type other than A_l and ^2A_l) or a string (if the group is of exceptional type).

A call of UnipotentCharacter sets the attribute DeligneLusztigNames (3.4-2) for tbl.

gap> tbl:= CharacterTable( "U4(2).2" );;
gap> UnipotentCharacter( tbl, [ [ 0, 1 ], [ 2 ] ] );
Character( CharacterTable( "U4(2).2" ), 
[ 15, 7, 3, -3, 0, 3, -1, 1, 0, 1, -2, 1, 0, 0, -1, 5, 1, 3, -1, 2, 
  -1, 1, -1, 0, 0 ] )

3.4-2 DeligneLusztigNames
‣ DeligneLusztigNames( obj )( attribute )

For a character table obj, DeligneLusztigNames returns a list of Deligne-Lusztig names of the the unipotent characters of obj. If the i-th entry is bound then it is the name of the i-th irreducible character of obj, and this character is irreducible. If an irreducible character is not unipotent the accordant position is unbound.

DeligneLusztigNames called with a string obj, calls itself with the argument CharacterTable( obj ).

When DeligneLusztigNames is called with a record obj then this should have the components isoc, isot, l, and q, where isoc and isot are strings defining the isogeny class and isogeny type, and l and q are integers. These components define a finite group of Lie type uniquely. Moreover this way one can choose Deligne-Lusztig names for a prescribed type in those cases where a group has more than one interpretation as a finite group of Lie type, see the example below. (The first call of DeligneLusztigNames sets the attribute value in the character table.)

gap> DeligneLusztigNames( "L2(7)" );
[ [ 2 ],,,, [ 1, 1 ] ]
gap> tbl:= CharacterTable( "L2(7)" );
CharacterTable( "L3(2)" )
gap> HasDeligneLusztigNames( tbl );
true
gap> DeligneLusztigNames( rec( isoc:= "A", isot:= "simple",
>                              l:= 2, q:= 2 ) );
[ [ 3 ],,, [ 2, 1 ],, [ 1, 1, 1 ] ]

3.4-3 DeligneLusztigName
‣ DeligneLusztigName( chi )( function )

For a unipotent character chi, DeligneLusztigName returns the Deligne-Lusztig name of chi. For that, DeligneLusztigNames (3.4-2) is called with the argument UnderlyingCharacterTable( chi ).

gap> tbl:= CharacterTable( "F4(2)" );;
gap> DeligneLusztigName( Irr( tbl )[9] );
fail
gap> HasDeligneLusztigNames( tbl );
true
gap> List( [ 1 .. 8 ], i -> DeligneLusztigName( Irr( tbl )[i] ) );
[ "phi{1,0}", "[ [ 2 ], [  ] ]", "phi{2,4}''", "phi{2,4}'", 
  "F4^II[1]", "phi{4,1}", "F4^I[1]", "phi{9,2}" ]

3.4-4 KnowsDeligneLusztigNames
‣ KnowsDeligneLusztigNames( tbl )( property )

For an ordinary character table tbl, this function returns true if DeligneLusztigNames (3.4-2) returns the list of Deligne-Lusztig names of the unipotent characters of tbl, and false otherwise.

gap> KnowsDeligneLusztigNames( CharacterTable( "A5" ) );
true
gap> KnowsDeligneLusztigNames( CharacterTable( "M" ) );
false

3.5 Browse Applications Provided by CTblLib

The following functions are available only if the GAP package Browse (see [BL12]) is loaded. The function DisplayCTblLibInfo (3.5-1) shows details about an ordinary or modular character table in a pager, the other functions can be used to show the following information via browse tables.

The functions BrowseCTblLibInfo (3.5-2) and BrowseCommonIrrationalities (3.5-3) are also reachable in the list of choices shown by BrowseGapData (Browse: BrowseGapData).

3.5-1 DisplayCTblLibInfo
‣ DisplayCTblLibInfo( tbl )( function )
‣ DisplayCTblLibInfo( name[, p] )( function )
‣ StringCTblLibInfo( tbl )( function )
‣ StringCTblLibInfo( name[, p] )( function )

When DisplayCTblLibInfo is called with an ordinary or modular character table tbl then an overview of the information available for this character table is shown in a pager (see Pager (Reference: Pager)). When DisplayCTblLibInfo is called with a string name that is an admissible name for an ordinary character table then the overview for this character table is shown. If a prime integer p is entered in addition to name then information about the p-modular character table is shown instead.

An interactive variant of DisplayCTblLibInfo is BrowseCTblLibInfo (3.5-2).

The string that is shown by DisplayCTblLibInfo can be computed using StringCTblLibInfo, with the same arguments.

gap> StringCTblLibInfo( CharacterTable( "A5" ) );;
gap> StringCTblLibInfo( CharacterTable( "A5" ) mod 2 );;
gap> StringCTblLibInfo( "A5" );;
gap> StringCTblLibInfo( "A5", 2 );;

3.5-2 BrowseCTblLibInfo
‣ BrowseCTblLibInfo( [func, val, ...] )( function )
‣ BrowseCTblLibInfo( tbl )( function )
‣ BrowseCTblLibInfo( name[, p] )( function )

Returns: nothing.

Called without arguments, BrowseCTblLibInfo shows the contents of the GAP Character Table Library in an overview table, see below.

When arguments func, val, ... are given that are admissible arguments for AllCharacterTableNames (3.1-3) –in particular, the first argument must be a function– then the overview is restricted to those character tables that match the conditions.

When BrowseCTblLibInfo is called with a character table tbl then a details table is opened that gives an overview of the information available for this character table. When BrowseCTblLibInfo is called with a string name that is an admissible name for an ordinary character table then the details table for this character table is opened. If a prime integer p is entered in addition to name then information about the p-modular character table is shown instead.

The overview table has the following columns.

name

the Identifier (Reference: Identifier (for character tables)) value of the table,

size

the group order,

nccl

the number of conjugacy classes,

fusions -> G

the list of identifiers of tables on which a fusion to the given table is stored, and

fusions G ->

the list of identifiers of tables to which a fusion is stored on the given table.

The details table for a given character table has exactly one column. Only part of the functionality of the function NCurses.BrowseGeneric (Browse: NCurses.BrowseGeneric) is available in such a table. On the other hand, the details tables contain "links" to other Browse applications, for example other details tables.

When one "clicks" on a row or an entry in the overview table then the details table for the character table in question is opened. One can navigate from this details table to a related one, by first activating a link (via repeatedly hitting the Tab key) and then following the active link (via hitting the Return key). If mouse actions are enabled (by hitting the M key, see NCurses.UseMouse (Browse: NCurses.UseMouse)) then one can alternatively activate a link and click on it via mouse actions.

gap> tab:= [ 9 ];;         # hit the TAB key
gap> n:= [ 14, 14, 14 ];;  # ``do nothing'' input (means timeout)
gap> BrowseData.SetReplay( Concatenation(
>         # select the first column, search for the name A5
>         "sc/A5", [ NCurses.keys.DOWN, NCurses.keys.DOWN,
>         NCurses.keys.RIGHT, NCurses.keys.ENTER ],
>         # open the details table for A5
>         [ NCurses.keys.ENTER ], n, n,
>         # activate the link to the character table of A5
>         tab, n, n,
>         # show the character table of A5
>         [ NCurses.keys.ENTER ], n, n, "seddrr", n, n,
>         # close this character table
>         "Q",
>         # activate the link to the maximal subgroup D10
>         tab, tab, n, n,
>         # jump to the details table for D10
>         [ NCurses.keys.ENTER ], n, n,
>         # close this details table
>         "Q",
>         # activate the link to a decomposition matrix
>         tab, tab, tab, tab, tab, n, n,
>         # show the decomposition matrix
>         [ NCurses.keys.ENTER ], n, n,
>         # close this table
>         "Q",
>         # activate the link to the AtlasRep overview
>         tab, tab, tab, tab, tab, tab, tab, n, n,
>         # show the overview
>         [ NCurses.keys.ENTER ], n, n,
>         # close this table
>         "Q",
>         # and quit the applications
>         "QQ" ) );
gap> BrowseCTblLibInfo();
gap> BrowseData.SetReplay( false );

3.5-3 BrowseCommonIrrationalities
‣ BrowseCommonIrrationalities( )( function )

Returns: a list of info records for the irrationalities that have been "clicked" in visual mode.

This function shows the atomic irrationalities that occur in character tables in the Atlas of Finite Groups [CCNPW85] or the Atlas of Brauer Characters [JLPW95], together with descriptions of their reductions to the relevant finite fields in a browse table with the following columns. The format is the same as in [JLPW95, Appendix 1].

name

the name of the irrationality, see AtlasIrrationality (Reference: AtlasIrrationality),

p

the characteristic,

value mod C_n

the corresponding reduction to a finite field of characteristic p, given by the residue modulo the n-th Conway polynomial (see ConwayPolynomial (Reference: ConwayPolynomial)),

n

the degree of the smallest extension of the prime field of characteristic p that contains the reduction.

gap> n:= [ 14, 14, 14 ];;  # ``do nothing'' input (means timeout)
gap> BrowseData.SetReplay( Concatenation(
>         # categorize the table by the characteristics
>         "scrsc", n, n,
>         # expand characteristic 2
>         "srxq", n, n,
>         # scroll down
>         "DDD", n, n,
>         # and quit the application
>         "Q" ) );
gap> BrowseCommonIrrationalities();;
gap> BrowseData.SetReplay( false );

3.5-4 BrowseCTblLibDifferences
‣ BrowseCTblLibDifferences( )( function )

Returns: nothing.

BrowseCTblLibDifferences lists the differences of the character table data between version 1.1.3 and version 1.2 of the CTblLib package.

The overview table contains one row for each change, where "change" means the addition, modification, or removal of information, and has the following columns.

Identifier

the Identifier (Reference: Identifier (for character tables)) value of the character table,

Type

one of NEW (for the addition of previously not available information), *** (for a bugfix), or C (for a change that does not really fix a bug, typically a change motivated by a new consistency criterion),

What

one of class fusions (some class fusions from or to the table in question were changed), maxes (the value of the attribute Maxes (3.7-1) was changed), names (incorrect admissible names were removed), table or table mod p (the ordinary or p-modular character table was changed), maxes (the value of the attribute Maxes (3.7-1) was changed), tom fusion (the value of the attribute FusionToTom (3.2-4) was changed),

Description

a description what has been changed,

Flag

one of Dup (the table is a duplicate, in the sense of IsDuplicateTable (3.6-1)), Der (the row belongs to a character table that is derived from other tables), Fus (the row belongs to the addition of class fusions), Max (the row belongs to a character table that was added because its group is maximal in another group), or None (in all other cases –these rows are to some extent the interesting ones). The information in this column can be used to restrict the overview to interesting subsets.

The full functionality of the function NCurses.BrowseGeneric (Browse: NCurses.BrowseGeneric) is available.

The following examples show the input for

gap> n:= [ 14, 14, 14, 14, 14, 14 ];;  # ``do nothing''
gap> enter:= [ NCurses.keys.ENTER ];;
gap> down:= [ NCurses.keys.DOWN ];;
gap> right:= [ NCurses.keys.RIGHT ];;
gap> BrowseData.SetReplay( Concatenation(
>        "scr",                    # select the 'Type' column,
>        "f***", enter,            # filter rows containing '***',
>        n, "Q" ) );               # and quit
gap> BrowseCTblLibDifferences();
gap> BrowseData.SetReplay( Concatenation(
>        "scrrrr",                 # select the 'Flag' column,
>        "fNone", enter,           # filter rows containing 'None',
>        n, "Q" ) );               # and quit
gap> BrowseCTblLibDifferences();
gap> BrowseData.SetReplay( Concatenation(
>        "fM",                     # filter rows containing 'M',
>        down, down, down, right,  # but 'M' as a whole word,
>        enter,                    #
>        n, "Q" ) );               # and quit
gap> BrowseCTblLibDifferences();
gap> BrowseData.SetReplay( false );

3.6 Duplicates of Library Character Tables

It can be useful to deal with different instances of "the same" character table. An example is the situation that a group G, say, contains several classes of isomorphic maximal subgroups that have different class fusions; the attribute Maxes (3.7-1) of the character table of G then contains several entries that belong to the same group, but the identifiers of the character tables are different.

On the other hand, it can be useful to consider only one of the different instances when one searches for character tables with certain properties, for example using OneCharacterTableName (3.1-4).

For that, we introduce the following concept. A character table t_1 is said to be a duplicate of another character table t_2 if the attribute ConstructionInfoCharacterTable (3.7-4) is set in t_1, if the first entry of the attribute value is "ConstructPermuted", and if the second entry of the attribute value is the Identifier (Reference: Identifier (for character tables)) value of t_2. We call t_2 the main table of t_1.

3.6-1 IsDuplicateTable
‣ IsDuplicateTable( tbl )( property )

For an ordinary character table tbl from the GAP Character Table Library, this function returns true if tbl was constructed from another character table by permuting rows and columns, via the attribute ConstructionInfoCharacterTable (3.7-4). Otherwise false is returned, in particular if tbl is not a character table from the GAP Character Table Library.

One application of this function is to restrict the search with AllCharacterTableNames (3.1-3) to only one library character table for each class of permutation equivalent tables. Note that this does property of the search result cannot be guaranteed if private character tables have been added to the library, see NotifyCharacterTable (4.7-4).

gap> Maxes( CharacterTable( "A6" ) );
[ "A5", "A6M2", "3^2:4", "s4", "A6M5" ]
gap> IsDuplicateTable( CharacterTable( "A5" ) );
false
gap> IsDuplicateTable( CharacterTable( "A6M2" ) );
true

3.6-2 IdentifierOfMainTable
‣ IdentifierOfMainTable( tbl )( attribute )

If tbl is an ordinary character table that is a duplicate in the sense of the introduction to Section 3.6 then this function returns the Identifier (Reference: Identifier (for character tables)) value of the main table of tbl. Otherwise fail is returned.

gap> Maxes( CharacterTable( "A6" ) );
[ "A5", "A6M2", "3^2:4", "s4", "A6M5" ]
gap> IdentifierOfMainTable( CharacterTable( "A5" ) );
fail
gap> IdentifierOfMainTable( CharacterTable( "A6M2" ) );
"A5"

3.6-3 IdentifiersOfDuplicateTables
‣ IdentifiersOfDuplicateTables( tbl )( attribute )

For an ordinary character table tbl, this function returns the list of Identifier (Reference: Identifier (for character tables)) values of those character tables from the GAP Character Table Library that are duplicates of tbl, in the sense of the introduction to Section 3.6.

gap> Maxes( CharacterTable( "A6" ) );
[ "A5", "A6M2", "3^2:4", "s4", "A6M5" ]
gap> IdentifiersOfDuplicateTables( CharacterTable( "A5" ) );
[ "A6M2" ]
gap> IdentifiersOfDuplicateTables( CharacterTable( "A6M2" ) );
[  ]

3.7 Attributes for Library Character Tables

This section describes certain attributes which are set only for certain (not necessarily all) character tables from the GAP Character Table Library. The attribute values are part of the database, there are no methods for computing them.

Other such attributes and properties are described in manual sections because the context fits better. These attributes are FusionToTom (3.2-4), GroupInfoForCharacterTable (3.3-1), KnowsSomeGroupInfo (3.3-2), IsNontrivialDirectProduct (3.3-7), DeligneLusztigNames (3.4-2), DeligneLusztigName (3.4-3), KnowsDeligneLusztigNames (3.4-4), IsDuplicateTable (3.6-1), and CASInfo (4.4-1).

3.7-1 Maxes
‣ Maxes( tbl )( attribute )

If this attribute is set for an ordinary character table tbl then the value is a list of identifiers of the ordinary character tables of all maximal subgroups of tbl. There is no default method to compute this value from tbl.

If the Maxes value of tbl is stored then it lists exactly one representative for each conjugacy class of maximal subgroups of the group of tbl, and the character tables of these maximal subgroups are available in the GAP Character Table Library, and compatible class fusions to tbl are stored on these tables (see the example in Section 2.3-5).

gap> tbl:= CharacterTable( "M11" );;
gap> HasMaxes( tbl );
true
gap> maxes:= Maxes( tbl );
[ "A6.2_3", "L2(11)", "3^2:Q8.2", "A5.2", "2.S4" ]
gap> CharacterTable( maxes[1] );
CharacterTable( "A6.2_3" )

3.7-2 ProjectivesInfo
‣ ProjectivesInfo( tbl )( attribute )

If this attribute is set for an ordinary character table tbl then the value is a list of records, each with the following components.

name

the Identifier (Reference: Identifier (for character tables)) value of the character table mult of the covering whose faithful irreducible characters are described by the record,

chars

a list of values lists of faithful projective irreducibles; only one representative of each family of Galois conjugates is contained in this list, and

map

a list of positions that maps each class of tbl to that preimage in mult for which the entries in chars give the values. In a sense, a projection map is an inverse of the factor fusion from the table of the covering to the given table (see ProjectionMap (Reference: ProjectionMap)).

gap> ProjectivesInfo( CharacterTable( "A5" ) );
[ rec( 
      chars := [ [ 2, 0, -1, E(5)+E(5)^4, E(5)^2+E(5)^3 ], 
          [ 2, 0, -1, E(5)^2+E(5)^3, E(5)+E(5)^4 ], 
          [ 4, 0, 1, -1, -1 ], [ 6, 0, 0, 1, 1 ] ], 
      map := [ 1, 3, 4, 6, 8 ], name := "2.A5" ) ]

3.7-3 ExtensionInfoCharacterTable
‣ ExtensionInfoCharacterTable( tbl )( attribute )

Let tbl be the ordinary character table of a group G, say. If this attribute is set for tbl then the value is a list of length two, the first entry being a string M that describes the Schur multiplier of G and the second entry being a string A that describes the outer automorphism group of G. Trivial multiplier or outer automorphism group are denoted by an empty string.

If tbl is a table from the GAP Character Table Library and G is (nonabelian and) simple then the value is set. In this case, an admissible name for the character table of a universal covering group of G (if this table is available and different from tbl) is given by the concatenation of M, ".", and the Identifier (Reference: Identifier (for character tables)) value of tbl. Analogously, an admissible name for the character table of the automorphism group of G (if this table is available and different from tbl) is given by the concatenation of the Identifier (Reference: Identifier (for character tables)) value of tbl, ".", and A.

gap> ExtensionInfoCharacterTable( CharacterTable( "A5" ) );
[ "2", "2" ]

3.7-4 ConstructionInfoCharacterTable
‣ ConstructionInfoCharacterTable( tbl )( attribute )

If this attribute is set for an ordinary character table tbl then the value is a list that describes how this table was constructed. The first entry is a string that is the identifier of the function that was applied to the pre-table record; the remaining entries are the arguments for that function, except that the pre-table record must be prepended to these arguments.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 Bib Ind

generated by GAPDoc2HTML