Database of Character Tables

Magma contains character tables of many of the groups available as an ATLASGroup. These tables have been computed using the CharacterTable function, and are examples of character tables without a group. Characters are returned with parent character ring having a power map assigned. and with Frobenius-Schur indicator of each character pre-computed.

The available character tables are named using the name of the corresponding ATLASGroup.

This facility is currently under expansion, and more tables and facilities will be available with future releases.

CharacterTable(N) : MonStgElt -> SeqEnum[AlgChtrElt]
CharacterTable(A) : GrpAtlas -> SeqEnum[AlgChtrElt]
Return the character table of the group A, or the group named by the string N, as a sequence of characters without a group. If there is no stored character table corresponding to the name given, a runtime error will result.
HasCharacterTable(A) : GrpAtlas -> BoolElt
Return true if the character table for the ATLAS group A is in the Magma character table database.
CharacterTableNames() : -> SetIndx[MonStElt]
Return the set of strings that are valid character table names in the database.

Example Chtr_CharacterTableData (H98E10)

We use the texttt{CharacterTable} function to examine some aspects of the simple group E6(2). We start by showing that E6(2) has elements x of order 2 and y of order 3 such that xy has order 7.
> "E62" in CharacterTableNames();
true
> X := CharacterTable("E62");
> #X;
180
> R := Universe(X);
> assigned R`Group;
false
> cd := ClassesData(R);
> c2 := [i: i in [1..#cd] | cd[i,1] eq 2];
> c3 := [i: i in [1..#cd] | cd[i,1] eq 3];
> c7 := [i: i in [1..#cd] | cd[i,1] eq 7];
> c2, c3, c7;
[ 2, 3, 4 ]
[ 5, 6, 7 ]
[ 29, 30, 31, 32 ]
> exists(t){<i,j,k>: i in c2, j in c3, k in c7 |
>                  not IsZero(StructureConstant(R, i, j, k))};
true
> t;
<3, 6, 29>
This shows that elements of class 3 (element order 2) when multiplied by a suitable element of class 6 (element order 3), give an element in class 29 (element order 7).

In the proof of Ore's conjecture by Liebeck, O'Brien, Shalev & Tiep, E6(2) was a case where the conjecture was checked directly using Frobenius' character table criterion for an element to be a commutator. We can easily repeat this calculation. The function texttt{test} computes a value for a given conjugacy class such that this value is non-zero if and only if the class consists of commutators.

> test := func< k | &+[ x[k]/x[1] : x in X ] >;
> forall{ k : k in [1..#cd] | not IsZero(test(k)) };
true
This shows that all conjugacy classes of E6(2) consist of commutators, verifying the conjecture for this group.

We now move on to finding characters of rational representations of E6(2). It can be shown, using no more than the character table data, that the second and third characters in this table are afforded by rational representations of the group. Given this, we can find further characters afforded by rational representations in the character table. We next verify enough conditions to show that the second and third characters are indeed afforded by rational representations, and then use this to find further characters.

> Degree(X[2]), Degree(X[3]);
2482 137020
> Indicator(X[2]), Indicator(X[3]);
1 1
> DegreeOfCharacterField(X[2]);
1
> DegreeOfCharacterField(X[3]);
1
> pm := PowerMap(R);
> is_integral := func<i|forall{j:j in [1..n] |
>  GCD(i,n) ne 1 or pm(i,j) eq i} where n := cd[i,1]>;
> [i : i in [1..#X] | X[2,i] eq 1 and is_integral(i)];
[ 52, 56, 66, 75, 82, 84, 93, 104, 105, 106, 126, 147, 150 ]
> GCD([cd[i,1]: i in $1]);
1
> [i : i in [1..#X] | X[3,i] eq 1 and is_integral(i)];
[ 62, 87, 90, 91, 93, 94, 96, 102, 105, 106, 108, 111, 112,
114, 123, 124, 126, 161, 162 ]
> GCD([cd[i,1]: i in $1]);
1
We first established that the two characters are both rational valued with indicators 1. They both take the value 1 on integral classes such that the orders of the elements in these classes are coprime. This is sufficient to allow us to conclude that the Schur index over the rational field of both these characters is 1, see [Fei83]. It follows that these are characters of rational representations of E6(2). We now consider products of these characters.
> x := X[2]*X[3];
> [ i : i in [1..#X] | InnerProduct(X[i], x) eq 1];
[ 2, 5, 8, 17, 21 ]
> x := X[2]^2;
> [ i : i in [1..#X] | InnerProduct(X[i], x) eq 1];
[ 1, 2, 3, 5, 6, 8 ]
> x := X[3]^2;
> [ i : i in [1..#X] | InnerProduct(X[i], x) eq 1];
[ 1, 6, 7, 12, 20, 30, 33, 36, 40 ]
This shows that the characters numbered 2, 3, 5, 6, 7, 8, 12, 17, 20, 21, 30, 33, 36, 40 all have Schur index 1 over the rational numbers. In fact, all these characters are rational valued, so they are characters of rational representations. Further products give more information.
> J := [2,3,5,6,7,8,12,17,20,21,30,33,36,40];
> forall{i: i in J | DegreeOfCharacterField(X[i]) eq 1};
true
> x := X[5]^2;
> [ i : i in [1..#X] | InnerProduct(X[i], x) eq 1];
[ 1, 2, 7, 12, 25, 29, 36, 49, 54, 55, 82, 96, 97, 100,
102, 151, 152, 154, 178, 180 ]
> DegreeOfCharacterField(X[151]);
2
The characters found above all have Schur index 1. We see that this includes some irrational characters.

As the power map is stored with the character table, we can use symmetrized powers to improve the above results.

> assigned R`PowerMap;
true
> x := Symmetrization(X[5], [1,1]);
> [ i : i in [1..#X] | InnerProduct(X[i], x) eq 1];
[ 13, 25, 30, 35, 36, 37, 52, 54, 66, 67, 70, 77, 82, 97,
98, 101, 131, 133, 134, 148, 149, 150, 151, 152, 178 ]
> x := Symmetrization(X[5], [2]);
> [ i : i in [1..#X] | InnerProduct(X[i], x) eq 1];
[ 1, 2, 5, 7, 12, 20, 29, 34, 35, 37, 49, 52, 55, 66, 67,
70, 96, 98, 100, 101, 102, 131, 134, 148, 149, 150, 154,
180 ]

Example Chtr_Lyons-schur-index (H98E11)

We consider the characters of Lyons' sporadic simple group, and compute Schur indices using character table information. We will use the methods described in [Fei83], and check the assertion in S7 of this article that all characters of Lyons' group have Schur index 1. Theorems referenced here refer to this article.

In general we cannot deduce all local Schur indices from character table information, but here we are fortunate and can do so.

We begin by finding the integral classes of the group, and setting up a texttt{test} function that, when it returns true, implies that the character has Schur index 1 over the rationals. We are using Theorem A, Theorem 2.7, and Theorem 2.15.

> X := CharacterTable("Ly");
> #X;
53
> Z := Integers();
> int_cl := {i : i in [1..#X] | CanChangeUniverse([x[i]: x in X], Z)};
> R := Universe(X);
> d := ClassesData(R);
> test := function(x)
>    if Indicator(x) eq -1 then return false; end if;
>    c := [i : i in int_cl | x[i] in {1,-1}];
>    return #c gt 0 and GCD([d[i,1]: i in c]) eq 1;
> end function;
> schur_1 := {i : i in [1..#X] | test(X[i]) };
> #schur_1;
28
> rat := {i:i in schur_1|DegreeOfCharacterField(X[i]) eq 1};
> #rat;
20
We have found 28 characters with Schur index 1. Of these, 20 are rational valued, hence are characters of rational representation of Ly. We now consider inner products with products of our 20 rational characters in pairs, to find more characters having Schur index 1. Here we are using Theorem 2.1 and Corollary 2.4.
> unknown := {1..#X} diff schur_1;
> #unknown;
25
> new_1 := {i : i in unknown | exists{j : j,k in rat | j le k
> and (ip eq 1 or (Indicator(X[i]) ne 0 and IsOdd(ip)))
> where ip := Z!InnerProduct(X[i], X[j]*X[k]) } };
> schur_1 := schur_1 join new_1;
> unknown := {1..#X} diff schur_1;
> unknown;
{ 37 }
> chi := X[37];
> Degree(chi), Indicator(chi);
36887520 1
> DegreeOfCharacterField(chi);
1
> PrimeDivisors(GroupOrder(R) div 36887520);
[ 2, 3, 5, 7, 11 ]
We have shown that all but one character (χ = χ37) have Schur index 1. The outstanding character χ has degree 36 887 520, indicator 1 (hence Schur index 1 over the real numbers), and is rational valued. Furthermore, for primes p not∈{2, 3, 5, 7, 11} this character has p-adic Schur index mp(χ) = 1 (Theorem 2.10).

We now compute the Schur indices of χ over the remaining p-adic fields. We start with values of χ on group elements of order 11 (class 17). This may give us information on the cases p∈{2, 3, 5, 7}. We test if characters in the same p-block as χ take values on class 17 that lie in the p-adic field Qp. We use a test for this based on the Galois group of Qp11) over Qp. This group is cyclic, generated by the pth conjugacy operation: ζ11 |-> ζ11p.

> d[17,1];
11
> chi[17];
-1
> for p in [2,3,5,7] do
>    bl := Block(X, 37, p);
>    p, forall{i:i in bl|X[i,17] eq Conjugate(X[i,17],p)};
> end for;
2 false
3 true
5 true
7 false
> GroupFactoredOrder(R);
[ <2, 8>, <3, 7>, <5, 6>, <7, 1>, <11, 1>, <31, 1>,
<37, 1>, <67, 1> ]
We find that m3(χ) and m5(χ) are divisors of the character value -1 (Corollary 3.2), hence are both 1. When p=2, 7 we see that Brauer characters in the p-block of χ take values outside Qp. Noting that the Sylow 7-subgroups of Ly are cyclic, Theorem 2.12 gives m7(χ) > 1. As real valued characters have all Schur indices 1 or 2, m7(χ) = 2.

It remains to determine m2(χ) and m11(χ). Theorem 2.15 shows that one of these has to equal 1 and the other has to equal 2. We consider group elements of order 21 (class 27) in the same manner as above.

> d[27,1];
21
> chi[27];
1
> for p in [2,11] do
>    bl := Block(X, 37, p);
>    p, forall{i:i in bl|X[i,27] eq Conjugate(X[i,27],p)};
> end for;
2 false
11 true
From this we conclude that m11(χ) = 1 (Corollary 3.2), and deduce m2(χ) = 2.

We have shown that the statement in S7 of [Fei83] that all characters of Lyons' group have Schur index 1 is not quite correct. The character of degree 36 887 520 has 2-adic and 7-adic Schur indices equal to 2, with its other p-adic Schur indices and its real Schur index being 1. All the other characters of Ly have Schur index 1.

V2.28, 13 July 2023