-th power of an element with cycle structure
##

-th powermap of the ## group $G$. PowerWreath := function(sub_pm, ptuple, p) local power, k, i, j; power:= List(ptuple, x-> []); for i in [1..Length(ptuple)] do for k in ptuple[i] do if k mod p = 0 then for j in [1..p] do Add(power[i], k/p); od; else Add(power[sub_pm[i]], k); fi; od; od; for k in power do Sort(k, function(a,b) return a>b; end); od; return power; end; ## The $r$-tuples of partitions are also used as labels for the irreducible ## characters of the wreath product $X_n$. Let $\alpha = (\alpha^1, \ldots, ## \alpha^r)$ be an $r$-tuple of partitions of $n$. The irreducible ## character $\chi^{\alpha}$ belonging to this $r$-tuple of partitions can ## be described as a tensor product. ## For every $1 \leq c \leq r$ we take $\|\alpha^c\|$ copies of the ## irreducible character $\phi_c$ of $G$. The product ## \[ \prod_{c=1}^r \phi_c^{\alpha^c} \] ## of these characters is a character of the normal subgroup $G^n$ of $X_n$ ## which can in a natural way be extended to its inertia group ## \[ T_{\alpha} = T_{\alpha_1} \times \cdots \times T_{\alpha_r} \cong ## X_{\|\alpha^1\|} \times \cdots \times X_{\|\alpha^r\|} \] ## giving the irreducible character ## \[ \prod_{c=1}^r \overline{\phi_c^{\alpha^c}} \] ## of $T_{\alpha}$. By Clifford theory all irreducible characters of ## $T_{\alpha}$ extending $\prod_{c=1}^r \phi_c^{\alpha^c}$ are obtained as ## tensor products with irreducible characters of the inertia factor ## \[ T_{\alpha}/G^n ## \cong S_{\|\alpha_1\|} \times \cdots \times S_{\|\alpha_r\|}.\] ## Inducing such a character up to $X_n$ yields an irreducible character of ## $X_n$. Moreover every irreducible character of $X_n$ is of the form ## \[ \chi^{\alpha} = \left(\prod_{c=1}^r \overline{\phi_c^{\alpha^c}} ## \otimes \chi^{\alpha^c} \right)^{X_n}. \] ## \begin{Prop}[\cite{JaKe}, (4.4.3)] ## The characters $\chi^{\alpha}$ run through a complete system of pairwise ## different and irreducible characters of $X_n$ if $\alpha$ runs through ## all $r$--tuples of partitions of $n$. ## \end{Prop} ## The following generalization of the Murnaghan--Nakayama formula allows ## the evaluation of the character $\chi^{\alpha}$ of $X_n$ on the element ## $\pi$ described by its type and thereby establishes the relationship ## between classes and characters of $X_n$ in terms of $r$-tuples of ## partitions of $n$. ## \begin{Thm} \label{MNX} ## Let $\alpha = (\alpha^1, \dots, \alpha^r)$ with $\sum_i \|\alpha^i\| = n$ ## be an $r$--tuple of partitions of $n$ and let $\pi \in X_n$ with ## $a_{tk}(\pi) > 0$ for fixed $k \leq n$, $t \leq r$. Let $\rho \in ## X_{n-k}$ be of type $a(\rho)$ where ## ## \[a_{ij}(\rho) = \left\{\begin{array}{ll} ## a_{tk}(\pi)-1 & \mbox{if $i=t$, $j=k$,} \\ ## a_{ij}(\pi) & \mbox{otherwise.} ## \end{array}\right.\] ## ## Define $\chi^{[\ ]} = 1$. Then ## ## \[\chi^{\alpha}(\pi) = \sum_{s=1}^r \phi_{s}(g_t) ## \sum_{h_{ij}^{\alpha^s} = k} (-1)^{l_{ij}^{\alpha^s}} ## \chi^{\alpha - R_{ij}^{\alpha^s}} (\rho).\] ## ## \end{Thm} ## {\bf Proof.} This formula is proved by a direct computation which first ## reveals the place where the ordinary Murnaghan--Nakayama formula ## (\ref{MN}) can be applied and then collects the results together to give ## the desired formula. Write $\chi^{\alpha}$ as an induced character, ## \[ \chi^{\alpha}(\pi) = \sum_{\sigma} \prod_c \left(\overline{ ## \phi_c^{\|\alpha^c\|}} \otimes \chi^{\alpha^c}\right)(\pi^{\sigma}) \] ## where the sum ranges over all coset representatives $\sigma$ in ## $X_n/T_{\alpha}$ with $\pi^{\sigma} \in T_{\alpha}$. The coset ## representatives $\sigma$ can be chosen as elements of the complement ## $S_n$ of $G^n$ in $X_n$. Then write $\pi = \kappa \rho$ for a suitable ## $\rho$ which satisfies the hypothesis of the theorem and split the sum ## into parts according to whether $\kappa^{\sigma}$ lies in the direct ## factor $T_{\alpha^s}$ of the inertia factor $T_{\alpha}$. Extracting the ## factor of the character corresponding to $T_{\alpha^s}$ we obtain ## \[ \chi^{\alpha}(\pi) = \sum_{s=1}^r \sum_{\sigma} ## \overline{\phi_s^{\|\alpha^s\|}}\chi^{\alpha^s}((\kappa \rho_1)^{\sigma}) ## \prod_{c \not= s} \overline{\phi_c^{\|\alpha^c\|}} ## \chi^{\alpha^c}(\rho_2^{\sigma}) \] ## where $\sigma$ runs over those coset representatives which satisfy ## $\pi^{\sigma} \in T_{\alpha}$ and $\kappa^{\sigma} \in T_{\alpha^s}$ and ## where $\rho = \rho_1 \rho_2$ such that $(\kappa \rho_1)^{\sigma}$ is the ## projection of $\pi^{\sigma}$ on $T_{\alpha^s}$. ## The extracted factor $\overline{\phi_s^{\|\alpha^s\|}} \chi^{\alpha^s} ## ((\kappa \rho_1)^{\sigma})$ can be evaluated as follows. First observe ## that ## \[ \overline{\phi_s^{\|\alpha^s\|}}((\kappa \rho_1)^{\sigma}) = ## \overline{\phi_s^k}(\kappa^{\sigma}) ## \overline{\phi_s^{\|\alpha^s\|-k}}(\rho_1^{\sigma}) = ## \phi_s(g_t) \overline{\phi_s^{\|\alpha^s\|-k}}(\rho_1^{\sigma}) \] ## by~(\cite{JaKe}, (4.3.9)) and the choice of $\kappa$. The remaining part ## of the factor is essentially a character of the symmetric group ## $S_{\|\alpha^s\|}$ and the Murnaghan-Nakayama formula~\ref{MN} can be ## applied, ## \[ \chi^{\alpha^s}((\kappa \rho_1)^{\sigma}) = \sum_{h_{ij}^{\alpha^s}=k} ## (-1)^{l_{ij}^{\alpha^s}} \chi^{\alpha - R_{ij}^{\alpha^s}}(\rho_1). \] ## Putting the results together again we have ## \[ \chi^{\alpha}(\pi) = \sum_{s=1}^r \phi_s(g_t) ## \sum_{h_{ij}^{\alpha^s}=k} (-1)^{l_{ij}^{\alpha^s}} ## \sum_{\sigma} \prod_c \left(\overline{\phi_c^{\|\alpha^c_{\circ}\|}} ## \otimes \chi^{\alpha^c_{\circ}} \right)(\rho^{\sigma}) \] ## for a sum over certain coset representatives $\sigma$ which defines the ## induced character $\chi^{\alpha_{\circ}}(\rho)$ and $\alpha_{\circ} = ## \alpha - R_{ij}^{\alpha^s}$. This observation completes the proof. ## \hfill $\Box$ ## An implementation of this general formula will be given on ## page~\pageref{MNX-prog}. Before that we will install the generic ## character table for Weyl groups of type $B$. ## The Weyl group of type $B_n$ is a special case of a wreath product with a ## symmetric group. It is isomorphic to the wreath product of a cyclic ## group of order 2 with a symmetric group. If we take the known fixed ## values from the character table of the cyclic group of order 2 we can ## implement a generic table 'wlb' without any further dependencies. wlb:= rec(name:= "WeylB"); wlb.order:= (n-> 2^n * Factorial(n)); wlb.specializedname:= (n-> ConcatenationString("W(B",String(n),")")); wlb.text:= "generic character table for Weyl groups of type B"; wlb.isGenericTable:= true; wlb.domain:= (n-> IsInt(n) and n > 0); ## As before we install the lists of other functions. wlb.classparam:= []; wlb.charparam:= []; wlb.centralizers:= []; wlb.orders:= []; wlb.powermap:= []; wlb.irreducibles:= [[]]; ## The classes and the characters are labelled by pairs of partitions. wlb.classparam[1]:= function(n) return PartitionTuples(n, 2); end; wlb.charparam[1]:= function(n) return PartitionTuples(n, 2); end; ## The orders of the elements are computed from the labels in the following ## way (s.~\cite{JaKe}, (4.2.12)). wlb.orders[1]:= function(n, lbl) local ord; ord:= 1; if lbl[1] <> [] then ord:= Lcm(lbl[1]); fi; if lbl[2] <> [] then ord:= Lcm(ord, 2 * Lcm(lbl[2])); fi; return ord; end; ## The centralizers are determined by the function 'CentralizerWreath'. wlb.centralizers[1]:= function(n, lbl) return CentralizerWreath([2, 2], lbl); end; ## The function which constructs the powermap has to distinguish two cases, ## depending on whether the prime is odd. If the prime $p$ equals 2 then ## 'PowerWreath' is called with the second powermap of the cyclic group of ## order 2, otherwise with the identity mapping wlb.powermap[1]:= function(n, lbl, p) if p = 2 then return [1, PowerWreath([1, 1], lbl, 2)]; else return [1, PowerWreath([1, 2], lbl, p)]; fi; end; ## As in section~\ref{symmetric} the Murnaghan--Nakayama formula enables a ## straightforward implementation 'psi1' of the character values. psi1:= function(n, alpha, pi) local i, j, k, s, t, delta, rho, res; # termination condition. if n = 0 then return 1; fi; # negative cycles first. if pi[2] <> [] then t:= 2; else t:= 1; fi; # get length of longest cycle. k:= pi[t][1]; # construct rho. rho:= Copy(pi); rho[t]:= Sublist(pi[t], [2..Length(pi[t])]); res:= 0; # loop over the young diagram. for s in [1, 2] do for i in [1..Length(alpha[s])] do for j in [1..alpha[s][i]] do if hooklength(alpha[s], i, j) = k then delta:= Copy(alpha); delta[s]:= unrimmed(alpha[s], i, j); # enter recursion. if s = 2 and t = 2 then res:= res - (-1)^leglength(alpha[s], i, j) * psi1(n-k, delta, rho); else res:= res + (-1)^leglength(alpha[s], i, j) * psi1(n-k, delta, rho); fi; fi; od; od; od; # return the result. return res; end; wlb.irreducibles[1][1]:= psi1; ## Once again a generic character table is complete and we can compute as a ## small example the character table of the Weyl group of type $B_3$. ## | gap> b3:= CharTableSpecialized(wlb, 3); ## rec( name := "W(B3)", order := 48, centralizers := ## [ 48, 16, 16, 48, 8, 8, 8, 8, 6, 6 ], orders := ## [ 1, 2, 2, 2, 2, 4, 2, 4, 3, 6 ], powermap := ## [ , [ 1, 1, 1, 1, 1, 3, 1, 3, 9, 9 ], ## [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 4 ] ], irreducibles := ## [ [ 1, 1, 1, 1, -1, -1, -1, -1, 1, 1 ], ## [ 3, 1, -1, -3, -1, -1, 1, 1, 0, 0 ], ## [ 3, -1, -1, 3, -1, 1, -1, 1, 0, 0 ], ## [ 1, -1, 1, -1, -1, 1, 1, -1, 1, -1 ], ## [ 2, 2, 2, 2, 0, 0, 0, 0, -1, -1 ], ## [ 3, -1, -1, 3, 1, -1, 1, -1, 0, 0 ], ## [ 3, 1, -1, -3, 1, 1, -1, -1, 0, 0 ], ## [ 2, -2, 2, -2, 0, 0, 0, 0, -1, 1 ], ## [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], ## [ 1, -1, 1, -1, 1, -1, -1, 1, 1, -1 ] ], classparam := ## [ [ 1, [ [ 1, 1, 1 ], [ ] ] ], [ 1, [ [ 1, 1 ], [ 1 ] ] ], ## [ 1, [ [ 1 ], [ 1, 1 ] ] ], [ 1, [ [ ], [ 1, 1, 1 ] ] ], ## [ 1, [ [ 2, 1 ], [ ] ] ], [ 1, [ [ 1 ], [ 2 ] ] ], ## [ 1, [ [ 2 ], [ 1 ] ] ], [ 1, [ [ ], [ 2, 1 ] ] ], ## [ 1, [ [ 3 ], [ ] ] ], [ 1, [ [ ], [ 3 ] ] ] ], irredinfo := ## [ rec( ## charparam := [ 1, [ [ 1, 1, 1 ], [ ] ] ] ), rec( ## charparam := [ 1, [ [ 1, 1 ], [ 1 ] ] ] ), rec( ## charparam := [ 1, [ [ 1 ], [ 1, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 1, 1, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ 2, 1 ], [ ] ] ] ), rec( ## charparam := [ 1, [ [ 1 ], [ 2 ] ] ] ), rec( ## charparam := [ 1, [ [ 2 ], [ 1 ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 2, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ 3 ], [ ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 3 ] ] ] ) ## ], text := "computed using generic character table for Weyl groups\ ## of type B", classes := [ 1, 3, 3, 1, 6, 6, 6, 6, 8, 8 ## ], operations := CharTableOps ) | ## As usual the new table is checked for consistency and displayed. ## | gap> TestCharTable(b3); ## true ## gap> DisplayCharTable(b3); ## W(B3) ## ## 2 4 4 4 4 3 3 3 3 1 1 ## 3 1 . . 1 . . . . 1 1 ## ## 1a 2a 2b 2c 2d 4a 2e 4b 3a 6a ## 2P 1a 1a 1a 1a 1a 2b 1a 2b 3a 3a ## 3P 1a 2a 2b 2c 2d 4a 2e 4b 1a 2c ## ## X.1 1 1 1 1 -1 -1 -1 -1 1 1 ## X.2 3 1 -1 -3 -1 -1 1 1 . . ## X.3 3 -1 -1 3 -1 1 -1 1 . . ## X.4 1 -1 1 -1 -1 1 1 -1 1 -1 ## X.5 2 2 2 2 . . . . -1 -1 ## X.6 3 -1 -1 3 1 -1 1 -1 . . ## X.7 3 1 -1 -3 1 1 -1 -1 . . ## X.8 2 -2 2 -2 . . . . -1 1 ## X.9 1 1 1 1 1 1 1 1 1 1 ## X.10 1 -1 1 -1 1 -1 -1 1 1 -1 ## | ## The construction of the character table of the Weyl group of type $B_6$ ## with this generic table needs roughly two minutes. This group has 65 ## classes. ## ## | gap> b6:= CharTableSpecialized(wlb, 6);; time; ## 114833 | ## ## The function 'psi1' can be improved by using better termination ## conditions similar to those in 'phi2' in section~\ref{symmetric}. We ## will not do that but present now a version which deals with pairs of beta ## sets instead of pairs of partitions. psi2:= function(n, beta, pi) local i, j, k, lb, o, s, t, gamma, rho, sign, val; # termination condition. if n = 0 then return 1; fi; # negative cycles first. if pi[2] <> [] then t:= 2; else t:= 1; fi; # get length of longest cycle. k:= pi[t][1]; # construct rho. rho:= Copy(pi); rho[t]:= Sublist(pi[t], [2..Length(pi[t])]); val:= 0; # loop over the beta sets. for s in [1, 2] do # determine offset. o:= 0; lb:= Length(beta[s]); while o < lb and beta[s][o+1] = o do o:= o+1; od; for i in beta[s] do if i >= k+o and not i-k in beta[s] then # compute the leg parity. sign:= 1; for j in [i-k+1..i-1] do if j in beta[s] then sign:= -sign; fi; od; # consider character table of C2. if s = 2 and t = 2 then sign:= -sign; fi; # construct new beta set. gamma:= Copy(beta); SubtractSet(gamma[s], [i]); AddSet(gamma[s], i-k); # enter recursion. val:= val + sign * psi2(n-k, gamma, rho); fi; od; od; # return the result. return val; end; wlb.irreducibles[1][1]:= function(n, alpha, pi) return psi2(n, [BetaSet(alpha[1]), BetaSet(alpha[2])], pi); end; ## The construction of the character table of the Weyl group of type $B_6$ ## now is slightly faster. ## ## | gap> b6:= CharTableSpecialized(wlb, 6);; time; ## 90857 | ## ## The record 'wlb' we have just defined is called 'CharTableWeylB' in the ## {\GAP} library. It will be used by the function 'CharTable' if it is ## called with '"WeylB"' as a first argument. ## ## Only slight changes are necessary to obtain from the function 'psi2' the ## more general function 'CharValueWreathSymmetric' which computes a single ## character value of a wreath product. \label{MNX-prog} CharValueWreathSymmetric := function(sub, n, beta, pi) local i, j, k, lb, o, s, t, r, gamma, rho, sign, val; # termination condition. if n = 0 then return 1; fi; r:= Length(pi); # negative cycles first. t:= r; while pi[t] = [] do t:= t-1; od; # get length of longest cycle. k:= pi[t][1]; # construct rho. rho:= Copy(pi); rho[t]:= Sublist(pi[t], [2..Length(pi[t])]); val:= 0; # loop over the beta sets. for s in [1..r] do # determine offset. o:= 0; lb:= Length(beta[s]); while o < lb and beta[s][o+1] = o do o:= o+1; od; for i in beta[s] do if i >= k+o and not i-k in beta[s] then # compute the leg parity. sign:= 1; for j in [i-k+1..i-1] do if j in beta[s] then sign:= -sign; fi; od; # consider character table of subgroup. sign:= sub.irreducibles[s][t] * sign; # construct new beta set. gamma:= Copy(beta); SubtractSet(gamma[s], [i]); AddSet(gamma[s], i-k); # enter recursion. val:= val + sign * CharValueWreathSymmetric(sub, n-k, gamma, rho); fi; od; od; # return the result. return val; end; ## Along the lines of 'PartitionTuples' one can now write a function 'IrrX' ## which constructs the character table of a wreath product with a symmetric ## group in a recursion free fashion. IrrX:= function(tbl, n) local i, j, k, m, r, s, t, pm, res, col, scheme, np, charCol, hooks, pts, partitions; r:= Length(tbl.irreducibles[1]); # encode partition tuples by positions of partitions. partitions:= List([1..n], Partitions); pts:= []; for i in [1..n] do pts[i]:= PartitionTuples(i, r); for j in [1..Length(pts[i])] do np:= [[], []]; for t in pts[i][j] do s:= Sum(t); Add(np[1], s); if s = 0 then Add(np[2], 1); else Add(np[2], Position(partitions[s], t)); fi; od; pts[i][j]:= np; od; od; scheme:= InductionScheme(n); # how to encode a hook. hooks:= function(np, n) local res, i, k, l, ni, pi, sign; res:= []; for i in [1..r] do res[i]:= List([1..n], x-> []); od; for i in [1..r] do ni:= np[1][i]; pi:= np[2][i]; for k in [1..ni] do for l in scheme[ni][pi][k] do np[1][i]:= ni-k; if l < 0 then np[2][i]:= -l; sign:= -1; else np[2][i]:= l; sign:= 1; fi; if k = n then Add(res[i][k], sign); else Add(res[i][k], sign * Position(pts[n-k], np)); fi; od; od; np[1][i]:= ni; np[2][i]:= pi; od; return res; end; # collect hook encodings. res:= []; for i in [1..n] do res[i]:= []; for np in pts[i] do Add(res[i], hooks(np, i)); od; od; scheme:= res; # how to construct a new column. charCol:= function(n, t, k, p) local i, j, col, pi, val; col:= []; for pi in scheme[n] do val:= 0; for j in [1..r] do for i in pi[j][k] do if i < 0 then val:= val - tbl.irreducibles[j][p] * t[-i]; else val:= val + tbl.irreducibles[j][p] * t[i]; fi; od; od; Add(col, val); od; return col; end; # construct the columns. pm:= List([1..n-1], x->[]); for m in [1..QuoInt(n,2)] do # the $m$-cycle in all possible places for i in [1..r] do s:= [1..n]*0+1; s[m]:= i; Add(pm[m], rec(col:= charCol(m, [1], m, i), pos:= s)); od; # add the $m$-cycle to everything you know for k in [m+1..n-m] do for t in pm[k-m] do for i in [t.pos[m]..r] do s:= Copy(t.pos); s[m]:= i; Add(pm[k], rec(col:= charCol(k, t.col, m, i), pos:= s)); od; od; od; od; # collect and transpose. np:= Length(scheme[n]); res:= List([1..np], x-> []); for k in [1..n-1] do for t in pm[n-k] do for i in [t.pos[k]..r] do col:= charCol(n, t.col, k, i); for j in [1..np] do Add(res[j], col[j]); od; od; od; od; for i in [1..r] do col:= charCol(n, [1], n, i); for j in [1..np] do Add(res[j], col[j]); od; od; return res; end; ## 'IrrX' is called 'MatCharsWreathSymmetric' in the {\GAP} library. It can ## also be used for a fast computation of the matrix of character values in ## 'wlb'. We only have to give as a first argument a record which contains ## in the field 'irreducibles' the matrix of character values of the cyclic ## group of order 2. wlb.matrix:= (n-> IrrX(rec(irreducibles:= [[1, 1], [1, -1]]), n)); ## Now the character table of the Weyl group of type $B_6$ can be ## constructed in three seconds. ## ## | gap> b6:= CharTableSpecialized(wlb, 6);; time; ## 3004 | ## ## This section ends with the function 'CharTableWreathSymmetric' which ## computes the character table of a wreath product of a group with ## character table 'sub' with a symmetric group on 'n' points. CharTableWreathSymmetric := function(sub, n) local i, j, tbl, r, nccl, parts, p, pm, spm; # initialize. tbl:= rec( order:= sub.order^n * Factorial(n), name:= ConcatenationString(sub.name, "wrS", String(n)), centralizers:= [], classes:= [], orders:= [], powermap:= [], operations:= CharTableOps); # the table head. r:= Length(sub.orders); parts:= PartitionTuples(n, r); tbl.classparam:= parts; tbl.irredinfo:= []; nccl:= Length(parts); for i in [1..nccl] do tbl.centralizers[i]:= CentralizerWreath(sub.centralizers, parts[i]); tbl.classes[i]:= tbl.order / tbl.centralizers[i]; pm:= 1; for j in [1..r] do if parts[i][j] <> [] then pm:= Lcm(pm, sub.orders[j] * Lcm(parts[i][j])); fi; od; tbl.orders[i]:= pm; tbl.irredinfo[i]:= rec(charparam:= parts[i]); od; # the powermap. for p in Set(Factors(tbl.order)) do pm:= []; if IsBound(sub.powermap[p]) then spm:= sub.powermap[p]; else spm:= Parametrized(Powermap(sub, p, rec(quick:=true))); fi; for i in [1..nccl] do pm[i]:= Position(parts, PowerWreath(spm, parts[i], p)); od; tbl.powermap[p]:= pm; od; # the character values. tbl.irreducibles:= IrrX(sub, n); return tbl; end; ## With this function we can for example compute the character table of the ## wreath product $S_3 \wr S_2$. ## | gap> s3:= CharTableSpecialized(sym, 3);; ## gap> s3wrs2:= CharTableWreathSymmetric(s3, 2); ## rec( order := 72, name := "S3wrS2", centralizers := ## [ 72, 12, 18, 8, 6, 18, 12, 4, 6 ], classes := ## [ 1, 6, 4, 9, 12, 4, 6, 18, 12 ], orders := ## [ 1, 2, 3, 2, 6, 3, 2, 4, 6 ], powermap := ## [ , [ 1, 1, 3, 1, 3, 6, 1, 4, 6 ], [ 1, 2, 1, 4, 2, 1, 7, 8, 7 ] ## ], operations := CharTableOps, classparam := ## [ [ [ 1, 1 ], [ ], [ ] ], [ [ 1 ], [ 1 ], [ ] ], ## [ [ 1 ], [ ], [ 1 ] ], [ [ ], [ 1, 1 ], [ ] ], ## [ [ ], [ 1 ], [ 1 ] ], [ [ ], [ ], [ 1, 1 ] ], ## [ [ 2 ], [ ], [ ] ], [ [ ], [ 2 ], [ ] ], ## [ [ ], [ ], [ 2 ] ] ], irredinfo := [ rec( ## charparam := [ [ 1, 1 ], [ ], [ ] ] ), rec( ## charparam := [ [ 1 ], [ 1 ], [ ] ] ), rec( ## charparam := [ [ 1 ], [ ], [ 1 ] ] ), rec( ## charparam := [ [ ], [ 1, 1 ], [ ] ] ), rec( ## charparam := [ [ ], [ 1 ], [ 1 ] ] ), rec( ## charparam := [ [ ], [ ], [ 1, 1 ] ] ), rec( ## charparam := [ [ 2 ], [ ], [ ] ] ), rec( ## charparam := [ [ ], [ 2 ], [ ] ] ), rec( ## charparam := [ [ ], [ ], [ 2 ] ] ) ], irreducibles := ## [ [ 1, -1, 1, 1, -1, 1, -1, 1, -1 ], ## [ 4, -2, 1, 0, 1, -2, 0, 0, 0 ], [ 2, 0, 2, -2, 0, 2, 0, 0, 0 ], ## [ 4, 0, -2, 0, 0, 1, -2, 0, 1 ], [ 4, 2, 1, 0, -1, -2, 0, 0, 0 ], ## [ 1, 1, 1, 1, 1, 1, -1, -1, -1 ], ## [ 1, -1, 1, 1, -1, 1, 1, -1, 1 ], ## [ 4, 0, -2, 0, 0, 1, 2, 0, -1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ## ] ) ## gap> TestCharTable(s3wrs2); ## true ## gap> DisplayCharTable(s3wrs2); ## S3wrS2 ## ## 2 3 2 1 3 1 1 2 2 1 ## 3 2 1 2 . 1 2 1 . 1 ## ## 1a 2a 3a 2b 6a 3b 2c 4a 6b ## 2P 1a 1a 3a 1a 3a 3b 1a 2b 3b ## 3P 1a 2a 1a 2b 2a 1a 2c 4a 2c ## ## X.1 1 -1 1 1 -1 1 -1 1 -1 ## X.2 4 -2 1 . 1 -2 . . . ## X.3 2 . 2 -2 . 2 . . . ## X.4 4 . -2 . . 1 -2 . 1 ## X.5 4 2 1 . -1 -2 . . . ## X.6 1 1 1 1 1 1 -1 -1 -1 ## X.7 1 -1 1 1 -1 1 1 -1 1 ## X.8 4 . -2 . . 1 2 . -1 ## X.9 1 1 1 1 1 1 1 1 1 ## | ## The first argument, however, can be any character table not necessarily ## one of a symmetric group. ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ## \section{Case D.} \label{weyl-d} ## ## The Weyl group of type $D_n$ is a normal subgroup of index two in the ## Weyl group of type $B_n$. As in the case of the alternating group its ## character table can be derived from that of the Weyl group of type $B_n$ ## by mainly using Clifford theory. We will therefore perform the same ## steps as in section~\ref{alternating} to define a generic character table ## 'wld' for Weyl groups of type $D$. ## ## We begin as usual by initializing the record 'wld'. wld:= rec(name:= "WeylD"); wld.order:= (n-> 2^(n-1) * Factorial(n)); wld.specializedname:= (n-> ConcatenationString("W(D",String(n),")")); wld.text:= "generic character table for Weyl groups of type D"; wld.isGenericTable:= true; wld.domain:= (n-> IsInt(n) and n > 0); wld.classparam:= []; wld.charparam:= []; wld.centralizers:= []; wld.orders:= []; wld.powermap:= []; wld.irreducibles:= [[]]; ## The classes of a Weyl group of type $D$ are labelled by pairs of ## partitions like in case $B$. Classes of $B_n$ belonging to $D_n$ are ## exactly those with label $(\pi_1, \pi_2)$ where $\pi_2$ has an even ## length. (Here we assume that $\pi_2$ corresponds to the element of order ## two in the cyclic group of order two.) A class $(\pi_1, \pi_2)$ of $B_n$ ## will split into two classes of equal length in $D_n$ if and only if ## $\pi_2$ is the empty partition and $\pi_1$ consists of only even parts ## (i.e. $\pi_1 = 2 \cdot \pi$ for some partition $\pi$ of $n/2$). You see ## that this can only happen if $n$ is even. In that case we will write a ## sign instead of the empty partition for $\pi_2$ in order to distinguish ## the two classes of $D_n$. So the class parameters of $D_n$ are obtained ## as follows. wld.classparam[1]:= function(n) local classes, pi; classes:= []; for pi in PartitionTuples(n, 2) do if Length(pi[2]) mod 2 = 0 then if pi[2] = [] and ForAll(pi[1], x-> x mod 2 = 0) then Add(classes, [pi[1], '+']); Add(classes, [pi[1], '-']); else Add(classes, pi); fi; fi; od; return classes; end; ## The orders of the elements in $D_n$ are of course the same as in $B_n$ ## but we have to take care of the parametrization of the split classes. wld.orders[1]:= function(n, lbl) local ord; ord:= 1; if lbl[1] <> [] then ord:= Lcm(lbl[1]); fi; if lbl[2] <> [] and IsList(lbl[2]) then ord:= Lcm(ord, 2*Lcm(lbl[2])); fi; return ord; end; ## The orders of the centralizers in $D_n$ are half of the orders of the ## centralizers in $B_n$ except for the split classes. wld.centralizers[1]:= function(n, lbl) if not IsList(lbl[2]) then return CentralizerWreath([2,2], [lbl[1], []]); else return CentralizerWreath([2,2], lbl) / 2; fi; end; ## Again the powermap has to distinguish two cases. Moreover it has to ## handle the special labelling of the split classes. If a power of a split ## class is again a split class we decide to keep the sign of the label. wld.powermap[1]:= function(n, lbl, p) local power; if not IsList(lbl[2]) then power:= PowerPartition(lbl[1], p); if ForAll(power, x-> x mod 2 = 0) then return [1, [power, lbl[2]]]; # keep the sign. else return [1, [power, []]]; fi; else if p = 2 then return [1, PowerWreath([1, 1], lbl, 2)]; else return [1, PowerWreath([1, 2], lbl, p)]; fi; fi; end; ## The characters $\chi^{(\alpha_1, \alpha_2)}$ and $\chi^{(\alpha_2, ## \alpha_1)}$ will restrict to the same irreducible character of $D_n$ for ## $\alpha_1 \not= \alpha_2$. The characters $\chi^{(\alpha, \alpha)}$ of ## $B_n$ will restrict to a sum of two irreducible characters ## $\chi_{+}^{(\alpha, \alpha)}$ and $\chi_{-}^{(\alpha, \alpha)}$ of $D_n$. ## Note that in this case $\alpha$ is a partition of $n/2$ and again that ## this can only happen if $n$ is even. We will in that case replace the ## second occurrence of $\alpha$ in the label by a sign to distinguish these ## two characters of $D_n$. The following function computes these character ## labels. wld.charparam[1]:= function(n) local alpha, labels; labels:= []; for alpha in PartitionTuples(n, 2) do if alpha[1] = alpha[2] then Add(labels, [alpha[1], '+']); Add(labels, [alpha[1], '-']); elif alpha[1] < alpha[2] then Add(labels, alpha); fi; od; return labels; end; ## Last thing to do\:\ the character values. But first we have to answer ## the question\:\ What happens to the split characters on the split ## classes? As it turns out there is no such nice correspondence between the ## split classes and the split characters as in the case of alternating ## groups. But things are not very complicated here, too. We simply have ## to correct the restricted characters from $B_n$ by character values of ## $S_{n/2}$. ## ## \begin{Thm} \label{val-d} ## Let $n > 0$ be an even integer and $\alpha, \pi$ be partitions of $n/2$. ## Then the character value $\chi_{\pm}^{(\alpha, \alpha)}$ on a class ## $(2\pi, [\ ])_{\pm}$ is determined by the following formula. ## ## \[ \chi_{\epsilon}^{(\alpha, \alpha)}\left((2\pi, [\ ])_{\delta}\right) = ## \frac{1}{2} \chi^{(\alpha, \alpha)}(2\pi, [\ ]) + ## \epsilon \delta 2^{l(\pi)-1} \chi^{\alpha}(\pi). \] ## \end{Thm} ## {\bf Proof.} From \cite{Ker2} (2.45) we see that the characters are ## described as follows. We take $s = n/2$ copies of the trivial character ## $1$ and also $s$ copies of the sign character $\epsilon$ of $S_2$. Their ## product $1^s \epsilon^s$ describes a character of the elementary abelian ## normal subgroup $S_2^n$ of $B_n$. Restrict this character to the ## intersection $\hat{2}$ of $S_2^n$ and $D_n$ which is a normal subgroup of ## $D_n$. Then extend the character to its inertia group $T$ with inertia ## factor isomorphic to the wreath product $S_s \wr S_2$. This gives the ## character ## \[ \overline{(1^s \epsilon^s)\mid_{\hat{2}}} \] ## of the inertia group. Furthermore we take the character $\chi^{\alpha} ## \chi^{\alpha}$ of $S_s \times S_s$ and extend it to its inertia group in ## $S_s \wr S_2$ which is $S_s \wr S_2$. This character is to be tensored ## with either the trivial or the sign character of $S_2$. Then the ## characters $\chi^{(\alpha, \alpha)}_{\pm}$ can be described as ## \[\begin{array}{rcl} ## \chi^{(\alpha, \alpha)}_{+} & = & ## \left( \overline{(1^s \epsilon^s)\mid_{\hat{2}}} ## \otimes \overline{\chi^{\alpha} \chi^{\alpha}} ## \otimes 1 \right)^{D_n}, \\ ## \chi^{(\alpha, \alpha)}_{-} & = & ## \left( \overline{(1^s \epsilon^s)\mid_{\hat{2}}} ## \otimes \overline{\chi^{\alpha} \chi^{\alpha}} ## \otimes \epsilon \right)^{D_n}. ## \end{array} \] ## We already know that the sum of these two characters yields character ## values of the character $\chi^{(\alpha, \alpha)}$ of $B_n$. We will now ## investigate the difference. Take a representative $x$ of the class ## $(2\pi, [\ ])$ of $B_n$ for some partition $\pi$ of $n/2$. We may assume ## that $x$ is an element of the complement $S_n$ and that it has a matrix ## representation of the form ## \[ \left[ \begin{array}{cc} ## 0 & X \\ ## I & 0 ## \end{array} \right] \] ## where $X$ is a suitable permutation matrix with cycle structure $\pi$ and ## $I$ denotes the $n/2 \times n/2$ identity matrix. Then write the ## character values as a sum of character values of the inertia group $T$. ## \[ \begin{array}{rl} \displaystyle ## (\chi^{(\alpha, \alpha)}_{+} - \chi^{(\alpha, \alpha)}_{-})(x) = & ## \left( \overline{(1^s \epsilon^s)\mid_{\hat{2}}} ## \otimes \overline{\chi^{\alpha} \chi^{\alpha}} ## \otimes (1 - \epsilon) \right)^{D_n}(x) \\ = & \displaystyle ## \|C_{D_n}(x)\| \sum_{y \sim x} \frac{1}{\|C_T(y)\|} ## \overline{(1^s \epsilon^s)\mid_{\hat{2}}}(y) ## \otimes \overline{\chi^{\alpha} \chi^{\alpha}}(y) ## \otimes (1 - \epsilon)(y). ## \end{array} \] ## Here the sum runs over those conjugacy class representatives $y$ of $T$ ## which are conjugate to $x$ in $D_n$. The factor $\otimes (1 - ## \epsilon)(y)$ will be 0 for those $y$ with matrix representation ## \[ \left[ \begin{array}{cc} ## P_1 & 0 \\ ## 0 & P_2 ## \end{array} \right] \] ## for some signed permutation matrices $P_1, P_2$ such that the whole ## matrix has cycle structure $2\pi$. But the only other representative of ## conjugacy classes of $T$ that is conjugate to $x$ in $D_n$ is $x$ itself. ## Hence there is only one summand, the factor $\overline{(1^s ## \epsilon^s)\mid_{\hat{2}}}(x)$ will be 1 and with ## $\overline{\chi^{\alpha} \chi^{\alpha}}(x) = \chi^{\alpha}(\pi)$ we have ## for the difference of the character values ## \[(\chi^{(\alpha, \alpha)}_{+} - \chi^{(\alpha, \alpha)}_{-})(x) = ## \frac{\|C_{D_n}(x)\|}{\|C_T(x)\|} ## \overline{(1^s \epsilon^s)\mid_{\hat{2}}}(x) ## \otimes \overline{\chi^{\alpha} \chi^{\alpha}}(x) ## \otimes (1 - \epsilon)(x) = ## \frac{\|C_{D_n}(x)\|}{\|C_T(x)\|} 2 \chi^{\alpha}(\pi). \] ## Finally observe that by (\ref{cen-wreath}) ## \[\frac{\|C_{D_n}(x)\|}{\|C_T(x)\|} = ## \frac{\|C_{S_n}(x)\|}{\|C_{S_s \wr S_2}(x)\|} = ## \frac{\|C_{S_n}(2\pi)\|}{2\|C_{S_s}(\pi)\|} = ## \frac{\prod_i (2i)^{a_i(\pi)} a_i(\pi)!}{2 ## \prod_i i^{a_i(\pi)} a_i(\pi)!} = ## \frac{1}{2} \prod_i 2^{a_i(\pi)} = 2^{l(\pi)-1}. \] ## ## This completes the proof of Theorem~\ref{val-d}. \hfill $\Box$ ## Thus the computation of the character values of $D_n$ can be done with ## the functions that are already available. We start with a character ## value in $B_n$ and for the split characters on the split classes this ## value will be corrected according to the above theorem. wld.irreducibles[1][1]:= function(n, alpha, pi) local delta, val; if not IsList(alpha[2]) then delta:= [alpha[1], alpha[1]]; if not IsList(pi[2]) then val:= wlb.irreducibles[1][1](n, delta, [pi[1], []])/2; if alpha[2] = pi[2] then val:= val + 2^(Length(pi[1])-1) * sym.irreducibles[1][1](n/2, alpha[1], pi[1]/2); else val:= val - 2^(Length(pi[1])-1) * sym.irreducibles[1][1](n/2, alpha[1], pi[1]/2); fi; else val:= wlb.irreducibles[1][1](n, delta, pi)/2; fi; else if not IsList(pi[2]) then val:= wlb.irreducibles[1][1](n, alpha, [pi[1], []]); else val:= wlb.irreducibles[1][1](n, alpha, pi); fi; fi; return val; end; ## As an example we can now compute and display the character table of the ## Weyl group of type $D_4$. ## | gap> d4:= CharTableSpecialized(wld, 4); ## rec( name := "W(D4)", order := 192, centralizers := ## [ 192, 32, 192, 16, 8, 16, 32, 32, 16, 6, 6, 8, 8 ], orders := ## [ 1, 2, 2, 2, 4, 2, 2, 2, 4, 3, 6, 4, 4 ], powermap := ## [ , [ 1, 1, 1, 1, 2, 1, 1, 1, 3, 10, 10, 7, 8 ], ## [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 12, 13 ] ], irreducibles := ## [ [ 3, -1, 3, -1, 1, -1, 3, -1, -1, 0, 0, -1, 1 ], ## [ 3, -1, 3, -1, 1, -1, -1, 3, -1, 0, 0, 1, -1 ], ## [ 4, 0, -4, -2, 0, 2, 0, 0, 0, 1, -1, 0, 0 ], ## [ 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1 ], ## [ 6, -2, 6, 0, 0, 0, -2, -2, 2, 0, 0, 0, 0 ], ## [ 8, 0, -8, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0 ], ## [ 3, 3, 3, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1 ], ## [ 3, -1, 3, 1, -1, 1, 3, -1, -1, 0, 0, 1, -1 ], ## [ 3, -1, 3, 1, -1, 1, -1, 3, -1, 0, 0, -1, 1 ], ## [ 2, 2, 2, 0, 0, 0, 2, 2, 2, -1, -1, 0, 0 ], ## [ 4, 0, -4, 2, 0, -2, 0, 0, 0, 1, -1, 0, 0 ], ## [ 3, 3, 3, 1, 1, 1, -1, -1, -1, 0, 0, -1, -1 ], ## [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ], classparam := ## [ [ 1, [ [ 1, 1, 1, 1 ], [ ] ] ], [ 1, [ [ 1, 1 ], [ 1, 1 ] ] ], ## [ 1, [ [ ], [ 1, 1, 1, 1 ] ] ], [ 1, [ [ 2, 1, 1 ], [ ] ] ], ## [ 1, [ [ 1 ], [ 2, 1 ] ] ], [ 1, [ [ 2 ], [ 1, 1 ] ] ], ## [ 1, [ [ 2, 2 ], '+' ] ], [ 1, [ [ 2, 2 ], '-' ] ], ## [ 1, [ [ ], [ 2, 2 ] ] ], [ 1, [ [ 3, 1 ], [ ] ] ], ## [ 1, [ [ ], [ 3, 1 ] ] ], [ 1, [ [ 4 ], '+' ] ], ## [ 1, [ [ 4 ], '-' ] ] ], irredinfo := [ rec( ## charparam := [ 1, [ [ 1, 1 ], '+' ] ] ), rec( ## charparam := [ 1, [ [ 1, 1 ], '-' ] ] ), rec( ## charparam := [ 1, [ [ 1 ], [ 1, 1, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 1, 1, 1, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ 1, 1 ], [ 2 ] ] ] ), rec( ## charparam := [ 1, [ [ 1 ], [ 2, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 2, 1, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ 2 ], '+' ] ] ), rec( ## charparam := [ 1, [ [ 2 ], '-' ] ] ), rec( ## charparam := [ 1, [ [ ], [ 2, 2 ] ] ] ), rec( ## charparam := [ 1, [ [ 1 ], [ 3 ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 3, 1 ] ] ] ), rec( ## charparam := [ 1, [ [ ], [ 4 ] ] ] ) ## ], text := "computed using generic character table for Weyl groups\ ## of type D", classes := [ 1, 6, 1, 12, 24, 12, 6, 6, 12, 32, 32, ## 24, 24 ], operations := CharTableOps ) ## gap> TestCharTable(d4); ## true ## gap> DisplayCharTable(d4); ## W(D4) ## ## 2 6 5 6 4 3 4 5 5 4 1 1 3 3 ## 3 1 . 1 . . . . . . 1 1 . . ## ## 1a 2a 2b 2c 4a 2d 2e 2f 4b 3a 6a 4c 4d ## 2P 1a 1a 1a 1a 2a 1a 1a 1a 2b 3a 3a 2e 2f ## 3P 1a 2a 2b 2c 4a 2d 2e 2f 4b 1a 2b 4c 4d ## ## X.1 3 -1 3 -1 1 -1 3 -1 -1 . . -1 1 ## X.2 3 -1 3 -1 1 -1 -1 3 -1 . . 1 -1 ## X.3 4 . -4 -2 . 2 . . . 1 -1 . . ## X.4 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 ## X.5 6 -2 6 . . . -2 -2 2 . . . . ## X.6 8 . -8 . . . . . . -1 1 . . ## X.7 3 3 3 -1 -1 -1 -1 -1 -1 . . 1 1 ## X.8 3 -1 3 1 -1 1 3 -1 -1 . . 1 -1 ## X.9 3 -1 3 1 -1 1 -1 3 -1 . . -1 1 ## X.10 2 2 2 . . . 2 2 2 -1 -1 . . ## X.11 4 . -4 2 . -2 . . . 1 -1 . . ## X.12 3 3 3 1 1 1 -1 -1 -1 . . -1 -1 ## X.13 1 1 1 1 1 1 1 1 1 1 1 1 1 ## | ## The computation of the character table of the Weyl group of type $D_6$ ## (with 37 classes) needs half a minute. ## ## | gap> d6:= CharTableSpecialized(wld, 6);; time; ## 30850 | ## ## The record 'wld' is called 'CharTableWeylD' in the {\GAP} library. This ## record will be used by the function 'CharTable' to compute a character ## table if it is called with first argument '"WeylD"'. Try to find a way ## how the fast computation of character values in $B_n$ can be used in case ## $D$. ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ## \section{Cases E, F, G\:\ Exceptional Weyl Groups.} ## ## There are five irreducible Weyl groups we have not covered yet. However, ## since this is a (rather) finite set we can treat them one by one. For ## each of these groups we will present a function which recovers the table ## from the {\GAP} library. Moreover this function will for each ## irreducible character of the table add some information in the record ## field 'irredinfo' which identifies the irreducible character with its ## label in Carter\'s book~\cite{carter} (p.~411 ff.). ## ## Such a label consists of two integers, the degree of the character and ## the first occurrence of the character as constituent in a symmetric power ## of the reflection character. The reflection character may be recognized ## from the character table as the character satisfying the following two ## conditions. Its degree $d$ is the rank of the Weyl group (e.g.~6 in the ## case of $E_6$) and there is a class of involutions with character value ## $d-2$ (since the generating reflections of the Weyl group have ## eigenvalues 1 and one eigenvalue $-1$ in the reflection representation). ## ## A quite efficient way to compute these labels is given by the concept of ## Molien series. The Molien series $M_{\psi,\chi}(z)$ in the ring of ## formal power series over the integers is defined to be the generating ## function of the multiplicities of $\chi$ as constituent of the $d$-th ## symmetric power $\psi^{[d]}$ of $\psi$ and according to Molien can be ## computed as (see~\cite{npp}, p.~230) ## ## \[ M_{\psi,\chi}(z) = \frac{1}{\|G\|} \sum_{g \in G} ## \frac{\bar{\chi}(g)}{\det(I - z D(g))} = \frac{(-1)^{\psi(1)}}{\|G\|} ## \sum_{g \in G} \frac{\chi(g) \det D(g)}{\det(zI - D(g))} \] ## ## where $D$ is a matrix representation with character $\chi$ and if ## $\epsilon_1(D(g)), \ldots, \epsilon_{\psi(1)}(D(g))$ denote the ## eigenvalues of $D(g)$ then ## ## \[ \det(zI - D(g)) = \prod_{i=1}^{\psi(1)} (z - \epsilon_i(D(g))). \] ## ## The eigenvalues corresponding to a character are determined by the {\GAP} ## function 'Eigenvalues'. ## ## The Weyl group of type $E_6$ has order $51.840$ and 25 conjugacy classes. ## It is isomorphic to an extension of the simple group $U_4(2)$ by a cyclic ## group of order two (see~\cite{atlas}, p.~26 and cf.~\cite{bourbaki}, ## p.~228). The character of the reflection representation is 'X.4' and the ## generating reflections are contained in class '2c'. Its character table ## is restored by the following {\GAP} function. wle6:= function() local i, tbl, lbl; tbl:= CharTable("U4(2).2"); tbl.name:= "W(E6)"; lbl:= [0, 36, 9, 1, 25, 10, 5, 17, 4, 16, 2, 20, 6, 12, 3, 15, 8, 7, 8, 5, 11, 4, 13, 6, 10]; for i in [1..Length(lbl)] do tbl.irredinfo[i].label:= [tbl.irreducibles[i][1], lbl[i]]; od; return tbl; end; ## The Weyl group of type $E_7$ has order $2.903.040$ and 60 conjugacy ## classes. It is isomorphic to a direct product of the simple symplectic ## group $S_6(2)$ with a cyclic group of order two (see~\cite{atlas}, p.~46 ## and cf.~\cite{bourbaki}, p.~229). If the character table is constructed ## like below then the reflection character is 'X.4' and the generating ## reflections are contained in class '2c'. Its character table can be ## constructed by the following function. wle7:= function() local i, s, c, tbl, lbl; s:= CharTable("S6(2)"); c:= CharTable("Cyclic", 2); tbl:= CharTableDirectProduct(s, c); tbl.name:= "W(E7)"; lbl:= [0, 63, 46, 1, 28, 7, 6, 33, 36, 3, 2, 37, 22, 13, 4, 31, 30, 3, 18, 9, 12, 15, 26, 5, 6, 21, 12, 15, 4, 25, 6, 21, 10, 17, 22, 5, 20, 7, 6, 21, 10, 13, 16, 9, 18, 9, 8, 17, 16, 7, 14, 11, 14, 9, 8, 15, 10, 13, 12, 11]; for i in [1..Length(lbl)] do tbl.irredinfo[i].label:= [tbl.irreducibles[i][1], lbl[i]]; od; return tbl; end; ## The Weyl group of type $E_8$ has order $696.729.600$ and 112 conjugacy ## classes. It is isomorphic to $2.O^{+}_8(2).2$ (see~\cite{atlas}, p.~85 ## and cf.~\cite{bourbaki}, p.~228). The reflection character is not ## uniquely determined by the above conditions. But the character table has ## a table automorphism which allows to choose between the characters 'X.68' ## and 'X.69'. We take 'X.68' as the reflection character. The generating ## reflections then are contained in class '2f'. The character table of ## this group is restored by wle8:= function() local i, tbl, lbl; tbl:= CharTable("2.O8+(2).2"); tbl.name:= "W(E8)"; lbl:= [0, 120, 8, 68, 2, 74, 32, 8, 56, 4, 64, 24, 12, 36, 4, 52, 20, 8, 44, 14, 38, 12, 36, 6, 46, 20, 16, 28, 6, 42, 20, 14, 26, 22, 12, 32, 10, 34, 20, 8, 38, 20, 8, 32, 10, 34, 18, 16, 28, 18, 10, 28, 16, 10, 30, 18, 14, 22, 18, 16, 22, 12, 26, 12, 24, 14, 22, 1, 91, 19, 49, 3, 63, 7, 55, 25, 7, 43, 9, 39, 5, 47, 19, 13, 31, 9, 39, 19, 13, 33, 11, 29, 7, 37, 17, 23, 13, 25, 19, 9, 31, 13, 25, 17, 11, 27, 15, 21, 13, 23, 15, 21]; for i in [1..Length(lbl)] do tbl.irredinfo[i].label:= [tbl.irreducibles[i][1], lbl[i]]; od; return tbl; end; ## The Weyl group of type $F_4$ is a solvable group of order $1.152$. It ## has 25 conjugacy classes and its character table is accessible via the ## name '"W(F4)"'. The reflection character can be chosen to be 'X.17'. ## The generating reflections then lie in classes '2d' and '2f'. wlf4:= function() local i, tbl, lbl; tbl:= CharTable("W(F4)"); tbl.name:= "W(F4)"; lbl:= [0, 24, [12,2], [12,1], [4,1], [16,2], [4,2], [16,1], 8, [6,1], [6,2], 2, [6,2], [6,1], 10, 4, 1, 13, [7,2], [7,1], [3,1], [9,2], [3,2], [9,1], 5]; for i in [1..Length(lbl)] do tbl.irredinfo[i].label:= [tbl.irreducibles[i][1], lbl[i]]; od; return tbl; end; ## The following sequence of commands will sort this character table in ## exactly the same way as it is printed in~\cite{carter} (p.~413). ## ## | gap> f4:= wlf4();; ## gap> SortClassesCharTable(f4, ## > (4,6,10,8,5,9,7)(12,22,15,25,20,16)(13,23,14,24,19,18,17));; ## gap> SortCharactersCharTable(f4, ## > (2,4,3)(5,7)(6,8)(10,14,12)(11,15,13)(18,20,19)(21,23)(22,24);; | ## ## The Weyl group of type $G_2$ is isomorphic to the dihedral group $D_{12}$ ## of order 12 with 6 conjugacy classes. Its character table is constructed ## from the generic character table for dihedral groups. The character of ## the reflection representation is 'X.5' and and the generating reflections ## are contained in the classes '2b' and '2c'. wlg2:= function() local i, tbl, lbl; tbl:= CharTable("Dihedral", 12); tbl.name:= "W(G2)"; lbl:= [0, 6, [3,1], [3,2], 1, 2]; for i in [1..Length(lbl)] do tbl.irredinfo[i].label:= [tbl.irreducibles[i][1], lbl[i]]; od; return tbl; end; ## The following function will recover the list of labels from one of the ## above tables. LabelsWeyl:= function(tbl) local i, lbl; lbl:= []; for i in tbl.irredinfo do Add(lbl, i.label); od; return lbl; end; ## Note that by checking these tables for the exceptional Weyl groups and ## the formulae in earlier sections the character values of all Weyl groups ## are rational. ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ## \begin{thebibliography}{131} ## ## \bibitem{bourbaki} ## {\sc N.~Bourbaki}, ## {\sl Groups et Alg\`ebres de Lie, Chapitres 4, 5 et 6}, ## Masson, Paris 1981. ## ## \bibitem{carter} ## {\sc R.~W.~Carter}, ## {\sl Finite Groups of Lie Type\:\ Conjugacy Classes and Complex ## Characters}, ## Wiley--Interscience, New York 1985. ## ## \bibitem{atlas} ## {\sc J.~H.~Conway, R.~T.~Curtis, S.~P.~Norton, R.~A.~Parker, ## and R.~A.~Wilson}, ## {\sl Atlas of finite groups}, ## Clarendon Press, Oxford 1985. ## ## \bibitem{JaKe} ## {\sc G.~D.~James and A.~Kerber}, ## {\sl The Representation Theory of the Symmetric Group}, ## Encyclopedia of Math.\ 16, Addison--Wesley 1981. ## ## \bibitem{Ker1} ## {\sc A.~Kerber}, ## {\sl Representations of Permutation Groups I} ## LNM 240, Springer 1971. ## ## \bibitem{Ker2} ## {\sc A.~Kerber}, ## {\sl Representations of Permutation Groups II} ## LNM 495, Springer 1975. ## ## \bibitem{npp} ## {\sc J.~Neub\"user, H.~Pahlings, and W.~Plesken}, ## CAS; Design and Use of a System for the Handling of Characters of ## Finite Groups, in\:\ {\sl Computational Group Theory} (ed.~M.~Atkinson), ## Akad.~Press 1984, 195 -- 247. ## ## \bibitem{gap} ## {\sc M.~Sch\"onert} (ed.), ## {\sl {\sf GAP 3.1} Manual}, ## Lehrstuhl D f\"ur Mathematik, RWTH Aachen 1992. ## ## \end{thebibliography} ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ## \end{document} ############################################################################# ## #E Emacs . . . . . . . . . . . . . . . . . . . . . local Emacs variables ## ## Local Variables: ## mode: outline ## outline-regexp: "## \\\\section" ## fill-column: 77 ## fill-prefix: "## " ## eval: (hide-body) ## End: ##