% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
\documentclass[a4paper,11pt]{report}
\usepackage{epic}
\usepackage[top=37mm,bottom=37mm,left=27mm,right=27mm]{geometry}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\makeindex
\usepackage{color}
\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
\definecolor{Black}{rgb}{0.0,0.0,0.0}

\definecolor{linkColor}{rgb}{0.0,0.0,0.0}
\definecolor{citeColor}{rgb}{0.0,0.0,0.0}
\definecolor{fileColor}{rgb}{0.0,0.0,0.0}
\definecolor{urlColor}{rgb}{0.0,0.0,0.0}
\definecolor{promptColor}{rgb}{0.0,0.0,0.0}
\definecolor{brkpromptColor}{rgb}{0.0,0.0,0.0}
\definecolor{gapinputColor}{rgb}{0.0,0.0,0.0}
\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}

%%  for a long time these were red and blue by default,
%%  now black, but keep variables to overwrite
\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
%% strange name because of pdflatex bug:
\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}


\usepackage{fancyvrb}

\usepackage{mathptmx,helvet}
\usepackage[T1]{fontenc}
\usepackage{textcomp}


\usepackage[
            pdftex=true,
            bookmarks=true,        
            a4paper=true,
            pdftitle={Written with GAPDoc},
            pdfcreator={LaTeX with hyperref package / GAPDoc},
            colorlinks=true,
            backref=page,
            breaklinks=true,
            linkcolor=linkColor,
            citecolor=citeColor,
            filecolor=fileColor,
            urlcolor=urlColor,
            pdfpagemode={UseNone}, 
           ]{hyperref}

\newcommand{\maintitlesize}{\fontsize{36}{38}\selectfont}

% write page numbers to a .pnr log file for online help
\newwrite\pagenrlog
\immediate\openout\pagenrlog =\jobname.pnr
\immediate\write\pagenrlog{PAGENRS := [}
\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
%% were never documented, give conflicts with some additional packages

\newcommand{\GAP}{\textsf{GAP}}

%% nicer description environments, allows long labels
\usepackage{enumitem}
\setdescription{style=nextline}

%% depth of toc
\setcounter{tocdepth}{2}





%% command for ColorPrompt style examples
\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}


\begin{document}

\logpage{[ 0, 0, 0 ]}
\begin{titlepage}
\mbox{}\vfill

\begin{center}{\maintitlesize \textbf{Computations with the \textsf{GAP} Character Table Library\index{CTblLibXpls}\mbox{}}}\\
\vfill

\hypersetup{pdftitle=Computations with the \textsf{GAP} Character Table Library\index{CTblLibXpls}}
\markright{\scriptsize \mbox{}\hfill Computations with the \textsf{GAP} Character Table Library\index{CTblLibXpls} \hfill\mbox{}}
{\Huge (Version 1.3.4 of CTblLib) \mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{Thomas Breuer   \mbox{}}}\\
\hypersetup{pdfauthor=Thomas Breuer   }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{Thomas Breuer   }  Email: \href{mailto://sam@math.rwth-aachen.de} {\texttt{sam@math.rwth-aachen.de}}\\
  Homepage: \href{https://www.math.rwth-aachen.de/~Thomas.Breuer} {\texttt{https://www.math.rwth-aachen.de/\texttt{\symbol{126}}Thomas.Breuer}}}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 1 ]}
 {\copyright} 2013{\textendash}2022 by Thomas Breuer 

 This manuscript may be distributed under the terms and conditions of the GNU
Public License Version 3 or later, see \href{http://www.gnu.org/licenses} {\texttt{http://www.gnu.org/licenses}}. \mbox{}}\\[1cm]
\newpage

\def\contentsname{Contents\logpage{[ 0, 0, 2 ]}}

\tableofcontents
\newpage

    
\chapter{\textcolor{Chapter }{Maintenance Issues for the \textsf{GAP} Character Table Library}}\label{chap:maintain}
\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X8354C98179CDB193}{}
{
  This chapter collects examples of computations that arose in the context of
maintaining the \textsf{GAP} Character Table Library. The sections have been added when the issues in
question arose; the dates of the additions are shown in the section titles.  
\section{\textcolor{Chapter }{Disproving Possible Character Tables (November 2006)}}\label{sect:disprove}
\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X7ECA800587320C2C}{}
{
  I do not know a necessary and sufficient criterion for checking whether a
given matrix together with a list of power maps describes the character table
of a finite group. Examples of \emph{pseudo character tables} (tables which satisfy certain necessary conditions but for which actually no
group exists) have been given in{\nobreakspace}\cite{Gag86}. Another such example is described in Section{\nobreakspace}\ref{subsect:pseudo}. The tables in the \textsf{GAP} Character Table Library satisfy the usual tests. However, there are table
candidates for which these tests are not good enough.   Another question would be whether a given character table belongs to the group
for which it is claimed to belong, see Section \ref{subsect:LyN2} for an example.  
\subsection{\textcolor{Chapter }{A Perfect Pseudo Character Table (November 2006)}}\label{subsect:perfect_pseudo}
\logpage{[ 1, 1, 1 ]}
\hyperdef{L}{X795DCCEA7F4D187A}{}
{
  (This example arose from a discussion with Jack Schmidt.) 

 Up to version{\nobreakspace}1.1.3 of the \textsf{GAP} Character Table Library, the table with identifier \texttt{"P41/G1/L1/V4/ext2"} was not correct. The problem occurs already in the microfiches that are
attached to{\nobreakspace}\cite{HP89}. 

 In the following, we show that this table is not the character table of a
finite group, using the \textsf{GAP} library of perfect groups. Currently we do not know how to prove this
inconsistency alone from the table. 

 We start with the construction of the inconsistent table; apart from a little
editing, the following input equals the data formerly stored in the file \texttt{data/ctoholpl.tbl} of the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= rec(|
  !gapprompt@>| !gapinput@  Identifier:= "P41/G1/L1/V4/ext2",|
  !gapprompt@>| !gapinput@  InfoText:= Concatenation( [|
  !gapprompt@>| !gapinput@    "origin: Hanrath library,\n",|
  !gapprompt@>| !gapinput@    "structure is 2^7.L2(8),\n",|
  !gapprompt@>| !gapinput@    "characters sorted with permutation (12,14,15,13)(19,20)" ] ),|
  !gapprompt@>| !gapinput@  UnderlyingCharacteristic:= 0,|
  !gapprompt@>| !gapinput@  SizesCentralizers:= [64512,1024,1024,64512,64,64,64,64,128,128,64,|
  !gapprompt@>| !gapinput@    64,128,128,18,18,14,14,14,14,14,14,18,18,18,18,18,18],|
  !gapprompt@>| !gapinput@  ComputedPowerMaps:= [,[1,1,1,1,2,3,3,2,3,2,2,1,3,2,16,16,20,20,22,|
  !gapprompt@>| !gapinput@    22,18,18,26,26,27,27,23,23],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,4,|
  !gapprompt@>| !gapinput@    1,21,22,17,18,19,20,16,15,15,16,16,15],,,,[1,2,3,4,5,6,7,8,9,10,|
  !gapprompt@>| !gapinput@    11,12,13,14,15,16,4,1,4,1,4,1,26,25,28,27,23,24]],|
  !gapprompt@>| !gapinput@  Irr:= 0,|
  !gapprompt@>| !gapinput@  AutomorphismsOfTable:= Group( [(23,26,27)(24,25,28),(9,13)(10,14),|
  !gapprompt@>| !gapinput@    (17,19,21)(18,20,22)] ),|
  !gapprompt@>| !gapinput@  ConstructionInfoCharacterTable:= ["ConstructClifford",[[[1,2,3,4,|
  !gapprompt@>| !gapinput@    5,6,7,8,9],[1,7,8,3,9,2],[1,4,5,6,2],[1,2,2,2,2,2,2,2]],|
  !gapprompt@>| !gapinput@    [["L2(8)"],["Dihedral",18],["Dihedral",14],["2^3"]],[[[1,2,3,4],|
  !gapprompt@>| !gapinput@    [1,1,1,1],["elab",4,25]],[[1,2,3,4,4,4,4,4,4,4],[2,6,5,2,3,4,5,|
  !gapprompt@>| !gapinput@    6,7,8],["elab",10,17]],[[1,2],[3,4],[[1,1],[-1,1]]],[[1,3],[4,|
  !gapprompt@>| !gapinput@    2],[[1,1],[-1,1]]],[[1,3],[5,3],[[1,1],[-1,1]]],[[1,3],[6,4],|
  !gapprompt@>| !gapinput@    [[1,1],[-1,1]]],[[1,2],[7,2],[[1,1],[1,-1]]],[[1,2],[8,3],[[1,|
  !gapprompt@>| !gapinput@    1],[-1,1]]],[[1,2],[9,5],[[1,1],[1,-1]]]]]],|
  !gapprompt@>| !gapinput@  );;|
  !gapprompt@gap>| !gapinput@ConstructClifford( tbl, tbl.ConstructionInfoCharacterTable[2] );|
  !gapprompt@gap>| !gapinput@ConvertToLibraryCharacterTableNC( tbl );;|
\end{Verbatim}
 

 Suppose that there is a group $G$, say, with this table. Then $G$ is perfect since the table has only one linear character. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Length( LinearCharacters( tbl ) );|
  1
  !gapprompt@gap>| !gapinput@IsPerfectCharacterTable( tbl );|
  true
\end{Verbatim}
 

 The table satisfies the orthogonality relations, the structure constants are
nonnegative integers, and symmetrizations of the irreducibles decompose into
the irreducibles, with nonnegative integral coefficients. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsInternallyConsistent( tbl );|
  true
  !gapprompt@gap>| !gapinput@irr:= Irr( tbl );;|
  !gapprompt@gap>| !gapinput@test:= Concatenation( List( [ 2 .. 7 ],|
  !gapprompt@>| !gapinput@              n -> Symmetrizations( tbl, irr, n ) ) );;|
  !gapprompt@gap>| !gapinput@Append( test, Set( Tensored( irr, irr ) ) );|
  !gapprompt@gap>| !gapinput@fail in Decomposition( irr, test, "nonnegative" );|
  false
  !gapprompt@gap>| !gapinput@if ForAny( Tuples( [ 1 .. NrConjugacyClasses( tbl ) ], 3 ),|
  !gapprompt@>| !gapinput@     t -> not ClassMultiplicationCoefficient( tbl, t[1], t[2], t[3] )|
  !gapprompt@>| !gapinput@              in NonnegativeIntegers ) then|
  !gapprompt@>| !gapinput@     Error( "contradiction" );|
  !gapprompt@>| !gapinput@fi;|
\end{Verbatim}
 

 The \textsf{GAP} Library of Perfect Groups contains representatives of the four isomorphism
types of perfect groups of order $|G| = 64\,512$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n:= Size( tbl );|
  64512
  !gapprompt@gap>| !gapinput@NumberPerfectGroups( n );|
  4
  !gapprompt@gap>| !gapinput@grps:= List( [ 1 .. 4 ], i -> PerfectGroup( IsPermGroup, n, i ) );|
  [ L2(8) 2^6 E 2^1, L2(8) N 2^6 E 2^1 I, L2(8) N 2^6 E 2^1 II, 
    L2(8) N 2^6 E 2^1 III ]
\end{Verbatim}
 

 If we believe that the classification of perfect groups of order $|G|$ is correct then all we have to do is to show that none of the character tables
of these four groups is equivalent to the given table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= List( grps, CharacterTable );;|
  !gapprompt@gap>| !gapinput@List( tbls,|
  !gapprompt@>| !gapinput@         x -> TransformingPermutationsCharacterTables( x, tbl ) );|
  [ fail, fail, fail, fail ]
\end{Verbatim}
 

 In fact, already the matrices of irreducible characters of the four groups do
not fit to the given table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( tbls,|
  !gapprompt@>| !gapinput@         t -> TransformingPermutations( Irr( t ), Irr( tbl ) ) );|
  [ fail, fail, fail, fail ]
\end{Verbatim}
 

 Let us look closer at the tables in question. Each character table of a
perfect group of order $64\,512$ has exactly one irreducible character of degree $63$ that takes exactly the values $-1$, $0$, $7$, and $63$; moreover, the value $7$ occurs in exactly two classes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@testchars:= List( tbls,|
  !gapprompt@>| !gapinput@  t -> Filtered( Irr( t ),|
  !gapprompt@>| !gapinput@         x -> x[1] = 63 and Set( x ) = [ -1, 0, 7, 63 ] ) );;|
  !gapprompt@gap>| !gapinput@List( testchars, Length );|
  [ 1, 1, 1, 1 ]
  !gapprompt@gap>| !gapinput@List( testchars, l -> Number( l[1], x -> x = 7 ) );|
  [ 2, 2, 2, 2 ]
\end{Verbatim}
 

 (Another way to state this is that in each of the four tables $t$ in question, there are ten preimage classes of the involution class in the
simple factor group $L_2(8)$, there are eight preimage classes of this class in the factor group $2^6.L_2(8)$, and that the unique class in which an irreducible degree $63$ character of this factor group takes the value $7$ splits in $t$.) 

 In the erroneous table, however, there is only one class with the value $7$ in this character. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@testchars:= List( [ tbl ],|
  !gapprompt@>| !gapinput@  t -> Filtered( Irr( t ),|
  !gapprompt@>| !gapinput@         x -> x[1] = 63 and Set( x ) = [ -1, 0, 7, 63 ] ) );;|
  !gapprompt@gap>| !gapinput@List( testchars, Length );|
  [ 1 ]
  !gapprompt@gap>| !gapinput@List( testchars, l -> Number( l[1], x -> x = 7 ) );|
  [ 1 ]
\end{Verbatim}
 

 This property can be checked easily for the displayed table stored in fiche $2$, row $4$, column $7$ of{\nobreakspace}\cite{HP89}, with the name \texttt{6L1{\textless}{\textgreater}Z\texttt{\symbol{94}}7{\textless}{\textgreater}L2(8);
V4; MOD 2}, and it turns out that this table is not correct. 

 Note that these microfiches contain \emph{two} tables of order $64\,512$, and there were \emph{three} tables of groups of that order in the \textsf{GAP} Character Table Library that contain \texttt{origin: Hanrath library} in their \texttt{InfoText} (\textbf{Reference: InfoText}) value. Besides the incorrect table, these library tables are the character
tables of the groups \texttt{PerfectGroup( 64512, 1 )} and \texttt{PerfectGroup( 64512, 3 )}, respectively. (The matrices of irreducible characters of these tables are
equivalent.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Filtered( [ 1 .. 4 ], i ->|
  !gapprompt@>| !gapinput@       TransformingPermutationsCharacterTables( tbls[i],|
  !gapprompt@>| !gapinput@           CharacterTable( "P41/G1/L1/V1/ext2" ) ) <> fail );|
  [ 1 ]
  !gapprompt@gap>| !gapinput@Filtered( [ 1 .. 4 ], i ->|
  !gapprompt@>| !gapinput@       TransformingPermutationsCharacterTables( tbls[i],|
  !gapprompt@>| !gapinput@           CharacterTable( "P41/G1/L1/V2/ext2" ) ) <> fail );|
  [ 3 ]
  !gapprompt@gap>| !gapinput@TransformingPermutations( Irr( tbls[1] ), Irr( tbls[3] ) ) <> fail;|
  true
\end{Verbatim}
 

 Since version{\nobreakspace}1.2 of the \textsf{GAP} Character Table Library, the character table with the \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) value \texttt{"P41/G1/L1/V4/ext2"} corresponds to the group \texttt{PerfectGroup( 64512, 4 )}. The choice of this group was somewhat arbitrary since the vector system \texttt{V4} seems to be not defined in{\nobreakspace}\cite{HP89}; anyhow, this group and the remaining perfect group, \texttt{PerfectGroup( 64512, 2 )}, have equivalent matrices of irreducibles. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Filtered( [ 1 .. 4 ], i ->|
  !gapprompt@>| !gapinput@       TransformingPermutationsCharacterTables( tbls[i],|
  !gapprompt@>| !gapinput@           CharacterTable( "P41/G1/L1/V4/ext2" ) ) <> fail );|
  [ 4 ]
  !gapprompt@gap>| !gapinput@TransformingPermutations( Irr( tbls[2] ), Irr( tbls[4] ) ) <> fail;|
  true
\end{Verbatim}
  }

  
\subsection{\textcolor{Chapter }{An Error in the Character Table of $E_6(2)$ (March 2016)}}\label{subsect:errorE62}
\logpage{[ 1, 1, 2 ]}
\hyperdef{L}{X80F0B4E07B0B2277}{}
{
  In March 2016, Bill Unger computed the character table of the simple group $E_6(2)$ with Magma (see \cite{CP96}) and compared it with the table that was contained in the \textsf{GAP} Character Table Library since 2000. It turned out that the two tables did not
coincide. 

 The differences concern irrational character values on classes of element
order $91$ and power map values on these classes. (The character values and power maps
fit to each other in both tables; thus it may be that the assumption of a
wrong power has implied the wrong character values, or vice versa.)
Specifically, the $11$th power map in the \textsf{GAP} table fixed all elements of order $91$. Using the smallest matrix representation of $E_6(2)$ over the field with two elements, one can easily find an element $g$ of order $91$, and show that the characteristic polynomials of $g$ and $g^{11}$ differ. Hence these two elements cannot be conjugate in $E_6(2)$. In other words, the \textsf{GAP} table was wrong. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AtlasGroup( "E6(2)" );;|
  !gapprompt@gap>| !gapinput@repeat x:= PseudoRandom( g ); until Order( x ) = 91;|
  !gapprompt@gap>| !gapinput@CharacteristicPolynomial( x ) = CharacteristicPolynomial( x^11 );|
  false
\end{Verbatim}
 

 The wrong \textsf{GAP} table has been corrected in version 1.3.0 of the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "E6(2)" );;|
  !gapprompt@gap>| !gapinput@ord91:= Positions( OrdersClassRepresentatives( t ), 91 );|
  [ 163, 164, 165, 166, 167, 168 ]
  !gapprompt@gap>| !gapinput@PowerMap( t, 11 ){ ord91 };|
  [ 167, 168, 163, 164, 165, 166 ]
\end{Verbatim}
  }

  
\subsection{\textcolor{Chapter }{An Error in a Power Map of the Character Table of $2.F_4(2).2$ (November 2015)}}\label{subsect:error2F422}
\logpage{[ 1, 1, 3 ]}
\hyperdef{L}{X7D7982CD87413F76}{}
{
  As a part of the computations for \cite{BMO17}, the character table of the group $2.F_4(2).2$ was computed automatically from a representation of the group, using Magma
(see \cite{CP96}). It turned out that the $2$-nd power map that had been stored on the library character table of $2.F_4(2).2$ had been wrong. 

 In fact, this was the one and only case of a power map for an \textsf{Atlas} group which was not determined by the character table, and the \texttt{InfoText} (\textbf{Reference: InfoText}) value of the character table had mentioned the two alternatives. 

 Note that the ambiguity is not present in the table of the factor group $F_4(2).2$, and only four faithful irreducible characters of $2.F_4(2).2$ distinguish the four relevant conjugacy classes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2.F4(2).2" );;|
  !gapprompt@gap>| !gapinput@f:= CharacterTable( "F4(2).2" );;|
  !gapprompt@gap>| !gapinput@map:= PowerMap( t, 2 );|
  [ 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 11, 11, 3, 3, 3, 5, 5, 5, 3, 6, 6, 5, 
    5, 7, 7, 5, 8, 7, 29, 29, 9, 9, 9, 9, 11, 11, 9, 9, 9, 9, 11, 11, 
    43, 43, 20, 20, 20, 14, 14, 13, 13, 20, 21, 24, 28, 28, 57, 57, 29, 
    29, 29, 29, 33, 33, 35, 37, 37, 37, 37, 33, 33, 37, 37, 35, 41, 41, 
    42, 42, 79, 79, 43, 43, 83, 83, 45, 45, 47, 47, 53, 53, 91, 91, 57, 
    57, 61, 61, 61, 98, 98, 70, 70, 63, 63, 81, 81, 83, 83, 1, 6, 7, 
    11, 16, 17, 24, 24, 21, 27, 27, 25, 26, 29, 41, 53, 53, 53, 46, 56, 
    56, 56, 56, 62, 75, 75, 78, 78, 77, 77, 79, 79, 86, 86, 85, 85, 88, 
    88, 88, 88, 95, 95, 96, 96 ]
  !gapprompt@gap>| !gapinput@PositionSublist( map, [ 86, 86, 85, 85 ] );|
  140
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t ){ [ 140 .. 143 ] };|
  [ 32, 32, 32, 32 ]
  !gapprompt@gap>| !gapinput@SizesCentralizers( t ){ [ 140 .. 143 ] };|
  [ 64, 64, 64, 64 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( t, f ){ [ 140 ..143 ] };|
  [ 86, 86, 87, 87 ]
  !gapprompt@gap>| !gapinput@PowerMap( f, 2 ){ [ 86, 87 ] };|
  [ 50, 50 ]
  !gapprompt@gap>| !gapinput@pos:= PositionsProperty( Irr( t ),|
  !gapprompt@>| !gapinput@   x -> x[1] <> x[2] and Length( Set( x{ [ 140 .. 143 ] } ) ) > 1 );|
  [ 144, 145, 146, 147 ]
  !gapprompt@gap>| !gapinput@List( pos, i -> Irr(t)[i]{ [ 140 .. 143 ] } );|
  [ [ 2*E(16)-2*E(16)^7, -2*E(16)+2*E(16)^7, 2*E(16)^3-2*E(16)^5, 
        -2*E(16)^3+2*E(16)^5 ], 
    [ -2*E(16)+2*E(16)^7, 2*E(16)-2*E(16)^7, -2*E(16)^3+2*E(16)^5, 
        2*E(16)^3-2*E(16)^5 ], 
    [ -2*E(16)^3+2*E(16)^5, 2*E(16)^3-2*E(16)^5, 2*E(16)-2*E(16)^7, 
        -2*E(16)+2*E(16)^7 ], 
    [ 2*E(16)^3-2*E(16)^5, -2*E(16)^3+2*E(16)^5, -2*E(16)+2*E(16)^7, 
        2*E(16)-2*E(16)^7 ] ]
\end{Verbatim}
 

 I had not found a suitable subgroup of $2.F_4(2).2$ whose character table could be used to decide the question which of the two
alternatives is the correct one. }

  
\subsection{\textcolor{Chapter }{A Character Table with a Wrong Name (May 2017)}}\label{subsect:LyN2}
\logpage{[ 1, 1, 4 ]}
\hyperdef{L}{X836E4B6184F32EF5}{}
{
  (This example is much older.) 

 The character table that is shown in \cite[p. 126 f.]{Ost86} is claimed to be the table of a Sylow $2$ subgroup $P$ of the sporadic simple Lyons group $Ly$. This table had been contained in the character table library of the \textsf{CAS} system (see \cite{NPP84}), which was one of the predecessors of \textsf{GAP}. 

 It is easy to see that no subgroup of $Ly$ can have this character table. Namely, the group of that table contains
elements of order eight with centralizer order $2^6$, and this does not occur in $Ly$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "Ly" );;|
  !gapprompt@gap>| !gapinput@orders:= OrdersClassRepresentatives( tbl );;|
  !gapprompt@gap>| !gapinput@order8:= Filtered( [ 1 .. Length( orders ) ], x -> orders[x] = 8 );|
  [ 12, 13 ]
  !gapprompt@gap>| !gapinput@SizesCentralizers( tbl ){ order8 } / 2^6;|
  [ 15/2, 3/2 ]
\end{Verbatim}
 

 The table of $P$ has been computed in \cite{Bre91} with character theoretic methods. Nowadays it would be no problem to take a
permutation representation of $Ly$, to compute its Sylow $2$ subgroup, and use this group to compute its character table. However, the task
is even easier if we assume that $Ly$ has a subgroup of the structure $3.McL.2$. This subgroup is of odd index, hence it contains a conjugate of $P$. Clearly the Sylow $2$ subgroups in the factor group $McL.2$ are isomorphic with $P$. Thus we can start with a rather small permutation representation. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AtlasGroup( "McL.2" );;|
  !gapprompt@gap>| !gapinput@NrMovedPoints( g );|
  275
  !gapprompt@gap>| !gapinput@syl:= SylowSubgroup( g, 2 );;|
  !gapprompt@gap>| !gapinput@pc:= Image( IsomorphismPcGroup( syl ) );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( pc );;|
\end{Verbatim}
 

 The character table coincides with the one which is stored in the Character
Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@                 CharacterTable( "LyN2" ) ) );|
  true
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Some finite factor groups of perfect space groups (February 2014)}}\label{sect:spacegroupfactors}
\logpage{[ 1, 2, 0 ]}
\hyperdef{L}{X8159D79C7F071B33}{}
{
  If one wants to find a group to which a given character table from the \textsf{GAP} Character Table Library belongs, one can try the function \texttt{GroupInfoForCharacterTable} (\textbf{CTblLib: GroupInfoForCharacterTable}). For a long time, this was not successful in the case of $16$ character tables that had been computed by W.{\nobreakspace}Hanrath (see
Section ``Ordinary and Brauer Tables in the \textsf{GAP} Character Table Library'' in the \textsf{CTblLib} manual). 

 Using the information from{\nobreakspace}\cite{HP89}, it is straightforward to construct such groups as factor groups of infinite
groups. Since version{\nobreakspace}1.3.0 of the \textsf{CTblLib} package, calling \texttt{GroupInfoForCharacterTable} (\textbf{CTblLib: GroupInfoForCharacterTable}) for the $16$ library tables in question yields nonempty lists and thus allows one to access
the results of these constructions, via the function \texttt{CTblLib.FactorGroupOfPerfectSpaceGroup}. This is an undocumented auxiliary function that becomes available
automatically when \texttt{GroupInfoForCharacterTable} (\textbf{CTblLib: GroupInfoForCharacterTable}) has been called for the first time. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GroupInfoForCharacterTable( "A5" );;|
  !gapprompt@gap>| !gapinput@IsBound( CTblLib.FactorGroupOfPerfectSpaceGroup );|
  true
\end{Verbatim}
 

 Below we list the $16$ group constructions. In each case, an epimorphism from the space group in
question is defined by mapping the generators returned by by the function \texttt{generatorsOfPerfectSpaceGroup} defined below to the generators stored in the attribute \texttt{GeneratorsOfGroup} (\textbf{Reference: GeneratorsOfGroup}) of the group returned by \texttt{CTblLib.FactorGroupOfPerfectSpaceGroup}.  
\subsection{\textcolor{Chapter }{Constructing the space groups in question}}\label{subsect:constructspacegroups}
\logpage{[ 1, 2, 1 ]}
\hyperdef{L}{X8710D4947AEB366F}{}
{
  In{\nobreakspace}\cite{HP89}, a space group $S$ is described as a subgroup $\{ M(g, t); g \in P, t \in T \}$ of GL$(d+1, {\ensuremath{\mathbb Z}})$, where 

 
\[
   M(g, t) = \left[ \begin{array}{cc}  g & 0 \\
                                V(g) + t & 1 \end{array} \right],
\]
   

 the \emph{point group} $P$ of $S$ is a finite subgroup of GL$(d, {\ensuremath{\mathbb Z}})$, the \emph{translation lattice} $T$ of $S$ is a sublattice of ${\ensuremath{\mathbb Z}}^d$, and the \emph{vector system} $V$ of $S$ is a map from $P$ to ${\ensuremath{\mathbb Z}}^d$. Note that $V$ maps the identity matrix $I \in$ GL$(d, {\ensuremath{\mathbb Z}})$ to the zero vector, and $M(T):= \{ M(I, t); t \in T \}$ is a normal subgroup of $S$ that is isomorphic with $T$. More generally, $M(n T)$ is a normal subgroup of $S$, for any positive integer $n$. 

 Specifically, $P$ is given by generators $g_1, g_2, \ldots, g_k$, $T$ is given by a ${\ensuremath{\mathbb Z}}$-basis $B = \{ b_1, b_2, \ldots, b_d \}$ of $T$, and $V$ is given by the vectors $V(g_1), V(g_2), \ldots, V(g_k)$. 

 In the examples below, the matrix representation of $P$ is irreducible, so we need just the following $k+1$ elements to generate $S$: 

 
\[
   \left[ \begin{array}{cc}  g_1 & 0 \\ V(g_1) & 1  \end{array} \right],
   \left[ \begin{array}{cc}  g_2 & 0 \\ V(g_2) & 1  \end{array} \right],
   \ldots,
   \left[ \begin{array}{cc}  g_k & 0 \\ V(g_k) & 1  \end{array} \right],
   \left[ \begin{array}{cc}    I & 0 \\ b_1    & 1  \end{array} \right].
\]
   

 These generators are returned by the function \texttt{generatorsOfPerfectSpaceGroup}, when the inputs are $[ g_1, g_2, \ldots, g_k ]$, $[ V(g_1), V(g_2), \ldots, V(g_k) ]$, and $b_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@generatorsOfPerfectSpaceGroup:= function( Pgens, V, t )|
  !gapprompt@>| !gapinput@    local d, result, i, m;|
  !gapprompt@>| !gapinput@    d:= Length( Pgens[1] );|
  !gapprompt@>| !gapinput@    result:= [];|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( Pgens ) ] do|
  !gapprompt@>| !gapinput@      m:= IdentityMat( d+1 );|
  !gapprompt@>| !gapinput@      m{ [ 1 .. d ] }{ [ 1 .. d ] }:= Pgens[i];|
  !gapprompt@>| !gapinput@      m[ d+1 ]{ [ 1 .. d ] }:= V[i];|
  !gapprompt@>| !gapinput@      result[i]:= m;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    m:= IdentityMat( d+1 );|
  !gapprompt@>| !gapinput@    m[ d+1 ]{ [ 1 .. d ] }:= t;|
  !gapprompt@>| !gapinput@    Add( result, m );|
  !gapprompt@>| !gapinput@    return result;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Constructing the factor groups in question}}\label{subsect:constructfactors}
\logpage{[ 1, 2, 2 ]}
\hyperdef{L}{X84E7FE70843422B0}{}
{
  The space group $S$ acts on ${\ensuremath{\mathbb Z}}^d$, via $v \cdot M(g, t) = v g + V(g) + t$. A (not necessarily faithful) representation of $S/M(n T)$ can be obtained from the corresponding action of $S$ on ${\ensuremath{\mathbb Z}}^d/(n {\ensuremath{\mathbb Z}}^d)$, that is, by reducing the vectors modulo $n$. For the \textsf{GAP} computations, we work instead with vectors of length $d+1$, extending each vector in ${\ensuremath{\mathbb Z}}^d$ by $1$ in the last position, and acting on these vectors by right multiplicaton with
elements of $S$. Multiplication followed by reduction modulo $n$ is implemented by the action function returned by \texttt{multiplicationModulo} when this is called with argument $n$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@multiplicationModulo:= n -> function( v, g )|
  !gapprompt@>| !gapinput@       return List( v * g, x -> x mod n ); end;;|
\end{Verbatim}
 

 In some of the examples, the representation of $P$ given in{\nobreakspace}\cite{HP89} is the action on the factor of a permutation module modulo its trivial
submodule. For that, we provide the function \texttt{deletedPermutationMat}, cf.{\nobreakspace}\cite[p. 269]{HP89}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@deletedPermutationMat:= function( pi, n )|
  !gapprompt@>| !gapinput@    local mat, j, i;|
  !gapprompt@>| !gapinput@    mat:= PermutationMat( pi, n );|
  !gapprompt@>| !gapinput@    mat:= mat{ [ 1 .. n-1 ] }{ [ 1 .. n-1 ] };|
  !gapprompt@>| !gapinput@    j:= n ^ pi;|
  !gapprompt@>| !gapinput@    if j <> n then|
  !gapprompt@>| !gapinput@      for i in [ 1 .. n-1 ] do|
  !gapprompt@>| !gapinput@        mat[i][j]:= -1;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    return mat;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 After constructing permutation generators for the example groups, we verify
that the groups fit to the character tables from the \textsf{GAP} Character Table Library and to the permutation generators stored for the
construction of the group via \texttt{CTblLib.FactorGroupOfPerfectSpaceGroup}. 

  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@verifyFactorGroup:= function( gens, id )|
  !gapprompt@>| !gapinput@    local sm, act, stored, hom;|
  !gapprompt@>| !gapinput@    sm:= SmallerDegreePermutationRepresentation( Group( gens ) );|
  !gapprompt@>| !gapinput@    gens:= List( gens, x -> x^sm );|
  !gapprompt@>| !gapinput@    act:= Images( sm );|
  !gapprompt@>| !gapinput@    if not IsRecord( TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                         CharacterTable( act ),|
  !gapprompt@>| !gapinput@                         CharacterTable( id ) ) ) then|
  !gapprompt@>| !gapinput@      return "wrong character table";|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    GroupInfoForCharacterTable( id );|
  !gapprompt@>| !gapinput@    stored:= CTblLib.FactorGroupOfPerfectSpaceGroup( id );|
  !gapprompt@>| !gapinput@    hom:= GroupHomomorphismByImages( stored, act,|
  !gapprompt@>| !gapinput@              GeneratorsOfGroup( stored ), gens );|
  !gapprompt@>| !gapinput@    if hom = fail or not IsBijective( hom ) then|
  !gapprompt@>| !gapinput@      return "wrong group";|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    return true;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Examples with point group $A_5$}}\label{subsect:expl-A5}
\logpage{[ 1, 2, 3 ]}
\hyperdef{L}{X79109A20873E76DA}{}
{
  There are two examples with $d = 5$. The generators of the point group are as follows (see{\nobreakspace}\cite[p. 272]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= deletedPermutationMat( (1,3)(2,4), 6 );;|
  !gapprompt@gap>| !gapinput@b:= deletedPermutationMat( (1,2,3)(4,5,6), 6 );;|
\end{Verbatim}
 

 In both cases, the vector system is $V_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= [ [ 2, 2, 0, 0, 1 ], 0 * b[1] ];;|
\end{Verbatim}
 

 In the first example, the translation lattice is the sublattice $L = 2 L_1$ of the full lattice $L_1 = {\ensuremath{\mathbb Z}}^d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= [ 2, 0, 0, 0, 0 ];;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P1/G2/L1/V2/ext4"} belongs to the factor group of $S$ modulo the normal subgroup $M(4 L)$, so we compute the action on an orbit modulo $8$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 8 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P1/G2/L1/V2/ext4" );|
  true
\end{Verbatim}
 

 In the second example, the translation lattice is the sublattice $2 L_2$ of ${\ensuremath{\mathbb Z}}^d$ where $L_2$ has the following basis. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@bas:= [ [-1,-1, 1, 1, 1 ],|
  !gapprompt@>| !gapinput@           [-1, 1,-1, 1, 1 ],|
  !gapprompt@>| !gapinput@           [ 1, 1, 1,-1,-1 ],|
  !gapprompt@>| !gapinput@           [ 1, 1,-1,-1, 1 ],|
  !gapprompt@>| !gapinput@           [-1, 1, 1,-1, 1 ] ];;|
\end{Verbatim}
 

 For the sake of simplicity, we rewrite the action of the point group to one on $L_2$, and we adjust also the vector system. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@B:= Basis( Rationals^Length( bas ), bas );;|
  !gapprompt@gap>| !gapinput@abas:= List( bas, x -> Coefficients( B, x * a ) );;|
  !gapprompt@gap>| !gapinput@bbas:= List( bas, x -> Coefficients( B, x * b ) );;|
  !gapprompt@gap>| !gapinput@vbas:= List( v, x -> Coefficients( B, x ) );|
  [ [ 3/2, 1, 2, 3/2, -1 ], [ 0, 0, 0, 0, 0 ] ]
\end{Verbatim}
 

 In order to work with integral matrices (which is necessary because \texttt{multiplicationModulo} uses \textsf{GAP}'s \texttt{mod} operator), we double both the vector system and the translation lattice. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@vbas:= vbas * 2;|
  [ [ 3, 2, 4, 3, -2 ], [ 0, 0, 0, 0, 0 ] ]
  !gapprompt@gap>| !gapinput@t:= 2 * t;|
  [ 4, 0, 0, 0, 0 ]
\end{Verbatim}
 

 The library character table with identifier \texttt{"P1/G2/L2/V2/ext4"} belongs to the factor group of $S$ modulo the normal subgroup $M(8 L_2)$; since we have doubled the lattice, we compute the action on an orbit modulo $16$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ abas, bbas ], vbas, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 16 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P1/G2/L2/V2/ext4" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Examples with point group $L_3(2)$}}\label{subsect:expl-L32}
\logpage{[ 1, 2, 4 ]}
\hyperdef{L}{X83523D1E792F9E01}{}
{
  There are three examples with $d = 6$ and one example with $d = 8$. The generators of the point group for the first three examples are as
follows (see{\nobreakspace}\cite[p. 290]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= [ [ 0, 1, 0, 1, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 1, 0, 1, 1, 1, 1 ],|
  !gapprompt@>| !gapinput@         [-1,-1,-1,-1, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1,-1,-1,-1 ],|
  !gapprompt@>| !gapinput@         [ 1, 1, 1, 1, 0, 1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 1, 0, 1, 0 ] ];;|
  !gapprompt@gap>| !gapinput@b:= [ [-1, 0, 0, 0, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1, 0,-1, 0 ],|
  !gapprompt@>| !gapinput@         [ 1, 1, 1, 1, 1, 1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [-1,-1,-1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 1, 0, 0, 0, 0, 0 ] ];;|
\end{Verbatim}
 

 The first vector system is the trivial vector system $V_1$ (that is, the space group $S$ is a split extension of the point group and the translation lattice), and the
translation lattice is the full lattice $L_1 = {\ensuremath{\mathbb Z}}^d$. 

 The library character table with identifier \texttt{"P11/G1/L1/V1/ext4"} belongs to the factor group of $S$ modulo the normal subgroup $M(4 L_1)$, so we compute the action on an orbit modulo $4$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= List( [ 1, 2 ], i -> 0 * a[1] );;|
  !gapprompt@gap>| !gapinput@t:= [ 1, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 4 );;|
  !gapprompt@gap>| !gapinput@seed:= [ 1, 0, 0, 0, 0, 0, 1 ];;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P11/G1/L1/V1/ext4" );|
  true
\end{Verbatim}
 

 The second vector system is $V_2$, and the translation lattice is $2 L_1$. 

 The library character table with identifier \texttt{"P11/G1/L1/V2/ext4"} belongs to the factor group of $S$ modulo the normal subgroup $M(8 L_1)$, so we compute the action on an orbit modulo $8$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= [ [ 1, 0, 1, 0, 0, 0 ], 0 * a[1] ];;|
  !gapprompt@gap>| !gapinput@t:= [ 2, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 8 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P11/G1/L1/V2/ext4" );|
  true
\end{Verbatim}
 

 The third vector system is $V_3$, and the translation lattice is $2 L_1$. 

 The library character table with identifier \texttt{"P11/G1/L1/V3/ext4"} belongs to the factor group of $S$ modulo the normal subgroup $M(8 L_1)$, so we compute the action on an orbit modulo $8$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= [ [ 0, 1, 0, 0, 1, 0 ], 0 * a[1] ];;|
  !gapprompt@gap>| !gapinput@t:= [ 2, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 8 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P11/G1/L1/V3/ext4" );|
  true
\end{Verbatim}
 

 The generators of the point group for the fourth example are as follows
(see{\nobreakspace}\cite[p. 293]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= [ [ 1, 0, 0, 1, 0,-1, 0, 1 ],|
  !gapprompt@>| !gapinput@         [ 0,-1, 1, 0,-1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 1, 0, 0, 1, 0,-1, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0,-1, 0,-1, 0, 1, 1,-1 ],|
  !gapprompt@>| !gapinput@         [ 1, 0,-1, 1, 1,-1, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 1,-1,-1, 0, 0, 0, 1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0,-1, 1, 0,-1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 1, 0,-1, 0, 0, 0, 0, 0 ] ];;|
  !gapprompt@gap>| !gapinput@b:= [ [ 1, 0,-2, 0, 1,-1, 1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0,-1, 0, 0, 0, 0, 1,-1 ],|
  !gapprompt@>| !gapinput@         [ 1, 0,-1, 0, 1,-1, 0, 0 ],|
  !gapprompt@>| !gapinput@         [-1,-1, 1,-1,-1, 2, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0,-1, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0,-1, 0,-1,-1, 1, 1,-1 ],|
  !gapprompt@>| !gapinput@         [ 1,-1, 0, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 1, 0, 0, 0, 0, 0, 0, 0 ] ];;|
\end{Verbatim}
 

 The vector system is the trivial vector system $V_1$, and the translation lattice is the full lattice $L_1 = {\ensuremath{\mathbb Z}}^d$. 

 The library character table with identifier \texttt{"P11/G4/L1/V1/ext3"} belongs to the factor group of $S$ modulo the normal subgroup $M(3 L_1)$, so we compute the action on an orbit modulo $3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= List( [ 1, 2 ], i -> 0 * a[1] );;|
  !gapprompt@gap>| !gapinput@t:= [ 1, 0, 0, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 3 );;|
  !gapprompt@gap>| !gapinput@seed:= [ 1, 0, 0, 0, 0, 0, 0, 0, 1 ];;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P11/G4/L1/V1/ext3" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Example with point group SL$_2(7)$}}\label{subsect:expl-sl27}
\logpage{[ 1, 2, 5 ]}
\hyperdef{L}{X7A01A9BC846BE39A}{}
{
  There is one example with $d = 8$. The generators of the point group are as follows (see{\nobreakspace}\cite[p. 295]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= KroneckerProduct( IdentityMat( 4 ), [ [ 0, 1 ], [ -1, 0 ] ] );;|
  !gapprompt@gap>| !gapinput@b:= [ [ 0,-1, 0, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 1, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [-1, 0, 0, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0,-1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0,-1, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 1, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0, 1 ] ];;|
\end{Verbatim}
 

 The vector system is the trivial vector system $V_1$, and the translation lattice is the sublattice $L_2$ of ${\ensuremath{\mathbb Z}}^d$ that has the following basis, which is called $B(2,8)$ in{\nobreakspace}\cite[p. 269]{HP89}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@bas:= [ [ 1, 1, 0, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 1, 1, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 1, 1, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 1, 1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 1, 1, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 0, 1, 1, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 0, 0, 1, 1 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 0, 0,-1, 1 ] ];;|
\end{Verbatim}
 

 For the sake of simplicity, we rewrite the action to one on $L_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@B:= Basis( Rationals^Length( bas ), bas );;|
  !gapprompt@gap>| !gapinput@abas:= List( bas, x -> Coefficients( B, x * a ) );;|
  !gapprompt@gap>| !gapinput@bbas:= List( bas, x -> Coefficients( B, x * b ) );;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P12/G1/L2/V1/ext2"} belongs to the factor group of $S$ modulo the normal subgroup $M(2 L_2)$. The action on an orbit modulo $2$ is not faithful, its kernel contains the centre of SL$(2,7)$. We can compute a faithful representation by acting on pairs: One entry is
the usual vector and the other entry carries the action of the point group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= List( [ 1, 2 ], i -> 0 * a[1] );;|
  !gapprompt@gap>| !gapinput@t:= [ 1, 0, 0, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ abas, bbas ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 2 );;|
  !gapprompt@gap>| !gapinput@funpairs:= function( pair, g )|
  !gapprompt@>| !gapinput@   return [ fun( pair[1], g ), pair[2] * g ];|
  !gapprompt@>| !gapinput@   end;;|
  !gapprompt@gap>| !gapinput@seed:= [ [ 1, 0, 0, 0, 0, 0, 0, 0, 1 ],|
  !gapprompt@>| !gapinput@            [ 1, 0, 0, 0, 0, 0, 0, 0, 0 ] ];;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, funpairs );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, funpairs ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P12/G1/L2/V1/ext2" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Example with point group $2^3.L_3(2)$}}\label{subsect:expl-23L32}
\logpage{[ 1, 2, 6 ]}
\hyperdef{L}{X7D3100B58093F37D}{}
{
  There is one example with $d = 7$. The generators of the point group are as follows (see{\nobreakspace}\cite[p. 297]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= PermutationMat( (2,4)(5,7), 7 );;|
  !gapprompt@gap>| !gapinput@b:= PermutationMat( (1,3,2)(4,6,5), 7 );;|
  !gapprompt@gap>| !gapinput@c:= DiagonalMat( [ -1, -1, 1, 1, -1, -1, 1 ] );;|
\end{Verbatim}
 

 The vector system is the trivial vector system $V_1$, and the translation lattice is the sublattice $L_2$ of ${\ensuremath{\mathbb Z}}^d$ that has the following basis, which is called $B(2,7)$ in{\nobreakspace}\cite[p. 269]{HP89}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@bas:= [ [ 1, 1, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 1, 1, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 1, 1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 1, 1, 0, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 1, 1, 0 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 0, 1, 1 ],|
  !gapprompt@>| !gapinput@           [ 0, 0, 0, 0, 0,-1, 1 ] ];;|
\end{Verbatim}
 

 For the sake of simplicity, we rewrite the action to one on $L_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@B:= Basis( Rationals^Length( bas ), bas );;|
  !gapprompt@gap>| !gapinput@abas:= List( bas, x -> Coefficients( B, x * a ) );;|
  !gapprompt@gap>| !gapinput@bbas:= List( bas, x -> Coefficients( B, x * b ) );;|
  !gapprompt@gap>| !gapinput@cbas:= List( bas, x -> Coefficients( B, x * c ) );;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P13/G1/L2/V1/ext2"} belongs to the factor group of $S$ modulo the normal subgroup $M(2 L_2)$, so we compute the action on an orbit modulo $2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= List( [ 1 .. 3 ], i -> 0 * a[1] );;|
  !gapprompt@gap>| !gapinput@t:= [ 1, 0, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ abas,bbas,cbas ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 2 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@act:= Action( g, orb, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P13/G1/L2/V1/ext2" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Examples with point group $A_6$}}\label{subsect:expl-A6}
\logpage{[ 1, 2, 7 ]}
\hyperdef{L}{X80800F3B7D6EF06C}{}
{
  There are two examples with $d = 10$. In both cases, the generators of the point group are as follows
(see{\nobreakspace}\cite[p. 307]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= [ [ 0,-1, 0, 0, 0, 0, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0,-1, 0, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ], |
  !gapprompt@>| !gapinput@         [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ] ];;|
  !gapprompt@gap>| !gapinput@c:= [ [ 0, 0, 0, 0, 0, 0, 0,-1, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0,-1, 1,-1 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0,-1, 1, 0,-1, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0,-1, 1, 0, 0, 0, 0,-1, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0, 0, 0,-1 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 1,-1, 0, 0, 1 ], |
  !gapprompt@>| !gapinput@         [ 0, 0, 1,-1, 0, 0, 0, 0, 0, 1 ], |
  !gapprompt@>| !gapinput@         [-1, 0, 1, 0, 0,-1, 0, 0, 0, 0 ] ];;|
\end{Verbatim}
 

 In both examples, the vector system is the trivial vector system $V_1$, and the translation lattices are the lattices $L_2$ and $L_5$, respectively, which have the following bases. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@bas2:= [ [ 0, 1,-1, 0, 0, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 1,-1, 0, 0, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 0, 0, 1,-1, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 0, 0, 0, 1,-1, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 0, 0, 0, 1, 0,-1, 0, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 0, 0, 0, 0, 0, 1,-1, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 0, 0, 0, 0, 0, 0, 1,-1 ],|
  !gapprompt@>| !gapinput@            [ 0, 0, 0, 1, 0, 0, 0, 0, 0,-1 ],|
  !gapprompt@>| !gapinput@            [ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 ],|
  !gapprompt@>| !gapinput@            [ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 ] ];;|
  !gapprompt@gap>| !gapinput@bas5:= [ [ 0,-1, 1, 1,-1, 1, 1,-1,-1, 0 ],|
  !gapprompt@>| !gapinput@            [ 1, 0,-1,-1,-1, 1, 1,-1,-1, 0 ],|
  !gapprompt@>| !gapinput@            [ 0, 1, 1,-1, 1, 1,-1, 0, 1, 1 ],|
  !gapprompt@>| !gapinput@            [ 1, 1, 0,-1, 0,-1, 1,-1, 1,-1 ],|
  !gapprompt@>| !gapinput@            [-1, 0,-1, 1, 1, 0,-1,-1, 1,-1 ],|
  !gapprompt@>| !gapinput@            [ 0, 1,-1, 1, 1,-1, 1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@            [-1,-1, 1, 1, 0,-1,-1,-1,-1, 0 ],|
  !gapprompt@>| !gapinput@            [ 1,-1, 0,-1, 1,-1, 1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@            [-1, 1,-1, 1,-1, 0,-1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@            [ 1,-1,-1, 1, 1, 1, 0, 0,-1,-1 ] ];;|
\end{Verbatim}
 

 For the sake of simplicity, we rewrite the action to actions on $L_2$ and $L_5$, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@B2:= Basis( Rationals^Length( bas2 ), bas2 );;|
  !gapprompt@gap>| !gapinput@bbas2:= List( bas2, x -> Coefficients( B2, x * b ) );;|
  !gapprompt@gap>| !gapinput@cbas2:= List( bas2, x -> Coefficients( B2, x * c ) );;|
  !gapprompt@gap>| !gapinput@B5:= Basis( Rationals^Length( bas5 ), bas5 );;|
  !gapprompt@gap>| !gapinput@bbas5:= List( bas5, x -> Coefficients( B5, x * b ) );;|
  !gapprompt@gap>| !gapinput@cbas5:= List( bas5, x -> Coefficients( B5, x * c ) );;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P21/G3/L2/V1/ext2"} belongs to the factor group of $S$ modulo the normal subgroup $M(2 L_2)$, so we compute the action on an orbit modulo $2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= List( [ 1, 2 ], i -> 0 * bbas2[1] );;|
  !gapprompt@gap>| !gapinput@t:= [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ bbas2, cbas2 ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 2 );;|
  !gapprompt@gap>| !gapinput@seed:= [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ];;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P21/G3/L2/V1/ext2" );|
  true
\end{Verbatim}
 

 The library character table with identifier \texttt{"P21/G3/L5/V1/ext2"} belongs to the factor group of $S$ modulo the normal subgroup $M(2 L_5)$, so we compute the action on an orbit modulo $2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ bbas5, cbas5 ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P21/G3/L5/V1/ext2" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Examples with point group $L_2(8)$}}\label{subsect:expl-L28}
\logpage{[ 1, 2, 8 ]}
\hyperdef{L}{X7D43452C79B0EAE1}{}
{
  There are two examples with $d = 7$. In both cases, the generators of the point group are as follows
(see{\nobreakspace}\cite[p. 327]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= [ [ 0,-1, 0, 1, 0,-1, 1],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1, 0, 1,-1, 0],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0,-1, 1, 0, 0],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0,-1, 0, 0, 0],|
  !gapprompt@>| !gapinput@         [ 0, 0, 1,-1, 0, 0, 0],|
  !gapprompt@>| !gapinput@         [ 0,-1, 1, 0,-1, 0, 0],|
  !gapprompt@>| !gapinput@         [ 1,-1, 0, 1, 0,-1, 0] ];;|
  !gapprompt@gap>| !gapinput@b:= [ [-1, 0, 1, 0,-1, 1, 0],|
  !gapprompt@>| !gapinput@         [ 0,-1, 0, 1,-1, 0, 0],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1, 1, 0, 0, 0],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1, 0, 0, 0, 0],|
  !gapprompt@>| !gapinput@         [ 0, 1,-1, 0, 0, 0, 0],|
  !gapprompt@>| !gapinput@         [-1, 1, 0,-1, 0, 0, 0],|
  !gapprompt@>| !gapinput@         [-1, 0, 1, 0,-1, 0, 1] ];;|
\end{Verbatim}
 

 In both examples, the vector system is $V_2$. The translation lattice in the first example is the lattice $L = 3 {\ensuremath{\mathbb Z}}^d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= [ [ 2, 1, 0, 0, 0, 1, 4 ],|
  !gapprompt@>| !gapinput@         [ 2, 0, 0, 0, 0, 0, 0 ] ];;|
  !gapprompt@gap>| !gapinput@t:= [ 3, 0, 0, 0, 0, 0, 0 ];;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P41/G1/L1/V3/ext3"} belongs to the factor group of $S$ modulo the normal subgroup $M(3 L)$, so we compute the action on an orbit modulo $9$. 

 The orbits in this action are quite long. we choose a seed vector from the
fixed space of an element of order $7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@aa:= sgens[1];;|
  !gapprompt@gap>| !gapinput@bb:= sgens[2];;|
  !gapprompt@gap>| !gapinput@elm:= aa*bb;;|
  !gapprompt@gap>| !gapinput@Order( elm );|
  7
  !gapprompt@gap>| !gapinput@fixed:= NullspaceMat( elm - aa^0 );|
  [ [ 1, 1, 1, 1, 1, 1, 1, 0 ], [ -4, 1, 1, -5, -5, 2, 0, 1 ] ]
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 9 );;|
  !gapprompt@gap>| !gapinput@seed:= fun( fixed[2], aa^0 );|
  [ 5, 1, 1, 4, 4, 2, 0, 1 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P41/G1/L1/V3/ext3" );|
  true
\end{Verbatim}
 

 The translation lattice in the second example is the lattice $L = 6 {\ensuremath{\mathbb Z}}^d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= [ 6, 0, 0, 0, 0, 0, 0 ];;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P41/G1/L1/V4/ext3"} belongs to the factor group of $S$ modulo the normal subgroup $M(6 L)$, so we compute the action on an orbit modulo $18$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 18 );;|
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@seed:= fun( fixed[2], aa^0 );|
  [ 14, 1, 1, 13, 13, 2, 0, 1 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P41/G1/L1/V4/ext3" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Example with point group $M_{11}$}}\label{subsect:expl-M11}
\logpage{[ 1, 2, 9 ]}
\hyperdef{L}{X8575CE147A9819BF}{}
{
  There is one example with $d = 10$. The generators of the point group are as follows (see{\nobreakspace}\cite[p. 334]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= deletedPermutationMat( (1,9)(3,5)(7,11)(8,10), 11 );;|
  !gapprompt@gap>| !gapinput@b:= deletedPermutationMat( (1,4,3,2)(5,8,7,6), 11 );;|
\end{Verbatim}
 

 The vector system is $V_2$, and the translation lattice is $L = 2 {\ensuremath{\mathbb Z}}^d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= [ 0 * a[1],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ] ];;|
  !gapprompt@gap>| !gapinput@t:= [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P48/G1/L1/V2/ext2"} belongs to the factor group of $S$ modulo the normal subgroup $M(2 L)$, so we compute the action on an orbit modulo $4$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 4 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P48/G1/L1/V2/ext2" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Example with point group $U_3(3)$}}\label{subsect:expl-U33}
\logpage{[ 1, 2, 10 ]}
\hyperdef{L}{X7C0201B77DA1682A}{}
{
  There is one example with $d = 7$. The generators of the point group are as follows (see{\nobreakspace}\cite[p. 335]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= [ [ 0, 0,-1, 1, 0,-1, 1 ],|
  !gapprompt@>| !gapinput@         [ 1, 0,-1, 1, 1,-1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 1,-1, 0, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 0, 1, 0,-1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [-1, 1, 1,-1, 0, 1, 0 ],|
  !gapprompt@>| !gapinput@         [-1, 0, 1,-1, 0, 0, 1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 0, 1 ] ];;|
  !gapprompt@gap>| !gapinput@b:= [ [ 0, 0, 0, 0, 0, 0, 1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1, 1, 0,-1, 1 ],|
  !gapprompt@>| !gapinput@         [ 1, 0,-1, 1, 1,-1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 1,-1, 0, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 0, 1, 0,-1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [-1, 1, 1,-1, 0, 1, 0 ],|
  !gapprompt@>| !gapinput@         [-1, 0, 1,-1, 0, 0, 1 ] ];;|
\end{Verbatim}
 

 The vector system is $V_2$, and the translation lattice is $L = 3 {\ensuremath{\mathbb Z}}^d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= [ [ 2, 1, 0, 0, 2, 1, 0 ],|
  !gapprompt@>| !gapinput@         0 * b[1] ];;|
  !gapprompt@gap>| !gapinput@t:= [ 3, 0, 0, 0, 0, 0, 0 ];;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P49/G1/L1/V2/ext3"} belongs to the factor group of $S$ modulo the normal subgroup $M(3 L)$, so we compute the action on an orbit modulo $9$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 9 );;|
\end{Verbatim}
 

 The orbits in this action are quite long. we choose a seed vector from the
fixed space of an element of order $12$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@aa:= sgens[1];;|
  !gapprompt@gap>| !gapinput@bb:= sgens[2];;|
  !gapprompt@gap>| !gapinput@elm:= aa*bb^4;;|
  !gapprompt@gap>| !gapinput@Order( elm );|
  12
  !gapprompt@gap>| !gapinput@fixed:= NullspaceMat( elm - aa^0 );|
  [ [ -1, -1, 1, 1, -1, -1, 1, 0 ], [ 0, -3, 1, 1, -1, -2, 0, 1 ] ]
  !gapprompt@gap>| !gapinput@seed:= fun( fixed[2], aa^0 );|
  [ 0, 6, 1, 1, 8, 7, 0, 1 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, seed, fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P49/G1/L1/V2/ext3" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Examples with point group $U_4(2)$}}\label{subsect:expl-U42}
\logpage{[ 1, 2, 11 ]}
\hyperdef{L}{X85D9C329792E58F3}{}
{
  There are two examples with $d = 6$. In both cases, the generators of the point group are as follows
(see{\nobreakspace}\cite[p. 336]{HP89}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a:= [ [ 0, 1, 0,-1,-1, 1 ],|
  !gapprompt@>| !gapinput@         [ 1, 0,-1, 0, 1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0,-1, 0, 1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0,-1, 0, 0, 1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0, 0, 1 ] ];;|
  !gapprompt@gap>| !gapinput@b:= [ [ 0,-1, 0, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 0, 1, 0,-1,-1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 1, 1, 0,-1 ],|
  !gapprompt@>| !gapinput@         [ 0, 0, 0, 0,-1, 0 ],|
  !gapprompt@>| !gapinput@         [ 0, 1, 0, 0, 0, 0 ],|
  !gapprompt@>| !gapinput@         [ 1, 0, 0, 0, 0, 0 ] ];;|
\end{Verbatim}
 

 In both examples, the vector system is the trivial vector system $V_1$, and the translation lattice is the full lattice $L_1 = {\ensuremath{\mathbb Z}}^d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@v:= List( [ 1, 2 ], i -> 0 * a[1] );;|
  !gapprompt@gap>| !gapinput@t:= [ 1, 0, 0, 0, 0, 0 ];;|
\end{Verbatim}
 

 The library character table with identifier \texttt{"P50/G1/L1/V1/ext3"} belongs to the factor group of $S$ modulo the normal subgroup $M(3 L_1)$, so we compute the action on an orbit modulo $3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 3 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P50/G1/L1/V1/ext3" );|
  true
\end{Verbatim}
 

 The library character table with identifier \texttt{"P50/G1/L1/V1/ext4"} belongs to the factor group of $S$ modulo the normal subgroup $M(4 L_1)$, so we compute the action on an orbit modulo $4$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;|
  !gapprompt@gap>| !gapinput@g:= Group( sgens );;|
  !gapprompt@gap>| !gapinput@fun:= multiplicationModulo( 4 );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 1 ], fun );;|
  !gapprompt@gap>| !gapinput@permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;|
  !gapprompt@gap>| !gapinput@verifyFactorGroup( permgens, "P50/G1/L1/V1/ext4" );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{A remark on one of the example groups}}\label{subsect:A-remark-on-one-of-the-example-groups}
\logpage{[ 1, 2, 12 ]}
\hyperdef{L}{X8635EE0B78A66120}{}
{
  The (perfect) character table with identifier \texttt{"P1/G2/L2/V2/ext4"} has the property that its character degrees are exactly the divisors of $60$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@degrees:= CharacterDegrees( CharacterTable( "P1/G2/L2/V2/ext4" ) );|
  [ [ 1, 1 ], [ 2, 2 ], [ 3, 2 ], [ 4, 2 ], [ 5, 1 ], [ 6, 5 ], 
    [ 10, 4 ], [ 12, 4 ], [ 15, 20 ], [ 20, 2 ], [ 30, 29 ], [ 60, 8 ] ]
  !gapprompt@gap>| !gapinput@List( degrees, x -> x[1] ) = DivisorsInt( 60 );|
  true
\end{Verbatim}
 

 There are nilpotent groups with the same set of character degrees, for example
the direct product of four extraspecial groups of the orders $2^3$, $2^3$, $3^3$, and $5^3$, respectively. This phenomenon has been described in{\nobreakspace}\cite{NR14}. }

 }

  
\section{\textcolor{Chapter }{Generality problems (December 2004/October 2015)}}\label{sect:generalityproblems}
\logpage{[ 1, 3, 0 ]}
\hyperdef{L}{X8448022280E82C52}{}
{
  The term ``generality problem'' is used for problems concerning consistent choices of conjugacy classes of
Brauer tables for the same group, in different characteristics. The definition
and some examples are given in \cite[p. x]{JLPW95}. 

 Section \ref{subsect:generalityproblems_list} shows how to detect generality problems and lists the known generality
problems, and Section \ref{subsect:generality_J3} gives an example that actually arose.  
\subsection{\textcolor{Chapter }{Listing possible generality problems}}\label{subsect:generalityproblems_list}
\logpage{[ 1, 3, 1 ]}
\hyperdef{L}{X7D1A66C3844D09B1}{}
{
  We use the following idea for finding character tables which may involve
generality problems. (The functions shown in this section are based on \textsf{GAP} 3 code that was originally written by J{\"u}rgen M{\"u}ller.) 

 If the $p$-modular Brauer table $mtbl$, say, of a group contributes to a generality problem then some choice of
conjugacy classes is necessary in order to write down this table, in the sense
that some symmetry of the corresponding ordinary table $tbl$, say, is broken in $mtbl$. This situation can be detected as follows. We assume that the class fusion
from $mtbl$ to $tbl$ has been fixed. All possible class fusions are obtained as the orbit of this
class fusion under the actions of table automorphisms of $tbl$, via mapping the images of the class fusion (with the function \texttt{OnTuples} (\textbf{Reference: OnTuples})), and of the table automorphisms of $mtbl$, via permuting the preimages. The case of broken symmetries occurs if and
only if this orbit splits into several orbits when only the action of the
table automorphisms of $mtbl$ is considered. Equivalently, symmetries are broken if and only if the orbit
under table automorphisms of $mtbl$ is not closed under the action of table automorphisms of $tbl$.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BrokenSymmetries:= function( ordtbl, modtbl )|
  !gapprompt@>| !gapinput@    local taut, maut, triv, fus, orb;|
  !gapprompt@>| !gapinput@    taut:= AutomorphismsOfTable( ordtbl );|
  !gapprompt@>| !gapinput@    maut:= AutomorphismsOfTable( modtbl );|
  !gapprompt@>| !gapinput@    triv:= TrivialSubgroup( taut );|
  !gapprompt@>| !gapinput@    fus:= GetFusionMap( modtbl, ordtbl );|
  !gapprompt@>| !gapinput@    orb:= MakeImmutable( Set( OrbitFusions( maut, fus, triv ) ) );|
  !gapprompt@>| !gapinput@    return ForAny( GeneratorsOfGroup( taut ),|
  !gapprompt@>| !gapinput@               x -> ForAny( orb,|
  !gapprompt@>| !gapinput@                        fus -> not OnTuples( fus, x ) in orb ) );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 \emph{Remark:} (Thanks to Klaus Lux for discussions on this topic.) 
\begin{itemize}
\item  It may happen that some symmetry $\sigma_m$ of a Brauer table does not belong to a symmetry $\sigma_o$ of the corresponding ordinary table, in the sense that permuting the preimage
classes of a fusion $f$ between the two tables with $\sigma_m$ and permuting the image classes with $\sigma_o$ yields $f$. 

 For example, consider the group $G = 2.A_6.2_1$, the double cover of the symmetric group $S_6$ on six points. The $2$-modular Brauer table of $G$, which is essentially equal to that of $S_6$, has a table automorphism group order two, and the nonidentity element in it
swaps the two classes of element order three. The automorphism group of the
ordinary character table of $G$, however, fixes the two classes of element order three; note that exactly one
of these classes possesses square roots in the ``outer half'' $G \setminus G'$. 

 Thus it is not sufficient to compare the orbit of the fixed class fusion under
the automorphisms of the ordinary table with the orbit of the same fusion
under the automorphisms of the Brauer table. 
\end{itemize}
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2.A6.2_1" );;|
  !gapprompt@gap>| !gapinput@m:= t mod 2;;|
  !gapprompt@gap>| !gapinput@GetFusionMap( m, t );|
  [ 1, 4, 6, 9 ]
  !gapprompt@gap>| !gapinput@AutomorphismsOfTable( t );|
  Group([ (16,17), (14,15), (14,15)(16,17) ])
  !gapprompt@gap>| !gapinput@AutomorphismsOfTable( m );|
  Group([ (2,3) ])
  !gapprompt@gap>| !gapinput@Display( m );|
  2.A6.2_1mod2
  
       2  5  2  2  1
       3  2  2  2  .
       5  1  .  .  1
  
         1a 3a 3b 5a
      2P 1a 3a 3b 5a
      3P 1a 1a 1a 5a
      5P 1a 3a 3b 1a
  
  X.1     1  1  1  1
  X.2     4  1 -2 -1
  X.3     4 -2  1 -1
  X.4    16 -2 -2  1
  !gapprompt@gap>| !gapinput@Display( t );|
  2.A6.2_1
  
        2  5   5  4  2  2  2  2  3  1   1  4  4  3  2  2   2   2
        3  2   2  .  2  2  2  2  .  .   .  1  1  .  1  1   1   1
        5  1   1  .  .  .  .  .  .  1   1  .  .  .  .  .   .   .
  
          1a  2a 4a 3a 6a 3b 6b 8a 5a 10a 2b 4b 8b 6c 6d 12a 12b
       2P 1a  1a 2a 3a 3a 3b 3b 4a 5a  5a 1a 2a 4a 3a 3a  6b  6b
       3P 1a  2a 4a 1a 2a 1a 2a 8a 5a 10a 2b 4b 8b 2b 2b  4b  4b
       5P 1a  2a 4a 3a 6a 3b 6b 8a 1a  2a 2b 4b 8b 6d 6c 12b 12a
  
  X.1      1   1  1  1  1  1  1  1  1   1  1  1  1  1  1   1   1
  X.2      1   1  1  1  1  1  1  1  1   1 -1 -1 -1 -1 -1  -1  -1
  X.3      5   5  1  2  2 -1 -1 -1  .   .  3 -1  1  .  .  -1  -1
  X.4      5   5  1  2  2 -1 -1 -1  .   . -3  1 -1  .  .   1   1
  X.5      5   5  1 -1 -1  2  2 -1  .   . -1  3  1 -1 -1   .   .
  X.6      5   5  1 -1 -1  2  2 -1  .   .  1 -3 -1  1  1   .   .
  X.7     16  16  . -2 -2 -2 -2  .  1   1  .  .  .  .  .   .   .
  X.8      9   9  1  .  .  .  .  1 -1  -1  3  3 -1  .  .   .   .
  X.9      9   9  1  .  .  .  .  1 -1  -1 -3 -3  1  .  .   .   .
  X.10    10  10 -2  1  1  1  1  .  .   .  2 -2  . -1 -1   1   1
  X.11    10  10 -2  1  1  1  1  .  .   . -2  2  .  1  1  -1  -1
  X.12     4  -4  . -2  2  1 -1  . -1   1  .  .  .  .  .   B  -B
  X.13     4  -4  . -2  2  1 -1  . -1   1  .  .  .  .  .  -B   B
  X.14     4  -4  .  1 -1 -2  2  . -1   1  .  .  .  A -A   .   .
  X.15     4  -4  .  1 -1 -2  2  . -1   1  .  .  . -A  A   .   .
  X.16    16 -16  . -2  2 -2  2  .  1  -1  .  .  .  .  .   .   .
  X.17    20 -20  .  2 -2  2 -2  .  .   .  .  .  .  .  .   .   .
  
  A = E(3)-E(3)^2
    = Sqrt(-3) = i3
  B = -E(12)^7+E(12)^11
    = Sqrt(3) = r3
\end{Verbatim}
 

 When considering several characteristics in parallel, one argues as follows.
The possible class fusions from a Brauer table $mtbl$ to its ordinary table $tbl$ are given by the orbit of a fixed class fusion under the action of the table
automorphisms of $tbl$. If there are several orbits under the action of the automorphisms of $mtbl$ then we choose one orbit. Due to this choice, only those table automorphisms
of $tbl$ are admissible for other characteristics that stabilize the chosen orbit. For
the second characteristic, we take again the set of all class fusions from the
Brauer table to $tbl$, and split it into orbits under the table automorphisms of the Brauer table.
Now there are two possibilities. Either the action of the admissible subgroup
of automorphisms of $tbl$ joins these orbits into one orbit or not. In the former case, we choose again
one of the orbits, replace the group of admissible automorphisms of $tbl$ by the stabilizer of this orbit, and proceed with the next characteristic. In
the latter case, we have found a generality problem, since we are not free to
choose an arbitrary class fusion from the set of possibilities. 

 The following function returns the set of primes which may be involved in
generality problems for the given ordinary character table. Note that the
procedure sketched above does not tell which characteristics are actually
involved or which classes are affected by the choices; for example, we could
argue that one is always free to choose a fusion for the first
characteristics, and that only the other ones cause problems. We return \emph{all} those primes $p$ for which broken symmetries between the $p$-modular table and the ordinary table have been detected. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PrimesOfGeneralityProblems:= function( ordtbl )|
  !gapprompt@>| !gapinput@    local consider, p, modtbl, taut, triv, admiss, fusion, maut,|
  !gapprompt@>| !gapinput@          allfusions, orbits, orbit, reps;|
  !gapprompt@>| !gapinput@    # Find the primes for which symmetries are broken.|
  !gapprompt@>| !gapinput@    consider:= [];|
  !gapprompt@>| !gapinput@    for p in Filtered( PrimeDivisors( Size( ordtbl ) ), IsPrimeInt ) do|
  !gapprompt@>| !gapinput@      modtbl:= ordtbl mod p;|
  !gapprompt@>| !gapinput@      if modtbl <> fail and BrokenSymmetries( ordtbl, modtbl ) then|
  !gapprompt@>| !gapinput@        Add( consider, p );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    # Compute the choices and detect generality problems.|
  !gapprompt@>| !gapinput@    taut:= AutomorphismsOfTable( ordtbl );|
  !gapprompt@>| !gapinput@    triv:= TrivialSubgroup( taut );|
  !gapprompt@>| !gapinput@    admiss:= taut;|
  !gapprompt@>| !gapinput@    for p in consider do|
  !gapprompt@>| !gapinput@      modtbl:= ordtbl mod p;|
  !gapprompt@>| !gapinput@      fusion:= GetFusionMap( modtbl, ordtbl );|
  !gapprompt@>| !gapinput@      maut:= AutomorphismsOfTable( modtbl );|
  !gapprompt@>| !gapinput@      # - We need not apply the action of 'maut' here,|
  !gapprompt@>| !gapinput@      #   since 'maut' will later be used to get representatives.|
  !gapprompt@>| !gapinput@      # - We need not apply all elements in 'taut' but only|
  !gapprompt@>| !gapinput@      #   representatives of left cosets of 'admiss' in 'taut',|
  !gapprompt@>| !gapinput@      #   since 'admiss' will later be used to get representatives.|
  !gapprompt@>| !gapinput@      # allfusions:= OrbitFusions( maut, fusion, taut );|
  !gapprompt@>| !gapinput@      allfusions:= Set( RightTransversal( taut, admiss ),|
  !gapprompt@>| !gapinput@                        x -> OnTuples( fusion, x^-1 ) );|
  !gapprompt@>| !gapinput@      # For computing representatives, 'RepresentativesFusions' is not|
  !gapprompt@>| !gapinput@      # suitable because 'allfusions' is in generally not closed|
  !gapprompt@>| !gapinput@      # under the actions.|
  !gapprompt@>| !gapinput@      # reps:= RepresentativesFusions( maut, allfusions, admiss );|
  !gapprompt@>| !gapinput@      orbits:= [];|
  !gapprompt@>| !gapinput@      while not IsEmpty( allfusions ) do|
  !gapprompt@>| !gapinput@        orbit:= OrbitFusions( maut, allfusions[1], admiss );|
  !gapprompt@>| !gapinput@        Add( orbits, orbit );|
  !gapprompt@>| !gapinput@        SubtractSet( allfusions, orbit );|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@      reps:= List( orbits, x -> x[1] );|
  !gapprompt@>| !gapinput@      if Length( reps ) = 1 then|
  !gapprompt@>| !gapinput@        # Reduce the symmetries that are still available.|
  !gapprompt@>| !gapinput@        admiss:= Stabilizer( admiss,|
  !gapprompt@>| !gapinput@                             Set( OrbitFusions( maut, fusion, triv ) ),|
  !gapprompt@>| !gapinput@                             OnSetsTuples );|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        # We have found a generality problem.|
  !gapprompt@>| !gapinput@        return consider;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    # There is no generality problem for this table.|
  !gapprompt@>| !gapinput@    return [];|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Let us look at a small example, the $5$-modular character table of the group $2.A_5.2$. The irreducible characters of degree $2$ have the values $\pm \sqrt{{-2}}$ on the classes \texttt{8a} and \texttt{8b}, and the values $\pm \sqrt{{-3}}$ on the classes \texttt{6b} and \texttt{6c}. When we define which of the two classes of element order $8$ is called \texttt{8a}, this will also define which class is called \texttt{6b}. The ordinary character table does not relate the two pairs of classes, there
are table automorphisms which interchange each pair independently. This
symmetry is thus broken in the $5$-modular character table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2.A5.2" );;|
  !gapprompt@gap>| !gapinput@m:= t mod 5;;|
  !gapprompt@gap>| !gapinput@Display( m );|
  2.A5.2mod5
  
        2  4  4  3  2  2  2  3  3  2  2
        3  1  1  .  1  1  1  .  .  1  1
        5  1  1  .  .  .  .  .  .  .  .
  
          1a 2a 4a 3a 6a 2b 8a 8b 6b 6c
       2P 1a 1a 2a 3a 3a 1a 4a 4a 3a 3a
       3P 1a 2a 4a 1a 2a 2b 8a 8b 2b 2b
       5P 1a 2a 4a 3a 6a 2b 8b 8a 6c 6b
  
  X.1      1  1  1  1  1  1  1  1  1  1
  X.2      1  1  1  1  1 -1 -1 -1 -1 -1
  X.3      3  3 -1  .  .  1 -1 -1 -2 -2
  X.4      3  3 -1  .  . -1  1  1  2  2
  X.5      5  5  1 -1 -1  1 -1 -1  1  1
  X.6      5  5  1 -1 -1 -1  1  1 -1 -1
  X.7      2 -2  . -1  1  .  A -A  B -B
  X.8      2 -2  . -1  1  . -A  A -B  B
  X.9      4 -4  .  1 -1  .  .  .  B -B
  X.10     4 -4  .  1 -1  .  .  . -B  B
  
  A = E(8)+E(8)^3
    = Sqrt(-2) = i2
  B = E(3)-E(3)^2
    = Sqrt(-3) = i3
  !gapprompt@gap>| !gapinput@AutomorphismsOfTable( t );|
  Group([ (11,12), (9,10) ])
  !gapprompt@gap>| !gapinput@AutomorphismsOfTable( m );|
  Group([ (7,8)(9,10) ])
  !gapprompt@gap>| !gapinput@GetFusionMap( m, t );|
  [ 1, 2, 3, 4, 5, 8, 9, 10, 11, 12 ]
  !gapprompt@gap>| !gapinput@BrokenSymmetries( t, m );|
  true
  !gapprompt@gap>| !gapinput@BrokenSymmetries( t, t mod 2 );|
  false
  !gapprompt@gap>| !gapinput@BrokenSymmetries( t, t mod 3 );|
  false
  !gapprompt@gap>| !gapinput@PrimesOfGeneralityProblems( t );|
  [  ]
\end{Verbatim}
 

 Since no symmetry is broken in the $2$- and $3$-modular character tables of $G$, there is no generality problem in this case. 

 For an example of a generality problem, we look at the smallest Janko group $J_1$. As is mentioned in \cite[p. x]{JLPW95}, the unique irreducible $11$-modular Brauer character of degree $7$ distinguishes the two (algebraically conjugate) classes of element order $5$. Since also the unique irreducible $19$-modular Brauer character of degree $22$ distinguishes these classes, we have to choose these classes consistently. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J1" );;|
  !gapprompt@gap>| !gapinput@m:= t mod 11;;|
  !gapprompt@gap>| !gapinput@Display( m, rec( chars:= Filtered( Irr( m ), x -> x[1] = 7 ) ) );|
  J1mod11
  
       2  3  3  1  1  1  1  .   1   1   .   .   .   .   .
       3  1  1  1  1  1  1  .   .   .   1   1   .   .   .
       5  1  1  1  1  1  .  .   1   1   1   1   .   .   .
       7  1  .  .  .  .  .  1   .   .   .   .   .   .   .
      11  1  .  .  .  .  .  .   .   .   .   .   .   .   .
      19  1  .  .  .  .  .  .   .   .   .   .   1   1   1
  
         1a 2a 3a 5a 5b 6a 7a 10a 10b 15a 15b 19a 19b 19c
      2P 1a 1a 3a 5b 5a 3a 7a  5b  5a 15b 15a 19b 19c 19a
      3P 1a 2a 1a 5b 5a 2a 7a 10b 10a  5b  5a 19b 19c 19a
      5P 1a 2a 3a 1a 1a 6a 7a  2a  2a  3a  3a 19b 19c 19a
      7P 1a 2a 3a 5b 5a 6a 1a 10b 10a 15b 15a 19a 19b 19c
     11P 1a 2a 3a 5a 5b 6a 7a 10a 10b 15a 15b 19a 19b 19c
     19P 1a 2a 3a 5a 5b 6a 7a 10a 10b 15a 15b  1a  1a  1a
  
  Y.1     7 -1  1  A *A -1  .   B  *B   C  *C   D   E   F
  
  A = E(5)+E(5)^4
    = (-1+Sqrt(5))/2 = b5
  B = -E(5)-2*E(5)^2-2*E(5)^3-E(5)^4
    = (3+Sqrt(5))/2 = 2+b5
  C = -2*E(5)-2*E(5)^4
    = 1-Sqrt(5) = 1-r5
  D = -E(19)-E(19)^2-E(19)^3-E(19)^5-E(19)^7-E(19)^8-E(19)^11-E(19)^12-E\
  (19)^14-E(19)^16-E(19)^17-E(19)^18
  E = -E(19)^2-E(19)^3-E(19)^4-E(19)^5-E(19)^6-E(19)^9-E(19)^10-E(19)^13\
  -E(19)^14-E(19)^15-E(19)^16-E(19)^17
  F = -E(19)-E(19)^4-E(19)^6-E(19)^7-E(19)^8-E(19)^9-E(19)^10-E(19)^11-E\
  (19)^12-E(19)^13-E(19)^15-E(19)^18
  !gapprompt@gap>| !gapinput@m:= t mod 19;;|
  !gapprompt@gap>| !gapinput@Display( m, rec( chars:= Filtered( Irr( m ), x -> x[1] = 22 ) ) );|
  J1mod19
  
       2  3  3  1  1  1  1  .   1   1   .   .   .
       3  1  1  1  1  1  1  .   .   .   .   1   1
       5  1  1  1  1  1  .  .   1   1   .   1   1
       7  1  .  .  .  .  .  1   .   .   .   .   .
      11  1  .  .  .  .  .  .   .   .   1   .   .
      19  1  .  .  .  .  .  .   .   .   .   .   .
  
         1a 2a 3a 5a 5b 6a 7a 10a 10b 11a 15a 15b
      2P 1a 1a 3a 5b 5a 3a 7a  5b  5a 11a 15b 15a
      3P 1a 2a 1a 5b 5a 2a 7a 10b 10a 11a  5b  5a
      5P 1a 2a 3a 1a 1a 6a 7a  2a  2a 11a  3a  3a
      7P 1a 2a 3a 5b 5a 6a 1a 10b 10a 11a 15b 15a
     11P 1a 2a 3a 5a 5b 6a 7a 10a 10b  1a 15a 15b
     19P 1a 2a 3a 5a 5b 6a 7a 10a 10b 11a 15a 15b
  
  Y.1    22 -2  1  A *A  1  1  -A -*A   .   B  *B
  
  A = E(5)+E(5)^4
    = (-1+Sqrt(5))/2 = b5
  B = -2*E(5)-2*E(5)^4
    = 1-Sqrt(5) = 1-r5
\end{Verbatim}
 

 Note that the degree $7$ character above also distinguishes the three classes of element order $19$, and the same holds for the unique irreducible degree $31$ character from characteristic $7$. Thus also the prime $7$ occurs in the list of candidates for generality problems. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PrimesOfGeneralityProblems( t );|
  [ 7, 11, 19 ]
\end{Verbatim}
 

 Finally, we list the candidates for generality problems from \textsf{GAP}'s Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@list:= [];;|
  !gapprompt@gap>| !gapinput@isGeneralityProblem:= function( ordtbl )|
  !gapprompt@>| !gapinput@    local res;|
  !gapprompt@>| !gapinput@    res:= PrimesOfGeneralityProblems( ordtbl );|
  !gapprompt@>| !gapinput@    if res = [] then|
  !gapprompt@>| !gapinput@      return false;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    Add( list, [ Identifier( ordtbl ), res ] );|
  !gapprompt@>| !gapinput@    return true;|
  !gapprompt@>| !gapinput@end;;|
  !gapprompt@gap>| !gapinput@AllCharacterTableNames( IsDuplicateTable, false,|
  !gapprompt@>| !gapinput@       isGeneralityProblem, true );;|
  !gapprompt@gap>| !gapinput@PrintArray( SortedList( list ) );|
  [ [          (2.A4x2.G2(4)).2,           [ 2, 5, 7, 13 ] ],
    [         (2^2x3).L3(4).2_1,                  [ 5, 7 ] ],
    [              (2x12).L3(4),               [ 2, 3, 7 ] ],
    [             (4^2x3).L3(4),               [ 2, 3, 7 ] ],
    [                (7:3xHe):2,              [ 5, 7, 17 ] ],
    [                (A5xA12):2,                  [ 2, 3 ] ],
    [                (D10xHN).2,    [ 2, 3, 5, 7, 11, 19 ] ],
    [             (S3x2.Fi22).2,             [ 3, 11, 13 ] ],
    [                    12.M22,           [ 2, 5, 7, 11 ] ],
    [                  12.M22.2,           [ 2, 5, 7, 11 ] ],
    [            12_1.L3(4).2_1,                  [ 5, 7 ] ],
    [                12_2.L3(4),               [ 2, 3, 7 ] ],
    [            12_2.L3(4).2_1,               [ 3, 5, 7 ] ],
    [            12_2.L3(4).2_2,               [ 2, 3, 7 ] ],
    [            12_2.L3(4).2_3,               [ 2, 3, 7 ] ],
    [            2.(A4xG2(4)).2,           [ 2, 5, 7, 13 ] ],
    [                  2.2E6(2),                [ 13, 19 ] ],
    [                2.2E6(2).2,                [ 13, 19 ] ],
    [                     2.A10,                  [ 5, 7 ] ],
    [                     2.A11,               [ 3, 5, 7 ] ],
    [                   2.A11.2,              [ 5, 7, 11 ] ],
    [                     2.A12,            [ 2, 3, 5, 7 ] ],
    [                   2.A12.2,              [ 5, 7, 11 ] ],
    [                     2.A13,        [ 2, 3, 5, 7, 11 ] ],
    [                   2.A13.2,              [ 5, 7, 13 ] ],
    [                 2.Alt(14),            [ 2, 3, 5, 7 ] ],
    [                 2.Alt(15),               [ 2, 5, 7 ] ],
    [                 2.Alt(16),            [ 2, 3, 5, 7 ] ],
    [                 2.Alt(17),            [ 2, 3, 5, 7 ] ],
    [                 2.Alt(18),            [ 2, 3, 5, 7 ] ],
    [                       2.B,                [ 17, 23 ] ],
    [                   2.F4(2),          [ 2, 7, 13, 17 ] ],
    [                  2.Fi22.2,                [ 11, 13 ] ],
    [                   2.G2(4),                  [ 2, 7 ] ],
    [                 2.G2(4).2,              [ 5, 7, 13 ] ],
    [                      2.HS,           [ 3, 5, 7, 11 ] ],
    [                    2.HS.2,                 [ 3, 11 ] ],
    [               2.L3(4).2_1,                  [ 5, 7 ] ],
    [                      2.Ru,          [ 5, 7, 13, 29 ] ],
    [                     2.Suz,              [ 2, 5, 11 ] ],
    [                   2.Suz.2,              [ 3, 7, 13 ] ],
    [                 2.Sym(15),               [ 3, 5, 7 ] ],
    [                 2.Sym(16),               [ 3, 5, 7 ] ],
    [                 2.Sym(17),               [ 3, 5, 7 ] ],
    [                 2.Sym(18),                  [ 5, 7 ] ],
    [                   2.Sz(8),              [ 2, 5, 13 ] ],
    [                2^2.2E6(2),                [ 13, 19 ] ],
    [              2^2.2E6(2).2,                [ 13, 19 ] ],
    [                2^2.Fi22.2,             [ 3, 11, 13 ] ],
    [             2^2.L3(4).2^2,                  [ 5, 7 ] ],
    [             2^2.L3(4).2_1,                  [ 5, 7 ] ],
    [                 2^2.Sz(8),              [ 2, 5, 13 ] ],
    [                 2x2.F4(2),          [ 2, 7, 13, 17 ] ],
    [                  2x3.Fi22,               [ 2, 3, 5 ] ],
    [                  2x6.Fi22,               [ 2, 3, 5 ] ],
    [                   2x6.M22,              [ 2, 5, 11 ] ],
    [                  2xFi22.2,                [ 11, 13 ] ],
    [                    2xFi23,             [ 3, 17, 23 ] ],
    [                    3.Fi22,               [ 2, 3, 5 ] ],
    [                  3.Fi22.2,          [ 2, 5, 11, 13 ] ],
    [                      3.J3,             [ 2, 17, 19 ] ],
    [                    3.J3.2,          [ 2, 5, 17, 19 ] ],
    [               3.L3(4).2_3,               [ 2, 3, 7 ] ],
    [             3.L3(4).3.2_3,               [ 2, 3, 7 ] ],
    [                 3.L3(7).2,              [ 3, 7, 19 ] ],
    [                3.L3(7).S3,              [ 3, 7, 19 ] ],
    [                     3.McL,              [ 2, 5, 11 ] ],
    [                   3.McL.2,           [ 2, 3, 5, 11 ] ],
    [                      3.ON,      [ 3, 7, 11, 19, 31 ] ],
    [                    3.ON.2,   [ 3, 5, 7, 11, 19, 31 ] ],
    [                   3.Suz.2,              [ 2, 3, 13 ] ],
    [                 3x2.F4(2),          [ 2, 7, 13, 17 ] ],
    [                3x2.Fi22.2,                [ 11, 13 ] ],
    [                 3x2.G2(4),                  [ 2, 7 ] ],
    [                    3xFi23,             [ 3, 17, 23 ] ],
    [                      3xJ1,             [ 7, 11, 19 ] ],
    [                 3xL3(7).2,              [ 3, 7, 19 ] ],
    [                    4.HS.2,              [ 5, 7, 11 ] ],
    [                     4.M22,                  [ 5, 7 ] ],
    [             4_1.L3(4).2_1,                  [ 5, 7 ] ],
    [             4_2.L3(4).2_1,               [ 3, 5, 7 ] ],
    [                    6.Fi22,               [ 2, 3, 5 ] ],
    [                  6.Fi22.2,          [ 2, 5, 11, 13 ] ],
    [               6.L3(4).2_1,                  [ 5, 7 ] ],
    [                     6.M22,              [ 2, 5, 11 ] ],
    [                   6.O7(3),              [ 3, 5, 13 ] ],
    [                 6.O7(3).2,              [ 3, 5, 13 ] ],
    [                     6.Suz,              [ 2, 5, 11 ] ],
    [                   6.Suz.2,        [ 2, 3, 5, 7, 13 ] ],
    [                 6x2.F4(2),          [ 2, 7, 13, 17 ] ],
    [                       A12,                  [ 2, 3 ] ],
    [                       A14,               [ 2, 5, 7 ] ],
    [                       A17,                  [ 2, 7 ] ],
    [                       A18,            [ 2, 3, 5, 7 ] ],
    [                         B,        [ 13, 17, 23, 31 ] ],
    [                       F3+,            [ 17, 23, 29 ] ],
    [                     F3+.2,            [ 17, 23, 29 ] ],
    [                    Fi22.2,                [ 11, 13 ] ],
    [                      Fi23,             [ 3, 17, 23 ] ],
    [                        HN,          [ 2, 3, 11, 19 ] ],
    [                      HN.2,          [ 5, 7, 11, 19 ] ],
    [                        He,                 [ 5, 17 ] ],
    [                      He.2,              [ 5, 7, 17 ] ],
    [       Isoclinic(12.M22.2),           [ 2, 5, 7, 11 ] ],
    [        Isoclinic(2.A11.2),              [ 5, 7, 11 ] ],
    [        Isoclinic(2.A12.2),              [ 5, 7, 11 ] ],
    [        Isoclinic(2.A13.2),              [ 5, 7, 13 ] ],
    [       Isoclinic(2.Fi22.2),                [ 11, 13 ] ],
    [      Isoclinic(2.G2(4).2),              [ 5, 7, 13 ] ],
    [         Isoclinic(2.HS.2),                 [ 3, 11 ] ],
    [         Isoclinic(2.HSx2),           [ 3, 5, 7, 11 ] ],
    [    Isoclinic(2.L3(4).2_1),                  [ 5, 7 ] ],
    [        Isoclinic(2.Suz.2),              [ 3, 7, 13 ] ],
    [  Isoclinic(4_1.L3(4).2_1),                  [ 5, 7 ] ],
    [  Isoclinic(4_2.L3(4).2_1),               [ 3, 5, 7 ] ],
    [       Isoclinic(6.Fi22.2),          [ 2, 5, 11, 13 ] ],
    [    Isoclinic(6.L3(4).2_1),                  [ 5, 7 ] ],
    [        Isoclinic(6.Suz.2),        [ 2, 3, 5, 7, 13 ] ],
    [                        J1,             [ 7, 11, 19 ] ],
    [                      J1x2,             [ 7, 11, 19 ] ],
    [                        J3,             [ 2, 17, 19 ] ],
    [                      J3.2,          [ 2, 5, 17, 19 ] ],
    [                 L3(4).2_3,                  [ 3, 7 ] ],
    [               L3(4).3.2_3,               [ 2, 3, 7 ] ],
    [                   L3(7).2,              [ 3, 7, 19 ] ],
    [                  L3(7).S3,              [ 3, 7, 19 ] ],
    [                 L3(9).2_1,              [ 3, 7, 13 ] ],
    [                   L5(2).2,              [ 2, 7, 31 ] ],
    [                        Ly,             [ 7, 37, 67 ] ],
    [                       M23,              [ 2, 3, 23 ] ],
    [                        ON,      [ 3, 7, 11, 19, 31 ] ],
    [                      ON.2,   [ 3, 5, 7, 11, 19, 31 ] ],
    [                        Ru,          [ 5, 7, 13, 29 ] ],
    [                 S3xFi22.2,                [ 11, 13 ] ],
    [                     Suz.2,                 [ 3, 13 ] ] ]
\end{Verbatim}
 

  Note that this list may become longer as new Brauer tables become available.
(For example, the prime $2$ was added to the entries for extensions of $F_4(2)$ when the $2$-modular table of $F_4(2)$ became available.) }

  
\subsection{\textcolor{Chapter }{A generality problem concerning the group $J_3$ (April 2015)}}\label{subsect:generality_J3}
\logpage{[ 1, 3, 2 ]}
\hyperdef{L}{X80EB5D827A78975A}{}
{
    In March 2015,  Klaus Lux reported an inconsistency in the character data of \textsf{GAP}: 

 The sporadic simple Janko group $J_3$ has a unique $19$-modular irreducible Brauer character of degree $110$. In the character table that is printed in the \textsf{Atlas} of Brauer characters{\nobreakspace}\cite[p. 219]{JLPW95}, the Brauer character value on the class \texttt{17A} is $b_{17}$. The \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3} provides a straight line program for computing class representatives of $J_3$. If we compute the Brauer character value in question, we do not get $b_{17}$ but its algebraic conjugate, $-1-b_{17}$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J3" );;|
  !gapprompt@gap>| !gapinput@m:= t mod 19;;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( Irr( m ), x -> x[1] = 110 );;|
  !gapprompt@gap>| !gapinput@Length( cand );|
  1
  !gapprompt@gap>| !gapinput@slp:= AtlasProgram( "J3", "classes" );;|
  !gapprompt@gap>| !gapinput@17a:= Position( slp.outputs, "17A" );|
  18
  !gapprompt@gap>| !gapinput@info:= OneAtlasGeneratingSetInfo( "J3", Characteristic, 19,|
  !gapprompt@>| !gapinput@              Dimension, 110 );;|
  !gapprompt@gap>| !gapinput@gens:= AtlasGenerators( info );;|
  !gapprompt@gap>| !gapinput@reps:= ResultOfStraightLineProgram( slp.program,|
  !gapprompt@>| !gapinput@              gens.generators );;|
  !gapprompt@gap>| !gapinput@Quadratic( BrauerCharacterValue( reps[ 17a ] ) );|
  rec( ATLAS := "-1-b17", a := -1, b := -1, d := 2, 
    display := "(-1-Sqrt(17))/2", root := 17 )
\end{Verbatim}
 

 How shall we resolve this inconsistency, by replacing the straight line
program or by swapping the classes \texttt{17A} and \texttt{17B} in the character table? Before we decide this, we look at related information. 

 Table~\ref{valuesJ3}  lists the $p$-modular irreducible characters of $J_3$, according to{\nobreakspace}\cite{JLPW95}, that can be used to define which of the two classes of element order $17$ shall be called \texttt{17A}; a $+$ sign in the last column of the table indicates that the representation is
available in the \textsf{Atlas} of Group Representations.  

 \mbox{}\label{valuesJ3}\begin{center}
\begin{tabular}{|r|r|r|r|c|}\hline
$p$&
$\varphi(1)$&
$\varphi($\texttt{17A}$)$&
$\varphi($\texttt{17B}$)$&
\textsf{Atlas}?\\
\hline
\hline
$2$&
$78$&
$1-b_{17}$&
$2+b_{17}$&
$+$\\
$2$&
$80$&
$3-b_{17}$&
$4+b_{17}$&
$+$\\
$2$&
$244$&
$b_{17}-2$&
$-3-b_{17}$&
$+$\\
$2$&
$966$&
$r_{17}-3$&
$-3-r_{17}$&
$+$\\
$19$&
$110$&
$b_{17}$&
$-1-b_{17}$&
$+$\\
$19$&
$214$&
$1-b_{17}$&
$2+b_{17}$&
$+$\\
$19$&
$706$&
$-b_{17}$&
$1+b_{17}$&
$+$\\
$19$&
$1214$&
$-1+b_{17}$&
$-2-b_{17}$&
$-$\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Representations of $J_3$ that may define \texttt{17A}\end{center}

 

 Note that the irreducible Brauer characters in characteristic $3$ and $5$ that distinguish the two classes \texttt{17A} and \texttt{17B} occur in pairs of Galois conjugate characters. 

 The following computations show that the given straight line program is
compatible with the four characters in characteristic $2$ but is not compatible with the three available characters in characteristic $19$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@table:= [];;|
  !gapprompt@gap>| !gapinput@for pair in [ [  2, [ 78, 80, 244, 966 ] ],|
  !gapprompt@>| !gapinput@                 [ 19, [ 110, 214, 706 ] ] ] do|
  !gapprompt@>| !gapinput@     p:= pair[1];|
  !gapprompt@>| !gapinput@     for d in pair[2] do|
  !gapprompt@>| !gapinput@       info:= OneAtlasGeneratingSetInfo( "J3", Characteristic, p,|
  !gapprompt@>| !gapinput@                  Dimension, d );|
  !gapprompt@>| !gapinput@       gens:= AtlasGenerators( info );|
  !gapprompt@>| !gapinput@       reps:= ResultOfStraightLineProgram( slp.program,|
  !gapprompt@>| !gapinput@                  gens.generators );|
  !gapprompt@>| !gapinput@       val:= BrauerCharacterValue( reps[ 17a ] );|
  !gapprompt@>| !gapinput@       Add( table, [ p, d, Quadratic( val ).ATLAS,|
  !gapprompt@>| !gapinput@                           Quadratic( StarCyc( val ) ).ATLAS ] );|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@PrintArray( table );|
  [ [       2,      78,   1-b17,   2+b17 ],
    [       2,      80,   3-b17,   4+b17 ],
    [       2,     244,  -2+b17,  -3-b17 ],
    [       2,     966,  -3+r17,  -3-r17 ],
    [      19,     110,  -1-b17,     b17 ],
    [      19,     214,   2+b17,   1-b17 ],
    [      19,     706,   1+b17,    -b17 ] ]
\end{Verbatim}
 

 We see that the problem is an inconsistency between the $2$-modular and the $19$-modular character table of $J_3$ in{\nobreakspace}\cite{JLPW95}. In particular, changing the straight line program would not help to resolve
the problem. 

 How shall we proceed in order to fix the problem? We can decide to keep the $19$-modular table of $J_3$, and to swap the two classes of element order $17$ in the $2$-modular table; then also the straight line program has to be changed, and the
classes of element orders $17$ and $51$ in the $2$-modular character table of the triple cover $3.J_3$ of $J_3$ have to be adjusted. Alternatively, we can keep the $2$-modular table of $J_3$ and the straight line program, and adjust the conjugacy classes of element
orders divisible by $17$ in the $19$-modular character tables of $J_3$, $3.J_3$, $J_3.2$, and $3.J_3.2$. 

 We decide to change the $19$-modular character tables. Note that these character tables ---or equivalently, the corresponding Brauer trees--- have been described in{\nobreakspace}\cite{HL89}, where explicit choices are mentioned that lead to the shown Brauer trees.
Questions about the consistency with Brauer tables in other characteristic had
not been an issue in this book. (Only the consistency of the Brauer trees
among the $19$-blocks of $3.J_3$ is mentioned.) In fact, the book mentions that the $19$-modular Brauer trees for $J_3$ had been computed already by W.{\nobreakspace}Feit. The inconsistency of
Brauer character tables in different characteristic has apparently been
overlooked when the data for{\nobreakspace}\cite{JLPW95} have been put together, and had not been detected until now. 

 \emph{Remarks:} 
\begin{itemize}
\item  Such a change of a Brauer table can in general affect the class fusions from
and to this table. Note that Brauer tables may impose conditions on the choice
of the fusion among possible fusions that are equivalent
w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}the table automorphisms of
the ordinary table. In this particular case, in fact no class fusion had to be
changed, see the sections \ref{subsect:L2(16).4_in_J3.2} and Section \ref{subsect:generality}.  
\item  The change of the character tables affects the decomposition matrices. Thus
the PDF files containing the $19$-modular decomposition matrices had to be updated, see \href{http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/dec/tex/J3/index.html} {\texttt{http://www.math.rwth-aachen.de/\texttt{\symbol{126}}Thomas.Breuer/ctbllib/dec/tex/J3/index.html}}. 
\item  J{\"u}rgen M{\"u}ller has checked that the conjugacy classes of all Brauer
tables of $J_3$, $3.J_3$, $J_3.2$, $3.J_3.2$ are consistent after the fix described above. 
\end{itemize}
 }

 }

  
\section{\textcolor{Chapter }{Brauer Tables that can be derived from Known Tables}}\label{sect:derivebrauercharacters}
\logpage{[ 1, 4, 0 ]}
\hyperdef{L}{X7D8C6D1883C9CECA}{}
{
  In a few situations, one can derive the $p$-modular Brauer character table of a group from known character theoretic
information. 

 For quite some time, a method is available in \textsf{GAP} that computes the Brauer characters of $p$-solvable groups (see  (\textbf{Reference: BrauerTable}) and  (\textbf{Reference: IsPSolubleCharacterTable})). 

 The following sections list other situations where Brauer tables can be
computed by \textsf{GAP}.  
\subsection{\textcolor{Chapter }{Brauer Tables via Construction Information}}\label{sect:brauercharactersbyconstruction}
\logpage{[ 1, 4, 1 ]}
\hyperdef{L}{X7DF018B77E722CA7}{}
{
  If a given ordinary character table $t$, say, has been constructed from other ordinary character tables then \textsf{GAP} may be able to create the $p$-modular Brauer table of $t$ from the $p$-modular Brauer tables of the ``ingredients''. This happens currently in the following cases. 

 
\begin{itemize}
\item  $t$ has been constructed with \texttt{CharacterTableDirectProduct} (\textbf{Reference: CharacterTableDirectProduct}), and \textsf{GAP} can compute the $p$-modular Brauer tables of the direct factors. 
\item  $t$ has been constructed with \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}), and \textsf{GAP} can compute the $p$-modular Brauer table of the table that is stored in $t$ as the value of the attribute \texttt{SourceOfIsoclinicTable} (\textbf{Reference: SourceOfIsoclinicTable}). 
\item  $t$ has the attribute \texttt{ConstructionInfoCharacterTable} (\textbf{CTblLib: ConstructionInfoCharacterTable}) set, the first entry of this list $l$, say, is one of the strings \texttt{"ConstructGS3"} (see \ref{sect:Character Tables of Groups of the Structure G.S_3}), \texttt{"ConstructIndexTwoSubdirectProduct"} (see \ref{subsect:theorsubdir}), \texttt{"ConstructMGA"} (see \ref{subsect:theorMGA}), \texttt{"ConstructPermuted"}, \texttt{"ConstructV4G"} (see \ref{subsect:theorV4G}), and \textsf{GAP} can construct the $p$-modular Brauer table(s) of the relevant ordinary character table(s), which
are library tables whose names occur in $l$. 
\end{itemize}
 }

  
\subsection{\textcolor{Chapter }{Liftable Brauer Characters (May 2017)}}\label{sect:liftablebrauercharacters}
\logpage{[ 1, 4, 2 ]}
\hyperdef{L}{X795419A287BD228E}{}
{
  Let $B$ be a $p$-block of cyclic defect for the finite group $G$. It can be read off from the set Irr$(B)$ of ordinary irreducible characters of $B$ whether all irreducible Brauer characters in $B$ are restrictions of ordinary characters to the $p$-regular classes of $G$, as follows. 

 If $B$ has only one irreducible Brauer character then all ordinary characters in $B$ restrict to this Brauer character. So let us assume that $B$ contains at least two irreducible Brauer characters, and consider the set $S$, say, of restrictions of Irr$(B)$ to the $p$-regular classes of $G$. 

 The block $B$ contains exactly $|S| - 1$ irreducible Brauer characters, and the decomposition of the characters in $S$ into these Brauer characters is described by an $|S|$ by $|S| - 1$ matrix $M$, say, whose entries are zero and one, such that exactly two nonzero entries
occur in each column. (See for example \cite[Theorem 2.1.5]{HL89}, which refers to \cite{Dad66}.) 

 If all irreducible Brauer characters of $B$ occur in $S$ then the matrix $M$ contains $|S| - 1$ rows that contain exactly one nonzero entry, hence the remaining row consists
only of $1$s. This means that the element of largest degree in $S$ is equal to the sum of all other elements in $S$. Conversely, if the element of largest degree in $S$ is equal to the sum of all other elements in $S$ then the matrix $M$ has the structure as stated above, hence all irreducible Brauer characters of $B$ occur in $S$. 

 Alternatively, one could state that all irreducible Brauer characters of $B$ are restricted ordinary characters if and only if the Brauer tree of $B$ is a \emph{star} (see \cite[p. 2]{HL89}. If $B$ contains at least two irreducible Brauer characters then this happens if and
only if one of the types $\times$ or $\circ$ occurs for exactly one node in the Brauer graph of $B$, see \cite[Lemma 2.1.13]{HL89}, and the distribution to types is determined by Irr$(B)$. 

 The default method for \texttt{BrauerTableOp} (\textbf{Reference: BrauerTableOp}) that is contained in the \textsf{GAP} library has been extended in version 4.11 such that it checks whether the
Sylow $p$-subgroups of the given group $G$ are cyclic and, if yes, whether all $p$-blocks of $G$ have the property discussed above. (This feature arose from a discussion with
Klaus Lux.) 

 Examples where this method is successful for all blocks are the $p$-modular character tables of the groups PSL$(2, q)$, where $p$ is odd and does not divide $q$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( PSL( 2, 11 ) );;|
  !gapprompt@gap>| !gapinput@modt:= t mod 5;;|
  !gapprompt@gap>| !gapinput@modt <> fail;|
  true
  !gapprompt@gap>| !gapinput@InfoText( modt );|
  "computed using that all Brauer characters lift to char. zero"
\end{Verbatim}
 

 Another such example is the $5$-modular table of the Mathieu group $M_{11}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "M11" );;|
  !gapprompt@gap>| !gapinput@fromgroup:= CharacterTable( MathieuGroup( 11 ) );;|
  !gapprompt@gap>| !gapinput@DecompositionMatrix( lib mod 5 );|
  [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0, 0, 0, 0 ], 
    [ 0, 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0, 0 ], 
    [ 0, 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0, 0 ], 
    [ 0, 0, 0, 0, 0, 0, 1, 0, 0 ], [ 1, 0, 0, 0, 1, 1, 1, 0, 0 ], 
    [ 0, 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 1 ] ]
  !gapprompt@gap>| !gapinput@fromgroup mod 5 <> fail;|
  true
\end{Verbatim}
 

 There are cases where all Brauer characters of a block lift to characteristic
zero but the defect group of the block is not cyclic, thus the method cannot
be used. An example is the $2$-modular table of the Mathieu group $M_{11}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@DecompositionMatrix( lib mod 2 );|
  [ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], 
    [ 0, 1, 0, 0, 0 ], [ 1, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], 
    [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ], [ 1, 0, 0, 0, 1 ], 
    [ 1, 1, 0, 0, 1 ] ]
  !gapprompt@gap>| !gapinput@fromgroup mod 2;|
  fail
\end{Verbatim}
 }

 }

 }

    
\chapter{\textcolor{Chapter }{Using Table Automorphisms for Constructing Character Tables in \textsf{GAP}}}\label{chap:ctblcons}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X7B77FD307F0DE563}{}
{
  Date: June 27th, 2004 

 This chapter has three aims. First it shows how character table automorphisms
can be utilized to construct certain character tables from others using the \textsf{GAP} system{\nobreakspace}\cite{GAP}; the \textsf{GAP} functions used for that are part of the \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib}. Second it documents several constructions of character tables which are
contained in the \textsf{GAP} Character Table Library. Third it serves as a testfile for the involved \textsf{GAP} functions.  
\section{\textcolor{Chapter }{Overview}}\label{sect:overview_ctblcons}
\logpage{[ 2, 1, 0 ]}
\hyperdef{L}{X8389AD927B74BA4A}{}
{
  Several types of constructions of character tables of finite groups from known
tables of smaller groups are described in Section{\nobreakspace}\ref{sect:constr}. Selecting suitable character table automorphisms is an important ingredient
of these constructions. 

 Section{\nobreakspace}\ref{sect:theory} collects the few representation theoretical facts on which these constructions
are based. 

 The remaining sections show examples of the constructions in \textsf{GAP}. These examples use the \textsf{GAP} Character Table Library, therefore we load this package first. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", "1.1.4", false );|
  true
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Theoretical Background}}\label{sect:theory}
\logpage{[ 2, 2, 0 ]}
\hyperdef{L}{X7B6AEBDF7B857E2E}{}
{
   
\subsection{\textcolor{Chapter }{Character Table Automorphisms}}\label{subsect:Character Table Automorphisms}
\logpage{[ 2, 2, 1 ]}
\hyperdef{L}{X78EBF9BA7A34A9C2}{}
{
  Let $G$ be a finite group, ${{\rm Irr}}(G)$ be the matrix of ordinary irreducible characters of $G$, $Cl(G)$ be the set of conjugacy classes of elements in $G$, $g^G$ the $G$-conjugacy class of $g \in G$, and let 
\[ pow_p \colon Cl(G) \rightarrow Cl(G), g^G \mapsto (g^p)^G \]
 be the $p$-th power map, for each prime integer $p$. 

 A \emph{table automorphism} of $G$ is a permutation $\sigma \colon Cl(G) \rightarrow Cl(G)$ with the properties that $\chi \circ \sigma \in {{\rm Irr}}(G)$ holds for all $\chi \in {{\rm Irr}}(G)$ and that $\sigma$ commutes with $pow_p$, for all prime integers $p$ that divide the order of $G$. Note that for prime integers $p$ that are coprime to the order of $G$, $pow_p$ commutes with each $\sigma$ that permutes ${{\rm Irr}}(G)$, since $pow_p$ acts as a field automorphism on the character values. 

 In \textsf{GAP}, a character table covers the irreducible characters {\textendash}a matrix $M$ of character values{\textendash} as well as the power maps of the underlying
group {\textendash}each power map $pow_p$ being represented as a list $pow_p^{\prime}$ of positive integers denoting the positions of the image classes. The group of
table automorphisms of a character table is represented as a permutation group
on the column positions of the table; it can be computed with the \textsf{GAP} function \texttt{AutomorphismsOfTable} (\textbf{Reference: AutomorphismsOfTable}). 

 In the following, we will mainly use that each \emph{group automorphism} $\sigma$ of $G$ induces a table automorphism that maps the class of each element in $G$ to the class of its image under $\sigma$. }

  
\subsection{\textcolor{Chapter }{Permutation Equivalence of Character Tables}}\label{sect:Permutation Equivalence of Character Tables}
\logpage{[ 2, 2, 2 ]}
\hyperdef{L}{X832525DE7AB34F16}{}
{
  Two character tables with matrices $M_1$, $M_2$ of irreducibles and $p$-th power maps $pow_{{1,p}}$, $pow_{{2,p}}$ are \emph{permutation equivalent} if permutations $\psi$ and $\pi$ of row and column positions of the $M_i$ exist such that $[ M_1 ]_{{i,j}} = [ M_2 ]_{{i \psi, j \pi}}$ holds for all indices $i$, $j$, and such that $\pi \cdot pow_{{2,p}}^{\prime} = pow_{{1,p}}^{\prime} \cdot \pi$ holds for all primes $p$ that divide the (common) group order. The first condition is equivalent to the
existence of a permutation $\pi$ such that permuting the columns of $M_1$ with $\pi$ maps the set of rows of $M_1$ to the set of rows of $M_2$. 

 $\pi$ is of course determined only up to table automorphisms of the two character
tables, that is, two transforming permutations $\pi_1$, $\pi_2$ satisfy that $\pi_1 \cdot \pi_2^{-1}$ is a table automorphism of the first table, and $\pi_1^{-1} \cdot \pi_2$ is a table automorphism of the second. 

 Clearly two isomorphic groups have permutation equivalent character tables. 

        The \textsf{GAP} library function \texttt{TransformingPermutationsCharacterTables} (\textbf{Reference: TransformingPermutationsCharacterTables}) returns a record that contains transforming permutations of rows and columns
if the two argument tables are permutation equivalent, and \texttt{fail} otherwise. 

 In the example sections, the following function for computing representatives
from a list of character tables w.r.t.{\nobreakspace}permutation equivalence
will be used. More precisely, the input is either a list of character tables
or a list of records which have a component \texttt{table} whose value is a character table, and the output is a sublist of the input. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@RepresentativesCharacterTables:= function( list )|
  !gapprompt@>| !gapinput@   local reps, entry, r;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   reps:= [];|
  !gapprompt@>| !gapinput@   for entry in list do|
  !gapprompt@>| !gapinput@     if ForAll( reps, r -> ( IsCharacterTable( r ) and|
  !gapprompt@>| !gapinput@            TransformingPermutationsCharacterTables( entry, r ) = fail )|
  !gapprompt@>| !gapinput@          or ( IsRecord( r ) and TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                                   entry.table, r.table ) = fail ) ) then|
  !gapprompt@>| !gapinput@       Add( reps, entry );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@>| !gapinput@   return reps;|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Class Fusions}}\label{subsect:class_fusions}
\logpage{[ 2, 2, 3 ]}
\hyperdef{L}{X7906869F7F190E76}{}
{
  For two groups $H$, $G$ such that $H$ is isomorphic with a subgroup of $G$, any embedding $\iota \colon H \rightarrow G$ induces a class function 
\[ fus_{\iota} \colon Cl(H) \rightarrow Cl(G), h^G \mapsto (\iota(h))^G \]
 the \emph{class fusion} of $H$ in $G$ via $\iota$. Analogously, for a normal subgroup $N$ of $G$, any epimorphism $\pi \colon G \rightarrow G/N$ induces a class function 
\[ fus_{\pi} \colon Cl(G) \rightarrow Cl(G/N), g^G \mapsto (\pi(g))^G \]
 the \emph{class fusion} of $G$ onto $G/N$ via $\pi$. 

 When one works only with character tables and not with groups, these class
fusions are the objects that describe subgroup and factor group relations
between character tables. Technically, class fusions are necessary for
restricting, inducing, and inflating characters from one character table to
another. If one is faced with the problem to compute the class fusion between
the character tables of two groups $H$ and $G$ for which it is known that $H$ can be embedded into $G$ then one can use character-theoretic necessary conditions, concerning that the
restriction of all irreducible characters of $G$ to $H$ (via the class fusion) must decompose into the irreducible characters of $H$, and that the class fusion must commute with the power maps of $H$ and $G$. 

 With this character-theoretic approach, one can clearly determine possible
class fusions only up to character table automorphisms. Note that one can
interpret each character table automorphism of $G$ as a class fusion from the table of $G$ to itself. 

 If $N$ is a normal subgroup in $G$ then the class fusion of $N$ in $G$ determines the orbits of the conjugation action of $G$ on the classes of $N$. Often the knowledge of these orbits suffices to identify the subgroup of
table automorphisms of $N$ that corresponds to this action of $G$; for example, this is always the case if $N$ has index $2$ in $G$. 

 \textsf{GAP} library functions for dealing with class fusions, power maps, and character
table automorphisms are described in the chapter ``Maps Concerning Character Tables'' in the \textsf{GAP} Reference Manual. }

  
\subsection{\textcolor{Chapter }{Constructing Character Tables of Certain Isoclinic Groups}}\label{subsect:isoclinism}
\logpage{[ 2, 2, 4 ]}
\hyperdef{L}{X80C37276851D5E39}{}
{
  As is stated in{\nobreakspace}\cite[p.{\nobreakspace}xxiii]{CCN85}, two groups $G$, $H$ are called \emph{isoclinic} if they can be embedded into a group $K$ such that $K$ is generated by $Z(K)$ and $G$, and also by $Z(K)$ and $H$. In the following, two special cases of isoclinism will be used, where the
character tables of the isoclinic groups are closely related. 

 
\begin{description}
\item[{(1)}]  $G \cong 2 \times U$ for a group $U$ that has a central subgroup $N$ of order $2$, and $H$ is the central product of $U$ and a cyclic group of order four. Here we can set $K = 2 \times H$. 
\item[{(2)}]  $G \cong 2 \times U$ for a group $U$ that has a normal subgroup $N$ of index $2$, and $H$ is the subdirect product of $U$ and a cyclic group of order four, Here we can set $K = 4 \times U$. 
\end{description}
 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(110,55)
\put(0,0){\begin{picture}(40,55)
\put(15, 5){\circle*{1}}
\put( 5,15){\circle*{1}}
\put(10,15){\circle*{1}}
\put(15,15){\circle*{1}} \put(18,15){\makebox(0,0){$N$}}
\put( 5,25){\circle*{1}}
\put(10,25){\circle*{1}} \put( 8,25){\makebox(0,0){$\langle z \rangle$}}
\put(15,25){\circle*{1}}
\put( 5,35){\circle*{1}}
\put(30,30){\circle*{1}} \put(36,30){\makebox(0,0){$U = S$}}

\put(20,40){\circle*{1}} \put(17,40){\makebox(0,0){$G$}}
\put(25,40){\circle*{1}}
\put(30,40){\circle*{1}} \put(33,40){\makebox(0,0){$H$}}
\put(20,50){\circle*{1}} \put(20,53){\makebox(0,0){$K$}}

\put( 5,15){\line(0,1){20}}
\put(15, 5){\line(-1,2){10}}
\put(15, 5){\line(-1,1){10}}
\put(15, 5){\line(0,1){20}}
\put(15,15){\line(-1,2){10}}
\put(15,15){\line(-1,1){10}}
\put(15,25){\line(-1,1){10}}

\put(15,15){\line(1,1){15}}
\put( 5,25){\line(1,1){15}}
\put(10,25){\line(1,1){15}}
\put(15,25){\line(1,1){15}}
\put( 5,35){\line(1,1){15}}

\put(20,40){\line(0,1){10}}
\put(30,30){\line(-1,2){10}}
\put(30,30){\line(-1,1){10}}
\put(30,30){\line(0,1){10}}
\put(30,40){\line(-1,1){10}}
\end{picture}}
\put(50,0){\begin{picture}(60,55)
\put(25, 5){\circle*{1}}
\put(17,13){\circle*{1}}
\put( 9,21){\circle*{1}} \put(6,21){\makebox(0,0){$\langle z \rangle$}}

\put(46,26){\circle*{1}} \put(49,26){\makebox(0,0){$N$}}
\put(54,34){\circle*{1}} \put(57,34){\makebox(0,0){$U$}}
\put(38,34){\circle*{1}} \put(35,34){\makebox(0,0){$S$}}
\put(30,42){\circle*{1}}
\put(38,42){\circle*{1}} \put(35,42){\makebox(0,0){$H$}}
\put(46,42){\circle*{1}} \put(49,42){\makebox(0,0){$G$}}
\put(38,50){\circle*{1}} \put(38,53){\makebox(0,0){$K$}}
\put(46,34){\circle*{1}}

\put(25, 5){\line(-1,1){16}}
\put(46,26){\line(-1,1){16}}
\put(54,34){\line(-1,1){16}}

\put(46,26){\line(0,1){16}}
\put(38,34){\line(0,1){16}}

\put(25, 5){\line(1,1){29}}
\put(17,13){\line(1,1){29}}
\put( 9,21){\line(1,1){29}}
\end{picture}}
\end{picture}
\end{center}


 

 Starting from the group $K$ containing both $G$ and $H$, we first note that each irreducible representation of $G$ or $H$ extends to $K$. More specifically, if $\rho_G$ is an irreducible representation of $G$ then we can define an extension $\rho$ of $K$ by defining it suitably on $Z(K)$ and then form $\rho_H$, the restriction of $\rho$ to $H$. 

 In our two cases, we set $S = G \cap H$, so $K = S \cup G \setminus S \cup H \setminus S \cup z S$ holds for some element $z \in Z(K) \setminus ( G \cup H )$ of order four, and $G = S \cup g S$ for some $g \in G \setminus S$, and $H = S \cup h S$ where $h = z \cdot g \in H \setminus S$. For defining $\rho_H$, it suffices to consider $\rho(h) = \rho(z) \rho(g)$, where $\rho(z) = \epsilon_{\rho}(z) \cdot I$ is a scalar matrix. 

 As for the character table heads of $G$ and $H$, we have $s^G = s^H$ and $z (g \cdot s)^G = (h \cdot s)^H$ for each $s \in S$, so this defines a bijection of the conjugacy classes of $G$ and $H$. For a prime integer $p$, $(h \cdot s)^p = (z \cdot g \cdot s)^p = z^p \cdot (g \cdot s)^p$ holds for all $s \in S$, so the $p$-th power maps of $G$ and $H$ are related as follows: Inside $S$ they coincide for any $p$. If $p \equiv 1 \bmod 4$ they coincide also outside $S$, if $p \equiv -1 \bmod 4$ the images differ by exchanging the classes of $(h \cdot s)^p$ and $z^2 \cdot (h \cdot s)^p$ (if these elements lie in different classes), and for $p = 2$ the images (which lie inside $S$) differ by exchanging the classes of $(h \cdot s)^2$ and $z^2 \cdot (g \cdot s)^2$ (if these elements lie in different classes). 

 Let $\rho$ be an irreducible representation of $K$. Then $\rho_G$ and $\rho_H$ are related as follows: $\rho_G(s) = \rho_H(s)$ and $\rho(z) \cdot \rho_G(g \cdot s) = \rho_H(h \cdot s)$ for all $s \in S$. If $\chi_G$ and $\chi_H$ are the characters afforded by $\rho_G$ and $\rho_H$, respectively, then $\chi_G(s) = \chi_H(s)$ and $\epsilon_{\rho}(z) \cdot \chi_G(g \cdot s) = \chi_H(h \cdot s)$ hold for all $s \in S$. In the case $\chi_G(z^2) = \chi(1)$ we have $\epsilon_{\rho}(z) = \pm 1$, and both cases actually occur if one considers all irreducible
representations of $K$. In the case $\chi_G(z^2) = - \chi(1)$ we have $\epsilon_{\rho}(z) = \pm i$, and again both cases occur. So we obtain the irreducible characters of $H$ from those of $G$ by multiplying the values outside $S$ in all those characters by $i$ that do not have $z^2$ in their kernels. 

 In \textsf{GAP}, the function \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) can be used for computing the character table of $H$ from that of $G$, and vice versa. (Note that in the above two cases, also the groups $U$ and $H$ are isoclinic by definition, but \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) does not transfer the character table of $U$ to that of $H$.) 

 One could construct the character tables mentioned above by forming the
character tables of certain factor groups or normal subgroups of direct
products. However, the construction via \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) has the advantage that the result stores from which sources it arose, and this
information can be used to derive also the Brauer character tables, provided
that the Brauer character tables of the source tables are known. }

  
\subsection{\textcolor{Chapter }{Character Tables of Isoclinic Groups of the Structure $p.G.p$ (October 2016)}}\label{subsect:isoclinicP}
\logpage{[ 2, 2, 5 ]}
\hyperdef{L}{X7AEFFEEC84511FD0}{}
{
  Since the release of \textsf{GAP} 4.11, \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) admits the construction of the character tables of the isoclinic variants of
groups of the structure $p.G.p$, also for odd primes $p$. 

 This feature will be used in the construction of the character table of $9.U_3(8).3_3$, in order to construct the table of the subgroup $3.(3 \times U_3(8))$ and of the factor group $(3 \times U_3(8)).3_3$, see Section{\nobreakspace}\ref{subsect:9.U_3(8).3_3}. These constructions are a straightforward generalization of those described
in detail in Section{\nobreakspace}\ref{subsect:isoclinism}. 

 There are several examples of \textsf{Atlas} groups of the structure $3.G.3$. The character table of one such group is shown in the \textsf{Atlas}, the tables of their isoclinic variants can now be obtained from \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}). 

 For example, the group GL$(3,4)$ has the structure $3.L_3(4).3$. There are three pairwise nonisomorphic isoclinic variants of groups of this
structure. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "3.L3(4).3" );|
  CharacterTable( "3.L3(4).3" )
  !gapprompt@gap>| !gapinput@iso1:= CharacterTableIsoclinic( t );|
  CharacterTable( "Isoclinic(3.L3(4).3,1)" )
  !gapprompt@gap>| !gapinput@iso2:= CharacterTableIsoclinic( t, rec( k:= 2 ) );|
  CharacterTable( "Isoclinic(3.L3(4).3,2)" )
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t, iso1 );|
  fail
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t, iso2 );|
  fail
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( iso1, iso2 );|
  fail
\end{Verbatim}
 

 The character table of GL$(3,4)$ is in fact the one which is shown in the \textsf{Atlas}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@                 CharacterTable( GL( 3, 4 ) ) ) );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Isoclinic Double Covers of Almost Simple Groups}}\label{subsect:isoclinicATLAS}
\logpage{[ 2, 2, 6 ]}
\hyperdef{L}{X78F41D2A78E70BEE}{}
{
  The function \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) can also be used to switch between the character tables of double covers of
groups of the type $G.2$, where $G$ is a perfect group, see{\nobreakspace}\cite[Section 6.7]{CCN85}. Typical examples are the double covers of symmetric groups. 

 Note that these double covers may be isomorphic. This happens for $2.S_6$. More generally, this happens for all semilinear groups $\Sigma$L$(2,p^2)$, for odd primes $p$. The smallest examples are $\Sigma$L$(2,9) = 2.A_6.2_1$ and $\Sigma$L$(2,25) = 2.L_2(25).2_2$. This implies that the character table and its isoclinic variant are
permutation isomorphic. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2.A6.2_1" );|
  CharacterTable( "2.A6.2_1" )
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@       CharacterTableIsoclinic( t ) );|
  rec( columns := (4,6)(5,7)(11,12)(14,16)(15,17), 
    group := Group([ (16,17), (14,15) ]), 
    rows := (3,5)(4,6)(10,11)(12,15,13,14) )
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2.L2(25).2_2" );|
  CharacterTable( "2.L2(25).2_2" )
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@       CharacterTableIsoclinic( t ) );|
  rec( columns := (7,9)(8,10)(20,21)(23,24)(25,27)(26,28), 
    group := <permutation group with 4 generators>, 
    rows := (3,5)(4,6)(14,15)(16,17)(19,22,20,21) )
\end{Verbatim}
 

 For groups of the type $4.G.2$, two different situations can occur. Either the distinguished central cyclic
subgroup of order four in $4.G$ is inverted by the elements in $4.G.2 \setminus 4.G$, or this subgroup is central in $4.G.2$. In the first case, calling \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) with the character table of $4.G.2$ yields a character table with the same set of irreducibles, only the $2$-power map will in general differ from that of the input table. In the second
case, the one argument version of \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) returns a permutation isomorphic table. By supplying additional arguments,
there is a chance to construct tables of different groups. 

 We demonstrate this phenomenon with the various groups of the structure $4.L_3(4).2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= [];;|
  !gapprompt@gap>| !gapinput@for m in [ "4_1", "4_2" ] do|
  !gapprompt@>| !gapinput@     for a in [ "2_1", "2_2", "2_3" ] do|
  !gapprompt@>| !gapinput@       Add( tbls, CharacterTable( Concatenation( m, ".L3(4).", a ) ) );|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@tbls;|
  [ CharacterTable( "4_1.L3(4).2_1" ), CharacterTable( "4_1.L3(4).2_2" )
      , CharacterTable( "4_1.L3(4).2_3" ), 
    CharacterTable( "4_2.L3(4).2_1" ), CharacterTable( "4_2.L3(4).2_2" )
      , CharacterTable( "4_2.L3(4).2_3" ) ]
  !gapprompt@gap>| !gapinput@case1:= Filtered( tbls, t -> Size( ClassPositionsOfCentre( t ) ) = 2 );|
  [ CharacterTable( "4_1.L3(4).2_1" ), CharacterTable( "4_1.L3(4).2_2" )
      , CharacterTable( "4_2.L3(4).2_1" ), 
    CharacterTable( "4_2.L3(4).2_3" ) ]
  !gapprompt@gap>| !gapinput@case2:= Filtered( tbls, t -> Size( ClassPositionsOfCentre( t ) ) = 4 );|
  [ CharacterTable( "4_1.L3(4).2_3" ), 
    CharacterTable( "4_2.L3(4).2_2" ) ]
\end{Verbatim}
 

 The centres of the groups $4_1.L_3(4).2_1$, $4_1.L_3(4).2_2$, $4_2.L_3(4).2_1$, and $4_2.L_3(4).2_3$ have order two, that is, these groups belong to the first case. Each of these
groups is not permutation equivalent to its isoclinic variant but has the same
irreducible characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@isos1:= List( case1, CharacterTableIsoclinic );;|
  !gapprompt@gap>| !gapinput@List( [ 1 .. 4 ], i -> Irr( case1[i] ) = Irr( isos1[i] ) );|
  [ true, true, true, true ]
  !gapprompt@gap>| !gapinput@List( [ 1 .. 4 ],|
  !gapprompt@>| !gapinput@     i -> TransformingPermutationsCharacterTables( case1[i], isos1[i] ) );|
  [ fail, fail, fail, fail ]
\end{Verbatim}
 

 The groups $4_1.L_3(4).2_3$ and $4_2.L_3(4).2_2$ belong to the second case because their centres have order four. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@isos2:= List( case2, CharacterTableIsoclinic );;|
  !gapprompt@gap>| !gapinput@List( [ 1, 2 ],|
  !gapprompt@>| !gapinput@     i -> TransformingPermutationsCharacterTables( case2[i], isos2[i] ) );|
  [ rec( columns := (26,27,28,29)(30,31,32,33)(38,39,40,41)(42,43,44,45)
          , group := <permutation group with 5 generators>, 
        rows := (16,17)(18,19)(20,21)(22,23)(28,29)(32,33)(36,37)(40,
          41) ), 
    rec( columns := (28,29,30,31)(32,33)(34,35,36,37)(38,39,40,41)(42,
          43,44,45)(46,47,48,49), 
        group := <permutation group with 3 generators>, 
        rows := (15,16)(17,18)(20,21)(22,23)(24,25)(26,27)(28,29)(34,
          35)(38,39)(42,43)(46,47) ) ]
  !gapprompt@gap>| !gapinput@isos3:= List( case2, t -> CharacterTableIsoclinic( t,|
  !gapprompt@>| !gapinput@                               ClassPositionsOfCentre( t ) ) );;|
  !gapprompt@gap>| !gapinput@List( [ 1, 2 ],|
  !gapprompt@>| !gapinput@     i -> TransformingPermutationsCharacterTables( case2[i], isos3[i] ) );|
  [ fail, fail ]
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Characters of Normal Subgroups}}\label{subsect:theorClifford}
\logpage{[ 2, 2, 7 ]}
\hyperdef{L}{X834B42A07E98FBC6}{}
{
  Let $G$ be a group and $N$ be a normal subgroup of $G$. We will need the following well-known facts about the relation between the
irreducible characters of $G$ and $N$. 

 For an irreducible (Brauer) character $\chi$ of $N$ and $g \in G$, we define $\chi^g$ by $\chi^g(n) = \chi(n^g)$ for all $n \in N$, and set $I_G(\chi) = \{ g \in G; \chi^g = \chi \}$ (see{\nobreakspace}\cite[p. 86]{Feit82}). 

 If $I_G(\chi) = N$ then the induced character $\chi^G$ is an irreducible (Brauer) character of $G$ (see{\nobreakspace}\cite[Lemma III 2.11]{Feit82} or \cite[Theorem 8.9]{Nav98} or \cite[Corollary 4.3.8]{LP10}). 

 If $G/N$ is cyclic and if $I_G(\chi) = G$ then $\chi = \psi_N$ for an irreducible (Brauer) character $\psi$ of $G$, and each irreducible (Brauer) character $\theta$ with the property $\chi = \theta_N$ is of the form $\theta = \psi \cdot \epsilon$, where $\epsilon$ is an irreducible (Brauer) character of $G/N$ (see{\nobreakspace}\cite[Theorem III 2.14]{Feit82} or \cite[Theorem 8.12]{Nav98} or \cite[Theorem 3.6.13]{LP10}). 

 Clifford's theorem (\cite[Theorem III 2.12]{Feit82} or \cite[Corollary 8.7]{Nav98} or \cite[Theorem 3.6.2]{LP10}) states that the restriction of an irreducible (Brauer) character of $G$ to $N$ has the form $e \sum_{i=1}^t \varphi_i$ for a positive integer $e$ and irreducible (Brauer) characters $\varphi_i$ of $N$, where $t$ is the index of $I_G(\varphi_1)$ in $G$. 

 Now assume that $G$ is a normal subgroup in a larger group $H$, that $G/N$ is an abelian chief factor of $H$ and that $\psi$ is an ordinary irreducible character of $G$ such that $I_H(\psi) = H$. Then either $t = 1$ and $e^2$ is one of $1$, $|G/N|$, or $t = |G/N|$ and $e = 1$ (see{\nobreakspace}\cite[Theorem 6.18]{Isa76}). }

 }

  
\section{\textcolor{Chapter }{The Constructions}}\label{sect:constr}
\logpage{[ 2, 3, 0 ]}
\hyperdef{L}{X787F430E7FDB8765}{}
{
   
\subsection{\textcolor{Chapter }{Character Tables of Groups of the Structure $M.G.A$}}\label{subsect:theorMGA}
\logpage{[ 2, 3, 1 ]}
\hyperdef{L}{X82E75B6880EC9E6C}{}
{
  (This kind of table construction is described in \cite{Bre11}.) 

 Let $N$ denote a downward extension of the finite group $G$ by a finite group $M$, let $H$ denote an automorphic (upward) extension of $N$ by a finite cyclic group $A$ such that $M$ is normal in $H$, and set $F = H / M$. We consider the situation that each irreducible character of $N$ that does not contain $M$ in its kernel induces irreducibly to $H$. Equivalently, the action of $A = \langle a \rangle$ on the characters of $N$, via $\chi \mapsto \chi^a$, has only orbits of length exactly $|A|$ on the set $\{ \chi \in {{\rm Irr}}(N); M \nsubseteq \ker(\chi) \}$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(55,40)
\put(0,0){\begin{picture}(20,40)
\put(10, 5){\circle*{1}}
\put(10,10){\circle*{1}} \put(7,10){\makebox(0,0){$M$}}
                         \put(13,17.5){\makebox(0,0){$G$}}
\put(10,25){\circle*{1}} \put(7,25){\makebox(0,0){$N$}}
                         \put(13,27.5){\makebox(0,0){$A$}}
\put(10,30){\circle*{1}} \put(10,33){\makebox(0,0){$H$}}
\put(10, 5){\line(0,1){25}}
\end{picture}}
\put(30,7){\begin{picture}(25,25)
\put( 5, 5){\makebox(0,0){$N$}}
\put( 5,20){\makebox(0,0){$G$}}
\put(20, 5){\makebox(0,0){$H$}}
\put(20,20){\makebox(0,0){$F$}}
\put( 7, 5){\vector(1,0){11}}
\put( 5, 7){\vector(0,1){11}}
\put( 7,20){\vector(1,0){11}}
\put(20, 7){\vector(0,1){11}}
\end{picture}}
\end{picture}
\end{center}


 

 This occurs for example if $M$ is central in $N$ and $A$ acts fixed-point freely on $M$, we have $|M| \equiv 1 \bmod |A|$ in this case. If $M$ has prime order then it is sufficient that $A$ does not centralize $M$. 

 The ordinary (or $p$-modular) irreducible characters of $H$ are then given by the ordinary (or $p$-modular) irreducible characters of $F$ and $N$, the class fusions from the table of $N$ onto the table of $G$ and from the table of $G$ into that of $F$, and the permutation $\pi$ that is induced by the action of $A$ on the conjugacy classes of $N$. 

 In general, the action of $A$ on the classes of $M$ is not the right thing to look at, one really must consider the action on the
relevant characters of $M.G$. For example, take $H$ the quaternion group or the dihedral group of order eight, $N$ a cyclic subgroup of index two, and $M$ the centre of $H$; here $A$ acts trivially on $M$, but the relevant fact is that the action of $A$ swaps those two irreducible characters of $N$ that take the value $-1$ on the involution in $M$ {\textendash}these are the faithful irreducible characters of $N$. 

 If the orders of $M$ and $A$ are coprime then also the power maps of $H$ can be computed from the above data. For each prime $p$ that divides the orders of both $M$ and $A$, the $p$-th power map is in general not uniquely determined by these input data. In
this case, we can compute the (finitely many) candidates for the character
table of $H$ that are described by these data. One possible reason for ambiguities is the
existence of several isoclinic but nonisomorphic groups that can arise from
the input tables (cf. Section{\nobreakspace}\ref{subsect:isoclinism}, see Section{\nobreakspace}\ref{subsect:HN2} for an example). 

 With the \textsf{GAP} function \texttt{PossibleActionsForTypeMGA} (\textbf{CTblLib: PossibleActionsForTypeMGA}), one can compute the possible orbit structures induced by $G.A$ on the classes of $M.G$, and \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) computes the possible ordinary character tables for a given orbit structure.
For constructing the $p$-modular Brauer table of a group $H$ of the structure $M.G.A$, the \textsf{GAP} function \texttt{BrauerTableOfTypeMGA} (\textbf{CTblLib: BrauerTableOfTypeMGA}) takes the ordinary character table of $H$ and the $p$-modular tables of the subgroup $M.G$ and the factor group $G.A$ as its input. The $p$-modular table of $G$ is not explicitly needed in the construction, it is implicitly given by the
class fusions from $M.G$ into $M.G.A$ and from $M.G.A$ onto $G.A$; these class fusions must of course be available. 

 The \textsf{GAP} Character Table Library contains many tables of groups of the structure $M.G.A$ as described above, which are encoded by references to the tables of the
groups $M.G$ and $G.A$, plus the fusion and action information. This reduces the space needed for
storing these character tables. 

 For examples, see Section{\nobreakspace}\ref{sect:explMGA}. }

  
\subsection{\textcolor{Chapter }{Character Tables of Groups of the Structure $G.S_3$}}\label{sect:Character Tables of Groups of the Structure G.S_3}
\logpage{[ 2, 3, 2 ]}
\hyperdef{L}{X7CCABDDE864E6300}{}
{
  Let $G$ be a finite group, and $H$ be an upward extension of $G$ such that the factor group $H / G$ is a Frobenius group $F = K C$ with abelian kernel $K$ and cyclic complement $C$ of prime order $c$. (Typical cases for $F$ are the symmetric group $S_3$ on three points and the alternating group $A_4$ on four points.) Let $N$ and $U$ denote the preimages of $K$ and $C$ under the natural epimorphism from $H$ onto $F$. 

    


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(70,40)
\put(0,0){\begin{picture}(25,40)
\put(15, 5){\circle*{1}}
\put(15,15){\circle*{1}} \put(12,15){\makebox(0,0){$G$}}
\put( 5,25){\circle*{1}} \put(2,25){\makebox(0,0){$N$}}
\put(20,20){\circle{1}} \put(23,20){\makebox(0,0){$U$}}
\put(10,30){\circle*{1}} \put(10,33){\makebox(0,0){$H$}}
\put(15, 5){\line(0,1){10}}
\put(15,15){\line(-1,1){10}}
\put(20,20){\line(-1,1){10}}
\put(15,15){\line(1,1){5}}
\put( 5,25){\line(1,1){5}}
\end{picture}}
\put(35,2){\begin{picture}(35,35)
\put( 5,15){\makebox(0,0){$G$}}
\put(15, 5){\makebox(0,0){$U$}}
\put(20,30){\makebox(0,0){$N$}}
\put(30,20){\makebox(0,0){$H$}}
\put( 7,17){\vector(1,1){11}}
\put( 7,13){\vector(1,-1){6}}
\put(17, 7){\vector(1,1){11}}
\put(22,28){\vector(1,-1){6}}
\end{picture}}
\end{picture}
\end{center}


 

 For certain isomorphism types of $F$, the ordinary (or $p$-modular) character table of $H$ can be computed from the ordinary (or $p$-modular) character tables of $G$, $U$, and $N$, the class fusions from the table of $G$ into those of $U$ and $N$, and the permutation $\pi$ induced by $H$ on the conjugacy classes of $N$. This holds for example for $F = S_3$ and in the ordinary case also for $F = A_4$. 

 Each class of $H$ is either a union of $\pi$-orbits or an $H$-class of $U \setminus G$; the latter classes are in bijection with the $U$-classes of $U \setminus G$, they are just $|K|$ times larger since the $|K|$ conjugates of $U$ in $H$ are fused. The power maps of $H$ are uniquely determined from the power maps of $U$ and $N$, because each element in $F$ lies in $K$ or in an $F$-conjugate of $C$. 

 Concerning the computation of the ordinary irreducible characters of $H$, we could induce the irreducible characters of $U$ and $N$ to $H$, and then take the union of the irreducible characters among those and the
irreducible differences of those. (For the case $F = S_3$, this approach has been described in the Appendix of{\nobreakspace}\cite{HL94}.) 

 The \textsf{GAP} function \texttt{CharacterTableOfTypeGS3} (\textbf{CTblLib: CharacterTableOfTypeGS3}) proceeds in a different way, which is suitable also for the construction of $p$-modular character tables of $H$. 

 By the facts listed in Section{\nobreakspace}\ref{subsect:theorClifford}, for an irreducible (Brauer) character $\chi$ of $N$, we have $I_H(\chi)$ equal to either $N$ or $H$. In the former case, $\chi$ induces irreducibly to $H$. In the latter case, there are extensions $\psi^{(i)}$, $1 \leq i \leq |C|$ (or $|C|_{p^\prime}$), to $H$, and we have the following possibilities, depending on the restriction $\chi_G$. 

 If $\chi_G = e \varphi$, for an irreducible character $\varphi$ of $G$, then $I_U(\varphi) = U$ holds, hence the $\psi^{(i)}_U$ are $|C|$ (or $|C|_{p^\prime}$) extensions of $\chi_G$ to $U$. Moreover, we have either $e = 1$ or $e^2 = |K|$. In the case $e = 1$, this determines the values of the $\psi^{(i)}$ on the classes of $U$ outside $G$. In the case $e {{\not=}} 1$, we have the problem to combine $e$ extensions of $\varphi$ to a character of $U$ that extends to $H$. 

 (One additional piece of information in the case of ordinary character tables
is that the norm of this linear combination equals $1 + (|K|-1)/|C|$,  which determines the $\psi^{(i)}_U$ if $F = A_4 \cong 2^2:3$ or $F = 2^3:7$ holds; in the former case, the sum of each two out of the three different
extensions of $\varphi$ extends to $U$; in the latter case, the sum of all different extensions plus one of the
extensions extends. Note that for $F = S_3$, the case $e {{\not=}} 1$ does not occur.) 

 The remaining case is that $\chi_G$ is not a multiple of an irreducible character of $G$. Then $\chi_G = \varphi_1 + \varphi_2 + \ldots + \varphi_{|K|}$, for pairwise different irreducible characters $\varphi_i$, $1 \leq i \leq |K|$, of $G$ with the property $\varphi_i^N = \chi$. The action of $U$ on $G$ fixes at least one of the $\varphi_i$, since $|K| \equiv 1 \bmod |C|$. Without loss of generality, let $I_U(\varphi_1) = U$, and let $\varphi_1^{(i)}$, $1 \leq i \leq |C|$, be the extensions of $\varphi_1$ to $U$. (In fact exactly $\varphi_1$ is fixed by $U$ since otherwise $k \in K$ would exist with $\varphi_1^k {{\not=}} \varphi_1$ and such that also $\varphi_1^k$ would be invariant in $U$; but then $\varphi_1$ would be invariant under both $C$ and $C^k$, which generate $F$. So each of the $|K|$ constituents is invariant in exactly one of the $|K|$ subgroups of type $U$ above $G$.) 

 Then $((\varphi_1^{(i)})^H)_N = \varphi_1^N = \chi$, hence the values of $\psi^{(i)}$ on the classes of $U \setminus G$ are given by those of $(\varphi_1^{(i)})^H$. (These are exactly the values of $\varphi_1^{(i)}$. So in both cases, we take the values of $\chi$ on $N$, and on the classes of $U \setminus G$ the values of the extensions of the unique extendible constituent of $\chi_G$.) 

 For examples, see Section{\nobreakspace}\ref{sect:GS3}. }

  
\subsection{\textcolor{Chapter }{Character Tables of Groups of the Structure $G.2^2$}}\label{subsect:theorGV4}
\logpage{[ 2, 3, 3 ]}
\hyperdef{L}{X7D3EF3BC83BE05CF}{}
{
  Let $G$ be a finite group, and $H$ be an upward extension of $G$ such that the factor group $H / G$ is a Klein four group. We assume that the ordinary character tables of $G$ and of the three index two subgroups $U_1$, $U_2$, and $U_3$ (of the structures $G.2_1$, $G.2_2$, and $G.2_3$, respectively) of $H$ above $G$ are known, as well as the class fusions of $G$ into these groups. The idea behind the method that is described in this
section is that in this situation, there are only few possibilities for the
ordinary character table of $H$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(70,30)
\put(0,0){\begin{picture}(40,30)(0,0)
\put(20,0){\circle*{1}}
\put(20,10){\circle*{1}} \put(17,10){\makebox(0,0){$G$}}
\put(13,17){\circle*{1}} \put(10,17){\makebox(0,0){$U_1$}}
\put(20,17){\circle*{1}} \put(17,17){\makebox(0,0){$U_2$}}
\put(27,17){\circle*{1}} \put(30,17){\makebox(0,0){$U_3$}}
\put(20,24){\circle*{1}} \put(20,27){\makebox(0,0){$H$}}
\put(20,0){\line(0,1){24}}
\put(20,10){\line(-1,1){7}}
\put(20,10){\line(1,1){7}}
\put(27,17){\line(-1,1){7}}
\put(13,17){\line(1,1){7}}
\end{picture}}
\put(40,2){\begin{picture}(35,30)
\put( 5,15){\makebox(0,0){$G$}}
\put(16,25){\makebox(0,0){$U_1$}}
\put(16,15){\makebox(0,0){$U_2$}}
\put(16, 5){\makebox(0,0){$U_3$}}
\put(28,15){\makebox(0,0){$H$}}
\put( 7,17){\vector(1,1){6}}
\put( 7,15){\vector(1,0){6}}
\put( 7,13){\vector(1,-1){6}}
\put(19,23){\vector(1,-1){6}}
\put(19,15){\vector(1,0){6}}
\put(19, 7){\vector(1,1){6}}
\end{picture}}
\end{picture}
\end{center}


 

 Namely, the action of $H$ on the classes of $G.2_i$ is given by a table automorphism $\pi_i$ of $G.2_i$, and $H$ realizes compatible choices of such automorphisms $\pi_1$, $\pi_2$, $\pi_3$ in the sense that the orbits of all three $\pi_i$ on the classes of $G$ inside the groups $G.2_i$ coincide. Furthermore, if $G.2_i$ has $n_i$ conjugacy classes then an action $\pi_i$ that is a product of $f_i$ disjoint transpositions leads to a character table candidate for $G.2^2$ that has $2 n_i - 3 f_i$ classes, so also the $f_i$ must be compatible. 

 Taking the ``inner'' classes, i.e., the orbit sums of the classes inside $G$ under the $\pi_i$, plus the union of the $\pi_i$-orbits of the classes of $G.2_i \setminus G$ gives a possibility for the classes of $H$. Furthermore, the power maps of the groups $G.2_i$ determine the power maps of the candidate table constructed this way. 

 Concerning the computation of the irreducible characters of $H$, we consider also the case of $p$-modular characters tables, where we assume that the ordinary character table
of $H$ is already known and the only task is to compute the irreducible $p$-modular Brauer characters. 

 Let $\chi$ be an irreducible ($p$-modular Brauer) character of $G$. By the facts that are listed in Section{\nobreakspace}\ref{subsect:theorClifford}, there are three possibilities. 
\begin{description}
\item[{1.}]  $I_H(\chi) = G$; then $\chi^H$ is irreducible. 
\item[{2.}]  $I_H(\chi) = G.2_i$ for $i$ one of $1$, $2$, $3$; then $I_{G.2_i}(\chi) = G.2_i$ for this $i$, so $\chi$ extends to $G.2_i$; none of these extensions extends to $H$ (because otherwise $\chi$ would be invariant in $H$), so they induce irreducible characters of $H$. 
\item[{3.}]  $I_H(\chi) = H$; then $\chi$ extends to each of the three groups $G.2_i$, and either all these extensions induce the same character of $H$ (which vanishes on $H \setminus G$) or they are invariant in $H$ and thus extend to $H$. 
\end{description}
 

 In the latter part of case{\nobreakspace}3. (except if $p = 2$), the problem is to combine the values of six irreducible characters of the
groups $G.2_i$ to four characters of $H$. This yields essentially two choices, and we try to exclude one possibility
by forming scalar products with the $2$-nd symmetrizations of the known irreducibles. If several possibilities remain
then we get several possible tables. 

 So we end up with a list of possible character tables of $H$.  The first step is to specify a list of possible triples $(\pi_1, \pi_2, \pi_3)$, using the table automorphisms of the groups $G.2_i$; this can be done using the \textsf{GAP} function \texttt{PossibleActionsForTypeGV4} (\textbf{CTblLib: PossibleActionsForTypeGV4}). Then the \textsf{GAP} function \texttt{PossibleCharacterTablesOfTypeGV4} (\textbf{CTblLib: PossibleCharacterTablesOfTypeGV4}) can be used for computing the character table candidates for each given triple
of permutations; it may of course happen that some triples of automorphisms
are excluded in this second step. 

 For examples, see Section{\nobreakspace}\ref{sect:xplGV4}. }

  
\subsection{\textcolor{Chapter }{Character Tables of Groups of the Structure $2^2.G$ (August 2005)}}\label{subsect:theorV4G}
\logpage{[ 2, 3, 4 ]}
\hyperdef{L}{X81464C4B8178C85A}{}
{
  Let $G$ be a finite group, and $H$ be a central extension of $G$ by a Klein four group $Z = \langle z_1, z_2 \rangle$; set $z_3 = z_1 z_2$ and $Z_i = \langle z_i \rangle$, for $1 \leq i \leq 3$. We assume that the ordinary character tables of the three factor groups $2_i.G = H / Z_i$ of $H$ are known, as well as the class fusions from these groups to $G$. The idea behind the method described in this section is that in this
situation, there are only few possibilities for the ordinary character table
of $H$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(70,30)
\put(0,0){\begin{picture}(40,30)(0,0)
\put(20,0){\circle*{1}}
\put(20,14){\circle*{1}} \put(17,19){\makebox(0,0){$G$}}
\put(13, 7){\circle*{1}} \put(10, 7){\makebox(0,0){$Z_1$}}
\put(20, 7){\circle*{1}} \put(17, 7){\makebox(0,0){$Z_2$}}
\put(27, 7){\circle*{1}} \put(30, 7){\makebox(0,0){$Z_3$}}
\put(20,24){\circle*{1}} \put(20,27){\makebox(0,0){$H$}}
\put(20,0){\line(0,1){24}}
\put(20, 0){\line(-1,1){7}}
\put(20, 0){\line(1,1){7}}
\put(27, 7){\line(-1,1){7}}
\put(13, 7){\line(1,1){7}} 
\end{picture}}
\put(40,2){\begin{picture}(35,30)
\put( 5,15){\makebox(0,0){$H$}}
\put(18,25){\makebox(0,0){$H/Z_1$}}
\put(18,15){\makebox(0,0){$H/Z_2$}}
\put(18, 5){\makebox(0,0){$H/Z_3$}}
\put(32,15){\makebox(0,0){$G$}}
\put( 7,17){\vector(1,1){6}}
\put( 7,15){\vector(1,0){6}}
\put( 7,13){\vector(1,-1){6}}
\put(23,23){\vector(1,-1){6}}
\put(23,15){\vector(1,0){6}}
\put(23, 7){\vector(1,1){6}}
\end{picture}}
\end{picture}
\end{center}


 

 Namely, the irreducible ($p$-modular) characters of $H$ are exactly the inflations of the irreducible ($p$-modular) characters of the three factor groups $H / Z_i$. (Note that for any noncyclic central subgroup $C$ of $H$ and any $\chi \in {{\rm Irr}}(H)$, we have $|\ker(\chi) \cap C| > 1$. To see this, let $N = \ker(\chi)$. Then clearly $|N| > 1$, and $\chi$ can be regarded as a faithful irreducible character of $H/N$. If $N \cap C$ would be trivial then $N C / N \cong C$ would be a noncyclic central subgroup of $H/N$. This cannot happen by{\nobreakspace}\cite[Thm. 2.32 (a)]{Isa76}, so the statement can be regarded as an obvious refinement of this theorem.)
So all we have to construct is the character table head of $H$ {\textendash}classes and power maps{\textendash} and the factor fusions from $H$ to these groups. 

 For fixed $h \in H$, we consider the question in which $H$-classes the elements $h$, $h z_1$, $h z_2$, and $h z_3$ lie. There are three possibilities. 

 
\begin{enumerate}
\item  The four elements are all conjugate in $H$. Then in each of the three groups $H/Z_i$, the two preimages of $h Z \in H/Z$ are conjugate. 
\item  We are not in case 1. but two of the four elements are conjugate in $H$, i.{\nobreakspace}e., $g^{-1} h g = h z_i$ for some $g \in H$ and some $i$; then $g^{-1} h z_j g = h z_i z_j$ for each $j$, so the four elements lie in exactly two $H$-classes. This implies that for $i {{\not=}} j$, the elements $h$ and $h z_j$ are not $H$-conjugate, so $h Z_i$ is not conjugate to $h z_j Z_i$ in $H/Z_i$ and $h Z_j$ is conjugate to $h z_i Z_j$ in $H/Z_j$. 
\item  The four elements are pairwise nonconjugate in $H$. Then in each of the three groups $H/Z_i$, the two preimages of $h Z \in H/Z$ are nonconjugate. 
\end{enumerate}
 

 We observe that the question which case actually applies for $h \in H$ can be decided from the three factor fusions from $H/Z_i$ to $G$. So we attempt to construct the table head of $H$ and the three factor fusions from $H$ to the groups $H/Z_i$, as follows. Each class $g^G$ of $G$ yields either one or two or four preimage classes in $H$. 

 In case 1., we get one preimage class in $H$, and have no choice for the factor fusions. 

 In case 2., we get two preimage classes, there is exactly one group $H/Z_i$ in which $g^G$ has two preimage classes {\textendash}which are in bijection with the two
preimage classes of $H${\textendash} and for the other two groups $H/Z_j$, the factor fusions from $H$ map the two classes of $H$ to the unique preimage class of $g^G$. (In the following picture, this is shown for $i = 1$.) 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(110,30)
\put( 3, 5){\makebox(0,0){$H$}}
\put( 3,15){\makebox(0,0){$H/Z_1$}}
\put( 3,25){\makebox(0,0){$H/Z$}}
\put(10, 5){\circle*{1}} \put(12, 5){\makebox(0,0){$h$}}
\put(10,15){\circle*{1}} \put(14,15){\makebox(0,0){$h Z_1$}}
\put(20, 5){\circle*{1}} \put(24, 5){\makebox(0,0){$h z_2$}}
\put(20,15){\circle*{1}} \put(25,15){\makebox(0,0){$h z_2 Z_1$}}
\put(15,25){\circle*{1}} \put(18,25){\makebox(0,0){$h Z$}}
\put(10, 5){\line(0,1){10}}
\put(20, 5){\line(0,1){10}}
\put(10,15){\line(1,2){5}}
\put(20,15){\line(-1,2){5}}
\put(43, 5){\makebox(0,0){$H$}}
\put(43,15){\makebox(0,0){$H/Z_2$}}
\put(43,25){\makebox(0,0){$H/Z$}}
\put(50, 5){\circle*{1}} \put(52, 5){\makebox(0,0){$h$}}
\put(55,15){\circle*{1}} \put(59,15){\makebox(0,0){$h Z_2$}}
\put(60, 5){\circle*{1}} \put(64, 5){\makebox(0,0){$h z_2$}}
\put(55,25){\circle*{1}} \put(58,25){\makebox(0,0){$h Z$}}
\put(50,5){\line(1,2){5}}
\put(60,5){\line(-1,2){5}}
\put(55,15){\line(0,1){10}}
\put(83, 5){\makebox(0,0){$H$}}
\put(83,15){\makebox(0,0){$H/Z_3$}}
\put(83,25){\makebox(0,0){$H/Z$}}
\put(90, 5){\circle*{1}} \put(92, 5){\makebox(0,0){$h$}}
\put(95,15){\circle*{1}} \put(99,15){\makebox(0,0){$h Z_3$}}
\put(100, 5){\circle*{1}} \put(104, 5){\makebox(0,0){$h z_2$}}
\put(95,25){\circle*{1}} \put(98,25){\makebox(0,0){$h Z$}}
\put(90,5){\line(1,2){5}}
\put(100,5){\line(-1,2){5}}
\put(95,15){\line(0,1){10}}
\end{picture}
\end{center}


 

 In case 3., the three factor fusions are in general not uniquely determined:
We get four classes, which are defined as two pairs of preimages of the two
preimages of $g^G$ in $H/Z_1$ and in $H/Z_2$ {\textendash}so we choose the relevant images in the two factor fusions to $H/Z_1$ and $H/Z_2$, respectively. Note that the class of $h$ in $H$ is the unique class that maps to the class of $h Z_1$ in $H/Z_1$ and to the class of $h Z_2$ in $H/Z_2$, and so on, and we define four classes of $H$ via the four possible combinations of image classes in $H/Z_1$ and $H/Z_2$ (see the picture below). 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(110,30)
\put( 3, 5){\makebox(0,0){$H$}}
\put( 3,15){\makebox(0,0){$H/Z_1$}}
\put( 3,25){\makebox(0,0){$H/Z$}}
\put(10, 5){\circle*{1}} \put(12, 5){\makebox(0,0){$h$}}
\put(20, 5){\circle*{1}} \put(23, 5){\makebox(0,0){$h z_1$}}
\put(30, 5){\circle*{1}} \put(33, 5){\makebox(0,0){$h z_2$}}
\put(40, 5){\circle*{1}} \put(43, 5){\makebox(0,0){$h z_3$}}
\put(15,15){\circle*{1}} \put(19,15){\makebox(0,0){$h Z_1$}}
\put(35,15){\circle*{1}} \put(40,15){\makebox(0,0){$h z_2 Z_1$}}
\put(25,25){\circle*{1}} \put(29,25){\makebox(0,0){$h Z$}}
\put(10, 5){\line(1,2){5}}
\put(20, 5){\line(-1,2){5}}
\put(30, 5){\line(1,2){5}}
\put(40, 5){\line(-1,2){5}}
\put(15,15){\line(1,1){10}}
\put(35,15){\line(-1,1){10}}
\put(63, 5){\makebox(0,0){$H$}}
\put(63,15){\makebox(0,0){$H/Z_2$}}
\put(63,25){\makebox(0,0){$H/Z$}} 
\put(70, 5){\circle*{1}} \put(72, 5){\makebox(0,0){$h$}}
\put(80, 5){\circle*{1}} \put(84, 5){\makebox(0,0){$h z_1$}}
\put(90, 5){\circle*{1}} \put(93, 5){\makebox(0,0){$h z_2$}}
\put(100, 5){\circle*{1}} \put(103, 5){\makebox(0,0){$h z_3$}}
\put(75,15){\circle*{1}} \put(80,15){\makebox(0,0){$h Z_2$}}
\put(95,15){\circle*{1}} \put(100,15){\makebox(0,0){$h z_1 Z_2$}}
\put(85,25){\circle*{1}} \put(89,25){\makebox(0,0){$h Z$}}
\put(70, 5){\line(1,2){5}}
\put(80, 5){\line(3,2){15}}
\put(90, 5){\line(-3,2){15}}
\put(100, 5){\line(-1,2){5}}
\put(75,15){\line(1,1){10}}
\put(95,15){\line(-1,1){10}}
\end{picture}
\end{center}


 

 Due to the fact that in general we do not know which of the two preimage
classes of $g^G$ in $H/Z_3$ is the class of $h Z_3$, there are in general the following \emph{two} possibilities for the fusion from $H$ to $H/Z_3$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(110,30)
\put( 3, 5){\makebox(0,0){$H$}}
\put( 3,15){\makebox(0,0){$H/Z_3$}}
\put( 3,25){\makebox(0,0){$H/Z$}}
\put(10, 5){\circle*{1}} \put(12, 5){\makebox(0,0){$h$}}
\put(20, 5){\circle*{1}} \put(24, 5){\makebox(0,0){$h z_1$}}
\put(30, 5){\circle*{1}} \put(33, 5){\makebox(0,0){$h z_2$}}
\put(40, 5){\circle*{1}} \put(43, 5){\makebox(0,0){$h z_3$}}
\put(15,15){\circle*{1}} \put(20,15){\makebox(0,0){$h Z_3$}}
\put(35,15){\circle*{1}} \put(40,15){\makebox(0,0){$h z_1 Z_3$}}
\put(25,25){\circle*{1}} \put(29,25){\makebox(0,0){$h Z$}}
\put(10, 5){\line(1,2){5}}
\put(20, 5){\line(3,2){15}}
\put(30, 5){\line(1,2){5}}
\put(40, 5){\line(-5,2){25}}
\put(15,15){\line(1,1){10}}
\put(35,15){\line(-1,1){10}}
\put(63, 5){\makebox(0,0){$H$}}
\put(63,15){\makebox(0,0){$H/Z_3$}}
\put(63,25){\makebox(0,0){$H/Z$}}
\put(70, 5){\circle*{1}} \put(74, 5){\makebox(0,0){$h$}}
\put(80, 5){\circle*{1}} \put(83, 5){\makebox(0,0){$h z_1$}}
\put(90, 5){\circle*{1}} \put(93, 5){\makebox(0,0){$h z_2$}}
\put(100, 5){\circle*{1}} \put(103, 5){\makebox(0,0){$h z_3$}}
\put(75,15){\circle*{1}} \put(81,15){\makebox(0,0){$h z_1 Z_3$}}
\put(95,15){\circle*{1}} \put(99,15){\makebox(0,0){$h Z_3$}}
\put(85,25){\circle*{1}} \put(89,25){\makebox(0,0){$h Z$}}
\put(70, 5){\line(5,2){25}}
\put(80, 5){\line(-1,2){5}}
\put(90, 5){\line(-3,2){15}}
\put(100, 5){\line(-1,2){5}}
\put(75,15){\line(1,1){10}}
\put(95,15){\line(-1,1){10}}
\end{picture}
\end{center}


 

 This means that we can inflate the irreducible characters of $H/Z_1$ and of $H/Z_2$ to $H$ but that for the inflations of those irreducible characters of $H/Z_3$ to $H$ that are not characters of $G$, the values on classes where case 3.{\nobreakspace}applies are determined
only up to sign. 

 The \textsf{GAP} function \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}) computes the candidates for the table of $H$ from the tables of the groups $H/Z_i$ by setting up the character table head of $H$ using the class fusions from $H/Z_1$ and $H/Z_2$ to $G$, and then forming the possible class fusions from $H$ to $H/Z_3$. 

 If case 3.{\nobreakspace}applies for a class $g^G$ with $g$ of \emph{odd} element order then exactly one preimage class in $H$ has odd element order, and we can identify this class in the groups $H/Z_i$, which resolves the ambiguity in this situation. More generally, if $g = k^2$ holds for some $k \in G$ then all preimages of $k^G$ in $H$ square to the same class of $H$, so again this class can be identified. In fact \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}) checks whether the $p$-th power maps of the candidate table for $H$ and the $p$-th power map of $H/Z_3$ together with the fusion candidate form a commutative diagram. 

 An additional criterion used by \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}) is given by the property that the product of two characters inflated from $H/Z_1$ and $H/Z_2$, respectively, that are not characters of $G$ is a character of $H$ that contains $Z_3$ in its kernel, so it is checked whether the scalar products of these
characters with all characters that are inflated from $H/Z_3$ via the candidate fusion are nonnegative integers. 

 Once the fusions from $H$ to the groups $H/Z_i$ are known, the computation of the irreducible $p$-modular characters of $H$ from those of the groups $H/Z_i$ is straightforward. 

 The only open question is why this construction is described in this note.
That is, how is it related to table automorphisms? 

 The answer is that in several interesting cases, the three subgroups $Z_1$, $Z_2$, $Z_3$ are conjugate under an order three automorphism $\sigma$, say, of $H$. In this situation, the three factor groups $2_i.G = H/Z_i$ are isomorphic, and we can describe the input tables and fusions by the
character table of $2_1.G$, the factor fusion from this group to $G$, and the automorphism $\sigma'$ of $G$ that is induced by $\sigma$. Assume that $\sigma(Z_1) = Z_2$ holds, and choose $h \in H$. Then $\sigma(h Z_1) = \sigma(h) Z_2$ is mapped to $\sigma(h) Z = \sigma'(h Z)$ under the factor fusion from $2_2.G$ to $G$. Let us start with the character table of $2_1.G$, and fix the class fusion to the character table of $G$. We may choose the identity map as isomorphism from the table of $2_1.G$ to the tables of $2_2.G$ and $2_3.G$, which implies that the class of $h Z_1$ is identified with the class of $h Z_2$ and in turn the class fusion from the table of $2_2.G$ to that of $G$ can be chosen as the class fusion from the table of $2_1.G$ followed by the permutation of classes of $G$ induced by $\sigma'$; analogously, the fusion from the table of $2_3.G$ is obtained by applying this permutation twice to the class fusion from the
table of $2_1.G$. 

 For examples, see Section{\nobreakspace}\ref{sect:xplV4G}. }

  
\subsection{\textcolor{Chapter }{$p$-Modular Tables of Extensions by $p$-singular Automorphisms}}\label{subsect:theorpsing}
\logpage{[ 2, 3, 5 ]}
\hyperdef{L}{X86CF6A607B0827EE}{}
{
  Let $G$ be a finite group, and $H$ be an upward extension of $G$ by an automorphism of prime order $p$, say. $H$ induces a table automorphism of the $p$-modular character table of $G$; let $\pi$ denote the corresponding permutation of classes of $G$. The columns of the $p$-modular character table of $H$ are given by the orbits of $\pi$, and the irreducible Brauer characters of $H$ are exactly the orbit sums of $\pi$ on the irreducible Brauer characters of $G$. 

 Note that for computing the $p$-modular character table of $H$ from that of $G$, it is sufficient to know the orbits of $\pi$ and not $\pi$ itself. Also the ordinary character table of $H$ is not needed, but since \textsf{GAP} stores Brauer character tables relative to their ordinary tables, we are
interested mainly in cases where the ordinary character tables of $G$ and $H$ and the $p$-modular character table of $G$ are known. Assuming that the class fusion between the ordinary tables of $G$ and $H$ is stored on the table of $G$, the orbits of the action of $H$ on the $p$-regular classes of $G$ can be read off from it. 

 The \textsf{GAP} function \texttt{IBrOfExtensionBySingularAutomorphism} (\textbf{CTblLib: IBrOfExtensionBySingularAutomorphism}) can be used to compute the $p$-modular irreducibles of $H$. 

 For examples, see Section{\nobreakspace}\ref{sect:xplpsing}. }

  
\subsection{\textcolor{Chapter }{Character Tables of Subdirect Products of Index Two (July 2007)}}\label{subsect:theorsubdir}
\logpage{[ 2, 3, 6 ]}
\hyperdef{L}{X788591D78451C024}{}
{
  Let $C_2$ denote the cyclic group of order two, let $G_1$, $G_2$ be two finite groups, and for $i \in \{ 1, 2 \}$, let $\varphi_i\colon G_i \rightarrow C_2$ be an epimorphism with kernel $H_i$. Let $G$ be the subdirect product (pullback) of $G_1$ and $G_2$ w.r.t. the epimorphisms $\varphi_i$, i.e., 
\[ G = \{ (g_1, g_2) \in G_1 \times G_2; \varphi_1(g_1) = \varphi_2(g_2) \} . \]
 The group $G$ has index two in the direct product $G_1 \times G_2$, and $G$ contains $H_1 \times H_2$ as a subgroup of index two. 

 In the following, we describe how the ordinary (or $p$-modular) character table of $G$ can be computed from the ordinary (or $p$-modular) character tables of the groups $G_i$ and $H_i$, and the class fusions from $H_i$ to $G_i$. 

 (For the case that one of the groups $G_i$ is a cyclic group of order four, an alternative way to construct the character
table of $G$ is described in Section{\nobreakspace}\ref{subsect:isoclinism}. For the case that one of the groups $G_i$ acts fixed point freely on the nontrivial irreducible characters of $H_i$, an alternative construction is described in Section{\nobreakspace}\ref{subsect:theorMGA}.) 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(100,45)
\put(0,0){\begin{picture}(45,45)
\put(20, 0){\circle*{1}}
\put( 7,13){\circle*{1}} \put( 4,13){\makebox(0,0){$H_1$}}
\put( 0,20){\circle*{1}} \put(-3,20){\makebox(0,0){$G_1$}}
\put(33,13){\circle*{1}} \put(36,13){\makebox(0,0){$H_2$}}
\put(40,20){\circle*{1}} \put(43,20){\makebox(0,0){$G_2$}}
\put(20,26){\circle*{1}} \put(27,26){\makebox(0,0){$H_1 \times H_2$}}
\put(13,33){\circle*{1}} \put( 5,33){\makebox(0,0){$G_1 \times H_2$}}
\put(27,33){\circle*{1}} \put(35,33){\makebox(0,0){$H_1 \times G_2$}}
\put(20,33){\circle*{1}} \put(23,33){\makebox(0,0){$G$}}
\put(20,40){\circle*{1}} \put(20,43){\makebox(0,0){$G_1 \times G_2$}}
\put(20, 0){\line(1,1){20}}
\put(20, 0){\line(-1,1){20}}
\put( 7,13){\line(1,1){20}}
\put(33,13){\line(-1,1){20}}
\put( 0,20){\line(1,1){20}}
\put(40,20){\line(-1,1){20}}
\put(20,26){\line(0,1){14}}
\end{picture}}
\put(60,2){\begin{picture}(45,45)
\put( 0, 5){\makebox(0,0){$H_2$}}
\put( 0,20){\makebox(0,0){$H_1 \times H_2$}}
\put( 0,35){\makebox(0,0){$H_1$}}
\put(20,20){\makebox(0,0){$G$}}
\put(40, 5){\makebox(0,0){$G_2$}}
\put(40,20){\makebox(0,0){$G_1 \times G_2$}}
\put(40,35){\makebox(0,0){$G_1$}}
\put( 0, 7){\vector(0,1){11}}
\put( 0,33){\vector(0,-1){11}}
\put(40, 7){\vector(0,1){11}}
\put(40,33){\vector(0,-1){11}}
\put( 2, 5){\vector(1,0){35}}
\put( 2,35){\vector(1,0){35}}
\put( 7,20){\vector(1,0){11}}
\put(22,20){\vector(1,0){11}}
\end{picture}}
\end{picture}
\end{center}


 

 Each conjugacy class of $G$ is either contained in $H_1 \times H_2$ or not. In the former case, let $h_i \in H_i$ and $g_i \in G_i \setminus H_i$; in particular, $(g_1, g_2) \in G$ because both $\varphi_1(g_1)$ and $\varphi_2(g_2)$ are not the identity. There are four possibilities. 

 
\begin{description}
\item[{1.}]  If $h_1^{{H_1}} = h_1^{{G_1}}$ and $h_2^{{H_2}} = h_2^{{G_2}}$ then $(h_1, h_2)^{{H_1 \times H_2}} = (h_1, h_2)^{{G_1 \times G_2}}$ holds, hence this class is equal to $(h_1, h_2)^G$. 
\item[{2.}]  If $h_1^{{H_1}} {{\not=}} h_1^{{G_1}}$ and $h_2^{{H_2}} {{\not=}} h_2^{{G_2}}$ then the four $H_1 \times H_2$-classes with the representatives $(h_1, h_2)$, $(h_1^{{g_1}}, h_2)$, $(h_1, h_2^{{g_2}})$, and $(h_1^{{g_1}}, h_2^{{g_2}})$ fall into two $G$-classes, where $(h_1, h_2)$ is $G$-conjugate with $(h_1^{{g_1}}, h_2^{{g_2}})$, and $(h_1^{{g_1}}, h_2)$ is $G$-conjugate with $(h_1, h_2^{{g_2}})$. 
\item[{3.}]  If $h_1^{{H_1}} = h_1^{{G_1}}$ and $h_2^{{H_2}} {{\not=}} h_2^{{G_2}}$ then the two $H_1 \times H_2$-classes with the representatives $(h_1, h_2)$ and $(h_1, h_2^{{g_2}})$ fuse in $G$; note that there is $\tilde{g}_1 \in C_{{G_1}}(h_1) \setminus H_1$, so $(\tilde{g}_1, g_2) \in G$ holds. 
\item[{4.}]  The case of $h_1^{{H_1}} {{\not=}} h_1^{{G_1}}$ and $h_2^{{H_2}} = h_2^{{G_2}}$ is analogous to case 3. 
\end{description}
 

 It remains to deal with the $G$-classes that are not contained in $H_1 \times H_2$. Each such class is in fact a conjugacy class of $G_1 \times G_2$. Note that two elements $g_1, g_2 \in G_1 \setminus H_1$ are $G_1$-conjugate if and only if they are $H_1$-conjugate. (If $g_1^x = g_2$ for $x \in G_1 \setminus H_1$ then $g_1^{{g_1 x}} = g_2$ holds, and $g_1 x \in H_1$.) This implies $(g_1, g_2)^{{G_1 \times G_2}} = (g_1, g_2)^{{H_1 \times H_2}}$, and thus this class is equal to $(g_1, g_2)^G$. 

 The (ordinary or $p$-modular) irreducible characters of $G$ are given by the restrictions $\chi_G$ of all those irreducible characters $\chi$ of $G_1 \times G_2$ whose restriction to $H_1 \times H_2$ is irreducible, plus the induced characters $\varphi^G$, where $\varphi$ runs over all those irreducible characters of $H_1 \times H_2$ that do not occur as restrictions of characters of $G_1 \times G_2$. 

 In other words, no irreducible character of $H_1 \times H_2$ has inertia subgroup $G$ inside $G_1 \times G_2$. This can be seen as follows. Let $\varphi$ be an irreducible character of $H_1 \times H_2$. Then $\varphi = \varphi_1 \cdot \varphi_2$, where $\varphi_1$, $\varphi_2$ are irreducible characters of $H_1 \times H_2$ with the properties that $H_2 \subseteq \ker(\varphi_1)$ and $H_1 \subseteq \ker(\varphi_2)$. Sloppy speaking, $\varphi_i$ is an irreducible character of $H_i$. 

 There are four possibilities. 
\begin{enumerate}
\item  If $\varphi_1$ extends to $G_1$ and $\varphi_2$ extends to $G_2$ then $\varphi$ extends to $G$, so $\varphi$ has inertia subgroup $G_1 \times G_2$. 
\item  If $\varphi_1$ does not extend to $G_1$ and $\varphi_2$ does not extend to $G_2$ then $\varphi^{{G_1 \times G_2}}$ is irreducible, so $\varphi$ has inertia subgroup $H_1 \times H_2$. 
\item  If $\varphi_1$ extends to $G_1$ and $\varphi_2$ does not extend to $G_2$ then $\varphi$ extends to $G_1 \times H_2$ but not to $G_1 \times G_2$, so $\varphi$ has inertia subgroup $G_1 \times H_2$. 
\item  The case that $\varphi_1$ does not extend to $G_1$ and $\varphi_2$ extends to $G_2$ is analogous to case 3, $\varphi$ has inertia subgroup $H_1 \times G_2$. 
\end{enumerate}
 

 For examples, see Section{\nobreakspace}\ref{sect:Gsubdir}. }

 }

  
\section{\textcolor{Chapter }{Examples for the Type $M.G.A$}}\label{sect:explMGA}
\logpage{[ 2, 4, 0 ]}
\hyperdef{L}{X817D2134829FA8FA}{}
{
   
\subsection{\textcolor{Chapter }{Character Tables of Dihedral Groups}}\label{subsect:dihedralMGA}
\logpage{[ 2, 4, 1 ]}
\hyperdef{L}{X7F2DBAB48437052C}{}
{
  Let $n = 2^k \cdot m$ where $k$ is a nonnegative integer and $m$ is an odd integer, and consider the dihedral group $D_{2n}$ of order $2n$. Let $N$ denote the derived subgroup of $D_{2n}$. 

 If $k = 0$ then $D_{2n}$ has the structure $M.G.A$, with $M = N$ and $G$ the trivial group, and $A$ a cyclic group of order two that inverts each element of $N$ and hence acts fixed-point freely on $N$. The smallest nontrivial example is of course that of $D_6 \cong S_3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG:= CharacterTable( "Cyclic", 3 );;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "Cyclic", 1 );;|
  !gapprompt@gap>| !gapinput@tblGA:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@StoreFusion( tblMG, [ 1, 1, 1 ], tblG );|
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, [ 1 ], tblGA );|
  !gapprompt@gap>| !gapinput@elms:= Elements( AutomorphismsOfTable( tblMG ) );|
  [ (), (2,3) ]
  !gapprompt@gap>| !gapinput@orbs:= [ [ 1 ], [ 2, 3 ] ];;|
  !gapprompt@gap>| !gapinput@new:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, orbs,|
  !gapprompt@>| !gapinput@             "S3" );|
  [ rec( MGfusMGA := [ 1, 2, 2 ], table := CharacterTable( "S3" ) ) ]
  !gapprompt@gap>| !gapinput@Display( new[1].table );|
  S3
  
       2  1  .  1
       3  1  1  .
  
         1a 3a 2a
      2P 1a 3a 1a
      3P 1a 1a 2a
  
  X.1     1  1  1
  X.2     1  1 -1
  X.3     2 -1  .
\end{Verbatim}
 

 If $k > 0$ then $D_{2n}$ has the structure $M.G.A$, with $M = N$ and $G$ a cyclic group of order two such that $M.G$ is cyclic, and $A$ is a cyclic group of order two that inverts each element of $M.G$ and hence acts fixed-point freely on $M.G$. The smallest nontrivial example is of course that of $D_8$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG:= CharacterTable( "Cyclic", 4 );;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@tblGA:= CharacterTable( "2^2" );;           |
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( tblMG );|
  [ 1, 4, 2, 4 ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblMG, [ 1, 2, 1, 2 ], tblG ); |
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, [ 1, 2 ], tblGA );      |
  !gapprompt@gap>| !gapinput@elms:= Elements( AutomorphismsOfTable( tblMG ) );|
  [ (), (2,4) ]
  !gapprompt@gap>| !gapinput@orbs:= Orbits( Group( elms[2] ), [ 1 ..4 ] );;|
  !gapprompt@gap>| !gapinput@new:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, orbs,|
  !gapprompt@>| !gapinput@             "order8" );|
  [ rec( MGfusMGA := [ 1, 2, 3, 2 ], 
        table := CharacterTable( "order8" ) ), 
    rec( MGfusMGA := [ 1, 2, 3, 2 ], 
        table := CharacterTable( "order8" ) ) ]
\end{Verbatim}
 

 Here we get two possible tables, which are the character tables of the
dihedral and the quaternion group of order eight, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( new, x -> OrdersClassRepresentatives( x.table ) );|
  [ [ 1, 4, 2, 2, 2 ], [ 1, 4, 2, 4, 4 ] ]
  !gapprompt@gap>| !gapinput@Display( new[1].table );|
  order8
  
       2  3  2  3  2  2
  
         1a 4a 2a 2b 2c
      2P 1a 2a 1a 1a 1a
  
  X.1     1  1  1  1  1
  X.2     1  1  1 -1 -1
  X.3     1 -1  1  1 -1
  X.4     1 -1  1 -1  1
  X.5     2  . -2  .  .
\end{Verbatim}
 

 For each $k > 1$ and $m = 1$, we get two possible tables this way, that of the dihedral group of order $2^{k+1}$ and that of the generalized quaternion group of order $2^{k+1}$.  }

  
\subsection{\textcolor{Chapter }{An $M.G.A$ Type Example with $M$ noncentral in $M.G$ (May 2004)}}\label{subsect:A12N7}
\logpage{[ 2, 4, 2 ]}
\hyperdef{L}{X7925DBFA7C5986B5}{}
{
  The Sylow $7$ normalizer in the symmetric group $S_{12}$ has the structure $7:6 \times S_5$, its intersection $N$ with the alternating group $A_{12}$ is of index two, it has the structure $(7:3 \times A_5):2$. 

 Let $M$ denote the normal subgroup of order $7$ in $N$, let $G$ denote the normal subgroup of the type $3 \times A_5$ in $F = N/M \cong 3 \times S_5$, and $A = F/G$, the cyclic group of order two. Then $N$ has the structure $M.G.A$, where $A$ acts fixed-point freely on the irreducible characters of $M.G = 7:3 \times A_5$ that do not contain $M$ in their kernels, hence the character table of $N$ is determined by the character tables of $M.G$ and $F$, and the action of $A$ on $M.G$. 

 Note that in this example, the group $M$ is not central in $M.G$, unlike in most of our examples. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(45,40)(0,0)
\put(20,0){\circle*{1}}
\put(14,6){\circle*{1}} \put(12,5){\makebox(0,0){$7$}}
\put(10,10){\circle*{1}} \put(5,10){\makebox(0,0){$7:3$}}
\put(35,15){\circle*{1}} \put(38,15){\makebox(0,0){$A_5$}}
\put(29,21){\circle*{1}} \put(35,21){\makebox(0,0){$7 \times A_5$}}
\put(25,25){\circle*{1}} \put(17,26){\makebox(0,0){$7:3 \times A_5$}}
\put(29,31){\circle*{1}} \put(38,31){\makebox(0,0){$(7 \times A_5):2$}}
\put(25,35){\circle*{1}} \put(25,38){\makebox(0,0){$N$}}
\put(20,0){\line(-1,1){10}}
\put(20,0){\line(1,1){15}}
\put(35,15){\line(-1,1){10}}
\put(14,6){\line(1,1){15}}
\put(10,10){\line(1,1){15}}
\put(25,25){\line(0,1){10}}
\put(29,21){\line(0,1){10}}
\put(29,31){\line(-1,1){4}}
\end{picture}
\end{center}


 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG:= CharacterTable( "7:3" ) * CharacterTable( "A5" );;|
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( tblMG );|
  [ [ 1 ], [ 1, 6 .. 11 ], [ 1 .. 5 ], [ 1, 6 .. 21 ], [ 1 .. 15 ], 
    [ 1 .. 25 ] ]
  !gapprompt@gap>| !gapinput@List( nsg, x -> Sum( SizesConjugacyClasses( tblMG ){ x } ) );|
  [ 1, 7, 60, 21, 420, 1260 ]
  !gapprompt@gap>| !gapinput@tblG:= tblMG / nsg[2];;|
  !gapprompt@gap>| !gapinput@tblGA:= CharacterTable( "Cyclic", 3 ) * CharacterTable( "A5.2" );;|
  !gapprompt@gap>| !gapinput@GfusGA:= PossibleClassFusions( tblG, tblGA );|
  [ [ 1, 2, 3, 4, 4, 8, 9, 10, 11, 11, 15, 16, 17, 18, 18 ], 
    [ 1, 2, 3, 4, 4, 15, 16, 17, 18, 18, 8, 9, 10, 11, 11 ] ]
  !gapprompt@gap>| !gapinput@reps:= RepresentativesFusions( Group(()), GfusGA, tblGA );|
  [ [ 1, 2, 3, 4, 4, 8, 9, 10, 11, 11, 15, 16, 17, 18, 18 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, reps[1], tblGA );|
  !gapprompt@gap>| !gapinput@acts:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );|
  [ [ [ 1 ], [ 2 ], [ 3 ], [ 4, 5 ], [ 6, 11 ], [ 7, 12 ], [ 8, 13 ], 
        [ 9, 15 ], [ 10, 14 ], [ 16 ], [ 17 ], [ 18 ], [ 19, 20 ], 
        [ 21 ], [ 22 ], [ 23 ], [ 24, 25 ] ] ]
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA,|
  !gapprompt@>| !gapinput@              acts[1], "A12N7" );|
  [ rec( 
        MGfusMGA := [ 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 5, 6, 7, 9, 8, 10, 
            11, 12, 13, 13, 14, 15, 16, 17, 17 ], 
        table := CharacterTable( "A12N7" ) ) ]
\end{Verbatim}
 

 Let us compare the result table with the table of the Sylow $7$ normalizer in $A_{12}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AlternatingGroup( 12 );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@               CharacterTable( Normalizer( g, SylowSubgroup( g, 7 ) ) ) ) );|
  true
\end{Verbatim}
 

 Since July 2007, an alternative way to construct the character table of $N$ from other character tables is to exploit its structure as a subdirect product
of index two in the group $7:6 \times S_5$, see Section{\nobreakspace}\ref{subsect:theorsubdir}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblh1:= CharacterTable( "7:3" );;|
  !gapprompt@gap>| !gapinput@tblg1:= CharacterTable( "7:6" );;|
  !gapprompt@gap>| !gapinput@tblh2:= CharacterTable( "A5" );;|
  !gapprompt@gap>| !gapinput@tblg2:= CharacterTable( "A5.2" );;|
  !gapprompt@gap>| !gapinput@subdir:= CharacterTableOfIndexTwoSubdirectProduct( tblh1, tblg1,|
  !gapprompt@>| !gapinput@                tblh2, tblg2, "(7:3xA5).2" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@               subdir.table ) );|
  true
\end{Verbatim}
 

 For storing the table of $N$ in the \textsf{GAP} Character Table Library, the construction as a subdirect product is more
suitable, since the ``auxiliary table'' of the direct product $7:3 \times A_5$ need not be stored in the library. }

  
\subsection{\textcolor{Chapter }{\textsf{Atlas} Tables of the Type $M.G.A$}}\label{subsect:ATLASMGA}
\logpage{[ 2, 4, 3 ]}
\hyperdef{L}{X7ED45AB379093A70}{}
{
  We show the construction of some character tables of groups of the type $M.G.A$ that are contained in the \textsf{GAP} Character Table Library. Each entry in the following input list contains the
names of the library character tables of $M.G$, $G$, $G.A$, and $M.G.A$. 

 First we consider the situation where $G$ is a simple group or a central extension of a simple group whose character
table is shown in the \textsf{Atlas}, and $M$ and $A$ are cyclic groups such that $M$ is central in $M.G$. 

 In the following cases, the character tables are uniquely determined by the
input tables. Note that in each of these cases, $|A|$ and $|M|$ are coprime. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@listMGA:= [|
  !gapprompt@>| !gapinput@[ "3.A6",        "A6",        "A6.2_1",        "3.A6.2_1"       ],|
  !gapprompt@>| !gapinput@[ "3.A6",        "A6",        "A6.2_2",        "3.A6.2_2"       ],|
  !gapprompt@>| !gapinput@[ "6.A6",        "2.A6",      "2.A6.2_1",      "6.A6.2_1"       ],|
  !gapprompt@>| !gapinput@[ "6.A6",        "2.A6",      "2.A6.2_2",      "6.A6.2_2"       ],|
  !gapprompt@>| !gapinput@[ "3.A7",        "A7",        "A7.2",          "3.A7.2"         ],|
  !gapprompt@>| !gapinput@[ "6.A7",        "2.A7",      "2.A7.2",        "6.A7.2"         ],|
  !gapprompt@>| !gapinput@[ "3.L3(4)",     "L3(4)",     "L3(4).2_2",     "3.L3(4).2_2"    ],|
  !gapprompt@>| !gapinput@[ "3.L3(4)",     "L3(4)",     "L3(4).2_3",     "3.L3(4).2_3"    ],|
  !gapprompt@>| !gapinput@[ "6.L3(4)",     "2.L3(4)",   "2.L3(4).2_2",   "6.L3(4).2_2"    ],|
  !gapprompt@>| !gapinput@[ "6.L3(4)",     "2.L3(4)",   "2.L3(4).2_3",   "6.L3(4).2_3"    ],|
  !gapprompt@>| !gapinput@[ "12_1.L3(4)",  "4_1.L3(4)", "4_1.L3(4).2_2", "12_1.L3(4).2_2" ],|
  !gapprompt@>| !gapinput@[ "12_1.L3(4)",  "4_1.L3(4)", "4_1.L3(4).2_3", "12_1.L3(4).2_3" ],|
  !gapprompt@>| !gapinput@[ "12_2.L3(4)",  "4_2.L3(4)", "4_2.L3(4).2_2", "12_2.L3(4).2_2" ],|
  !gapprompt@>| !gapinput@[ "12_2.L3(4)",  "4_2.L3(4)", "4_2.L3(4).2_3", "12_2.L3(4).2_3" ],|
  !gapprompt@>| !gapinput@[ "3.U3(5)",     "U3(5)",     "U3(5).2",       "3.U3(5).2"      ],|
  !gapprompt@>| !gapinput@[ "3.M22",       "M22",       "M22.2",         "3.M22.2"        ],|
  !gapprompt@>| !gapinput@[ "6.M22",       "2.M22",     "2.M22.2",       "6.M22.2"        ],|
  !gapprompt@>| !gapinput@[ "12.M22",      "4.M22",     "4.M22.2",       "12.M22.2"       ],|
  !gapprompt@>| !gapinput@[ "3.L3(7)",     "L3(7)",     "L3(7).2",       "3.L3(7).2"      ],|
  !gapprompt@>| !gapinput@[ "3_1.U4(3)",   "U4(3)",     "U4(3).2_1",     "3_1.U4(3).2_1"  ],|
  !gapprompt@>| !gapinput@[ "3_1.U4(3)",   "U4(3)",     "U4(3).2_2'",    "3_1.U4(3).2_2'" ],|
  !gapprompt@>| !gapinput@[ "3_2.U4(3)",   "U4(3)",     "U4(3).2_1",     "3_2.U4(3).2_1"  ],|
  !gapprompt@>| !gapinput@[ "3_2.U4(3)",   "U4(3)",     "U4(3).2_3'",    "3_2.U4(3).2_3'" ],|
  !gapprompt@>| !gapinput@[ "6_1.U4(3)",   "2.U4(3)",   "2.U4(3).2_1",   "6_1.U4(3).2_1"  ],|
  !gapprompt@>| !gapinput@[ "6_1.U4(3)",   "2.U4(3)",   "2.U4(3).2_2'",  "6_1.U4(3).2_2'" ],|
  !gapprompt@>| !gapinput@[ "6_2.U4(3)",   "2.U4(3)",   "2.U4(3).2_1",   "6_2.U4(3).2_1"  ],|
  !gapprompt@>| !gapinput@[ "6_2.U4(3)",   "2.U4(3)",   "2.U4(3).2_3'",  "6_2.U4(3).2_3'" ],|
  !gapprompt@>| !gapinput@[ "12_1.U4(3)",  "4.U4(3)",   "4.U4(3).2_1",   "12_1.U4(3).2_1" ],|
  !gapprompt@>| !gapinput@[ "12_2.U4(3)",  "4.U4(3)",   "4.U4(3).2_1",   "12_2.U4(3).2_1" ],|
  !gapprompt@>| !gapinput@[ "3.G2(3)",     "G2(3)",     "G2(3).2",       "3.G2(3).2"      ],|
  !gapprompt@>| !gapinput@[ "3.U3(8)",     "U3(8)",     "U3(8).2",       "3.U3(8).2"      ],|
  !gapprompt@>| !gapinput@[ "3.U3(8).3_1", "U3(8).3_1", "U3(8).6",       "3.U3(8).6"      ],|
  !gapprompt@>| !gapinput@[ "3.J3",        "J3",        "J3.2",          "3.J3.2"         ],|
  !gapprompt@>| !gapinput@[ "3.U3(11)",    "U3(11)",    "U3(11).2",      "3.U3(11).2"     ],|
  !gapprompt@>| !gapinput@[ "3.McL",       "McL",       "McL.2",         "3.McL.2"        ],|
  !gapprompt@>| !gapinput@[ "3.O7(3)",     "O7(3)",     "O7(3).2",       "3.O7(3).2"      ],|
  !gapprompt@>| !gapinput@[ "6.O7(3)",     "2.O7(3)",   "2.O7(3).2",     "6.O7(3).2"      ],|
  !gapprompt@>| !gapinput@[ "3.U6(2)",     "U6(2)",     "U6(2).2",       "3.U6(2).2"      ],|
  !gapprompt@>| !gapinput@[ "6.U6(2)",     "2.U6(2)",   "2.U6(2).2",     "6.U6(2).2"      ],|
  !gapprompt@>| !gapinput@[ "3.Suz",       "Suz",       "Suz.2",         "3.Suz.2"        ],|
  !gapprompt@>| !gapinput@[ "6.Suz",       "2.Suz",     "2.Suz.2",       "6.Suz.2"        ],|
  !gapprompt@>| !gapinput@[ "3.ON",        "ON",        "ON.2",          "3.ON.2"         ],|
  !gapprompt@>| !gapinput@[ "3.Fi22",      "Fi22",      "Fi22.2",        "3.Fi22.2"       ],|
  !gapprompt@>| !gapinput@[ "6.Fi22",      "2.Fi22",    "2.Fi22.2",      "6.Fi22.2"       ],|
  !gapprompt@>| !gapinput@[ "3.2E6(2)",    "2E6(2)",    "2E6(2).2",      "3.2E6(2).2"     ],|
  !gapprompt@>| !gapinput@[ "6.2E6(2)",    "2.2E6(2)",  "2.2E6(2).2",    "6.2E6(2).2"     ],|
  !gapprompt@>| !gapinput@[ "3.F3+",       "F3+",       "F3+.2",         "3.F3+.2"        ],|
  !gapprompt@>| !gapinput@];;|
\end{Verbatim}
 

 (We need not consider groups $3.U_3(8).6'$ and $3.U_3(8).6'$, see Section \ref{subsect:struct3U3831}.) 

 Note that the groups of the types $12_1.L_3(4).2_1$ and $12_2.L_3(4).2_1$ have central subgroups of order six, so we cannot choose $G$ equal to $4_1.L_3(4)$ and $4_2.L_3(4)$, respectively, in these cases. See Section{\nobreakspace}\ref{subsect:MoreATLASMGA} for the construction of these tables. 

 Also in the following cases, $|A|$ and $|M|$ are coprime, we have $|M| = 3$ and $|A| = 2$. The group $M.G$ has a central subgroup of the type $2^2 \times 3$, and $A$ acts on this group by inverting the elements in the subgroup of order $3$ and by swapping two involutions in the Klein four group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listMGA, [|
  !gapprompt@>| !gapinput@[ "(2^2x3).L3(4)",  "2^2.L3(4)",   "2^2.L3(4).2_2", "(2^2x3).L3(4).2_2" ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).L3(4)",  "2^2.L3(4)",   "2^2.L3(4).2_3", "(2^2x3).L3(4).2_3" ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).U6(2)",  "2^2.U6(2)",   "2^2.U6(2).2",   "(2^2x3).U6(2).2"   ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).2E6(2)", "2^2.2E6(2)",  "2^2.2E6(2).2",  "(2^2x3).2E6(2).2"  ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 Additionally, there are a few cases where $A$ has order two, and $G.A$ has a factor group of the type $2^2$, and a few cases where $M$ has the type $2^2$ and $A$ is of order three and acts transitively on the involutions in $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listMGA, [|
  !gapprompt@>| !gapinput@[ "3.A6.2_3",       "A6.2_3",    "A6.2^2",      "3.A6.2^2"          ],|
  !gapprompt@>| !gapinput@[ "3.L3(4).2_1",    "L3(4).2_1", "L3(4).2^2",   "3.L3(4).2^2"       ],|
  !gapprompt@>| !gapinput@[ "3_1.U4(3).2_2",  "U4(3).2_2", "U4(3).(2^2)_{122}",|
  !gapprompt@>| !gapinput@                                            "3_1.U4(3).(2^2)_{122}" ],|
  !gapprompt@>| !gapinput@[ "3_2.U4(3).2_3",  "U4(3).2_3", "U4(3).(2^2)_{133}",|
  !gapprompt@>| !gapinput@                                            "3_2.U4(3).(2^2)_{133}" ],|
  !gapprompt@>| !gapinput@[ "3^2.U4(3).2_3'", "3_2.U4(3).2_3'", "3_2.U4(3).(2^2)_{133}",|
  !gapprompt@>| !gapinput@                                            "3^2.U4(3).(2^2)_{133}" ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4)",      "L3(4)",     "L3(4).3",     "2^2.L3(4).3"       ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).L3(4)",  "3.L3(4)",   "3.L3(4).3",   "(2^2x3).L3(4).3"   ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4).2_1",  "L3(4).2_1", "L3(4).6",     "2^2.L3(4).6"       ],|
  !gapprompt@>| !gapinput@[ "2^2.Sz(8)",      "Sz(8)",     "Sz(8).3",     "2^2.Sz(8).3"       ],|
  !gapprompt@>| !gapinput@[ "2^2.U6(2)",      "U6(2)",     "U6(2).3",     "2^2.U6(2).3"       ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).U6(2)",  "3.U6(2)",   "3.U6(2).3",   "(2^2x3).U6(2).3"   ],|
  !gapprompt@>| !gapinput@[ "2^2.O8+(2)",     "O8+(2)",    "O8+(2).3",    "2^2.O8+(2).3"      ],|
  !gapprompt@>| !gapinput@[ "2^2.O8+(3)",     "O8+(3)",    "O8+(3).3",    "2^2.O8+(3).3"      ],|
  !gapprompt@>| !gapinput@[ "2^2.2E6(2)",     "2E6(2)",    "2E6(2).3",    "2^2.2E6(2).3"      ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
  

 The constructions of the character tables of groups of the types $4_2.L_3(4).2_3$, $12_2.L_3(4).2_3$, $12_1.U_4(3).2_2'$ and $12_2.U_4(3).2_3'$ is described in Section{\nobreakspace}\ref{subsect:4_2.L_3(4).2_3} and{\nobreakspace}\ref{subsect:12_i.U_4(3).2_jdash}, in these cases the \textsf{GAP} functions return several possible tables. 

 The construction of the various character table of groups of the types $4_1.L_3(4).2^2$ and $4_2.L_3(4).2^2$ are described in Section{\nobreakspace}\ref{subsect:41L34V4}. 

 The following function takes the ordinary character tables of the groups $M.G$, $G$, and $G.A$, a string to be used as the \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) value of the character table of $M.G.A$, and the character table of $M.G.A$ that is contained in the \textsf{GAP} Character Table Library; the function first computes the possible actions of $G.A$ on the classes of $M.G$, using the function \texttt{PossibleActionsForTypeMGA} (\textbf{CTblLib: PossibleActionsForTypeMGA}), then computes the union of possible character tables for these actions, and
then representatives up to permutation equivalence; if there is only one
solution then the result table is compared with the library table. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ConstructOrdinaryMGATable:= function( tblMG, tblG, tblGA, name, lib )|
  !gapprompt@>| !gapinput@     local acts, poss, trans;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     acts:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );|
  !gapprompt@>| !gapinput@     poss:= Concatenation( List( acts, pi ->|
  !gapprompt@>| !gapinput@                PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, pi,|
  !gapprompt@>| !gapinput@                    name ) ) );|
  !gapprompt@>| !gapinput@     poss:= RepresentativesCharacterTables( poss );|
  !gapprompt@>| !gapinput@     if Length( poss ) = 1 then|
  !gapprompt@>| !gapinput@       # Compare the computed table with the library table.|
  !gapprompt@>| !gapinput@       if not IsCharacterTable( lib ) then|
  !gapprompt@>| !gapinput@         List( poss, x -> AutomorphismsOfTable( x.table ) );|
  !gapprompt@>| !gapinput@         Print( "#I  no library table for ", name, "\n" );|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@                     lib );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@         # Compare the computed fusion with the stored one.|
  !gapprompt@>| !gapinput@         if OnTuples( poss[1].MGfusMGA, trans.columns )|
  !gapprompt@>| !gapinput@                <> GetFusionMap( tblMG, lib ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed and stored fusion for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     elif Length( poss ) = 0 then|
  !gapprompt@>| !gapinput@       Print( "#E  no solution for ", name, "\n" );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Print( "#E  ", Length( poss ), " possibilities for ", name, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     return poss;|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 

 The following function takes the ordinary character tables of the groups $M.G$, $G.A$, and $M.G.A$, and tries to construct the $p$-modular character tables of $M.G.A$ from the $p$-modular character tables of the first two of these tables, for all prime
divisors $p$ of the order of $M.G.A$. Note that the tables of $G$ are not needed in the construction, only the class fusions from $M.G$ to $M.G.A$ and from $M.G.A$ to $G.A$ must be stored. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ConstructModularMGATables:= function( tblMG, tblGA, ordtblMGA )|
  !gapprompt@>| !gapinput@   local name, poss, p, modtblMG, modtblGA, modtblMGA, modlib, trans;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   name:= Identifier( ordtblMGA );|
  !gapprompt@>| !gapinput@   poss:= [];|
  !gapprompt@>| !gapinput@   for p in PrimeDivisors( Size( ordtblMGA ) ) do|
  !gapprompt@>| !gapinput@     modtblMG := tblMG mod p;|
  !gapprompt@>| !gapinput@     modtblGA := tblGA mod p;|
  !gapprompt@>| !gapinput@     if ForAll( [ modtblMG, modtblGA ], IsCharacterTable ) then|
  !gapprompt@>| !gapinput@       modtblMGA:= BrauerTableOfTypeMGA( modtblMG, modtblGA, ordtblMGA );|
  !gapprompt@>| !gapinput@       Add( poss, modtblMGA );|
  !gapprompt@>| !gapinput@       modlib:= ordtblMGA mod p;|
  !gapprompt@>| !gapinput@       if IsCharacterTable( modlib ) then|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( modtblMGA.table,|
  !gapprompt@>| !gapinput@                     modlib );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " mod ", p, " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         AutomorphismsOfTable( modtblMGA.table );|
  !gapprompt@>| !gapinput@         Print( "#I  no library table for ", name, " mod ", p, "\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Print( "#I  not all input tables for ", name, " mod ", p,|
  !gapprompt@>| !gapinput@              " available\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   return poss;|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 

 Now we run the constructions for the cases in the list. Note that in order to
avoid conflicts of the class fusions that arise in the construction with the
class fusions that are already stored on the library tables, we choose
identifiers for the result tables that are different from the identifiers of
the library tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for  input in listMGA do|
  !gapprompt@>| !gapinput@     tblMG := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tblG  := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     tblGA := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     name  := Concatenation( "new", input[4] );|
  !gapprompt@>| !gapinput@     lib   := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );|
  !gapprompt@>| !gapinput@     if 1 <> Length( poss ) then|
  !gapprompt@>| !gapinput@       Print( "#I  ", Length( poss ), " possibilities for ", name, "\n" );|
  !gapprompt@>| !gapinput@     elif lib = fail then|
  !gapprompt@>| !gapinput@       Print( "#I  no library table for ", input[4], "\n" );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       ConstructModularMGATables( tblMG, tblGA, lib );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  #I  not all input tables for 3.2E6(2).2 mod 2 available
  #I  not all input tables for 3.2E6(2).2 mod 3 available
  #I  not all input tables for 3.2E6(2).2 mod 5 available
  #I  not all input tables for 3.2E6(2).2 mod 7 available
  #I  not all input tables for 3.2E6(2).2 mod 11 available
  #I  not all input tables for 3.2E6(2).2 mod 13 available
  #I  not all input tables for 3.2E6(2).2 mod 17 available
  #I  not all input tables for 3.2E6(2).2 mod 19 available
  #I  not all input tables for 6.2E6(2).2 mod 2 available
  #I  not all input tables for 6.2E6(2).2 mod 3 available
  #I  not all input tables for 6.2E6(2).2 mod 5 available
  #I  not all input tables for 6.2E6(2).2 mod 7 available
  #I  not all input tables for 6.2E6(2).2 mod 11 available
  #I  not all input tables for 6.2E6(2).2 mod 13 available
  #I  not all input tables for 6.2E6(2).2 mod 17 available
  #I  not all input tables for 6.2E6(2).2 mod 19 available
  #I  not all input tables for 3.F3+.2 mod 2 available
  #I  not all input tables for 3.F3+.2 mod 3 available
  #I  not all input tables for 3.F3+.2 mod 5 available
  #I  not all input tables for 3.F3+.2 mod 7 available
  #I  not all input tables for 3.F3+.2 mod 13 available
  #I  not all input tables for 3.F3+.2 mod 17 available
  #I  not all input tables for 3.F3+.2 mod 29 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 2 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 3 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 5 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 7 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 11 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 13 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 17 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 19 available
  #I  not all input tables for 3^2.U4(3).(2^2)_{133} mod 2 available
  #I  not all input tables for 3^2.U4(3).(2^2)_{133} mod 5 available
  #I  not all input tables for 3^2.U4(3).(2^2)_{133} mod 7 available
  #I  not all input tables for 2^2.O8+(3).3 mod 5 available
  #I  not all input tables for 2^2.O8+(3).3 mod 7 available
  #I  not all input tables for 2^2.O8+(3).3 mod 13 available
  #I  not all input tables for 2^2.2E6(2).3 mod 2 available
  #I  not all input tables for 2^2.2E6(2).3 mod 3 available
  #I  not all input tables for 2^2.2E6(2).3 mod 5 available
  #I  not all input tables for 2^2.2E6(2).3 mod 7 available
  #I  not all input tables for 2^2.2E6(2).3 mod 11 available
  #I  not all input tables for 2^2.2E6(2).3 mod 13 available
  #I  not all input tables for 2^2.2E6(2).3 mod 17 available
  #I  not all input tables for 2^2.2E6(2).3 mod 19 available
\end{Verbatim}
 

 We do not get any unexpected output, so the character tables in question are
determined by the inputs. 

 Alternative constructions of the character tables of $3.A_6.2^2$, $3.L_3(4).2^2$, and $3_2.U_4(3).(2^2)_{133}$ can be found in Section{\nobreakspace}\ref{subsect:xplGV43.A6.V4}. }

  
\subsection{\textcolor{Chapter }{More \textsf{Atlas} Tables of the Type $M.G.A$}}\label{subsect:MoreATLASMGA}
\logpage{[ 2, 4, 4 ]}
\hyperdef{L}{X7A236EDE7A7A28F9}{}
{
  In the following situations, we have $|A| = 2$, and $|M|$ is a multiple of $2$. The result turns out to be unique up to isoclinism, see
Section{\nobreakspace}\ref{subsect:theorMGA}. 

 First, there are some cases where the centre of $M.G$ is a cyclic group of order four, and $|M| = 2$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@listMGA2:= [|
  !gapprompt@>| !gapinput@[ "4_1.L3(4)",  "2.L3(4)",   "2.L3(4).2_1",   "4_1.L3(4).2_1"  ],|
  !gapprompt@>| !gapinput@[ "4_1.L3(4)",  "2.L3(4)",   "2.L3(4).2_2",   "4_1.L3(4).2_2"  ],|
  !gapprompt@>| !gapinput@[ "4_2.L3(4)",  "2.L3(4)",   "2.L3(4).2_1",   "4_2.L3(4).2_1"  ],|
  !gapprompt@>| !gapinput@[ "4.M22",      "2.M22",     "2.M22.2",       "4.M22.2"        ],|
  !gapprompt@>| !gapinput@[ "4.U4(3)",    "2.U4(3)",   "2.U4(3).2_2",   "4.U4(3).2_2"    ],|
  !gapprompt@>| !gapinput@[ "4.U4(3)",    "2.U4(3)",   "2.U4(3).2_3",   "4.U4(3).2_3"    ],|
  !gapprompt@>| !gapinput@];;|
\end{Verbatim}
 

 Note that the groups $4_1.L3(4).2_3$ and $4_2.L3(4).2_2$ and their isoclinic variants have centres of order four, so they do not appear
here. The construction of the character table of $4_2.L_3(4).2_3$ is more involved, it is described in Section{\nobreakspace}\ref{subsect:4_2.L_3(4).2_3}. 

 Also in the following cases, we have $|M| = 2$, but the situation is different because $M.G$ has a central subgroup of the type $2^2$ containing a unique subgroup of order $2$ that is central in $M.G.A$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listMGA2, [|
  !gapprompt@>| !gapinput@[ "2^2.L3(4)",     "2.L3(4)",     "2.L3(4).2_2",         "2^2.L3(4).2_2" ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4)",     "2.L3(4)",     "2.L3(4).2_3",         "2^2.L3(4).2_3" ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4).2_1", "2.L3(4).2_1", "2.L3(4).(2^2)_{123}", "2^2.L3(4).2^2" ],|
  !gapprompt@>| !gapinput@[ "2^2.O8+(2)",    "2.O8+(2)",    "2.O8+(2).2",          "2^2.O8+(2).2"  ],|
  !gapprompt@>| !gapinput@[ "2^2.U6(2)",     "2.U6(2)",     "2.U6(2).2",           "2^2.U6(2).2"   ],|
  !gapprompt@>| !gapinput@[ "2^2.2E6(2)",    "2.2E6(2)",    "2.2E6(2).2",          "2^2.2E6(2).2"  ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 Next there are two constructions for $G = 6.L_3(4)$, with $|M| = 12$ and $|A| = 2$. Note that the groups $12_1.L3(4).2_1$ and $12_2.L3(4).2_1$ have central subgroups of the order six, so we cannot use the factor groups $4_1.L3(4).2_1$ and $4_2.L3(4).2_1$, respectively, for the constructions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listMGA2, [|
  !gapprompt@>| !gapinput@[ "12_1.L3(4)", "6.L3(4)", "6.L3(4).2_1", "12_1.L3(4).2_1" ],|
  !gapprompt@>| !gapinput@[ "12_2.L3(4)", "6.L3(4)", "6.L3(4).2_1", "12_2.L3(4).2_1" ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 Next there are alternative constructions for tables which have been
constructed in Section{\nobreakspace}\ref{subsect:ATLASMGA}. There we had viewed the groups of the structure $12.S.2$, for a simple group $S$, as $3.G.2$ with $G = 4.S$. Here we view these groups as $2.G.2$ with $G = 6.S$, which means that we do not prescribe the $4.S.2$ type factor group. So it is not surprising that we get more than one solution,
and that the computation of the $2$-power map of $12.S.2$ is more involved. Note that the construction of the character table of $12_2.L_3(4).2_3$ is more involved, it is described in Section{\nobreakspace}\ref{subsect:4_2.L_3(4).2_3}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listMGA2, [|
  !gapprompt@>| !gapinput@[ "12.M22",     "6.M22",     "6.M22.2",       "12.M22.2"       ],|
  !gapprompt@>| !gapinput@[ "12_1.L3(4)", "6.L3(4)",   "6.L3(4).2_2",   "12_1.L3(4).2_2" ],|
  !gapprompt@>| !gapinput@[ "12_1.U4(3)", "6_1.U4(3)", "6_1.U4(3).2_2", "12_1.U4(3).2_2" ],|
  !gapprompt@>| !gapinput@[ "12_2.U4(3)", "6_2.U4(3)", "6_2.U4(3).2_3", "12_2.U4(3).2_3" ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 Finally, there are alternative constructions for the cases where the group $M.G$ has a central subgroup of the type $2^2 \times 3$, and $A$ acts on this group by inverting the elements in the subgroup of order $3$ and by swapping two involutions in the Klein four group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listMGA2, [|
  !gapprompt@>| !gapinput@[ "(2^2x3).L3(4)",  "6.L3(4)",   "6.L3(4).2_2", "(2^2x3).L3(4).2_2" ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).L3(4)",  "6.L3(4)",   "6.L3(4).2_3", "(2^2x3).L3(4).2_3" ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).U6(2)",  "6.U6(2)",   "6.U6(2).2",   "(2^2x3).U6(2).2"   ],|
  !gapprompt@>| !gapinput@[ "(2^2x3).2E6(2)", "6.2E6(2)",  "6.2E6(2).2",  "(2^2x3).2E6(2).2"  ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 Now we run the constructions for the cases in the list. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for  input in listMGA2 do|
  !gapprompt@>| !gapinput@     tblMG := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tblG  := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     tblGA := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     name  := Concatenation( "new", input[4] );|
  !gapprompt@>| !gapinput@     lib   := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );|
  !gapprompt@>| !gapinput@     if Length( poss ) = 2 then|
  !gapprompt@>| !gapinput@       iso:= CharacterTableIsoclinic( poss[1].table );|
  !gapprompt@>| !gapinput@       if IsRecord( TransformingPermutationsCharacterTables( poss[2].table,|
  !gapprompt@>| !gapinput@                        iso ) ) then|
  !gapprompt@>| !gapinput@         Unbind( poss[2] );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     elif Length( poss ) = 1 then|
  !gapprompt@>| !gapinput@       Print( "#I  unique up to permutation equivalence: ", name, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     if 1 <> Length( poss ) then|
  !gapprompt@>| !gapinput@       Print( "#I  ", Length( poss ), " possibilities for ", name, "\n" );|
  !gapprompt@>| !gapinput@     elif lib = fail then|
  !gapprompt@>| !gapinput@       Print( "#I  no library table for ", input[4], "\n" );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       ConstructModularMGATables( tblMG, tblGA, lib );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  #E  2 possibilities for new4_1.L3(4).2_1
  #E  2 possibilities for new4_1.L3(4).2_2
  #E  2 possibilities for new4_2.L3(4).2_1
  #E  2 possibilities for new4.M22.2
  #E  2 possibilities for new4.U4(3).2_2
  #E  2 possibilities for new4.U4(3).2_3
  #I  unique up to permutation equivalence: new2^2.L3(4).2_2
  #I  unique up to permutation equivalence: new2^2.L3(4).2_3
  #I  unique up to permutation equivalence: new2^2.L3(4).2^2
  #I  unique up to permutation equivalence: new2^2.O8+(2).2
  #I  unique up to permutation equivalence: new2^2.U6(2).2
  #I  unique up to permutation equivalence: new2^2.2E6(2).2
  #I  not all input tables for 2^2.2E6(2).2 mod 2 available
  #I  not all input tables for 2^2.2E6(2).2 mod 3 available
  #I  not all input tables for 2^2.2E6(2).2 mod 5 available
  #I  not all input tables for 2^2.2E6(2).2 mod 7 available
  #E  2 possibilities for new12_1.L3(4).2_1
  #E  2 possibilities for new12_2.L3(4).2_1
  #E  2 possibilities for new12.M22.2
  #E  2 possibilities for new12_1.L3(4).2_2
  #E  2 possibilities for new12_1.U4(3).2_2
  #E  2 possibilities for new12_2.U4(3).2_3
  #I  unique up to permutation equivalence: new(2^2x3).L3(4).2_2
  #I  unique up to permutation equivalence: new(2^2x3).L3(4).2_3
  #I  unique up to permutation equivalence: new(2^2x3).U6(2).2
  #I  unique up to permutation equivalence: new(2^2x3).2E6(2).2
  #I  not all input tables for (2^2x3).2E6(2).2 mod 2 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 3 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 5 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 7 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 11 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 13 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 17 available
  #I  not all input tables for (2^2x3).2E6(2).2 mod 19 available
\end{Verbatim}
 

 Again, we do not get any unexpected output, so the character tables in
question are determined up to isoclinism by the inputs. }

  
\subsection{\textcolor{Chapter }{The Character Tables of $4_2.L_3(4).2_3$ and $12_2.L_3(4).2_3$}}\label{subsect:4_2.L_3(4).2_3}
\logpage{[ 2, 4, 5 ]}
\hyperdef{L}{X794EC2FD7F69B4E6}{}
{
  In the construction of the character table of $M.G.A = 4_2.L_3(4).2_3$ from the tables of $M.G = 4_2.L_3(4)$ and $G.A = 2.L_3(4).2_3$, the action of $A$ on the classes of $M.G$ is uniquely determined, but we get four possible character tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "4_2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "2.L3(4).2_3" );;|
  !gapprompt@gap>| !gapinput@name  := "new4_2.L3(4).2_3";;|
  !gapprompt@gap>| !gapinput@lib   := CharacterTable( "4_2.L3(4).2_3" );;|
  !gapprompt@gap>| !gapinput@poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );|
  #E  4 possibilities for new4_2.L3(4).2_3
  [ rec( 
        MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
            12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
            21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ), 
    rec( 
        MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
            12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
            21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ), 
    rec( 
        MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
            12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
            21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ), 
    rec( 
        MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
            12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
            21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ) ]
\end{Verbatim}
 

 The centre of $4_2.L_3(4)$ is inverted by the action of the outer automorphism, so the existence of \emph{two} possible tables can be expected because two isoclinic groups of the type $4_2.L_3(4).2_3$ exist, see Section{\nobreakspace}\ref{subsect:isoclinicATLAS}. 

 Indeed the result consists of two pairs of isoclinic tables, so we have to
decide which pair of tables belongs to the groups of the type $4_2.L_3(4).2_3$.   

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@                 CharacterTableIsoclinic( poss[4].table ) ) );|
  true
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[2].table,|
  !gapprompt@>| !gapinput@                 CharacterTableIsoclinic( poss[3].table ) ) );|
  true
\end{Verbatim}
 

 The possible tables differ only w.r.t.{\nobreakspace}the $2$-power map and perhaps the element orders. The \textsf{Atlas} prints the table of the split extension of $M.G$, this table is one of the first two possibilities. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( poss, x -> PowerMap( x.table, 2 ) );|
  [ [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
        21, 19, 21, 1, 1, 6, 6, 9, 9, 11, 11, 16, 16, 13, 13 ], 
    [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
        21, 19, 21, 1, 1, 6, 6, 11, 11, 9, 9, 16, 16, 13, 13 ], 
    [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
        21, 19, 21, 3, 3, 8, 8, 9, 9, 11, 11, 18, 18, 15, 15 ], 
    [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
        21, 19, 21, 3, 3, 8, 8, 11, 11, 9, 9, 18, 18, 15, 15 ] ]
\end{Verbatim}
 

 The $2$-power map is not determined by the irreducible characters (and by the $2$-power map of the factor group $2.L_3(4).2_3$). We determine this map using the embedding of $4_2.L_3(4).2_3$ into $4.U_4(3).2_3$. Note that $L_3(4).2_3$ is a maximal subgroup of $U_4(3).2_3$ (see{\nobreakspace}\cite[p. 52]{CCN85}), and that the subgroup $L_3(4)$ of $U_4(3)$ lifts to $4_2.L_3(4)$ in $4.U_4(3)$ because no embedding of $L_3(4)$, $2.L_3(4)$, or $4_1.L_3(4)$ into $4.U_4(3)$ is possible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossiblePowerMaps( poss[1].table, 2 );|
  [ [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
        21, 19, 21, 1, 1, 6, 6, 11, 11, 9, 9, 16, 16, 13, 13 ], 
    [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
        21, 19, 21, 1, 1, 6, 6, 9, 9, 11, 11, 16, 16, 13, 13 ] ]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "4.U4(3)" );;|
  !gapprompt@gap>| !gapinput@List( [ "L3(4)", "2.L3(4)", "4_1.L3(4)", "4_2.L3(4)" ], name ->|
  !gapprompt@>| !gapinput@         Length( PossibleClassFusions( CharacterTable( name ), t ) ) );|
  [ 0, 0, 0, 4 ]
\end{Verbatim}
 

 So the split extension $4_2.L_3(4).2_3$ of $4_2.L_3(4)$ is a subgroup of the split extension $4.U_4(3).2_3$ of $4.U_4(3)$, and only one of the two possible tables of $4_2.L_3(4).2_3$ admits a class fusion into the \textsf{Atlas} table of $4.U_3(4).2_3$; the construction of the latter table is shown in Section{\nobreakspace}\ref{subsect:ATLASMGA}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "4.U4(3).2_3" );;|
  !gapprompt@gap>| !gapinput@List( poss, x -> Length( PossibleClassFusions( x.table, t2 ) ) );|
  [ 0, 16, 0, 0 ]
\end{Verbatim}
 

 I do not know a character theoretic argument that would disprove the existence
of a group whose character table is the other candidate (or its isoclinic
variant). For example, the table passes the tests from Section{\nobreakspace}\ref{subsect:pseudo}. 

 (It is straightforward to compute all extensions of $4_2.L_3(4)$ by an automorphism of order two. The extensions with $34$ conjugacy classes belong to the second candidate and its isoclinic variant.)  

 The correct table is the one that is contained in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[2].table,|
  !gapprompt@>| !gapinput@                 lib ) );|
  true
  !gapprompt@gap>| !gapinput@ConstructModularMGATables( tblMG, tblGA, lib );;|
\end{Verbatim}
 

 In the construction of the character table of $12_2.L_3(4).2_3$, the same ambiguity arises. We resolve it using the fact that $4_2.L_3(4).2_3$ occurs as a factor group, modulo the unique normal subgroup of order three. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "12_2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "6.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "6.L3(4).2_3" );;|
  !gapprompt@gap>| !gapinput@name  := "new12_2.L3(4).2_3";;|
  !gapprompt@gap>| !gapinput@lib   := CharacterTable( "12_2.L3(4).2_3" );;|
  !gapprompt@gap>| !gapinput@poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );;|
  #E  4 possibilities for new12_2.L3(4).2_3
  !gapprompt@gap>| !gapinput@Length( poss );|
  4
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( poss[1].table );|
  [ [ 1 ], [ 1, 5 ], [ 1, 7 ], [ 1, 4 .. 7 ], [ 1, 3 .. 7 ], 
    [ 1 .. 7 ], [ 1 .. 50 ], [ 1 .. 62 ] ]
  !gapprompt@gap>| !gapinput@List( nsg, x -> Sum( SizesConjugacyClasses( poss[1].table ){ x } ) );|
  [ 1, 3, 2, 4, 6, 12, 241920, 483840 ]
  !gapprompt@gap>| !gapinput@factlib:= CharacterTable( "4_2.L3(4).2_3" );;|
  !gapprompt@gap>| !gapinput@List( poss, x -> IsRecord( TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                        x.table / [ 1, 5 ], factlib ) ) );|
  [ false, true, false, false ]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[2].table,|
  !gapprompt@>| !gapinput@                 lib ) );|
  true
  !gapprompt@gap>| !gapinput@ConstructModularMGATables( tblMG, tblGA, lib );;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Tables of $12_1.U_4(3).2_2'$ and $12_2.U_4(3).2_3'$ (December{\nobreakspace}2015)}}\label{subsect:12_i.U_4(3).2_jdash}
\logpage{[ 2, 4, 6 ]}
\hyperdef{L}{X7E3E748E85AEDDB3}{}
{
  In the construction of the character table of $M.G.A = 12_1.U_4(3).2_2'$ from the tables of $M.G = 12_1.U_4(3)$ and $G.A = 2.U_4(3).2_2'$, the action of $A$ on the classes of $M.G$ is uniquely determined, but we get two possible character tables. 

 (Note that the groups $2.U_4(3).2_2$ and $2.U_4(3).2_2'$ are isomorphic, but we have to take the latter one because the stored factor
fusion from $12_1.U_4(3)$ to $2.U_4(3)$ must be combined with the class fusion from $2.U_4(3)$ to $2.U_4(3).2_2'$; using the library table of $2.U_4(3).2_2$ would be technically more involved.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "12_1.U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "2.U4(3).2_2'" );;|
  !gapprompt@gap>| !gapinput@name  := "new12_1.U4(3).2_2'";;|
  !gapprompt@gap>| !gapinput@lib   := CharacterTable( "12_1.U4(3).2_2'" );;|
  !gapprompt@gap>| !gapinput@poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );;|
  #E  2 possibilities for new12_1.U4(3).2_2'
  !gapprompt@gap>| !gapinput@ConstructModularMGATables( tblMG, tblGA, lib );;|
\end{Verbatim}
 

 This is not surprising, the two tables involve the two isoclinic variants of $4.U_4(3).2_2'$ (which is isomorphic with $4.U_4(3).2_2$) as tables of factor groups. The irreducible characters of the two tables are
equal, only the $2$-power map and the element orders are different. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Irr( poss[1].table ) = Irr( poss[2].table );|
  true
  !gapprompt@gap>| !gapinput@iso:= CharacterTableIsoclinic( poss[1].table );;|
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( iso, poss[2].table );|
  rec( columns := (), group := <permutation group with 5 generators>, 
    rows := () )
\end{Verbatim}
 

 The same phenomenon occurs in the construction of the character table of $M.G.A = 12_2.U_4(3).2_3'$ from the tables of $M.G = 12_2.U_4(3)$ and $G.A = 2.U_4(3).2_3'$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "12_2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "2.U4(3).2_3'" );;|
  !gapprompt@gap>| !gapinput@name  := "new12_2.U4(3).2_3'";;|
  !gapprompt@gap>| !gapinput@lib   := CharacterTable( "12_2.U4(3).2_3'" );;|
  !gapprompt@gap>| !gapinput@poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );;|
  #E  2 possibilities for new12_2.U4(3).2_3'
  !gapprompt@gap>| !gapinput@ConstructModularMGATables( tblMG, tblGA, lib );;|
  !gapprompt@gap>| !gapinput@iso:= CharacterTableIsoclinic( poss[1].table );;|
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( iso, poss[2].table );|
  rec( columns := (), group := <permutation group with 8 generators>, 
    rows := () )
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Groups of the Structures $3.U_3(8).3_1$ and $3.U_3(8).6$ (February 2017)}}\label{subsect:struct3U3831}
\logpage{[ 2, 4, 7 ]}
\hyperdef{L}{X8379003582D06130}{}
{
  The list of Improvements to the \textsf{Atlas} of Finite Groups \cite{BN95} states the following, concerning the group $G = U_3(8)$. 

 ``There is a unique group of type $3.G.6$ which contains the group of type $3.G.3$ shown. But the (unique) groups of type $3.G.6'$ and $3.G.6''$ contain not this $3.G.3$ but its \emph{isoclines}.'' 

 In this section we will show that this statement is not correct, in the sense
that the three isoclinic variants of groups of the structure $3.U_3(8).3_1$ are in fact isomorphic. 

 As a consequence, there is a unique group of the structure $3.U_3(8).6$, up to isomorphism. Note that otherwise the strange situation of
nonisomorphic groups $3.G.6$, $3.G.6'$, and $3.G.6''$ would happen, which would be also not isoclinic because their centres are
trivial. 

 A group of the structure $3.U_3(8).3_1$ can be obtained as the semidirect product $G$, say, of the group SU$(3,8)$ with the automorphism of the field with $64$ elements that raises each field element to its fourth power. Note that the
semidirect product of SU$(3,8)$ with the field automorphism that squares each field element yields a group of
the structure $3.U_3(8).6$. 

 First we create a permutation representation of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= SU(3,8);;|
  !gapprompt@gap>| !gapinput@gens:= GeneratorsOfGroup( s );;|
  !gapprompt@gap>| !gapinput@imgs1:= List( gens, m -> List( m, v -> List( v, x -> x^4 ) ) );;|
  !gapprompt@gap>| !gapinput@imgs2:= List( gens, m -> List( m, v -> List( v, x -> x^16 ) ) );;|
  !gapprompt@gap>| !gapinput@f:= GF(64);;|
  !gapprompt@gap>| !gapinput@mats:= List( gens, m -> IdentityMat( 9, f ) );;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( gens ) ] do|
  !gapprompt@>| !gapinput@     mats[i]{ [ 1 .. 3 ] }{ [ 1 .. 3 ] }:= gens[i];|
  !gapprompt@>| !gapinput@     mats[i]{ [ 4 .. 6 ] }{ [ 4 .. 6 ] }:= imgs1[i];|
  !gapprompt@>| !gapinput@     mats[i]{ [ 7 .. 9 ] }{ [ 7 .. 9 ] }:= imgs2[i];|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@fieldaut:= NullMat( 9, 9, f );;|
  !gapprompt@gap>| !gapinput@fieldaut{ [ 4 .. 6 ] }{ [ 1 .. 3 ] }:= IdentityMat( 3, f );;|
  !gapprompt@gap>| !gapinput@fieldaut{ [ 7 .. 9 ] }{ [ 4 .. 6 ] }:= IdentityMat( 3, f );;|
  !gapprompt@gap>| !gapinput@fieldaut{ [ 1 .. 3 ] }{ [ 7 .. 9 ] }:= IdentityMat( 3, f );;|
  !gapprompt@gap>| !gapinput@v:= [ 1, 0, 0, 1, 0, 0, 1, 0, 0 ] * One( f );;|
  !gapprompt@gap>| !gapinput@g:= Group( Concatenation( mats, [ fieldaut ] ) );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, v );;|
  !gapprompt@gap>| !gapinput@Length( orb );|
  32319
  !gapprompt@gap>| !gapinput@act:= Action( g, orb );;|
  !gapprompt@gap>| !gapinput@Size( act ) = 3 * Size( s );|
  true
  !gapprompt@gap>| !gapinput@sm:= SmallerDegreePermutationRepresentation( act );;|
  !gapprompt@gap>| !gapinput@NrMovedPoints( Image( sm ) );|
  4617
  !gapprompt@gap>| !gapinput@g:= Image( sm );;|
\end{Verbatim}
 

 The next step is the construction of the central product of $G$ and a cyclic group of order nine, of the structure $3.(3 \times U_3(8).3_1)$. We could try to create the factor group of $9 \times 3.U_3(8).3_1$ modulo a diagonal subgroup of order three, by just applying the \texttt{/} operation. Since \textsf{GAP} would need too much time for that, and since we know better in which situation
we are, we create the desired action directly on suitable sets on pairs. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c:= CyclicGroup( IsPermGroup, 9 );;|
  !gapprompt@gap>| !gapinput@dp:= DirectProduct( g, c );;|
  !gapprompt@gap>| !gapinput@u:= Image( Embedding( dp, 1 ) );;|
  !gapprompt@gap>| !gapinput@c:= Image( Embedding( dp, 2 ) );;|
  !gapprompt@gap>| !gapinput@c3:= c.1^3;|
  (4618,4621,4624)(4619,4622,4625)(4620,4623,4626)
  !gapprompt@gap>| !gapinput@z:= Centre( u );;|
  !gapprompt@gap>| !gapinput@Size( z );  Length( GeneratorsOfGroup( z ) );|
  3
  1
  !gapprompt@gap>| !gapinput@diag:= Subgroup( dp, [ c3 * z.1 ] );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( dp, [ 1, 4618 ], OnPairs );;|
  !gapprompt@gap>| !gapinput@Length( orb );|
  41553
  !gapprompt@gap>| !gapinput@orb:= Set( orb );;|
  !gapprompt@gap>| !gapinput@orbs:= List( OrbitsDomain( diag, orb, OnSets ), Set );;|
  !gapprompt@gap>| !gapinput@Length( orbs );|
  13851
  !gapprompt@gap>| !gapinput@cp:= Action( dp, orbs, OnSetsSets );;|
  !gapprompt@gap>| !gapinput@Size( cp );|
  148925952
\end{Verbatim}
 

 The three isoclinic variants of the structure $3.U_3(8).3_1$ appear as subgroups of index three in this central product. (The fourth
subgroup of index three is of course a central product of the structure $3.(3 \times U_3(8))$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( cp );;|
  !gapprompt@gap>| !gapinput@Index( cp, der );|
  9
  !gapprompt@gap>| !gapinput@inter:= IntermediateSubgroups( cp, der ).subgroups;;|
  !gapprompt@gap>| !gapinput@z:= Centre( cp );;|
  !gapprompt@gap>| !gapinput@Size( z );|
  9
  !gapprompt@gap>| !gapinput@inter:= Filtered( inter, x -> not IsSubset( x, z ) );;|
  !gapprompt@gap>| !gapinput@List( inter, Size );|
  [ 49641984, 49641984, 49641984 ]
\end{Verbatim}
 

 Finally, we check that the three groups are isomorphic. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsomorphismGroups( inter[1], inter[2] ) <> fail;|
  true
  !gapprompt@gap>| !gapinput@IsomorphismGroups( inter[1], inter[3] ) <> fail;|
  true
\end{Verbatim}
  

 \emph{Remark:} 

 An indication that the groups might be isomorphic is the fact that their
character tables are equivalent, which can be shown much easier, as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t1:= CharacterTable( "3.U3(8).3_1" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTableIsoclinic( t1, rec( k:= 1 ) );;|
  !gapprompt@gap>| !gapinput@t3:= CharacterTableIsoclinic( t1, rec( k:= 2 ) );;|
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t1, t2 ) <> fail;|
  true
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t1, t3 ) <> fail;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $(2^2 \times F_4(2)):2 < B$ (March{\nobreakspace}2003)}}\label{subsect:BM6}
\logpage{[ 2, 4, 8 ]}
\hyperdef{L}{X7B46C77B850D3B4D}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $\overline{N}$ of the type $(2^2 \times F_4(2)):2$, which is the normalizer of a \texttt{2C} element $\overline{x}$ in $B$ (see{\nobreakspace}\cite[p. 217]{CCN85}). 

 We will see below that the normal Klein four group $V$ in $\overline{N}$ contains two \texttt{2A} elements in $B$. The \texttt{2A} centralizer in $B$, a group of the structure $2.{}^2E_6(2).2$, contains maximal subgroups of the type $2^2 \times F_4(2)$. So the two \texttt{2A} type subgroups $C_1$, $C_2$ in $V$ are conjugate in $\overline{N}$, and $Z = \langle x \rangle$ is the centre of $\overline{N}$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(45,20)(-5,5)
\put(15,0){\circle*{1}}
\put(10,5){\circle{1}} \put(7,5){\makebox(0,0){$C_1$}}
\put(15,5){\circle{1}} \put(13,5){\makebox(0,0){$C_2$}}
\put(20,5){\circle*{1}} \put(23,4){\makebox(0,0){$Z$}}
\put(15,10){\circle*{1}} \put(12,11){\makebox(0,0){$V$}}
\put(30,15){\circle*{1}}
\put(25,20){\circle*{1}} \put(22,21){\makebox(0,0){$U$}}
\put(30,20){\circle*{1}}
\put(35,20){\circle*{1}}
\put(30,25){\circle*{1}} \put(30,28){\makebox(0,0){$\overline{N}$}}
\put(15,0){\line(1,1){20}}
\put(10,5){\line(1,1){20}}
\put(15,0){\line(0,1){10}}
\put(30,15){\line(0,1){10}}
\put(15,0){\line(-1,1){5}}
\put(20,5){\line(-1,1){5}}
\put(30,15){\line(-1,1){5}}
\put(35,20){\line(-1,1){5}}
\end{picture}
\end{center}


 

 We start with computing the class fusion of the $2^2 \times F_4(2)$ type subgroup $U$ of $\overline{N}$ into $B$; in order to speed this up, we first compute the class fusion of the $F_4(2)$ subgroup of $U$ into $B$ (which is unique), and use it and the stored embedding into $U$ for prescribing an approximation of the desired class fusion. Additionally, we
prescribe (without loss of generality) that the \emph{first} involution class in $V$ is mapped to the class \texttt{2C} of $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@f42:= CharacterTable( "F4(2)" );;|
  !gapprompt@gap>| !gapinput@v4:= CharacterTable( "2^2" );;|
  !gapprompt@gap>| !gapinput@dp:= v4 * f42;|
  CharacterTable( "V4xF4(2)" )
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@f42fusb:= PossibleClassFusions( f42, b );;|
  !gapprompt@gap>| !gapinput@Length( f42fusb );|
  1
  !gapprompt@gap>| !gapinput@f42fusdp:= GetFusionMap( f42, dp );;|
  !gapprompt@gap>| !gapinput@comp:= CompositionMaps( f42fusb[1], InverseMap( f42fusdp ) );|
  [ 1, 3, 3, 3, 5, 6, 6, 7, 9, 9, 9, 9, 14, 14, 13, 13, 10, 14, 14, 12, 
    14, 17, 15, 18, 22, 22, 22, 22, 26, 26, 22, 22, 27, 27, 28, 31, 31, 
    39, 39, 36, 36, 33, 33, 39, 39, 35, 41, 42, 47, 47, 49, 49, 49, 58, 
    58, 56, 56, 66, 66, 66, 66, 58, 58, 66, 66, 69, 69, 60, 72, 72, 75, 
    79, 79, 81, 81, 85, 86, 83, 83, 91, 91, 94, 94, 104, 104, 109, 109, 
    116, 116, 114, 114, 132, 132, 140, 140 ]
  !gapprompt@gap>| !gapinput@v4fusdp:= GetFusionMap( v4, dp );|
  [ 1, 96 .. 286 ]
  !gapprompt@gap>| !gapinput@comp[ v4fusdp[2] ]:= 4;;|
  !gapprompt@gap>| !gapinput@dpfusb:= PossibleClassFusions( dp, b, rec( fusionmap:= comp ) );;|
  !gapprompt@gap>| !gapinput@Length( dpfusb );|
  4
  !gapprompt@gap>| !gapinput@Set( dpfusb, x -> x{ v4fusdp } );|
  [ [ 1, 4, 2, 2 ] ]
\end{Verbatim}
  

 As announced above, we see that $V$ contains two \texttt{2A} involutions. 

 Set $G = U / Z$, $M.G = U$, and $G.A = \overline{N} / Z$. The latter group is the direct product of $F_4(2).2$ and a cyclic group of order $2$. Next we compute the class fusion from $G$ into $G.A$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= dp / v4fusdp{ [ 1, 2 ] };;|
  !gapprompt@gap>| !gapinput@tblMG:= dp;;|
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@tblGA:= c2 * CharacterTable( "F4(2).2" );|
  CharacterTable( "C2xF4(2).2" )
  !gapprompt@gap>| !gapinput@GfusGA:= PossibleClassFusions( tblG, tblGA );;|
  !gapprompt@gap>| !gapinput@Length( GfusGA );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblG, GfusGA, tblGA ) );|
  1
\end{Verbatim}
 

 In principle, we have to be careful which of these equivalent maps we choose,
since the underlying symmetries may be broken in the central extension $M.G \rightarrow G$, for which we choose the default factor fusion. 

 However, in this situation the fusion $G$ into $G.A$ is unique already up to table automorphisms of the table of $G.A$, so we are free to choose one map. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( Group( () ), GfusGA, tblGA ) );|
  1
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, GfusGA[1], tblGA );|
\end{Verbatim}
 

 The tables involved determine the character table of $M.G.A \cong \overline{N}$ uniquely. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );;|
  !gapprompt@gap>| !gapinput@Length( elms );|
  1
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, elms[1],|
  !gapprompt@>| !gapinput@              "(2^2xF4(2)):2" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  1
  !gapprompt@gap>| !gapinput@tblMGA:= poss[1].table;;|
\end{Verbatim}
  

 Finally, we compare the table we constructed with the one that is contained in
the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tblMGA,|
  !gapprompt@>| !gapinput@                 CharacterTable( "(2^2xF4(2)):2" ) ) );|
  true
\end{Verbatim}
                                    }

  
\subsection{\textcolor{Chapter }{The Character Table of $2.(S_3 \times Fi_{22}.2) < 2.B$ (March{\nobreakspace}2003)}}\label{subsect:2.BM9}
\logpage{[ 2, 4, 9 ]}
\hyperdef{L}{X8254AA4A843F99BE}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $\overline{M}$ of type $S_3 \times Fi_{22}.2$. In order to compute the character table of its preimage $M$ in the Schur cover $2.B$, we first analyse the structure of $M$ and then describe the construction of the character table from known character
tables. 

 Let $Z$ denote the centre of $2.B$. We start with $\overline{M} = M/Z$. Its class fusion into $B$ is uniquely determined by the character tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s3:= CharacterTable( "Dihedral", 6 );;|
  !gapprompt@gap>| !gapinput@fi222:= CharacterTable( "Fi22.2" );;|
  !gapprompt@gap>| !gapinput@tblMbar:= s3 * fi222;;|
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@Mbarfusb:= PossibleClassFusions( tblMbar, b );;|
  !gapprompt@gap>| !gapinput@Length( Mbarfusb );|
  1
\end{Verbatim}
 

 The subgroup of type $Fi_{22}$ lifts to the double cover $2.Fi_{22}$ (that is, a group that is \emph{not} a direct product $2 \times Fi_{22}$) in $2.B$ since $2.B$ admits no class fusion from $Fi_{22}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2b:= CharacterTable( "2.B" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( CharacterTable( "Fi22" ), 2b );|
  [  ]
\end{Verbatim}
 

 So the preimage of $Fi_{22}.2$ is one of the two nonisomorphic but isoclinic groups of type $2.Fi_{22}.2$, and we have to decide which one really occurs. For that, we consider the
subgroup of type $3 \times Fi_{22}.2$ in $B$, which is a \texttt{3A} centralizer in $B$. Its preimage has the structure $3 \times 2.Fi_{22}.2$ because the preimage of the central group of order $3$ is a cyclic group of order $6$ and thus contains a normal complement of the $2.Fi_{22}$ type subgroup. And a class fusion into $2.B$ is possible only from the direct product containing the $2.Fi_{22}.2$ group that is printed in the \textsf{Atlas}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c3:= CharacterTable( "Cyclic", 3 );;|
  !gapprompt@gap>| !gapinput@2fi222:= CharacterTable( "2.Fi22.2" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( c3 * CharacterTableIsoclinic( 2fi222 ), 2b );|
  [  ]
\end{Verbatim}
 

 Next we note that the involutions in the normal subgroup $\overline{S}$ of type $S_3$ in $\overline{M}$ lift to involutions in $2.B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s3inMbar:= GetFusionMap( s3, tblMbar );|
  [ 1, 113 .. 225 ]
  !gapprompt@gap>| !gapinput@s3inb:= Mbarfusb[1]{ s3inMbar };|
  [ 1, 6, 2 ]
  !gapprompt@gap>| !gapinput@2bfusb:= GetFusionMap( 2b, b );;|
  !gapprompt@gap>| !gapinput@2s3in2B:= InverseMap( 2bfusb ){ s3inb };|
  [ [ 1, 2 ], [ 8, 9 ], 3 ]
  !gapprompt@gap>| !gapinput@CompositionMaps( OrdersClassRepresentatives( 2b ), 2s3in2B );|
  [ [ 1, 2 ], [ 3, 6 ], 2 ]
\end{Verbatim}
 

 Thus the preimage $S$ of $\overline{S}$ contains elements of order $6$ but no elements of order $4$, which implies that $S$ is a direct product $2 \times S_3$. 

 The two complements $C_1$, $C_2$ of $Z$ in $S$ are normal in the preimage $N$ of $\overline{N} = S_3 \times Fi_{22}$, which is thus of type $S_3 \times 2.Fi_{22}$. However, they are conjugate under the action of $2.Fi_{22}.2$, as no class fusion from $S_3 \times 2.Fi_{22}.2$ into $2.B$ is possible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleClassFusions( s3 * 2fi222, 2b );|
  [  ]
\end{Verbatim}
 

 (More specifically, the classes of element order $36$ in $2.Fi_{22}.2$ have centralizer orders $36$ and $72$, so their centralizer orders in $S_3 \times 2.Fi_{22}.2$ are $216$ and $432$; but the centralizers of order $36$ elements in $2.B$ have centralizer order at most $216$.) 

 Now let us see how the character table of $M$ can be constructed. 

 Let $Y$ denote the normal subgroup of order $3$ in $M$, and $U$ its centralizer in $M$, which has index $2$ in $M$. Then the character table of $M$ is determined by the tables of $M/Y$, $U$, $U/Y \cong 2.Fi_{22}.2$, and the action of $M$ on the classes of $U$. 

 As for $M/Y$, consider the normal subgroup $N = N_M(C_1)$ of index $2$ in $M$. In particular, $S/Y$ is central in $N/Y$ but not in $M/Y$, so the character table of $M/Y$ is determined by the tables of $M/(YZ)$, $N/Y \cong 2 \times 2.Fi_{22}$, $N/(YZ) \cong 2 \times Fi_{22}$, and the action of $M/Y$ on the classes of $N/Y$. 

 Thus we proceed in two steps, starting with the computation of the character
table of $M/Y$, for which we choose the name according to the structure $2^2.Fi_{22}.2$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(45,40)(0,0)
\put(15,0){\circle*{1}}
\put(15,10){\circle*{1}} \put(18,9){\makebox(0,0){$Y$}}
\put(10,15){\circle{1}} \put(7,15){\makebox(0,0){$C_1$}}
\put(15,15){\circle{1}} \put(13,15){\makebox(0,0){$C_2$}}
\put(20,15){\circle*{1}} \put(23,14){\makebox(0,0){$6$}}
\put(15,20){\circle*{1}} \put(12,21){\makebox(0,0){$S$}}
\put(20,5){\circle*{1}} \put(23,4){\makebox(0,0){$Z$}}
\put(30,15){\circle*{1}}
\put(35,20){\circle*{1}}
\put(30,25){\circle*{1}}
\put(35,30){\circle*{1}} \put(38,30){\makebox(0,0){$U$}}
\put(30,30){\circle*{1}}
\put(25,30){\circle*{1}} \put(22,31){\makebox(0,0){$N$}}
\put(30,35){\circle*{1}} \put(30,38){\makebox(0,0){$M$}}
\put(15,0){\line(1,1){20}}
\put(15,10){\line(1,1){20}}
\put(10,15){\line(1,1){20}}
\put(15,0){\line(0,1){20}}
\put(20,5){\line(0,1){10}}
\put(30,15){\line(0,1){20}}
\put(35,20){\line(0,1){10}}
\put(15,10){\line(-1,1){5}}
\put(20,15){\line(-1,1){5}}
\put(30,25){\line(-1,1){5}}
\put(35,30){\line(-1,1){5}}
\end{picture}
\end{center}


 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@2fi22:= CharacterTable( "2.Fi22" );;|
  !gapprompt@gap>| !gapinput@tblNmodY:= c2 * 2fi22;;|
  !gapprompt@gap>| !gapinput@centre:= GetFusionMap( 2fi22, tblNmodY ){|
  !gapprompt@>| !gapinput@                ClassPositionsOfCentre( 2fi22 ) };|
  [ 1, 2 ]
  !gapprompt@gap>| !gapinput@tblNmod6:= tblNmodY / centre;;|
  !gapprompt@gap>| !gapinput@tblMmod6:= c2 * fi222;;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblNmod6, tblMmod6 );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  1
  !gapprompt@gap>| !gapinput@StoreFusion( tblNmod6, fus[1], tblMmod6 );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblNmodY, tblNmod6, tblMmod6 );;|
  !gapprompt@gap>| !gapinput@Length( elms );|
  1
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeMGA( tblNmodY, tblNmod6, tblMmod6,|
  !gapprompt@>| !gapinput@              elms[1], "2^2.Fi22.2" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  1
  !gapprompt@gap>| !gapinput@tblMmodY:= poss[1].table;|
  CharacterTable( "2^2.Fi22.2" )
\end{Verbatim}
 

 So we found a unique solution for the character table of $M/Y$. Now we compute the table of $M$. For that, we have to specify the class fusion of $U/Y$ into $M/Y$; it is unique up to table automorphisms of $M/Y$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblU:= c3 * 2fi222;;|
  !gapprompt@gap>| !gapinput@tblUmodY:= tblU / GetFusionMap( c3, tblU );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblUmodY, tblMmodY );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( Group( () ), fus, tblMmodY ) );|
  1
  !gapprompt@gap>| !gapinput@StoreFusion( tblUmodY, fus[1], tblMmodY );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblU, tblUmodY, tblMmodY );;|
  !gapprompt@gap>| !gapinput@Length( elms );|
  1
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeMGA( tblU, tblUmodY, tblMmodY,|
  !gapprompt@>| !gapinput@              elms[1], "(S3x2.Fi22).2" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  1
  !gapprompt@gap>| !gapinput@tblM:= poss[1].table;|
  CharacterTable( "(S3x2.Fi22).2" )
  !gapprompt@gap>| !gapinput@mfus2b:= PossibleClassFusions( tblM, 2b );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblM, mfus2b, 2b ) );|
  1
\end{Verbatim}
 

 We did not construct $M$ as a central extension of $\overline{M}$, so we verify that the tables fit together; note that this way we get also
the class fusion from $M$ onto $\overline{M}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Irr( tblM / ClassPositionsOfCentre( tblM ) ) = Irr( tblMbar );|
  true
\end{Verbatim}
 

 Finally, we compare the table we constructed with the one that is contained in
the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tblM,|
  !gapprompt@>| !gapinput@                 CharacterTable( "(S3x2.Fi22).2" ) ) );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $(2 \times 2.Fi_{22}):2 < Fi_{24}$ (November{\nobreakspace}2008)}}\label{subsect:(2x2.Fi22):2_in_Fi24}
\logpage{[ 2, 4, 10 ]}
\hyperdef{L}{X7AF125168239D208}{}
{
  The automorphism group $Fi_{24}$ of the sporadic simple group $Fi_{24}^{\prime}$ contains a maximal subgroup $N$ of the type $(2 \times 2.Fi_{22}):2$, whose intersection with $Fi_{24}^{\prime}$ is $2.Fi_{22}.2$ (see{\nobreakspace}\cite[p. 207]{CCN85}). 

 The normal Klein four group $V$ in $N$ contains two \texttt{2C} elements in $Fi_{24}$, because the \texttt{2C} centralizer in $Fi_{24}$, a group of the structure $2 \times Fi_{23}$, contains maximal subgroups of the type $2 \times 2.Fi_{22}$, and so the two \texttt{2C} type subgroups $C_1$, $C_2$ in $V$ are conjugate in $N$, and $Z = Z(N)$ is the centre of $N \cap Fi_{24}^{\prime}$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(45,25)(0,17)
\put(15,15){\circle*{1}}
\put(10,20){\circle{1}} \put(7,20){\makebox(0,0){$C_1$}}
\put(15,20){\circle{1}} \put(13,20){\makebox(0,0){$C_2$}}
\put(20,20){\circle*{1}} \put(23,19){\makebox(0,0){$Z$}}
\put(15,25){\circle*{1}} \put(12,26){\makebox(0,0){$V$}}
\put(30,30){\circle*{1}}
\put(25,35){\circle*{1}} \put(22,36){\makebox(0,0){$U$}}
\put(30,35){\circle*{1}}
\put(35,35){\circle*{1}} \put(43,35){\makebox(0,0){$N \cap Fi_{24}^{\prime}$}}
\put(30,40){\circle*{1}} \put(30,43){\makebox(0,0){$N$}}
\put(15,15){\line(1,1){20}}
\put(10,20){\line(1,1){20}}
\put(15,15){\line(0,1){10}}
\put(30,30){\line(0,1){10}}
\put(15,15){\line(-1,1){5}}
\put(20,20){\line(-1,1){5}}
\put(30,30){\line(-1,1){5}}
\put(35,35){\line(-1,1){5}}
\end{picture}
\end{center}


 

 With $U = C_N(C_1)$, a group of the type $2 \times 2.Fi_{22}$, we set $G = U / Z$, $M.G = U$, and $G.A = N / Z$. The latter group is the direct product of $Fi_{22}.2$ and a cyclic group of order $2$. 

 This is exactly the situation of the construction of the character table of
the group that is called $2^2.Fi_{22}.2$ in Section{\nobreakspace}\ref{subsect:2.BM9}, where this group occurs as ``$M/Y$''. Since the character table is uniquely determined by the input data, it is
the table we are interested in here. 

 So all we have to do is to compute the class fusion from this table into that
of $Fi_{24}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fi24:= CharacterTable( "Fi24" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2^2.Fi22.2" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( t, fi24 );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( t, fus, fi24 ) );|
  1
\end{Verbatim}
 

 (It should be noted that we did not need the character table of the $2.Fi_{22}.2$ type subgroup of $N$ in the above construction, only the tables of $2.Fi_{22}$ and $Fi_{22}.2$ were used.) 

 The fact that the character table of a factor of a subgroup of $2.B$ occurs as the character table of a subgroup of $Fi_{24}$ is not a coincidence. In fact, the groups $3.Fi_{24}$ and $2.B$ are subgroups of the Monster group $M$, and the subgroup $U = 2.(S_3 \times Fi_{22}.2)$ of $2.B$ normalizes an element of order three. The full normalizer of this element in $M$ is $3.Fi_{24}$, which means that we have established $U$ as a (maximal) subgroup of $3.Fi_{24}$. Note that we have constructed the character table of $U$ in Section{\nobreakspace}\ref{subsect:2.BM9}. 

 Let us compute the class fusion of $U$ into $3.Fi_{24}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "(S3x2.Fi22).2" );;|
  !gapprompt@gap>| !gapinput@3fi24:= CharacterTable( "3.Fi24" );;                        |
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( t, 3fi24 );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  16
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( t, fus, 3fi24 ) );|
  1
  !gapprompt@gap>| !gapinput@GetFusionMap( t, 3fi24 ) in fus; |
  true
\end{Verbatim}
 

 Moreover, $U$ turns out to be the full normalizer of a \texttt{6A} element in $M$, 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@tfusm:= PossibleClassFusions( t, m );;|
  !gapprompt@gap>| !gapinput@Length( tfusm );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( t, tfusm, m ) );|
  1
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@       x -> Sum( SizesConjugacyClasses( t ){ x } ) = 6 );|
  [ [ 1, 2, 142, 143 ] ]
  !gapprompt@gap>| !gapinput@Set( tfusm, x -> x{ nsg[1] } );|
  [ [ 1, 2, 4, 13 ] ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t ){ nsg[1] };|
  [ 1, 2, 3, 6 ]
  !gapprompt@gap>| !gapinput@PowerMap( m, -1 )[13];|
  13
  !gapprompt@gap>| !gapinput@Size( t ) = 2 * SizesCentralizers( m )[13];|
  true
\end{Verbatim}
  

 (Thus $U$ is also the full normalizer of an element of order six in $2.B$ and in $3.Fi_{24}$.) }

  
\subsection{\textcolor{Chapter }{The Character Table of $S_3 \times 2.U_4(3).2_2 \leq 2.Fi_{22}$ (September 2002)}}\label{subsect:S_3x2.U_4(3).2_2_in_2.Fi22}
\logpage{[ 2, 4, 11 ]}
\hyperdef{L}{X79C93F7D87D9CF1D}{}
{
  The sporadic simple Fischer group $Fi_{22}$ contains a maximal subgroup $\overline{M}$ of type $S_3 \times U_4(3).2_2$ (see{\nobreakspace}\cite[p. 163]{CCN85}). We claim that the preimage $M$ of $\overline{M}$ in the central extension $2.Fi_{22}$ has the structure $S_3 \times 2.U_4(3).2_2$, where the factor of type $2.U_4(3).2_2$ is the one printed in the \textsf{Atlas}. 

 For that, we first note that the normal subgroup $\overline{S}$ of type $S_3$ in $\overline{M}$ lifts to a group $S$ which has the structure $2 \times S_3$. This follows from the fact that all involutions in $Fi_{22}$ lift to involutions in $2.Fi_{22}$ or, equivalently, the central involution in $2.Fi_{22}$ is not a square.   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(45,35)(0,0)
\put(15,0){\circle*{1}}
\put(5,10){\circle*{1}} \put(2,10){\makebox(0,0){$S_3$}}
\put(10,15){\circle*{1}} \put(8,16){\makebox(0,0){$S$}}
\put(20,25){\circle*{1}}
\put(20,5){\circle*{1}}
\put(30,15){\circle*{1}} \put(33,14){\makebox(0,0){$U^{\prime}$}}
\put(35,20){\circle*{1}} \put(38,20){\makebox(0,0){$U$}}
\put(25,30){\circle*{1}} \put(25,33){\makebox(0,0){$M$}}
\put(15,0){\line(1,1){20}}
\put(5,10){\line(1,1){20}}
\put(15,0){\line(-1,1){10}}
\put(20,5){\line(-1,1){10}}
\put(30,15){\line(-1,1){10}}
\put(35,20){\line(-1,1){10}}
\end{picture}
\end{center}


 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2Fi22:= CharacterTable( "2.Fi22" );;|
  !gapprompt@gap>| !gapinput@ClassPositionsOfCentre( 2Fi22 );|
  [ 1, 2 ]
  !gapprompt@gap>| !gapinput@2 in PowerMap( 2Fi22, 2 );|
  false
\end{Verbatim}
 

 Second, the normal subgroup $\overline{U} \cong U_4(3).2_2$ of $Fi_{22}$ lifts to a nonsplit extension $U$ in $2.Fi_{22}$, since $2.Fi_{22}$ contains no $U_4(3)$ type subgroup. Furthermore, $U$ is the $2.U_4(3).2_2$ type group printed in the \textsf{Atlas} because the isoclinic variant does not admit a class fusion into $2.Fi_{22}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleClassFusions( CharacterTable( "U4(3)" ), 2Fi22 );|
  [  ]
  !gapprompt@gap>| !gapinput@tblU:= CharacterTable( "2.U4(3).2_2" );;|
  !gapprompt@gap>| !gapinput@iso:= CharacterTableIsoclinic( tblU );|
  CharacterTable( "Isoclinic(2.U4(3).2_2)" )
  !gapprompt@gap>| !gapinput@PossibleClassFusions( iso, 2Fi22 );                      |
  [  ]
\end{Verbatim}
 

 Now there are just two possibilities. Either the two $S_3$ type subgroups in $S$ are normal in $M$ (and thus $M$ is the direct product of any such $S_3$ with the preimage of the $U_4(3).2_2$ type subgroup), or they are conjugate in $M$. 

 Suppose we are in the latter situation, let $z$ be a generator of the centre of $2.Fi_{22}$, and let $\tau$, $\sigma$ be an involution and an order three element respectively, in one of the $S_3$ type subgroups. 

 Each element $g \in U \setminus U^{\prime}$ conjugates $\tau$ to an involution in the other $S_3$ type subgroup of $S$, so $g^{-1} \tau g = \tau \sigma^{i} z$ for some $i \in \{ 0, 1, 2 \}$. Furthermore, it is possible to choose $g$ as an involution. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@derpos:= ClassPositionsOfDerivedSubgroup( tblU );;|
  !gapprompt@gap>| !gapinput@outer:= Difference( [ 1 .. NrConjugacyClasses( tblU ) ], derpos );;|
  !gapprompt@gap>| !gapinput@2 in OrdersClassRepresentatives( tblU ){ outer };|
  true
\end{Verbatim}
 

 With this choice, $(g \tau)^2 = \tau \sigma^{i} z \tau = \sigma^{-i} z$ holds, which means that $(g \tau)^3$ squares to $z$. As we have seen above, this is impossible, hence $M$ is a direct product, as claimed. 

 The class fusion of $M$ into $2.Fi_{22}$ is determined by the character tables, up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblM:= CharacterTable( "Dihedral", 6 ) * tblU;;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblM, 2Fi22 );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblM, fus, 2Fi22 ) );|
  1
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tblM,|
  !gapprompt@>| !gapinput@                 CharacterTable( "2.Fi22M8" ) ) );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $4.HS.2 \leq HN.2$ (May 2002)}}\label{subsect:HN2}
\logpage{[ 2, 4, 12 ]}
\hyperdef{L}{X83724BCE86FCD77B}{}
{
   The maximal subgroup $U$ of type $2.HS.2$ in the sporadic simple group $HN$ extends to a group $N$ of structure $4.HS.2$ in the automorphism group $HN.2$ of $HN$ (see{\nobreakspace}\cite[p. 166]{CCN85}). 

 $N$ is the normalizer of a \texttt{4D} element $g \in HN.2 \setminus HN$. The centralizer $C$ of $g$ is of type $4.HS$, which is the central product of $2.HS$ and the cyclic group $\langle g \rangle$ of order $4$. We have $Z = Z(N) = \langle g^2 \rangle$. Since $U/Z \cong HS.2$ is a complement of $\langle g \rangle / Z$ in $N/Z$, the factor group $N/Z$ is a direct product of $HS.2$ and a cyclic group of order $2$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(45,25)(0,0)
\put(15,0){\circle*{1}}
\put(15,5){\circle*{1}} \put(18,4){\makebox(0,0){$Z$}}
\put(10,10){\circle*{1}} \put(7,10){\makebox(0,0){$\langle g \rangle$}}
\put(25,15){\circle*{1}}
\put(20,20){\circle*{1}} \put(18,22){\makebox(0,0){$C$}}
\put(25,20){\circle*{1}}
\put(30,20){\circle*{1}} \put(33,20){\makebox(0,0){$U$}}
\put(25,25){\circle*{1}} \put(25,28){\makebox(0,0){$N$}}
\put(15,5){\line(1,1){15}}
\put(10,10){\line(1,1){15}}
\put(15,0){\line(0,1){5}}
\put(25,15){\line(0,1){10}}
\put(15,5){\line(-1,1){5}}
\put(25,15){\line(-1,1){5}}
\put(30,20){\line(-1,1){5}}
\end{picture}
\end{center}


 

 Thus $N$ has the structure $2.G.2$, the normal subgroup $2.G$ being $C$, the factor group $G.2$ being $2 \times HS.2$, and $G$ being $2 \times HS$. Each element in $N \setminus C$ inverts $g$, so $N$ acts fixed point freely on the faithful irreducible characters of $C$. Hence we can use \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) for constructing the character table of $N$ from the tables of $C$ and $N/Z$ and the action of $N$ on the classes of $C$. 

 We start with the table of the central product $C$. It can be viewed as an isoclinic table of the direct product of $2.HS$ and a cyclic group of order $2$, see{\nobreakspace}\ref{subsect:isoclinism}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@tblC:= CharacterTableIsoclinic( CharacterTable( "2.HS" ) * c2 );;|
\end{Verbatim}
 

 The table of $G$ is given as that of the factor group by the unique normal subgroup of $C$ that consists of two conjugacy classes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),|
  !gapprompt@>| !gapinput@              x -> Length( x ) = 2 );|
  [ [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@tblCbar:= tblC / ord2[1];;|
\end{Verbatim}
 

 Finally, we construct the table of the extension $G.2$ and the class fusion of $G$ into this table (which is uniquely determined by the character tables). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTable( "HS.2" ) * c2;;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblCbar, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
        19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 29, 30, 31, 32, 
        33, 34, 35, 36, 35, 36, 37, 38, 39, 40, 41, 42, 41, 42 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblCbar, fus[1], tblNbar );|
\end{Verbatim}
 

 Now we compute the table automorphisms of the table of $C$ that are compatible with the extension $N$; we get two solutions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblCbar, tblNbar );|
  [ [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6, 8 ], [ 7 ], [ 9 ], [ 10 ], 
        [ 11 ], [ 12, 14 ], [ 13 ], [ 15 ], [ 16, 18 ], [ 17 ], [ 19 ], 
        [ 20 ], [ 21 ], [ 22 ], [ 23 ], [ 24, 26 ], [ 25 ], [ 27 ], 
        [ 28, 30 ], [ 29 ], [ 31 ], [ 32, 34 ], [ 33 ], [ 35 ], 
        [ 36, 38 ], [ 37 ], [ 39 ], [ 40, 42 ], [ 41 ], [ 43 ], 
        [ 44, 46 ], [ 45 ], [ 47 ], [ 48, 50 ], [ 49 ], [ 51, 53 ], 
        [ 52, 54 ], [ 55 ], [ 56, 58 ], [ 57 ], [ 59 ], [ 60 ], 
        [ 61, 65 ], [ 62, 68 ], [ 63, 67 ], [ 64, 66 ], [ 69 ], 
        [ 70, 72 ], [ 71 ], [ 73 ], [ 74, 76 ], [ 75 ], [ 77, 81 ], 
        [ 78, 84 ], [ 79, 83 ], [ 80, 82 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6, 8 ], [ 7 ], [ 9 ], [ 10 ], 
        [ 11 ], [ 12, 14 ], [ 13 ], [ 15, 17 ], [ 16 ], [ 18 ], [ 19 ], 
        [ 20 ], [ 21 ], [ 22 ], [ 23 ], [ 24, 26 ], [ 25 ], [ 27 ], 
        [ 28, 30 ], [ 29 ], [ 31 ], [ 32, 34 ], [ 33 ], [ 35, 37 ], 
        [ 36 ], [ 38 ], [ 39 ], [ 40, 42 ], [ 41 ], [ 43 ], [ 44, 46 ], 
        [ 45 ], [ 47, 49 ], [ 48 ], [ 50 ], [ 51, 53 ], [ 52, 54 ], 
        [ 55 ], [ 56, 58 ], [ 57 ], [ 59 ], [ 60 ], [ 61, 65 ], 
        [ 62, 68 ], [ 63, 67 ], [ 64, 66 ], [ 69, 71 ], [ 70 ], [ 72 ], 
        [ 73 ], [ 74, 76 ], [ 75 ], [ 77, 83 ], [ 78, 82 ], [ 79, 81 ], 
        [ 80, 84 ] ] ]
\end{Verbatim}
 

 We compute the possible character tables arising from these two actions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblCbar, tblNbar, pi, "4.HS.2" ) );;|
  !gapprompt@gap>| !gapinput@List( poss, Length );|
  [ 0, 2 ]
\end{Verbatim}
 

 So one of the two table automorphisms turned out to be impossible; the reason
is that the corresponding ``character table'' would not admit a $2$-power map. (Alternatively, we could exclude this action on $C$ by the fact that it is not compatible with the action of $2.HS.2$ on its subgroup $2.HS$, which occurs here as the restriction of the action of $N$ on $C$ to that of $U$ on $C \cap U$.) 

 The other table automorphism leads to two possible character tables. This is
not surprising since $N$ contains a subgroup of type $2.HS.2$, and the above setup does not determine which of the two isoclinism types of
this group occurs. Let us look at the possible class fusions from these tables
into that of $HN.2$: 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@result:= poss[2];;|
  !gapprompt@gap>| !gapinput@hn2:= CharacterTable( "HN.2" );;|
  !gapprompt@gap>| !gapinput@possfus:= List( result, r -> PossibleClassFusions( r.table, hn2 ) );;|
  !gapprompt@gap>| !gapinput@List( possfus, Length );|
  [ 32, 0 ]
  !gapprompt@gap>| !gapinput@RepresentativesFusions( result[1].table, possfus[1], hn2 );|
  [ [ 1, 46, 2, 2, 47, 3, 7, 45, 4, 58, 13, 6, 46, 47, 6, 47, 7, 48, 
        10, 62, 20, 9, 63, 21, 12, 64, 24, 27, 49, 50, 13, 59, 14, 16, 
        70, 30, 18, 53, 52, 17, 54, 20, 65, 22, 36, 56, 26, 76, 39, 77, 
        28, 59, 58, 31, 78, 41, 34, 62, 35, 65, 2, 45, 3, 45, 6, 48, 7, 
        47, 17, 54, 13, 49, 13, 50, 14, 50, 18, 53, 18, 52, 21, 56, 25, 
        57, 27, 59, 30, 60, 44, 72, 34, 66, 35, 66, 41, 71 ] ]
\end{Verbatim}
 

 Only one of the candidates admits an embedding, and the class fusion is unique
up to table automorphisms. So we are done. 

 Finally, we compare the table we have constructed with the one that is
contained in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@libtbl:= CharacterTable( "4.HS.2" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( result[1].table,|
  !gapprompt@>| !gapinput@                 libtbl ) );|
  true
\end{Verbatim}
 

 (The following paragraphs have been added in May 2006.) 

 The Brauer tables of $N = 2.G.2$ can be constructed as in Section{\nobreakspace}\ref{subsect:ATLASMGA}. Note that the Brauer tables of $C = 2.G$ and of $N / Z = G.2$ are automatically available because the ordinary tables constructed above
arose as a direct product and as an isoclinic table of a direct product, and
the \textsf{GAP} Character Table Library contains the Brauer tables of the direct factors
involved. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@StoreFusion( tblC, result[1].MGfusMGA, result[1].table );|
  !gapprompt@gap>| !gapinput@ForAll( PrimeDivisors( Size( result[1].table ) ),|
  !gapprompt@>| !gapinput@           p -> IsRecord( TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                    BrauerTableOfTypeMGA( tblC mod p, tblNbar mod p,|
  !gapprompt@>| !gapinput@                        result[1].table ).table, libtbl mod p ) ) );|
  true
\end{Verbatim}
 

 Here it is advantageous that the Brauer table of $C / Z = G$ is not needed in the construction, since \textsf{GAP} does not know how to compute the $p$-modular table of the ordinary table of $G$ constructed above. Of course we have $G \cong 2 \times HS$, and the $p$-modular table of $HS$ is known, but in the construction of the table of $G$ as a factor of the table of $2.G$, the information is missing that the nonsolvable simple direct factor of $2.G$ corresponds to the library table of $HS$.   }

  
\subsection{\textcolor{Chapter }{The Character Tables of $4.A_6.2_3$, $12.A_6.2_3$, and $4.L_2(25).2_3$}}\label{subsect:4.A_6.2_3, 12.A_6.2_3, 4.L_2(25).2_3}
\logpage{[ 2, 4, 13 ]}
\hyperdef{L}{X7E9A88DA7CBF6426}{}
{
  For the ``broken box'' cases in the \textsf{Atlas} (see{\nobreakspace}\cite[p. xxiv]{CCN85}), the character tables can be constructed with the $M.G.A$ construction method from Section{\nobreakspace}\ref{subsect:theorMGA}. (The situation with $9.U_3(8).3_3$ is more complicated, this group will be considered in Section{\nobreakspace}\ref{subsect:9.U_3(8).3_3}.) 

 The group $N = 4.A_6.2_3$ (see{\nobreakspace}\cite[p. 5]{CCN85}) can be described as an upward extension of the normal subgroup $C \cong 4.A_6$ {\textendash}which is a central product of $U = 2.A_6$ and a cyclic group $\langle g \rangle$ of order $4${\textendash} by a cyclic group of order $2$, such that the factor group of $N$ by the central subgroup $Z = \langle g^2 \rangle$ of order $2$ is isomorphic to a subdirect product $\overline{N}$ of $M_{10} = A_6.2_3$ and a cyclic group of order $4$ and that $N$ acts nontrivially on its normal subgroup $\langle g \rangle$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(25,30)(0,0)
\put(10,0){\circle*{1}}
\put(10,5){\circle*{1}} \put(7,4){\makebox(0,0){$Z$}}
\put(5,10){\circle*{1}} \put(2,10){\makebox(0,0){$\langle g \rangle$}}
\put(20,15){\circle*{1}} \put(23,15){\makebox(0,0){$U$}}
\put(15,20){\circle*{1}} \put(12,20){\makebox(0,0){$C$}}
\put(15,25){\circle*{1}} \put(15,28){\makebox(0,0){$N$}}
\put(10,5){\line(1,1){10}}
\put(5,10){\line(1,1){10}}
\put(10,0){\line(0,1){5}}
\put(15,20){\line(0,1){5}}
\put(10,5){\line(-1,1){5}}
\put(20,15){\line(-1,1){5}}
\end{picture}
\end{center}


 

 Thus $N$ has the structure $2.G.2$, with $2.G = C$ and $G.2 = \overline{N}$. These two groups are isoclinic variants of $2 \times 2.A_6$ and of $2 \times M_{10}$, respectively. Each element in $N \setminus C$ inverts $g$, so it acts fixed point freely on the faithful irreducible characters of $C$. Hence we can use \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) for constructing the character table of $N$ from the tables of $C$ and $N/Z$ and the action of $N$ on the classes of $C$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@2a6:= CharacterTable( "2.A6" );;|
  !gapprompt@gap>| !gapinput@tblC:= CharacterTableIsoclinic( 2a6 * c2 );;|
  !gapprompt@gap>| !gapinput@ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),|
  !gapprompt@>| !gapinput@              x -> Length( x ) = 2 );|
  [ [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@tblG:= tblC / ord2[1];;|
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTableIsoclinic( CharacterTable( "A6.2_3" ) * c2 );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblG, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 9, 10, 9, 10 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, fus[1], tblNbar );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );|
  [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 12 ], 
        [ 9, 13 ], [ 10, 14 ], [ 15, 17 ], [ 16, 18 ], [ 19, 23 ], 
        [ 20, 24 ], [ 21, 25 ], [ 22, 26 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
        [ 9, 13 ], [ 10, 12 ], [ 15 ], [ 16, 18 ], [ 17 ], [ 19, 23 ], 
        [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
        [ 9, 13 ], [ 10, 12 ], [ 15, 17 ], [ 16 ], [ 18 ], [ 19, 23 ], 
        [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ] ]
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblG, tblNbar, pi, "4.A6.2_3" ) );|
  [ [  ], [  ], 
    [ 
        rec( 
            MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 9, 6, 9, 8, 7, 10, 
                11, 10, 12, 13, 14, 15, 16, 13, 16, 15, 14 ], 
            table := CharacterTable( "4.A6.2_3" ) ) ] ]
\end{Verbatim}
 

 So we get a unique solution. It coincides with the character table of $4.A_6.2_3$ that is stored in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= poss[3][1].table;;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@                 CharacterTable( "4.A6.2_3" ) ) );|
  true
\end{Verbatim}
 

 Note that the first two candidates for the action lead to tables that do not
admit a $2$-power map. In fact the $2$-power map of the character table of $4.A_6.2_3$ is not uniquely determined by the matrix of character values. However, the $2$-power map is unique up to automorphisms of this matrix; the function \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) takes this into account, and returns only representatives, in this case one
table.      

 As is mentioned in the \textsf{Atlas} (see \cite[Section 6.7]{CCN85}), the group $\Gamma L(2,9)$ contains subgroups of the structure $4.A_6.2_3$. We can find them as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= GammaL(2,9);;|
  !gapprompt@gap>| !gapinput@phi:= IsomorphismPermGroup( g );;|
  !gapprompt@gap>| !gapinput@img:= Image( phi );;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( img );;|
  !gapprompt@gap>| !gapinput@derder:= DerivedSubgroup( der );;|
  !gapprompt@gap>| !gapinput@Index( img, derder );|
  16
  !gapprompt@gap>| !gapinput@inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,|
  !gapprompt@>| !gapinput@               s -> Size( s ) = 4 * Size( derder ) and|
  !gapprompt@>| !gapinput@                    IsCyclic( CommutatorFactorGroup( s ) ) and|
  !gapprompt@>| !gapinput@                    Size( Centre( s ) ) = 2 );;|
  !gapprompt@gap>| !gapinput@Length( inter );|
  2
  !gapprompt@gap>| !gapinput@ForAll( inter, x -> IsConjugate( img, inter[1], x ) );|
  true
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@                 CharacterTable( inter[1] ) ) );|
  true
\end{Verbatim}
 

 The \textsf{Atlas} states in{\nobreakspace}\cite[Section 6.7]{CCN85} that there is a group of the structure $2^2.A_6.2_3$ that is isoclinic with $4.A_6.2_3$. We construct also the character table of the $2^2.A_6.2_3$ type group with the $M.G.A$ construction method from Section{\nobreakspace}\ref{subsect:theorMGA}. 

 The group $N = 2^2.A_6.2_3$ can be described as an upward extension of the normal subgroup $C \cong 2 \times 2.A_6$ by a cyclic group of order $2$, such that the factor group of $N$ by the central subgroup $Z$ of order $2$ that is contained in $U = C' \cong 2.A_6$ is isomorphic to a subdirect product $\overline{N}$ of $M_{10} = A_6.2_3$ and a cyclic group of order $4$ and that $N$ acts nontrivially on the centre of $C$, which is a Klein four group.   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(25,30)(0,0)
\put(5,0){\circle*{1}}
\put(0,5){\circle{1}}
\put(5,5){\circle{1}}
\put(10,5){\circle*{1}} \put(7,4){\makebox(0,0){$Z$}}
\put(5,10){\circle*{1}}
\put(20,15){\circle*{1}} \put(23,15){\makebox(0,0){$U$}}
\put(15,20){\circle*{1}} \put(12,20){\makebox(0,0){$C$}}
\put(15,25){\circle*{1}} \put(15,28){\makebox(0,0){$N$}}
\put(5,0){\line(1,1){15}}
\put(0,5){\line(1,1){15}}
\put(5,0){\line(0,1){10}}
\put(15,20){\line(0,1){5}}
\put(5,0){\line(-1,1){5}}
\put(10,5){\line(-1,1){5}}
\put(20,15){\line(-1,1){5}}
\end{picture}
\end{center}


 

 Thus $N$ has the structure $2.G.2$, with $2.G = C$ and $G.2 = \overline{N}$. These latter group is an isoclinic variant of $2 \times M_{10}$, as in the construction of $4.A_6.2_3$. Each element in $N \setminus C$ swaps the two involutions in $Z(C) \setminus Z$, so it acts fixed point freely on those irreducible characters of $C$ whose kernels do not contain $Z$. Hence we can use \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) for constructing the character table of $N$ from the tables of $C$ and $N/Z$ and the action of $N$ on the classes of $C$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblC:= 2a6 * c2;;|
  !gapprompt@gap>| !gapinput@z:= GetFusionMap( 2a6, tblC ){ ClassPositionsOfCentre( 2a6 ) };|
  [ 1, 3 ]
  !gapprompt@gap>| !gapinput@tblG:= tblC / z;;|
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTableIsoclinic( CharacterTable( "A6.2_3" ) * c2 );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblG, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 9, 10, 9, 10 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, fus[1], tblNbar );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );|
  [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 12 ], 
        [ 9, 13 ], [ 10, 14 ], [ 15, 17 ], [ 16, 18 ], [ 19, 23 ], 
        [ 20, 24 ], [ 21, 25 ], [ 22, 26 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
        [ 9, 13 ], [ 10, 12 ], [ 15 ], [ 16, 18 ], [ 17 ], [ 19, 23 ], 
        [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
        [ 9, 13 ], [ 10, 12 ], [ 15, 17 ], [ 16 ], [ 18 ], [ 19, 23 ], 
        [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ] ]
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblG, tblNbar, pi, "2^2.A6.2_3" ) );|
  [ [  ], [  ], 
    [ 
        rec( 
            MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 9, 6, 9, 8, 7, 10, 
                11, 10, 12, 13, 14, 15, 16, 13, 16, 15, 14 ], 
            table := CharacterTable( "2^2.A6.2_3" ) ) ] ]
\end{Verbatim}
 

 So we get a unique solution.    

 The group $N = 12.A_6.2_3$ (see{\nobreakspace}\cite[p. 5]{CCN85}) can be described as an upward extension of the normal subgroup $C \cong 12.A_6$ {\textendash}which is a central product of $U = 6.A_6$ and a cyclic group $\langle g \rangle$ of order $4${\textendash} by a cyclic group of order $2$, such that the factor group of $N$ by the central subgroup $Z = \langle g^2 \rangle$ of order $2$ is isomorphic to a subdirect product $\overline{N}$ of $3.M_{10} = 3.A_6.2_3$ and a cyclic group of order $4$ and that $N$ acts nontrivially on its normal subgroup $\langle g \rangle$. 

 Note that $N$ has a central subgroup $Y$, say, of order $3$, so the situation here differs from that for groups of the type $12.G.2$ with $G$ one of $L_3(4)$, $U_4(3)$, where the action on the normal subgroup of order three is nontrivial. 

   


\begin{center} 
\setlength{\unitlength}{3pt}
\begin{picture}(45,31)(0,0)
\put(15,0){\circle*{1}}
\put(15,5){\circle*{1}} \put(12,4){\makebox(0,0){$Z$}}
\put(10,10){\circle*{1}} \put(7,10){\makebox(0,0){$\langle g \rangle$}}
\put(21,6){\circle*{1}} \put(24,6){\makebox(0,0){$Y$}}
\put(21,11){\circle*{1}}
\put(30,20){\circle*{1}} \put(33,20){\makebox(0,0){$U$}}
\put(16,16){\circle*{1}}
\put(25,25){\circle*{1}} \put(22,25){\makebox(0,0){$C$}}
\put(25,30){\circle*{1}} \put(25,33){\makebox(0,0){$N$}}
\put(15,5){\line(1,1){15}}
\put(10,10){\line(1,1){15}}
\put(15,0){\line(1,1){6}}
\put(15,0){\line(0,1){5}}
\put(21,6){\line(0,1){5}}
\put(25,25){\line(0,1){5}}
\put(15,5){\line(-1,1){5}}
\put(21,11){\line(-1,1){5}}
\put(30,20){\line(-1,1){5}}
\end{picture}
\end{center}


 

 Thus $N$ has the structure $2.G.2$, with $2.G = C$ and $G.2 = \overline{N}$. These two groups are isoclinic variants of $2 \times 6.A_6$ and of $2 \times 3.M_{10}$, respectively. Each element in $N \setminus C$ inverts $g$, so it acts fixed point freely on the faithful irreducible characters of $C$. Hence we can use \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) for constructing the character table of $N$ from the tables of $C$ and $N/Z$ and the action of $N$ on the classes of $C$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@tblC:= CharacterTableIsoclinic( CharacterTable( "6.A6" ) * c2 );;|
  !gapprompt@gap>| !gapinput@ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),|
  !gapprompt@>| !gapinput@              x -> Length( x ) = 2 );|
  [ [ 1, 7 ] ]
  !gapprompt@gap>| !gapinput@tblG:= tblC / ord2[1];;|
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTableIsoclinic( CharacterTable( "3.A6.2_3" ) * c2 );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblG, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 13, 14, 15, 16, 
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, 22, 23, 24, 25, 26 ]
      , 
    [ 1, 2, 5, 6, 3, 4, 7, 8, 11, 12, 9, 10, 13, 14, 13, 14, 15, 16, 
        19, 20, 17, 18, 21, 22, 25, 26, 23, 24, 21, 22, 25, 26, 23, 24 
       ] ]
  !gapprompt@gap>| !gapinput@rep:= RepresentativesFusions( Group( () ), fus, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 13, 14, 15, 16, 
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, 22, 23, 24, 25, 26 
       ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, rep[1], tblNbar );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );|
  [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], 
        [ 10 ], [ 11 ], [ 12 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ], 
        [ 18 ], [ 19, 23 ], [ 20, 24 ], [ 21, 25 ], [ 22, 26 ], 
        [ 27, 33 ], [ 28, 34 ], [ 29, 35 ], [ 30, 36 ], [ 31, 37 ], 
        [ 32, 38 ], [ 39, 51 ], [ 40, 52 ], [ 41, 53 ], [ 42, 54 ], 
        [ 43, 55 ], [ 44, 56 ], [ 45, 57 ], [ 46, 58 ], [ 47, 59 ], 
        [ 48, 60 ], [ 49, 61 ], [ 50, 62 ] ], 
    [ [ 1 ], [ 2, 8 ], [ 3 ], [ 4, 10 ], [ 5 ], [ 6, 12 ], [ 7 ], 
        [ 9 ], [ 11 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ], [ 18 ], 
        [ 19, 23 ], [ 20, 26 ], [ 21, 25 ], [ 22, 24 ], [ 27 ], 
        [ 28, 34 ], [ 29 ], [ 30, 36 ], [ 31 ], [ 32, 38 ], [ 33 ], 
        [ 35 ], [ 37 ], [ 39, 51 ], [ 40, 58 ], [ 41, 53 ], [ 42, 60 ], 
        [ 43, 55 ], [ 44, 62 ], [ 45, 57 ], [ 46, 52 ], [ 47, 59 ], 
        [ 48, 54 ], [ 49, 61 ], [ 50, 56 ] ], 
    [ [ 1 ], [ 2, 8 ], [ 3 ], [ 4, 10 ], [ 5 ], [ 6, 12 ], [ 7 ], 
        [ 9 ], [ 11 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ], [ 18 ], 
        [ 19, 23 ], [ 20, 26 ], [ 21, 25 ], [ 22, 24 ], [ 27, 33 ], 
        [ 28 ], [ 29, 35 ], [ 30 ], [ 31, 37 ], [ 32 ], [ 34 ], [ 36 ], 
        [ 38 ], [ 39, 51 ], [ 40, 58 ], [ 41, 53 ], [ 42, 60 ], 
        [ 43, 55 ], [ 44, 62 ], [ 45, 57 ], [ 46, 52 ], [ 47, 59 ], 
        [ 48, 54 ], [ 49, 61 ], [ 50, 56 ] ] ]
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblG, tblNbar, pi, "12.A6.2_3" ) );|
  [ [  ], [  ], 
    [ 
        rec( 
            MGfusMGA := [ 1, 2, 3, 4, 5, 6, 7, 2, 8, 4, 9, 6, 10, 11, 12, 
                13, 14, 15, 16, 17, 18, 19, 16, 19, 18, 17, 20, 21, 22, 
                23, 24, 25, 20, 26, 22, 27, 24, 28, 29, 30, 31, 32, 33, 
                34, 35, 36, 37, 38, 39, 40, 29, 36, 31, 38, 33, 40, 35, 
                30, 37, 32, 39, 34 ], 
            table := CharacterTable( "12.A6.2_3" ) ) ] ]
\end{Verbatim}
 

 So we get again a unique solution. It coincides with the character table that
is stored in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[3][1].table,|
  !gapprompt@>| !gapinput@                 CharacterTable( "12.A6.2_3" ) ) );|
  true
\end{Verbatim}
 

 The construction of the character table of $4.L_2(25).2_3$ is analogous to that of the table of $4.A_6.2_3$. We get a unique table that coincides with the table in the \textsf{GAP} library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@tblC:= CharacterTableIsoclinic( CharacterTable( "2.L2(25)" ) * c2 );;|
  !gapprompt@gap>| !gapinput@ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),|
  !gapprompt@>| !gapinput@              x -> Length( x ) = 2 );|
  [ [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@tblG:= tblC / ord2[1];;|
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTableIsoclinic( CharacterTable( "L2(25).2_3" ) * c2 );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblG, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 15, 
        16, 15, 16, 17, 18, 17, 18, 19, 20, 19, 20 ], 
    [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 17, 
        18, 17, 18, 19, 20, 19, 20, 15, 16, 15, 16 ], 
    [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 19, 
        20, 19, 20, 15, 16, 15, 16, 17, 18, 17, 18 ] ]
  !gapprompt@gap>| !gapinput@rep:= RepresentativesFusions( Group( () ), fus, tblNbar );|
  [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 15, 
        16, 15, 16, 17, 18, 17, 18, 19, 20, 19, 20 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, rep[1], tblNbar );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );|
  [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], 
        [ 10 ], [ 11, 13 ], [ 12, 14 ], [ 15, 19 ], [ 16, 20 ], 
        [ 17, 21 ], [ 18, 22 ], [ 23, 25 ], [ 24, 26 ], [ 27, 33 ], 
        [ 28, 34 ], [ 29, 31 ], [ 30, 32 ], [ 35, 39 ], [ 36, 40 ], 
        [ 37, 41 ], [ 38, 42 ], [ 43, 47 ], [ 44, 48 ], [ 45, 49 ], 
        [ 46, 50 ], [ 51, 55 ], [ 52, 56 ], [ 53, 57 ], [ 54, 58 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7 ], [ 8, 10 ], [ 9 ], 
        [ 11 ], [ 12, 14 ], [ 13 ], [ 15, 19 ], [ 16, 22 ], [ 17, 21 ], 
        [ 18, 20 ], [ 23, 25 ], [ 24 ], [ 26 ], [ 27, 31 ], [ 28, 34 ], 
        [ 29, 33 ], [ 30, 32 ], [ 35, 39 ], [ 36, 42 ], [ 37, 41 ], 
        [ 38, 40 ], [ 43, 47 ], [ 44, 50 ], [ 45, 49 ], [ 46, 48 ], 
        [ 51, 55 ], [ 52, 58 ], [ 53, 57 ], [ 54, 56 ] ], 
    [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7 ], [ 8, 10 ], [ 9 ], 
        [ 11, 13 ], [ 12 ], [ 14 ], [ 15, 19 ], [ 16, 22 ], [ 17, 21 ], 
        [ 18, 20 ], [ 23, 25 ], [ 24 ], [ 26 ], [ 27, 33 ], [ 28, 32 ], 
        [ 29, 31 ], [ 30, 34 ], [ 35, 39 ], [ 36, 42 ], [ 37, 41 ], 
        [ 38, 40 ], [ 43, 47 ], [ 44, 50 ], [ 45, 49 ], [ 46, 48 ], 
        [ 51, 55 ], [ 52, 58 ], [ 53, 57 ], [ 54, 56 ] ] ]
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblG, tblNbar, pi, "4.L2(25).2_3" ) );|
  [ [  ], [  ], 
    [ 
        rec( 
            MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 9, 11, 12, 
                13, 14, 15, 12, 15, 14, 13, 16, 17, 16, 18, 19, 20, 21, 
                22, 21, 20, 19, 22, 23, 24, 25, 26, 23, 26, 25, 24, 27, 
                28, 29, 30, 27, 30, 29, 28, 31, 32, 33, 34, 31, 34, 33, 
                32 ], table := CharacterTable( "4.L2(25).2_3" ) ) ] ]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[3][1].table,|
  !gapprompt@>| !gapinput@                 CharacterTable( "4.L2(25).2_3" ) ) );|
  true
\end{Verbatim}
 

 Note that the group $\Gamma L(2,25)$ does \emph{not} contain subgroups of the structure $4.L_2(25).2_3$, since $\Gamma L(2,25)$ acts on its subgroup of scalar matrices via mapping each element to its fifth
power, thus the central subgroup of order four in GL$(2,25)$ is central also in $\Gamma L(2,25)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= GammaL(2,25);;|
  !gapprompt@gap>| !gapinput@phi:= IsomorphismPermGroup( g );;|
  !gapprompt@gap>| !gapinput@img:= Image( phi );;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( img );;|
  !gapprompt@gap>| !gapinput@derder:= DerivedSubgroup( der );;|
  !gapprompt@gap>| !gapinput@Index( img, derder );|
  48
  !gapprompt@gap>| !gapinput@inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,|
  !gapprompt@>| !gapinput@               s -> Size( s ) = 4 * Size( derder ) and|
  !gapprompt@>| !gapinput@                    IsCyclic( CommutatorFactorGroup( s ) ) and|
  !gapprompt@>| !gapinput@                    Size( Centre( s ) ) = 2 );|
  [  ]
\end{Verbatim}
 

 In order to construct a representation of a group of the structure $4.L_2(25).2_3$, we can use the function \texttt{CyclicExtensions} from the \textsf{GAP} package \textsf{GrpConst}. We start from the index two subgroup $4.L_2(25)$, which is a central product of $SL(2,25)$ and a cyclic group of order four, and find exactly one upwards extension by a
cyclic group of order two, up to isomorphism, with the required properties. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c:= Centralizer( img, derder );;|
  !gapprompt@gap>| !gapinput@Size( c );  IsCyclic( c );|
  24
  true
  !gapprompt@gap>| !gapinput@cgen:= MinimalGeneratingSet( c );;|
  !gapprompt@gap>| !gapinput@four:= cgen[1]^6;;|
  !gapprompt@gap>| !gapinput@s:= ClosureGroup( derder, four );;|
  !gapprompt@gap>| !gapinput@LoadPackage( "GrpConst", false );|
  true
  !gapprompt@gap>| !gapinput@filt:= Filtered( CyclicExtensions( s, 2 ),|
  !gapprompt@>| !gapinput@              x -> Size( Centre( x ) ) = 2 and|
  !gapprompt@>| !gapinput@                   IsCyclic( CommutatorFactorGroup( x ) ) );;|
  !gapprompt@gap>| !gapinput@Length( filt );|
  2
  !gapprompt@gap>| !gapinput@IsomorphismGroups( filt[1], filt[2] ) <> fail;|
  true
\end{Verbatim}
 

 The character table of this group coincides with the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( CharacterTable( filt[1] ),|
  !gapprompt@>| !gapinput@       CharacterTable( "4.L2(25).2_3" ) ) <> fail;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $4.L_2(49).2_3$ (December 2020)}}\label{subsect:4.L_2(49).2_3}
\logpage{[ 2, 4, 14 ]}
\hyperdef{L}{X7BD79BA37C3E729B}{}
{
  The character tables of the simple group $L_2(49)$ and of its extensions do not appear in the \textsf{Atlas} of Finite Groups \cite{CCN85}, but they may be regarded as \textsf{Atlas} tables because a data file in the format used to produce the \textsf{Atlas} has been available for a long time, as is stated in \cite[Appendix 2]{JLPW95}. 

 Analogous to $L_2(9) \cong A_6$ and $L_2(25)$, see Section \ref{subsect:4.A_6.2_3, 12.A_6.2_3, 4.L_2(25).2_3}, the \textsf{Atlas} map for $G = L_2(49)$ shows a ``broken box'', since there is no group of the form $2.G.2_3$, and a group of the structure $4.G.2_3$ can be considered instead, which has a normal subgroup isomorphic with $2.(2 \times G)$ and a factor group isomorphic with $(2 \times G).2_3$, see Section \ref{subsect:4.A_6.2_3, 12.A_6.2_3, 4.L_2(25).2_3}. Having its character table available has the effect that the functions \texttt{DisplayAtlasMap} (\textbf{CTblLib: DisplayAtlasMap for the name of a simple group}) and \texttt{BrowseAtlasTable} (\textbf{CTblLib: BrowseAtlasTable}) work with input \texttt{"L2(49)"}. 

 We construct the character table of $4.L_2(49).2_3$ in the same way as for the extensions of $L_2(9)$ and $L_2(25)$. There is a unique solution. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@2l:= CharacterTable( "2.L2(49)" );;|
  !gapprompt@gap>| !gapinput@tblC:= CharacterTableIsoclinic( 2l * c2 );;|
  !gapprompt@gap>| !gapinput@ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),|
  !gapprompt@>| !gapinput@              x -> Length( x ) = 2 );|
  [ [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@tblG:= tblC / ord2[1];;|
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTableIsoclinic(|
  !gapprompt@>| !gapinput@                 CharacterTable( "L2(49).2_3" ) * c2 );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblG, tblNbar );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  10
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, fus[1], tblNbar );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );;|
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblG, tblNbar, pi, "4.L2(49).2_3" ) );;|
  !gapprompt@gap>| !gapinput@List( poss, Length );|
  [ 0, 0, 1 ]
  !gapprompt@gap>| !gapinput@t:= poss[3][1].table;|
  CharacterTable( "4.L2(49).2_3" )
\end{Verbatim}
 

 Analogous to the situation with $L_2(9)$, a group of the desired structure can be found inside the semilinear group $\Gamma$L$(2,49)$. In fact, there is a unique class of subgroups in $\Gamma$L$(2,49)$ that contain SL$(2,49) \cong 2.G$, have the right order, have cyclic commutator factor group, and centre of
order $2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= GammaL(2,49);;|
  !gapprompt@gap>| !gapinput@phi:= IsomorphismPermGroup( g );;|
  !gapprompt@gap>| !gapinput@img:= Image( phi );;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( img );;|
  !gapprompt@gap>| !gapinput@derder:= DerivedSubgroup( der );;|
  !gapprompt@gap>| !gapinput@Index( img, derder );|
  96
  !gapprompt@gap>| !gapinput@inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,|
  !gapprompt@>| !gapinput@               s -> Size( s ) = 4 * Size( derder ) and|
  !gapprompt@>| !gapinput@                    IsCyclic( CommutatorFactorGroup( s ) ) and|
  !gapprompt@>| !gapinput@                    Size( Centre( s ) ) = 2 );;|
  !gapprompt@gap>| !gapinput@Length( inter );                                        |
  4
  !gapprompt@gap>| !gapinput@ForAll( inter, x -> IsConjugate( img, inter[1], x ) );|
  true
\end{Verbatim}
 

 The character tables of these groups coincide with the table constructed
above, and with the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@       CharacterTable( inter[1] ) ) <> fail;|
  true
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@       CharacterTable( "4.L2(49).2_3" ) ) <> fail;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $4.L_2(81).2_3$ (December 2020)}}\label{subsect:4.L_2(81).2_3}
\logpage{[ 2, 4, 15 ]}
\hyperdef{L}{X817A961487D2DFD1}{}
{
  We start with the character-theoretic construction of this table, analogous to
the cases of $L_2(9)$, $L_2(25)$, $L_2(49)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@2l:= CharacterTable( "2.L2(81)" );;|
  !gapprompt@gap>| !gapinput@tblC:= CharacterTableIsoclinic( 2l * c2 );;|
  !gapprompt@gap>| !gapinput@ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),|
  !gapprompt@>| !gapinput@              x -> Length( x ) = 2 );|
  [ [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@tblG:= tblC / ord2[1];;|
  !gapprompt@gap>| !gapinput@tblNbar:= CharacterTableIsoclinic(|
  !gapprompt@>| !gapinput@                 CharacterTable( "L2(81).2_3" ) * c2 );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( tblG, tblNbar );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  40
  !gapprompt@gap>| !gapinput@fusreps:= RepresentativesFusions( tblG, fus, tblNbar );;|
  !gapprompt@gap>| !gapinput@Length( fusreps );|
  1
  !gapprompt@gap>| !gapinput@StoreFusion( tblG, fusreps[1], tblNbar );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );;|
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                tblC, tblG, tblNbar, pi, "4.L2(81).2_3" ) );;|
  !gapprompt@gap>| !gapinput@List( poss, Length );|
  [ 0, 0, 1 ]
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( poss[3][1].table,|
  !gapprompt@>| !gapinput@       CharacterTable( "4.L2(81).2_3" ) ) <> fail;|
  true
\end{Verbatim}
 

 Like in the case of $L_2(25)$, there are \emph{no} $4.L_2(81).2_3$ type subgroups in $\Gamma L(2,81)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= GammaL(2,81);;|
  !gapprompt@gap>| !gapinput@phi:= IsomorphismPermGroup( g );;|
  !gapprompt@gap>| !gapinput@img:= Image( phi );;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( img );;|
  !gapprompt@gap>| !gapinput@derder:= DerivedSubgroup( der );;|
  !gapprompt@gap>| !gapinput@Index( img, derder );|
  320
  !gapprompt@gap>| !gapinput@inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,|
  !gapprompt@>| !gapinput@               s -> Size( s ) = 4 * Size( derder ) and|
  !gapprompt@>| !gapinput@                    IsCyclic( CommutatorFactorGroup( s ) ) and|
  !gapprompt@>| !gapinput@                    Size( Centre( s ) ) = 2 );;|
  !gapprompt@gap>| !gapinput@ForAll( inter, x -> IsConjugate( img, inter[1], x ) );|
  true
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( inter[1] );|
  52
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( CharacterTable( "4.L2(81).2_3" ) );|
  112
\end{Verbatim}
 

 The subgroups of $\Gamma L(2,81)$ constructed above have the structure $2.L_2(81).4_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2.L2(81).4_1" );;|
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( t );|
  52
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( t,|
  !gapprompt@>| !gapinput@       CharacterTable( inter[1] ) ) <> fail;|
  true
\end{Verbatim}
 

 Like in the case of $L_2(25)$, we can construct a group with the structure $4.L_2(81).2_3$ via the function \texttt{CyclicExtensions} from the \textsf{GAP} package \textsf{GrpConst}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c:= Centralizer( img, derder );;|
  !gapprompt@gap>| !gapinput@Size( c );  IsCyclic( c );|
  80
  true
  !gapprompt@gap>| !gapinput@cgen:= MinimalGeneratingSet( c );;|
  !gapprompt@gap>| !gapinput@four:= cgen[1]^20;;|
  !gapprompt@gap>| !gapinput@s:= ClosureGroup( derder, four );;|
  !gapprompt@gap>| !gapinput@LoadPackage( "GrpConst", false );|
  true
  !gapprompt@gap>| !gapinput@filt:= Filtered( CyclicExtensions( s, 2 ),|
  !gapprompt@>| !gapinput@              x -> Size( Centre( x ) ) = 2 and|
  !gapprompt@>| !gapinput@                   IsCyclic( CommutatorFactorGroup( x ) ) );;|
  !gapprompt@gap>| !gapinput@Length( filt );|
  2
  !gapprompt@gap>| !gapinput@IsomorphismGroups( filt[1], filt[2] ) <> fail;|
  true
  !gapprompt@gap>| !gapinput@TransformingPermutationsCharacterTables( CharacterTable( filt[1] ),|
  !gapprompt@>| !gapinput@       CharacterTable( "4.L2(81).2_3" ) ) <> fail;|
  true
\end{Verbatim}
 }

    
\subsection{\textcolor{Chapter }{The Character Table of $9.U_3(8).3_3$ (March 2017)}}\label{subsect:9.U_3(8).3_3}
\logpage{[ 2, 4, 16 ]}
\hyperdef{L}{X7AF324AF7A54798F}{}
{
  The group that is called $9.U_3(8).3_3$ in the \textsf{Atlas} of Finite Groups occurs as a subgroup of $\Gamma$U$(3, 8)$. Note that GU$(3, 8)$ has the structure $3.(3 \times U_3(8)).3_2$ (see \cite[p.{\nobreakspace}66]{CCN85}), and extending the subgroup $C = 3.(3 \times U_3(8))$ by the product of an element outside $C$ with the field automorphism of order three of GF$(64)$ yields a group $N$ of the structure $3.(3 \times U_3(8)).3_3$ whose centre has order three. 

 The character table of $N$ can be constructed with the $M.G.A$ construction method from Section{\nobreakspace}\ref{subsect:theorMGA}. The situation is similar to that with $4.A_6.2_3$, see Section{\nobreakspace}\ref{subsect:4.A_6.2_3, 12.A_6.2_3, 4.L_2(25).2_3}, in particular the situation is described by the same picture that is shown
for $4.A_6.2_3$ in this section, just the subgroups $Z$ and $\langle g \rangle$ have the orders three and nine, respectively, and $C$ has index three in $N$. 

 The normal subgroup $C \cong 9.U_3(8)$ is a central product of $U = 3.U_3(8)$ and a cyclic group $\langle g \rangle$ of order $9$, and the factor group of $N$ by the central subgroup $Z = \langle g^3 \rangle$ of order $3$ is isomorphic to a subdirect product $\overline{N}$ of $U_3(8).3_3$ and a cyclic group of order $9$, such that $N$ acts nontrivially on its normal subgroup $\langle g \rangle$. 

 Thus $N$ has the structure $3.G.3$, with $3.G = C$ and $G.3 = \overline{N}$. Each element in $N \setminus C$ raises $g$ to its fourth or seventh power, so it acts fixed point freely on the faithful
irreducible characters of $C$. Hence we can use \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) for constructing the character table of $N$ from the tables of $C$ and $N/Z$ and the action of $N$ on the classes of $C$. 

 Since we want to construct also \emph{Brauer tables} of $N$, we have to choose the class fusion that describes the embedding of $C / Z$ into $\overline{N}$ compatibly with the known Brauer tables of $U_3(8)$ and $U_3(8).3_3$. Note that the $2$-modular tables of these groups impose additional conditions on the class
fusion. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "U3(8)" );;|
  !gapprompt@gap>| !gapinput@s3:= CharacterTable( "U3(8).3_3" );;|
  !gapprompt@gap>| !gapinput@poss:= PossibleClassFusions( s, s3 );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s, poss, s3 ) );|
  1
  !gapprompt@gap>| !gapinput@smod2:= s mod 2;;|
  !gapprompt@gap>| !gapinput@s3mod2:= s3 mod 2;;|
  !gapprompt@gap>| !gapinput@good:= [];;  modmap:= 0;;|
  !gapprompt@gap>| !gapinput@for map in poss do|
  !gapprompt@>| !gapinput@     modmap:= CompositionMaps( InverseMap( GetFusionMap( s3mod2, s3 ) ),|
  !gapprompt@>| !gapinput@                  CompositionMaps( map, GetFusionMap( smod2, s ) ) );|
  !gapprompt@>| !gapinput@     rest:= List( Irr( s3mod2 ), x -> x{ modmap } );|
  !gapprompt@>| !gapinput@     if not fail in Decomposition( Irr( smod2 ), rest, "nonnegative" ) then|
  !gapprompt@>| !gapinput@       Add( good, map );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( good );|
  2
\end{Verbatim}
 

 The class fusion from $U_3(8)$ to $U_3(8).3_3$ is determined up to complex conjugation by the $2$-modular Brauer tables. We choose the fusion that is stored on the library
tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@good[2] = CompositionMaps( PowerMap( s3, -1 ), good[1] );|
  true
  !gapprompt@gap>| !gapinput@GetFusionMap( s, s3 ) in good;|
  true
  !gapprompt@gap>| !gapinput@sfuss3:= GetFusionMap( s, s3 );;|
\end{Verbatim}
 

 In the next step, we construct the character tables of $C / Z \cong U_3(8) \times 3$ and $N / Z \cong (U_3(8) \times 3).3_3$, and those class fusions between the two tables that are compatible with the
fusion between the factors that was chosen above
(w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}the stored factor
fusions). 

 In order not to leave out some candidates, we have to consider also the table
of $N/Z$ that is obtained from the ``other'' construction as an isoclinic table of $3 \times U_3(8).3_3$. 

 (This may look complicated. It would perhaps be more natural to construct the
ordinary tables first, by considering the possible fusions, and later to
adjust the choices to the conditions that are imposed by the Brauer tables.
However, the technical complications of that construction would not be smaller
in the end.) 

 We get four candidates, two for each of the two tables of $N/Z$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c3:= CharacterTable( "Cyclic", 3 );;|
  !gapprompt@gap>| !gapinput@tblG:= s * c3;;|
  !gapprompt@gap>| !gapinput@dp:= s3 * c3;;|
  !gapprompt@gap>| !gapinput@tblGA1:= CharacterTableIsoclinic( dp, rec( k:= 1 ) );;|
  !gapprompt@gap>| !gapinput@tblGA2:= CharacterTableIsoclinic( dp, rec( k:= 2 ) );;|
  !gapprompt@gap>| !gapinput@good:= [];;|
  !gapprompt@gap>| !gapinput@tblGmod2:= tblG mod 2;;|
  !gapprompt@gap>| !gapinput@for tblGA in [ tblGA1, tblGA2 ] do|
  !gapprompt@>| !gapinput@     tblGAmod2:= tblGA mod 2;|
  !gapprompt@>| !gapinput@     for map in PossibleClassFusions( tblG, tblGA ) do|
  !gapprompt@>| !gapinput@       modmap:= CompositionMaps(|
  !gapprompt@>| !gapinput@           InverseMap( GetFusionMap( tblGAmod2, tblGA ) ),|
  !gapprompt@>| !gapinput@           CompositionMaps( map, GetFusionMap( tblGmod2, tblG ) ) );|
  !gapprompt@>| !gapinput@       rest:= List( Irr( tblGAmod2 ), x -> x{ modmap } );|
  !gapprompt@>| !gapinput@       if not fail in Decomposition( Irr( tblGmod2 ), rest,|
  !gapprompt@>| !gapinput@                          "nonnegative" ) and|
  !gapprompt@>| !gapinput@          CompositionMaps( GetFusionMap( tblGA, s3 ), map ) =|
  !gapprompt@>| !gapinput@          CompositionMaps( sfuss3, GetFusionMap( tblG, s ) ) then|
  !gapprompt@>| !gapinput@         Add( good, [ tblGA, map ] );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@List( good, x -> x[1] );|
  [ CharacterTable( "Isoclinic(U3(8).3_3xC3,1)" ), 
    CharacterTable( "Isoclinic(U3(8).3_3xC3,1)" ), 
    CharacterTable( "Isoclinic(U3(8).3_3xC3,2)" ), 
    CharacterTable( "Isoclinic(U3(8).3_3xC3,2)" ) ]
\end{Verbatim}
  

 The character table of $C$ can be constructed with \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}) from the character table of $3 \times 3.U_3(8)$. (Here we need to consider only one variant of the table.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@3s:= CharacterTable( "3.U3(8)" );;|
  !gapprompt@gap>| !gapinput@dp:= 3s * c3;;|
  !gapprompt@gap>| !gapinput@tblMG:= CharacterTableIsoclinic( dp );;|
\end{Verbatim}
 

 The construction of this table does not automatically yield a factor fusion to
the table of $C/Z$. We form the relevant factor table, which has the same ordering of
irreducible characters, and use the factor fusion to this table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( tblMG, tblG );|
  fail
  !gapprompt@gap>| !gapinput@cen:= ClassPositionsOfCentre( tblMG );|
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( tblMG ){ cen };|
  [ 1, 9, 9, 3, 9, 9, 3, 9, 9 ]
  !gapprompt@gap>| !gapinput@facttbl:= tblMG / [ 1, 4, 7 ];;|
  !gapprompt@gap>| !gapinput@tr:= TransformingPermutationsCharacterTables( facttbl, tblG );;|
  !gapprompt@gap>| !gapinput@tr.rows;  tr.columns;|
  ()
  ()
  !gapprompt@gap>| !gapinput@StoreFusion( tblMG, GetFusionMap( tblMG, facttbl ), tblG );|
\end{Verbatim}
 

 Now we compute the orbits of the possible actions of $N$ on the classes of $C$, and the resulting candidates for the character table of $N$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@posstbls:= [];;|
  !gapprompt@gap>| !gapinput@for pair in good do|
  !gapprompt@>| !gapinput@     tblGA:= pair[1];|
  !gapprompt@>| !gapinput@     GfusGA:= pair[2];|
  !gapprompt@>| !gapinput@     tblG:= s * c3;|
  !gapprompt@>| !gapinput@     StoreFusion( tblG, GfusGA, tblGA );|
  !gapprompt@>| !gapinput@     for pi in PossibleActionsForTypeMGA( tblMG, tblG, tblGA ) do|
  !gapprompt@>| !gapinput@       for cand in PossibleCharacterTablesOfTypeMGA(|
  !gapprompt@>| !gapinput@                       tblMG, tblG, tblGA, pi, "test" ) do|
  !gapprompt@>| !gapinput@         Add( posstbls, [ tblGA, cand ] );|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( posstbls );|
  32
\end{Verbatim}
 

 Now we discard all those candidates that are not compatible with the $2$-modular character tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@compatible:= [];;  r:= 0;;  modr:= 0;;|
  !gapprompt@gap>| !gapinput@for pair in posstbls do|
  !gapprompt@>| !gapinput@     tblGA:= pair[1];|
  !gapprompt@>| !gapinput@     r:= pair[2];|
  !gapprompt@>| !gapinput@     comp:= ComputedClassFusions( tblMG );|
  !gapprompt@>| !gapinput@     pos:= PositionProperty( comp, x -> x.name = Identifier( r.table ) );|
  !gapprompt@>| !gapinput@     if pos = fail then|
  !gapprompt@>| !gapinput@       StoreFusion( tblMG, r.MGfusMGA, r.table );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       comp[ pos ]:= ShallowCopy( comp[ pos ] );|
  !gapprompt@>| !gapinput@       comp[ pos ].map:= r.MGfusMGA;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     Unbind( ComputedBrauerTables( tblMG )[2] );|
  !gapprompt@>| !gapinput@     modr:= BrauerTableOfTypeMGA( tblMG mod 2, tblGA mod 2, r.table );|
  !gapprompt@>| !gapinput@     rest:= List( Irr( modr.table ), x -> x{ modr.MGfusMGA } );|
  !gapprompt@>| !gapinput@     dec:= Decomposition( Irr( tblMG mod 2 ), rest, "nonnegative" );|
  !gapprompt@>| !gapinput@     if not fail in dec then|
  !gapprompt@>| !gapinput@       Add( compatible, pair );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( compatible );|
  8
\end{Verbatim}
 

 The remaining candidates fall into two equivalence classes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= [];;|
  !gapprompt@gap>| !gapinput@for pair in compatible do|
  !gapprompt@>| !gapinput@     if ForAll( tbls, t -> TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                               t, pair[2].table ) = fail ) then|
  !gapprompt@>| !gapinput@       Add( tbls, pair[2].table );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( tbls );|
  2
\end{Verbatim}
 

 The two tables can be distinguished by their element orders {\nobreakspace}one
contains the element order $54$ and the other does not{\nobreakspace} or by their $4$th power maps {\nobreakspace}the classes of element order $171$ in one table are not fixed by the $4$th power map, the corresponding classes in the other table are fixed. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Set( OrdersClassRepresentatives( tbls[1] ) );|
  [ 1, 2, 3, 4, 6, 7, 9, 12, 18, 19, 21, 27, 36, 54, 57, 63, 171 ]
  !gapprompt@gap>| !gapinput@Set( OrdersClassRepresentatives( tbls[2] ) );|
  [ 1, 2, 3, 4, 6, 7, 9, 12, 18, 19, 21, 27, 36, 57, 63, 171 ]
  !gapprompt@gap>| !gapinput@pos171:= Positions( OrdersClassRepresentatives( tbls[1] ), 171 );;|
  !gapprompt@gap>| !gapinput@pow4:= PowerMap( tbls[1], 4 );;|
  !gapprompt@gap>| !gapinput@ForAny( [ 1 .. Length( pos171 ) ],|
  !gapprompt@>| !gapinput@           i -> pos171[i] = pow4[ pos171[i] ] );|
  false
  !gapprompt@gap>| !gapinput@pos171:= Positions( OrdersClassRepresentatives( tbls[2] ), 171 );;|
  !gapprompt@gap>| !gapinput@PowerMap( tbls[2], 4 ){ pos171 } = pos171;|
  true
\end{Verbatim}
 

 Thus we can use the group $N$ to decide which table is correct. For that, we construct a permutation
representation of $N$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@gu:= GU(3,8);;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( gu, Elements( GF(64)^3 ) );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 1, 32319, 32832, 32832, 32832, 32832, 32832, 32832, 32832 ]
  !gapprompt@gap>| !gapinput@orb:= SortedList( First( orbs, x -> Length( x ) = 32319 ) );;|
  !gapprompt@gap>| !gapinput@actgu:= Action( gu, orb, OnRight );;|
  !gapprompt@gap>| !gapinput@Size( actgu ) = Size( gu );|
  true
  !gapprompt@gap>| !gapinput@cen:= Centre( actgu );;|
  !gapprompt@gap>| !gapinput@Size( cen );|
  9
  !gapprompt@gap>| !gapinput@u:= ClosureGroup( DerivedSubgroup( actgu ), cen );;|
  !gapprompt@gap>| !gapinput@aut:= v -> List( v, x -> x^4 );;|
  !gapprompt@gap>| !gapinput@pi:= PermList( List( orb, v -> PositionSorted( orb, aut( v ) ) ) );;|
  !gapprompt@gap>| !gapinput@outer:= First( GeneratorsOfGroup( actgu ), x -> not x in u );;|
  !gapprompt@gap>| !gapinput@g:= ClosureGroup( u, pi * outer );;|
\end{Verbatim}
 

 Before we perform computations with the group, we reduce the degree of the
representation by a factor of $7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= Group( SmallGeneratingSet( g ) );;|
  !gapprompt@gap>| !gapinput@allbl:= AllBlocks( g );;|
  !gapprompt@gap>| !gapinput@List( allbl, Length );|
  [ 3, 21, 63, 9, 7 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, First( allbl, x -> Length( x ) = 7 ), OnSets );;|
  !gapprompt@gap>| !gapinput@act:= Action( g, orb, OnSets );;|
  !gapprompt@gap>| !gapinput@Size( act ) = Size( g );|
  true
  !gapprompt@gap>| !gapinput@NrMovedPoints( act );|
  4617
\end{Verbatim}
 

 Now we test whether an element of order $171$ in $N$ is conjugate in $N$ to its fourth power. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat x:= PseudoRandom( act ); until Order( x ) = 171;|
  !gapprompt@gap>| !gapinput@IsConjugate( act, x, x^4 );|
  true
\end{Verbatim}
 

 This means that the second of the candidate tables constructed above is the
right one. The character table with the identifier \texttt{"9.U3(8).3{\textunderscore}3"} in the character table library is equivalent to this table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "9.U3(8).3_3" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tbls[2], lib ) );|
  true
\end{Verbatim}
 

 \textsf{GAP}'s currently available methods for the automatic computation of character
tables would require too much space when called with this permutation group.
Using interactive methods, one can compute the character table with \textsf{GAP}. The table obtained this way is equivalent to the library character table
with the identifier \texttt{"9.U3(8).3{\textunderscore}3"}. 

 I do not know how to disprove the other candidate with character-theoretic
arguments. Thus this table provides an example of a pseudo character table,
see Section \ref{subsect:pseudo}. }

  
\subsection{\textcolor{Chapter }{Pseudo Character Tables of the Type $M.G.A$ (May 2004)}}\label{subsect:pseudo}
\logpage{[ 2, 4, 17 ]}
\hyperdef{L}{X7E0C603880157C4E}{}
{
  With the construction method for character tables of groups of the type $M.G.A$, one can construct tables that have many properties of character tables but
that are not character tables of groups, cf.{\nobreakspace}\cite{Gag86}. For example, the group $3.A_6.2_3$ has a \emph{central} subgroup of order $3$, so it is not of the type $M.G.A$ with fixed-point free action on the faithful characters of $M.G$. 

 However, if we apply the ``$M.G.A$ construction'' to the groups $M.G = 3.A_6$, $G = A_6$, and $G.A = A_6.2_3$ then we get a (in this case unique) result. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "3.A6" );;|
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "A6" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "A6.2_3" );;|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );  |
  [ [ [ 1 ], [ 2, 3 ], [ 4 ], [ 5, 6 ], [ 7, 8 ], [ 9 ], [ 10, 11 ], 
        [ 12, 15 ], [ 13, 17 ], [ 14, 16 ] ] ]
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeMGA(                  |
  !gapprompt@>| !gapinput@                tblMG, tblG, tblGA, elms[1], "pseudo" );    |
  [ rec( 
        MGfusMGA := [ 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 10, 8, 10, 
            9 ], table := CharacterTable( "pseudo" ) ) ]
\end{Verbatim}
 

 Such a table automatically satisfies the orthogonality relations,  and the tensor product of two ``irreducible characters'' of which at least one is a row from $G.A$ decomposes into a sum of the ``irreducible characters'', where the coefficients are nonnegative integers.  

 In this example, any tensor product decomposes with nonnegative integral
coefficients, $n$-th symmetrizations of ``irreducible characters'' decompose, for $n \leq 5$, and the ``class multiplication coefficients'' are nonnegative integers. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pseudo:= poss[1].table;|
  CharacterTable( "pseudo" )
  !gapprompt@gap>| !gapinput@Display( pseudo );|
  pseudo
  
        2  4   3  4  3  .  3   2  .   .   .  2  3  3
        3  3   3  1  1  2  1   1  1   1   1  .  .  .
        5  1   1  .  .  .  .   .  1   1   1  .  .  .
  
          1a  3a 2a 6a 3b 4a 12a 5a 15a 15b 4b 8a 8b
       2P 1a  3a 1a 3a 3b 2a  6a 5a 15a 15b 2a 4a 4a
       3P 1a  1a 2a 2a 1a 4a  4a 5a  5a  5a 4b 8a 8b
       5P 1a  3a 2a 6a 3b 4a 12a 1a  3a  3a 4b 8b 8a
  
  X.1      1   1  1  1  1  1   1  1   1   1  1  1  1
  X.2      1   1  1  1  1  1   1  1   1   1 -1 -1 -1
  X.3     10  10  2  2  1 -2  -2  .   .   .  .  .  .
  X.4     16  16  .  . -2  .   .  1   1   1  .  .  .
  X.5      9   9  1  1  .  1   1 -1  -1  -1  1 -1 -1
  X.6      9   9  1  1  .  1   1 -1  -1  -1 -1  1  1
  X.7     10  10 -2 -2  1  .   .  .   .   .  .  B -B
  X.8     10  10 -2 -2  1  .   .  .   .   .  . -B  B
  X.9      6  -3 -2  1  .  2  -1  1   A  /A  .  .  .
  X.10     6  -3 -2  1  .  2  -1  1  /A   A  .  .  .
  X.11    12  -6  4 -2  .  .   .  2  -1  -1  .  .  .
  X.12    18  -9  2 -1  .  2  -1 -2   1   1  .  .  .
  X.13    30 -15 -2  1  . -2   1  .   .   .  .  .  .
  
  A = -E(15)-E(15)^2-E(15)^4-E(15)^8
    = (-1-Sqrt(-15))/2 = -1-b15
  B = E(8)+E(8)^3
    = Sqrt(-2) = i2
  !gapprompt@gap>| !gapinput@IsInternallyConsistent( pseudo );|
  true
  !gapprompt@gap>| !gapinput@irr:= Irr( pseudo );;|
  !gapprompt@gap>| !gapinput@test:= Concatenation( List( [ 2 .. 5 ],|
  !gapprompt@>| !gapinput@              n -> Symmetrizations( pseudo, irr, n ) ) );;|
  !gapprompt@gap>| !gapinput@Append( test, Set( Tensored( irr, irr ) ) );|
  !gapprompt@gap>| !gapinput@fail in Decomposition( irr, test, "nonnegative" );|
  false
  !gapprompt@gap>| !gapinput@if ForAny( Tuples( [ 1 .. NrConjugacyClasses( pseudo ) ], 3 ),        |
  !gapprompt@>| !gapinput@     t -> not ClassMultiplicationCoefficient( pseudo, t[1], t[2], t[3] )   |
  !gapprompt@>| !gapinput@              in NonnegativeIntegers ) then                           |
  !gapprompt@>| !gapinput@     Error( "contradiction" );|
  !gapprompt@>| !gapinput@fi;|
\end{Verbatim}
 

 I do not know a character-theoretic argument for showing that this table is \emph{not} the character table of a group, but we can use the following group-theoretic
argument. Suppose that the group $G$, say, has the above character table. Then $G$ has a unique composition series with factors of the orders $3$, $360$, and $2$, respectively. Let $N$ denote the normal subgroup of order $3$ in $G$. The factor group $F = G/N$ is an automorphic extension of $A_6$, and according to{\nobreakspace}\cite[p. 4]{CCN85} it is isomorphic with $M_{10} = A_6.2_3$ and has Sylow $3$ normalizers of the structure $3^2 : Q_8$. Since the Sylow $3$ subgroup of $G$ is a self-centralizing nonabelian group of order $3^3$ and of exponent $3$, the Sylow $3$ normalizers in $G$ have the structure $3^{{1+2}}_+ : Q_8$, but the $Q_8$ type subgroups of Aut$( 3^{{1+2}}_+ )$ act trivially on the centre of $3^{{1+2}}_+$, contrary to the situation in the above table. 

 In general, this construction need not produce tables for which all
symmetrizations of irreducible characters decompose properly. For example,
applying \texttt{PossibleCharacterTablesOfTypeMGA} (\textbf{CTblLib: PossibleCharacterTablesOfTypeMGA}) to the case $M.G = 3.L_3(4)$ and $G.A = L_3(4).2_1$ does not yield a table because the function suppresses tables that do not
admit $p$-th power maps, for prime divisors $p$ of the order of $M.G.A$, and in this case no compatible $2$-power map exists. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "3.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "L3(4)" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "L3(4).2_1" );;|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );|
  [ [ [ 1 ], [ 2, 3 ], [ 4 ], [ 5, 6 ], [ 7 ], [ 8 ], [ 9, 10 ], 
        [ 11 ], [ 12, 13 ], [ 14 ], [ 15, 16 ], [ 17, 20 ], [ 18, 22 ], 
        [ 19, 21 ], [ 23, 26 ], [ 24, 28 ], [ 25, 27 ] ] ]
  !gapprompt@gap>| !gapinput@PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, elms[1], "?" );|
  [  ]
\end{Verbatim}
 

 Also, it may happen that already \texttt{PossibleActionsForTypeMGA} (\textbf{CTblLib: PossibleActionsForTypeMGA}) returns an empty list. Examples are $M.G = 3_1.U_4(3)$, $G.A = U_4(3).2_2$ and $M.G = 3_2.U_4(3)$, $G.A = U_4(3).2_3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG  := CharacterTable( "U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblMG := CharacterTable( "3_1.U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblGA := CharacterTable( "U4(3).2_2" );;|
  !gapprompt@gap>| !gapinput@PossibleActionsForTypeMGA( tblMG, tblG, tblGA );|
  [  ]
  !gapprompt@gap>| !gapinput@tblMG:= CharacterTable( "3_2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@tblGA:= CharacterTable( "U4(3).2_3" );;|
  !gapprompt@gap>| !gapinput@PossibleActionsForTypeMGA( tblMG, tblG, tblGA );|
  [  ]
\end{Verbatim}
 

 Also the sections \ref{subsect:4_2.L_3(4).2_3} and \ref{subsect:9.U_3(8).3_3} provide examples of pseudo character tables. If one does not use the arguments
about Brauer tables then the latter section presents in fact several pseudo
character tables.                                                               }

  
\subsection{\textcolor{Chapter }{Some Extra-ordinary $p$-Modular Tables of the Type $M.G.A$ (September 2005)}}\label{subsect:Extra-ordinary p-Modular Tables of the Type M.G.A}
\logpage{[ 2, 4, 18 ]}
\hyperdef{L}{X844185EF7A8F2A99}{}
{
  For a group $M.G.A$ in the sense of Section{\nobreakspace}\ref{subsect:theorMGA} such that \emph{not} all ordinary irreducible characters $\chi$ have the property that $M$ is contained in the kernel of $\chi$ or $\chi$ is induced from $M.G$, it may happen that there are primes $p$ such that all irreducible $p$-modular characters have this property. This happens if and only if the
preimages in $M.G.A$ of each $p$-regular conjugacy class in $G.A \setminus G$ form one conjugacy class. 

 The following function can be used to decide whether this situation applies to
a character table in the \textsf{GAP} Character Table Library; here we assume that for the library table of a group
with the structure $M.G.A$, the class fusions from $M.G$ and to $G.A$ are stored. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@FindExtraordinaryCase:= function( tblMGA )|
  !gapprompt@>| !gapinput@   local result, der, nsg, tblMGAclasses, orders, tblMG,|
  !gapprompt@>| !gapinput@         tblMGfustblMGA, tblMGclasses, pos, M, Mimg, tblMGAfustblGA, tblGA,|
  !gapprompt@>| !gapinput@         outer, inv, filt, other, primes, p;|
  !gapprompt@>| !gapinput@   result:= [];|
  !gapprompt@>| !gapinput@   der:= ClassPositionsOfDerivedSubgroup( tblMGA );|
  !gapprompt@>| !gapinput@   nsg:= ClassPositionsOfNormalSubgroups( tblMGA );|
  !gapprompt@>| !gapinput@   tblMGAclasses:= SizesConjugacyClasses( tblMGA );|
  !gapprompt@>| !gapinput@   orders:= OrdersClassRepresentatives( tblMGA );|
  !gapprompt@>| !gapinput@   if Length( der ) < NrConjugacyClasses( tblMGA ) then|
  !gapprompt@>| !gapinput@     # Look for tables of normal subgroups of the form $M.G$.|
  !gapprompt@>| !gapinput@     for tblMG in Filtered( List( NamesOfFusionSources( tblMGA ),|
  !gapprompt@>| !gapinput@                                  CharacterTable ), x -> x <> fail ) do|
  !gapprompt@>| !gapinput@       tblMGfustblMGA:= GetFusionMap( tblMG, tblMGA );|
  !gapprompt@>| !gapinput@       tblMGclasses:= SizesConjugacyClasses( tblMG );|
  !gapprompt@>| !gapinput@       pos:= Position( nsg, Set( tblMGfustblMGA ) );|
  !gapprompt@>| !gapinput@       if pos <> fail and|
  !gapprompt@>| !gapinput@          Size( tblMG ) = Sum( tblMGAclasses{ nsg[ pos ] } ) then|
  !gapprompt@>| !gapinput@         # Look for normal subgroups of the form $M$.|
  !gapprompt@>| !gapinput@         for M in Difference( ClassPositionsOfNormalSubgroups( tblMG ),|
  !gapprompt@>| !gapinput@                      [ [ 1 ], [ 1 .. NrConjugacyClasses( tblMG ) ] ] ) do|
  !gapprompt@>| !gapinput@           Mimg:= Set( tblMGfustblMGA{ M } );|
  !gapprompt@>| !gapinput@           if Sum( tblMGAclasses{ Mimg } ) = Sum( tblMGclasses{ M } ) then|
  !gapprompt@>| !gapinput@             tblMGAfustblGA:= First( ComputedClassFusions( tblMGA ),|
  !gapprompt@>| !gapinput@                 r -> ClassPositionsOfKernel( r.map ) = Mimg );|
  !gapprompt@>| !gapinput@             if tblMGAfustblGA <> fail then|
  !gapprompt@>| !gapinput@               tblGA:= CharacterTable( tblMGAfustblGA.name );|
  !gapprompt@>| !gapinput@               tblMGAfustblGA:= tblMGAfustblGA.map;|
  !gapprompt@>| !gapinput@               outer:= Difference( [ 1 .. NrConjugacyClasses( tblGA ) ],|
  !gapprompt@>| !gapinput@                   CompositionMaps( tblMGAfustblGA, tblMGfustblMGA ) );|
  !gapprompt@>| !gapinput@               inv:= InverseMap( tblMGAfustblGA ){ outer };|
  !gapprompt@>| !gapinput@               filt:= Flat( Filtered( inv, IsList ) );|
  !gapprompt@>| !gapinput@               if not IsEmpty( filt ) then|
  !gapprompt@>| !gapinput@                 other:= Filtered( inv, IsInt );|
  !gapprompt@>| !gapinput@                 primes:= Filtered( PrimeDivisors( Size( tblMGA ) ),|
  !gapprompt@>| !gapinput@                    p -> ForAll( orders{ filt }, x -> x mod p = 0 )|
  !gapprompt@>| !gapinput@                         and ForAny( orders{ other }, x -> x mod p <> 0 ) );|
  !gapprompt@>| !gapinput@                 for p in primes do|
  !gapprompt@>| !gapinput@                   Add( result, [ Identifier( tblMG ),|
  !gapprompt@>| !gapinput@                                  Identifier( tblMGA ),|
  !gapprompt@>| !gapinput@                                  Identifier( tblGA ), p ] );|
  !gapprompt@>| !gapinput@                 od;|
  !gapprompt@>| !gapinput@               fi;|
  !gapprompt@>| !gapinput@             fi;|
  !gapprompt@>| !gapinput@           fi;|
  !gapprompt@>| !gapinput@         od;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   fi;|
  !gapprompt@>| !gapinput@   return result;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Let us list the tables which are found by this function. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cases:= [];;|
  !gapprompt@gap>| !gapinput@for name in AllCharacterTableNames( IsDuplicateTable, false ) do|
  !gapprompt@>| !gapinput@     Append( cases, FindExtraordinaryCase( CharacterTable( name ) ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@for i in Set( cases ) do|
  !gapprompt@>| !gapinput@     Print( i, "\n" ); |
  !gapprompt@>| !gapinput@   od;|
  [ "2.A6", "2.A6.2_1", "A6.2_1", 3 ]
  [ "2.Fi22", "2.Fi22.2", "Fi22.2", 3 ]
  [ "2.L2(25)", "2.L2(25).2_2", "L2(25).2_2", 5 ]
  [ "2.L2(49)", "2.L2(49).2_2", "L2(49).2_2", 7 ]
  [ "2.L2(81)", "2.L2(81).2_1", "L2(81).2_1", 3 ]
  [ "2.L2(81)", "2.L2(81).4_1", "L2(81).4_1", 3 ]
  [ "2.L2(81).2_1", "2.L2(81).4_1", "L2(81).4_1", 3 ]
  [ "2.L4(3)", "2.L4(3).2_2", "L4(3).2_2", 3 ]
  [ "2.L4(3)", "2.L4(3).2_3", "L4(3).2_3", 3 ]
  [ "2.S3", "2.D12", "S3x2", 3 ]
  [ "2.U4(3).2_1", "2.U4(3).(2^2)_{12*2*}", "U4(3).(2^2)_{122}", 3 ]
  [ "2.U4(3).2_1", "2.U4(3).(2^2)_{122}", "U4(3).(2^2)_{122}", 3 ]
  [ "2.U4(3).2_1", "2.U4(3).(2^2)_{13*3*}", "U4(3).(2^2)_{133}", 3 ]
  [ "2.U4(3).2_1", "2.U4(3).(2^2)_{133}", "U4(3).(2^2)_{133}", 3 ]
  [ "3.U3(8)", "3.U3(8).3_1", "U3(8).3_1", 2 ]
  [ "3.U3(8)", "3.U3(8).6", "U3(8).6", 2 ]
  [ "3.U3(8)", "3.U3(8).6", "U3(8).6", 3 ]
  [ "3.U3(8).2", "3.U3(8).6", "U3(8).6", 2 ]
  [ "3^2:8", "2.A8N3", "s3wrs2", 3 ]
  [ "5^(1+2):8:4", "2.HS.2N5", "HS.2N5", 5 ]
  [ "6.A6", "6.A6.2_1", "3.A6.2_1", 3 ]
  [ "6.A6", "6.A6.2_1", "A6.2_1", 3 ]
  [ "6.Fi22", "6.Fi22.2", "3.Fi22.2", 3 ]
  [ "6.Fi22", "6.Fi22.2", "Fi22.2", 3 ]
  [ "Isoclinic(2.U4(3).2_1)", "2.U4(3).(2^2)_{1*2*2}", 
    "U4(3).(2^2)_{122}", 3 ]
  [ "Isoclinic(2.U4(3).2_1)", "2.U4(3).(2^2)_{1*3*3}", 
    "U4(3).(2^2)_{133}", 3 ]
  [ "bd10", "2.D20", "D20", 5 ]
\end{Verbatim}
 

 The smallest example in this list is $2.A_6.2_1$, the double cover of the symmetric group on six points. The $3$-modular table of this group looks as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Display( CharacterTable( "2.A6.2_1" ) mod 3 );|
  2.A6.2_1mod3
  
       2  5   5  4  3  1   1  4  4  3
       3  2   2  .  .  .   .  1  1  .
       5  1   1  .  .  1   1  .  .  .
  
         1a  2a 4a 8a 5a 10a 2b 4b 8b
      2P 1a  1a 2a 4a 5a  5a 1a 2a 4a
      3P 1a  2a 4a 8a 5a 10a 2b 4b 8b
      5P 1a  2a 4a 8a 1a  2a 2b 4b 8b
  
  X.1     1   1  1  1  1   1  1  1  1
  X.2     1   1  1  1  1   1 -1 -1 -1
  X.3     6   6 -2  2  1   1  .  .  .
  X.4     4   4  . -2 -1  -1  2 -2  .
  X.5     4   4  . -2 -1  -1 -2  2  .
  X.6     9   9  1  1 -1  -1  3  3 -1
  X.7     9   9  1  1 -1  -1 -3 -3  1
  X.8     4  -4  .  . -1   1  .  .  .
  X.9    12 -12  .  .  2  -2  .  .  .
\end{Verbatim}
 

 We see that the two faithful irreducible characters vanish on the three
classes outside $2.A_6$. 

 For the groups in the above list, the function \texttt{BrauerTableOfTypeMGA} (\textbf{CTblLib: BrauerTableOfTypeMGA}) can be used to construct the $p$-modular tables of $M.G.A$ from the tables of $M.G$ and $G.A$, for the given special primes $p$. The computations can be performed as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in cases do|
  !gapprompt@>| !gapinput@     p:= input[4];|
  !gapprompt@>| !gapinput@     modtblMG:=  CharacterTable( input[1] ) mod p;|
  !gapprompt@>| !gapinput@     ordtblMGA:= CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     modtblGA:=  CharacterTable( input[3] ) mod p;|
  !gapprompt@>| !gapinput@     name:= Concatenation( Identifier( ordtblMGA ), " mod ", String(p) );|
  !gapprompt@>| !gapinput@     if ForAll( [ modtblMG, modtblGA ], IsCharacterTable ) then|
  !gapprompt@>| !gapinput@       poss:= BrauerTableOfTypeMGA( modtblMG, modtblGA, ordtblMGA );|
  !gapprompt@>| !gapinput@       modlib:= ordtblMGA mod p;|
  !gapprompt@>| !gapinput@       if IsCharacterTable( modlib ) then|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( poss.table,|
  !gapprompt@>| !gapinput@                     modlib );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         Print( "#I  no library table for ", name, "\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Print( "#I  not all input tables for ", name, " available\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  #I  not all input tables for 2.L2(49).2_2 mod 7 available
  #I  not all input tables for 2.L2(81).2_1 mod 3 available
  #I  not all input tables for 2.L2(81).4_1 mod 3 available
  #I  not all input tables for 2.L2(81).4_1 mod 3 available
\end{Verbatim}
 The examples $2.A_6.2_1$, $2.L_2(25).2_2$, and $2.L_2(49).2_2$ belong to the infinite series of semiliniear groups $\Sigma$L$(2,p^2)$, for odd primes $p$. All groups in this series have the property that all faithful irreducible
characters vanish on the $p$-regular classes outside SL$(2,p^2)$. (Cf.{\nobreakspace}Section{\nobreakspace}\ref{subsect:isoclinicATLAS} for another property of the groups in this series.) }

 }

  
\section{\textcolor{Chapter }{Examples for the Type $G.S_3$}}\label{sect:GS3}
\logpage{[ 2, 5, 0 ]}
\hyperdef{L}{X7F50C782840F06E4}{}
{
   
\subsection{\textcolor{Chapter }{Small Examples}}\label{sect:Small Examples}
\logpage{[ 2, 5, 1 ]}
\hyperdef{L}{X7F0DC29F874AA09F}{}
{
  The symmetric group $S_4$ on four points has the form $G.S_3$ where $G$ is the Klein four group $V_4$, $G.2$ is the dihedral group $D_8$ of order $8$, and $G.3$ is the alternating group $A_4$. The trivial character of $A_4$ extends twofold to $S_4$, in the same way as the trivial character of $V_4$ extends to the dihedral group. The nontrivial linear characters of $A_4$ induce irreducibly to $S_4$. The irreducible degree three character of $A_4$ is induced from any of the three nontrivial linear characters of $V_4$, it extends to $S_4$ in the same way as the unique constituent of the restriction to $V_4$ that is invariant in the chosen $D_8$ extends to $D_8$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@t:= c2 * c2;;|
  !gapprompt@gap>| !gapinput@tC:= CharacterTable( "Dihedral", 8 );;|
  !gapprompt@gap>| !gapinput@tK:= CharacterTable( "Alternating", 4 );;|
  !gapprompt@gap>| !gapinput@tfustC:= PossibleClassFusions( t, tC );|
  [ [ 1, 3, 4, 4 ], [ 1, 3, 5, 5 ], [ 1, 4, 3, 4 ], [ 1, 4, 4, 3 ], 
    [ 1, 5, 3, 5 ], [ 1, 5, 5, 3 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( t, tfustC[1], tC );|
  !gapprompt@gap>| !gapinput@tfustK:= PossibleClassFusions( t, tK );|
  [ [ 1, 2, 2, 2 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( t, tfustK[1], tK );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeGS3( t, tC, tK );|
  [ (3,4) ]
  !gapprompt@gap>| !gapinput@new:= CharacterTableOfTypeGS3( t, tC, tK, elms[1], "S4" );|
  rec( table := CharacterTable( "S4" ), 
    tblCfustblKC := [ 1, 4, 2, 2, 5 ], tblKfustblKC := [ 1, 2, 3, 3 ] )
  !gapprompt@gap>| !gapinput@Display( new.table );|
  S4
  
       2  3  3  .  2  2
       3  1  .  1  .  .
  
         1a 2a 3a 4a 2b
      2P 1a 1a 3a 2a 1a
      3P 1a 2a 1a 4a 2b
  
  X.1     1  1  1  1  1
  X.2     1  1  1 -1 -1
  X.3     3 -1  .  1 -1
  X.4     3 -1  . -1  1
  X.5     2  2 -1  .  .
\end{Verbatim}
 

 The case $e > 1$ occurs in the following example. We choose $G$ the cyclic group of order two, $G.C$ the cyclic group of order six, $G.K$ the quaternion group of order eight, and construct the character table of $G.F = SL_2(3)$, with $F \cong A_4$. 

 We get three extensions of the trivial character of $G.K$ to $G.F$, a degree three character induced from the nontrivial linear characters of $G.K$, and three extensions of the irreducible degree $2$ character of $G.K$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@tC:= CharacterTable( "Cyclic", 6 );;|
  !gapprompt@gap>| !gapinput@tK:= CharacterTable( "Quaternionic", 8 );;|
  !gapprompt@gap>| !gapinput@tfustC:= PossibleClassFusions( t, tC );|
  [ [ 1, 4 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( t, tfustC[1], tC );|
  !gapprompt@gap>| !gapinput@tfustK:= PossibleClassFusions( t, tK );|
  [ [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( t, tfustK[1], tK );|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeGS3( t, tC, tK );|
  [ (2,5,4) ]
  !gapprompt@gap>| !gapinput@new:= CharacterTableOfTypeGS3( t, tC, tK, elms[1], "SL(2,3)" );|
  rec( table := CharacterTable( "SL(2,3)" ), 
    tblCfustblKC := [ 1, 4, 5, 3, 6, 7 ], 
    tblKfustblKC := [ 1, 2, 3, 2, 2 ] )
  !gapprompt@gap>| !gapinput@Display( new.table );|
  SL(2,3)
  
       2  3  2  3  1   1   1  1
       3  1  .  1  1   1   1  1
  
         1a 4a 2a 6a  3a  3b 6b
      2P 1a 2a 1a 3a  3b  3a 3b
      3P 1a 4a 2a 2a  1a  1a 2a
  
  X.1     1  1  1  1   1   1  1
  X.2     1  1  1  A  /A   A /A
  X.3     1  1  1 /A   A  /A  A
  X.4     3 -1  3  .   .   .  .
  X.5     2  . -2 /A  -A -/A  A
  X.6     2  . -2  1  -1  -1  1
  X.7     2  . -2  A -/A  -A /A
  
  A = E(3)
    = (-1+Sqrt(-3))/2 = b3
\end{Verbatim}
  }

  
\subsection{\textcolor{Chapter }{\textsf{Atlas} Tables of the Type $G.S_3$}}\label{subsect:xplGS3}
\logpage{[ 2, 5, 2 ]}
\hyperdef{L}{X80F9BC057980A9E9}{}
{
  We demonstrate the construction of all those ordinary and modular character
tables in the \textsf{GAP} Character Table Library that are of the type $G.S_3$ where $G$ is a simple group or a central extension of a simple group whose character
table is contained in the \textsf{Atlas}. Here is the list of \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) values needed for accessing the input tables and the known library tables
corresponding to the output. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@listGS3:= [|
  !gapprompt@>| !gapinput@[ "U3(5)",      "U3(5).2",      "U3(5).3",      "U3(5).S3"        ],|
  !gapprompt@>| !gapinput@[ "3.U3(5)",    "3.U3(5).2",    "3.U3(5).3",    "3.U3(5).S3"      ],|
  !gapprompt@>| !gapinput@[ "L3(4)",      "L3(4).2_2",    "L3(4).3",      "L3(4).3.2_2"     ],|
  !gapprompt@>| !gapinput@[ "L3(4)",      "L3(4).2_3",    "L3(4).3",      "L3(4).3.2_3"     ],|
  !gapprompt@>| !gapinput@[ "3.L3(4)",    "3.L3(4).2_2",  "3.L3(4).3",    "3.L3(4).3.2_2"   ],|
  !gapprompt@>| !gapinput@[ "3.L3(4)",    "3.L3(4).2_3",  "3.L3(4).3",    "3.L3(4).3.2_3"   ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4)",  "2^2.L3(4).2_2","2^2.L3(4).3",  "2^2.L3(4).3.2_2" ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4)",  "2^2.L3(4).2_3","2^2.L3(4).3",  "2^2.L3(4).3.2_3" ],|
  !gapprompt@>| !gapinput@[ "U6(2)",      "U6(2).2",      "U6(2).3",      "U6(2).3.2"       ],|
  !gapprompt@>| !gapinput@[ "3.U6(2)",    "3.U6(2).2",    "3.U6(2).3",    "3.U6(2).3.2"     ],|
  !gapprompt@>| !gapinput@[ "2^2.U6(2)",  "2^2.U6(2).2",  "2^2.U6(2).3",  "2^2.U6(2).3.2"   ],|
  !gapprompt@>| !gapinput@[ "O8+(2)",     "O8+(2).2",     "O8+(2).3",     "O8+(2).3.2"      ],|
  !gapprompt@>| !gapinput@[ "2^2.O8+(2)", "2^2.O8+(2).2", "2^2.O8+(2).3", "2^2.O8+(2).3.2"  ],|
  !gapprompt@>| !gapinput@[ "L3(7)",      "L3(7).2",      "L3(7).3",      "L3(7).S3"        ],|
  !gapprompt@>| !gapinput@[ "3.L3(7)",    "3.L3(7).2",    "3.L3(7).3",    "3.L3(7).S3"      ],|
  !gapprompt@>| !gapinput@[ "U3(8)",      "U3(8).2",      "U3(8).3_2",    "U3(8).S3"        ],|
  !gapprompt@>| !gapinput@[ "3.U3(8)",    "3.U3(8).2",    "3.U3(8).3_2",  "3.U3(8).S3"      ],|
  !gapprompt@>| !gapinput@[ "U3(11)",     "U3(11).2",     "U3(11).3",     "U3(11).S3"       ],|
  !gapprompt@>| !gapinput@[ "3.U3(11)",   "3.U3(11).2",   "3.U3(11).3",   "3.U3(11).S3"     ],|
  !gapprompt@>| !gapinput@[ "O8+(3)",     "O8+(3).2_2",   "O8+(3).3",     "O8+(3).S3"       ],|
  !gapprompt@>| !gapinput@[ "2E6(2)",     "2E6(2).2",     "2E6(2).3",     "2E6(2).S3"       ],|
  !gapprompt@>| !gapinput@[ "2^2.2E6(2)", "2^2.2E6(2).2", "2^2.2E6(2).3", "2^2.2E6(2).S3"   ],|
  !gapprompt@>| !gapinput@];;|
\end{Verbatim}
 

 (For $G$ one of $L_3(4)$, $U_6(2)$, $O_8^+(2)$, and ${}^2E_6(2)$, the tables of $2^2.G$, $2^2.G.2$, and $2^2.G.3$ can be constructed with the methods described in Section{\nobreakspace}\ref{subsect:theorV4G} and Section{\nobreakspace}\ref{subsect:theorMGA}, respectively.) 

 Analogously, the automorphism groups of $L_3(4)$, $U_3(8)$, and $O_8^+(3)$ have factor groups isomorphic with $S_3$; in these cases, we choose $G = L_3(4).2_1$, $G = U_3(8).3_1$, and $G = O_8^+(3).2^2_{111}$, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listGS3, [|
  !gapprompt@>| !gapinput@[ "L3(4).2_1",          "L3(4).2^2",     "L3(4).6",     "L3(4).D12"     ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4).2_1",      "2^2.L3(4).2^2", "2^2.L3(4).6", "2^2.L3(4).D12" ],|
  !gapprompt@>| !gapinput@[ "U3(8).3_1",          "U3(8).6",       "U3(8).3^2",   "U3(8).(S3x3)"  ],|
  !gapprompt@>| !gapinput@[ "O8+(3).(2^2)_{111}", "O8+(3).D8",     "O8+(3).A4",   "O8+(3).S4"     ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 In all these cases, the required table automorphism of $G.3$ is uniquely determined. We first compute the ordinary character table of $G.S_3$ and then the $p$-modular tables, for all prime divisors $p$ of the order of $G$ such that the \textsf{GAP} Character Table Library contains the necessary $p$-modular input tables. 

 In each case, we compare the computed character tables with the ones in the \textsf{GAP} Character Table Library. Note that in order to avoid conflicts of the class
fusions that arise in the construction with the class fusions that are already
stored on the library tables, we choose identifiers for the result tables that
are different from the identifiers of the library tables. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ProcessGS3Example:= function( t, tC, tK, identifier, pi )|
  !gapprompt@>| !gapinput@   local tF, lib, trans, p, tmodp, tCmodp, tKmodp, modtF;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   tF:= CharacterTableOfTypeGS3( t, tC, tK, pi,|
  !gapprompt@>| !gapinput@            Concatenation( identifier, "new" ) );|
  !gapprompt@>| !gapinput@   lib:= CharacterTable( identifier );|
  !gapprompt@>| !gapinput@   if lib <> fail then|
  !gapprompt@>| !gapinput@     trans:= TransformingPermutationsCharacterTables( tF.table, lib );|
  !gapprompt@>| !gapinput@     if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@       Print( "#E  computed table and library table for `", identifier,|
  !gapprompt@>| !gapinput@              "' differ\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   else|
  !gapprompt@>| !gapinput@     Print( "#I  no library table for `", identifier, "'\n" );|
  !gapprompt@>| !gapinput@   fi;|
  !gapprompt@>| !gapinput@   StoreFusion( tC, tF.tblCfustblKC, tF.table );|
  !gapprompt@>| !gapinput@   StoreFusion( tK, tF.tblKfustblKC, tF.table );|
  !gapprompt@>| !gapinput@   for p in PrimeDivisors( Size( t ) ) do|
  !gapprompt@>| !gapinput@     tmodp := t  mod p;|
  !gapprompt@>| !gapinput@     tCmodp:= tC mod p;|
  !gapprompt@>| !gapinput@     tKmodp:= tK mod p;|
  !gapprompt@>| !gapinput@     if IsCharacterTable( tmodp ) and|
  !gapprompt@>| !gapinput@        IsCharacterTable( tCmodp ) and|
  !gapprompt@>| !gapinput@        IsCharacterTable( tKmodp ) then|
  !gapprompt@>| !gapinput@       modtF:= CharacterTableOfTypeGS3( tmodp, tCmodp, tKmodp,|
  !gapprompt@>| !gapinput@                   tF.table,|
  !gapprompt@>| !gapinput@                   Concatenation(  identifier, "mod", String( p ) ) );|
  !gapprompt@>| !gapinput@       if   Length( Irr( modtF.table ) ) <>|
  !gapprompt@>| !gapinput@            Length( Irr( modtF.table )[1] ) then|
  !gapprompt@>| !gapinput@         Print( "#E  nonsquare result table for `",|
  !gapprompt@>| !gapinput@                identifier, " mod ", p, "'\n" );|
  !gapprompt@>| !gapinput@       elif lib <> fail and IsCharacterTable( lib mod p ) then|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( modtF.table,|
  !gapprompt@>| !gapinput@                                                          lib mod p );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for `",|
  !gapprompt@>| !gapinput@                  identifier, " mod ", p, "' differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         Print( "#I  no library table for `", identifier, " mod ",|
  !gapprompt@>| !gapinput@                p, "'\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Print( "#I  not all inputs available for `", identifier,|
  !gapprompt@>| !gapinput@              " mod ", p, "'\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Now we call the function for the examples in the list. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in listGS3 do|
  !gapprompt@>| !gapinput@     t := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tC:= CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     tK:= CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     identifier:= input[4];|
  !gapprompt@>| !gapinput@     elms:= PossibleActionsForTypeGS3( t, tC, tK );|
  !gapprompt@>| !gapinput@     if Length( elms ) = 1 then|
  !gapprompt@>| !gapinput@       ProcessGS3Example( t, tC, tK, identifier, elms[1] );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Print( "#I  ", Length( elms ), " actions possible for `",|
  !gapprompt@>| !gapinput@              identifier, "'\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  #I  not all inputs available for `O8+(3).S3 mod 3'
  #I  not all inputs available for `2E6(2).S3 mod 2'
  #I  not all inputs available for `2E6(2).S3 mod 3'
  #I  not all inputs available for `2E6(2).S3 mod 5'
  #I  not all inputs available for `2E6(2).S3 mod 7'
  #I  not all inputs available for `2E6(2).S3 mod 11'
  #I  not all inputs available for `2E6(2).S3 mod 13'
  #I  not all inputs available for `2E6(2).S3 mod 17'
  #I  not all inputs available for `2E6(2).S3 mod 19'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 2'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 3'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 5'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 7'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 11'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 13'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 17'
  #I  not all inputs available for `2^2.2E6(2).S3 mod 19'
  #I  not all inputs available for `U3(8).(S3x3) mod 2'
  #I  not all inputs available for `U3(8).(S3x3) mod 19'
  #I  not all inputs available for `O8+(3).S4 mod 3'
\end{Verbatim}
 

 Also the ordinary character table of the automorphic extension of the simple \textsf{Atlas} group $O_8^+(3)$ by $A_4$ can be constructed with the same approach. Here we get four possible
permutations, which lead to essentially the same character table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@input:= [ "O8+(3)", "O8+(3).3", "O8+(3).(2^2)_{111}", "O8+(3).A4" ];;|
  !gapprompt@gap>| !gapinput@t := CharacterTable( input[1] );;|
  !gapprompt@gap>| !gapinput@tC:= CharacterTable( input[2] );;|
  !gapprompt@gap>| !gapinput@tK:= CharacterTable( input[3] );;|
  !gapprompt@gap>| !gapinput@identifier:= input[4];;|
  !gapprompt@gap>| !gapinput@elms:= PossibleActionsForTypeGS3( t, tC, tK );;|
  !gapprompt@gap>| !gapinput@Length( elms );|
  4
  !gapprompt@gap>| !gapinput@differ:= MovedPoints( Group( List( elms, x -> x / elms[1] ) ) );;|
  !gapprompt@gap>| !gapinput@List( elms, x -> RestrictedPerm( x, differ ) );|
  [ (118,216,169)(119,217,170)(120,218,167)(121,219,168), 
    (118,216,170)(119,217,169)(120,219,168)(121,218,167), 
    (118,217,169)(119,216,170)(120,218,168)(121,219,167), 
    (118,217,170)(119,216,169)(120,219,167)(121,218,168) ]
  !gapprompt@gap>| !gapinput@poss:= List( elms, pi -> CharacterTableOfTypeGS3( t, tC, tK, pi,|
  !gapprompt@>| !gapinput@            Concatenation( identifier, "new" ) ) );;|
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( identifier );;|
  !gapprompt@gap>| !gapinput@ForAll( poss, r -> IsRecord(|
  !gapprompt@>| !gapinput@       TransformingPermutationsCharacterTables( r.table, lib ) ) );|
  true
\end{Verbatim}
 

 Also the construction of the $p$-modular tables of $O_8^+(3).A_4$ works. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ProcessGS3Example( t, tC, tK, identifier, elms[1] );|
  #I  not all inputs available for `O8+(3).A4 mod 3'
\end{Verbatim}
  }

 }

  
\section{\textcolor{Chapter }{Examples for the Type $G.2^2$}}\label{sect:xplGV4}
\logpage{[ 2, 6, 0 ]}
\hyperdef{L}{X7EA489E07D7C7D86}{}
{
   
\subsection{\textcolor{Chapter }{The Character Table of $A_6.2^2$}}\label{sect:The Character Table of A_6.2^2}
\logpage{[ 2, 6, 1 ]}
\hyperdef{L}{X8054FDE679053B1C}{}
{
  As the first example, we consider the automorphism group Aut$( A_6 ) \cong A_6.2^2$ of the alternating group $A_6$ on six points. 

 In this case, the triple of actions on the subgroups $A_6.2_i$ is uniquely determined by the condition on the number of conjugacy classes in
Section{\nobreakspace}\ref{subsect:theorGV4}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "A6" );;|
  !gapprompt@gap>| !gapinput@tblsG2:= List( [ "A6.2_1", "A6.2_2", "A6.2_3" ], CharacterTable );;|
  !gapprompt@gap>| !gapinput@List( tblsG2, NrConjugacyClasses );|
  [ 11, 11, 8 ]
  !gapprompt@gap>| !gapinput@possact:= List( tblsG2, x -> Filtered( Elements( |
  !gapprompt@>| !gapinput@       AutomorphismsOfTable( x ) ), y -> Order( y ) <= 2 ) );|
  [ [ (), (3,4)(7,8)(10,11) ], 
    [ (), (8,9), (5,6)(10,11), (5,6)(8,9)(10,11) ], [ (), (7,8) ] ]
\end{Verbatim}
 

 Note that $n_1 = n_2$ implies $f_1 = f_2$, and $n_1 - n_3 = 3$ implies $f_1 - f_3 = 2$, so we get $f_1 = 3$ and $f_3 = 1$, and $A_6.2^2$ has $2 \cdot 11 - 3 \cdot 3 = 2 \cdot 8 - 3 \cdot 1 = 13$ classes. 

 (The compatibility on the classes inside $A_6$ yields only that the classes $3$ and $4$ of $A_6.2_1 \cong S_6$ must be fused in $A_6.2^2$, as well as the classes $5$ and $6$ of $A_6.2_2 \cong$ PGL$(2,9)$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( tblsG2, x -> GetFusionMap( tblG, x ) );|
  [ [ 1, 2, 3, 4, 5, 6, 6 ], [ 1, 2, 3, 3, 4, 5, 6 ], 
    [ 1, 2, 3, 3, 4, 5, 5 ] ]
\end{Verbatim}
 

 These arguments are used by the \textsf{GAP} function \texttt{PossibleActionsForTypeGV4} (\textbf{CTblLib: PossibleActionsForTypeGV4}), which returns the list of all possible triples of permutations such that the $i$-th permutation describes the action of $A_6.2^2$ on the classes of $A_6.2_i$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@acts:= PossibleActionsForTypeGV4( tblG, tblsG2 );    |
  [ [ (3,4)(7,8)(10,11), (5,6)(8,9)(10,11), (7,8) ] ]
\end{Verbatim}
 

 For the given actions, the \textsf{GAP} function \texttt{PossibleCharacterTablesOfTypeGV4} (\textbf{CTblLib: PossibleCharacterTablesOfTypeGV4}) then computes the possibilities for the character table of $A_6.2^2$; in this case, the result is unique. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeGV4( tblG, tblsG2, acts[1],|
  !gapprompt@>| !gapinput@              "A6.2^2" );|
  [ rec( 
        G2fusGV4 := [ [ 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8 ], 
            [ 1, 2, 3, 4, 5, 5, 9, 10, 10, 11, 11 ], 
            [ 1, 2, 3, 4, 5, 12, 13, 13 ] ], 
        table := CharacterTable( "A6.2^2" ) ) ]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@                 CharacterTable( "A6.2^2" ) ) );|
  true
\end{Verbatim}
 

 Finally, possible $p$-modular tables can be computed from the $p$-modular input tables and the ordinary table of $A_6.2^2$; here we show this for $p = 3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleCharacterTablesOfTypeGV4( tblG mod 3,|
  !gapprompt@>| !gapinput@       List( tblsG2, t -> t mod 3 ), poss[1].table );|
  [ rec( 
        G2fusGV4 := 
          [ [ 1, 2, 3, 4, 5, 5, 6 ], [ 1, 2, 3, 4, 4, 7, 8, 8, 9, 9 ], 
            [ 1, 2, 3, 4, 10, 11, 11 ] ], 
        table := BrauerTable( "A6.2^2", 3 ) ) ]
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{\textsf{Atlas} Tables of the Type $G.2^2$ {\textendash} Easy Cases}}\label{subsect:xplGV43.A6.V4}
\logpage{[ 2, 6, 2 ]}
\hyperdef{L}{X7FEC3AB081487AF2}{}
{
  We demonstrate the construction of all those ordinary and modular character
tables in the \textsf{GAP} Character Table Library that are of the type $G.2^2$ where $G$ is a simple group or a central extension of a simple group whose character
table is contained in the \textsf{Atlas}. Here is the list of \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) values needed for accessing the input tables and the result tables. 

 (The construction of the character table of $O_8^+(3).2^2_{111}$ is more involved and will be described in Section{\nobreakspace}\ref{subsect:O_8^+(3).2^2_111}. The construction of the character tables of groups of the type $2.L_3(4).2^2$ and $6.L_3(4).2^2$ is described in the sections{\nobreakspace}\ref{subsect:2L34V4} and{\nobreakspace}\ref{subsect:6L34V4}, respectively. The construction of the character tables of groups of the type $2.U_4(3).2^2$ is described in Section{\nobreakspace}\ref{subsect:2U43V4}.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@listGV4:= [|
  !gapprompt@>| !gapinput@[ "A6",      "A6.2_1",      "A6.2_2",      "A6.2_3",      "A6.2^2"      ],|
  !gapprompt@>| !gapinput@[ "3.A6",    "3.A6.2_1",    "3.A6.2_2",    "3.A6.2_3",    "3.A6.2^2"    ],|
  !gapprompt@>| !gapinput@[ "L2(25)",  "L2(25).2_1",  "L2(25).2_2",  "L2(25).2_3",  "L2(25).2^2"  ],|
  !gapprompt@>| !gapinput@[ "L3(4)",   "L3(4).2_1",   "L3(4).2_2",   "L3(4).2_3",   "L3(4).2^2"   ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4)", "2^2.L3(4).2_1", "2^2.L3(4).2_2", "2^2.L3(4).2_3",|
  !gapprompt@>| !gapinput@                                                        "2^2.L3(4).2^2" ],|
  !gapprompt@>| !gapinput@[ "3.L3(4)", "3.L3(4).2_1", "3.L3(4).2_2", "3.L3(4).2_3", "3.L3(4).2^2" ],|
  !gapprompt@>| !gapinput@[ "U4(3)",   "U4(3).2_1",   "U4(3).2_2",   "U4(3).2_2'",|
  !gapprompt@>| !gapinput@                                                    "U4(3).(2^2)_{122}" ],|
  !gapprompt@>| !gapinput@[ "U4(3)",   "U4(3).2_1",   "U4(3).2_3",   "U4(3).2_3'",|
  !gapprompt@>| !gapinput@                                                    "U4(3).(2^2)_{133}" ],|
  !gapprompt@>| !gapinput@[ "3_1.U4(3)", "3_1.U4(3).2_1", "3_1.U4(3).2_2", "3_1.U4(3).2_2'",|
  !gapprompt@>| !gapinput@                                                "3_1.U4(3).(2^2)_{122}" ],|
  !gapprompt@>| !gapinput@[ "3_2.U4(3)", "3_2.U4(3).2_1", "3_2.U4(3).2_3", "3_2.U4(3).2_3'",|
  !gapprompt@>| !gapinput@                                                "3_2.U4(3).(2^2)_{133}" ],|
  !gapprompt@>| !gapinput@[ "L2(49)",  "L2(49).2_1",  "L2(49).2_2",  "L2(49).2_3",  "L2(49).2^2"  ],|
  !gapprompt@>| !gapinput@[ "L2(81)",  "L2(81).2_1",  "L2(81).2_2",  "L2(81).2_3",  "L2(81).2^2"  ],|
  !gapprompt@>| !gapinput@[ "L3(9)",   "L3(9).2_1",   "L3(9).2_2",   "L3(9).2_3",   "L3(9).2^2"   ],|
  !gapprompt@>| !gapinput@[ "O8+(3)",  "O8+(3).2_1",  "O8+(3).2_2",  "O8+(3).2_2'",|
  !gapprompt@>| !gapinput@                                                   "O8+(3).(2^2)_{122}" ],|
  !gapprompt@>| !gapinput@[ "O8-(3)",  "O8-(3).2_1",  "O8-(3).2_2",  "O8-(3).2_3",  "O8-(3).2^2"  ],|
  !gapprompt@>| !gapinput@];;|
\end{Verbatim}
 

 Analogously, the automorphism groups $L_3(4).D_{12}$ of $L_3(4)$ and $U_4(3).D_8$ of $U_4(3)$, and the subgroup $O_8^+(3).D_8$ of the automorphism group $O_8^+(3).S_4$ have factor groups that are isomorphic with $2^2$; in these cases, we choose $G = L_3(4).3$, $G = U_4(3).2_1$, and $G = O_8^+(3).2_1$, respectively. 

 Also the group $2^2.L_3(4).D_{12}$ has a factor group isomorphic with $2^2$. Note that the character tables of $L_3(4).D_{12}$ and $2^2.L_3(4).D_{12}$ have been constructed already in Section{\nobreakspace}\ref{subsect:xplGS3}. 

 The automorphism groups of $L_4(4)$ and $U_4(5)$ have the structure $L_4(4).2^2$ and $U_4(5).2^2$, respectively; their tables are contained in the \textsf{GAP} Character Table Library but not in the \textsf{Atlas}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( listGV4, [|
  !gapprompt@>| !gapinput@[ "L3(4).3", "L3(4).6",     "L3(4).3.2_2", "L3(4).3.2_3", "L3(4).D12"   ],|
  !gapprompt@>| !gapinput@[ "2^2.L3(4).3", "2^2.L3(4).6", "2^2.L3(4).3.2_2", "2^2.L3(4).3.2_3",|
  !gapprompt@>| !gapinput@                                                        "2^2.L3(4).D12" ],|
  !gapprompt@>| !gapinput@[ "U4(3).2_1", "U4(3).4", "U4(3).(2^2)_{122}", "U4(3).(2^2)_{133}",|
  !gapprompt@>| !gapinput@                                                             "U4(3).D8" ],|
  !gapprompt@>| !gapinput@[ "O8+(3).2_1", "O8+(3).(2^2)_{111}", "O8+(3).(2^2)_{122}", "O8+(3).4",|
  !gapprompt@>| !gapinput@                                                            "O8+(3).D8" ],|
  !gapprompt@>| !gapinput@[ "L4(4)",   "L4(4).2_1",   "L4(4).2_2",   "L4(4).2_3",   "L4(4).2^2"   ],|
  !gapprompt@>| !gapinput@[ "U4(5)",   "U4(5).2_1",   "U4(5).2_2",   "U4(5).2_3",   "U4(5).2^2"   ],|
  !gapprompt@>| !gapinput@] );|
\end{Verbatim}
 

 Now we proceed in two steps, the computation of the possible ordinary
character tables from the ordinary tables of the relevant subgroups, and then
the computation of the Brauer tables from the Brauer tables of the relevant
subgroups and from the ordinary table of the group. 

 The following function first computes the possible triples of actions on the
subgroups $G.2_i$, using the function \texttt{PossibleActionsForTypeGV4} (\textbf{CTblLib: PossibleActionsForTypeGV4}). Then the union of the candidate tables for these actions is computed, this
list is returned in the end. and representatives of classes of permutation
equivalent candidates are inspected further with consistency checks. If there
is a unique solution up to permutation equivalence, this table is compared
with the one that is contained in the \textsf{GAP} Character Table Library. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ConstructOrdinaryGV4Table:= function( tblG, tblsG2, name, lib )|
  !gapprompt@>| !gapinput@     local acts, nam, poss, reps, i, trans;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     # Compute the possible actions for the ordinary tables.|
  !gapprompt@>| !gapinput@     acts:= PossibleActionsForTypeGV4( tblG, tblsG2 );|
  !gapprompt@>| !gapinput@     # Compute the possible ordinary tables for the given actions.|
  !gapprompt@>| !gapinput@     nam:= Concatenation( "new", name );|
  !gapprompt@>| !gapinput@     poss:= Concatenation( List( acts, triple -> |
  !gapprompt@>| !gapinput@         PossibleCharacterTablesOfTypeGV4( tblG, tblsG2, triple, nam ) ) );|
  !gapprompt@>| !gapinput@     # Test the possibilities for permutation equivalence.|
  !gapprompt@>| !gapinput@     reps:= RepresentativesCharacterTables( poss );|
  !gapprompt@>| !gapinput@     if 1 < Length( reps ) then|
  !gapprompt@>| !gapinput@       Print( "#I  ", name, ": ", Length( reps ),|
  !gapprompt@>| !gapinput@              " equivalence classes\n" );|
  !gapprompt@>| !gapinput@     elif Length( reps ) = 0 then|
  !gapprompt@>| !gapinput@       Print( "#E  ", name, ": no solution\n" );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       # Compare the computed table with the library table.|
  !gapprompt@>| !gapinput@       if not IsCharacterTable( lib ) then|
  !gapprompt@>| !gapinput@         Print( "#I  no library table for ", name, "\n" );|
  !gapprompt@>| !gapinput@         PrintToLib( name, poss[1].table );|
  !gapprompt@>| !gapinput@         for i in [ 1 .. 3 ] do|
  !gapprompt@>| !gapinput@           Print( LibraryFusion( tblsG2[i],|
  !gapprompt@>| !gapinput@                      rec( name:= name, map:= poss[1].G2fusGV4[i] ) ) );|
  !gapprompt@>| !gapinput@         od;|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@                     lib );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@         # Compare the computed fusions with the stored ones.|
  !gapprompt@>| !gapinput@         if List( poss[1].G2fusGV4, x -> OnTuples( x, trans.columns ) )|
  !gapprompt@>| !gapinput@                <> List( tblsG2, x -> GetFusionMap( x, lib ) ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed and stored fusions for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     return poss;|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 

 The following function computes, for all those prime divisors $p$ of the group order in question such that the $p$-modular Brauer tables of the subgroups $G.2_i$ are available, the possible $p$-modular Brauer tables. If the solution is unique up to permutation
equivalence, it is compared with the table that is contained in the \textsf{GAP} Character Table Library. 

 It may happen (even in the case that the ordinary character table is unique up
to permutation equivalence) that some candidates for the ordinary character
table are excluded due to information provided by some $p$-modular table. In this case, a message is printed, and the ordinary character
table from the \textsf{GAP} Character Table Library is checked again under the additional restrictions. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ConstructModularGV4Tables:= function( tblG, tblsG2, ordposs,|
  !gapprompt@>| !gapinput@                                         ordlibtblGV4 )|
  !gapprompt@>| !gapinput@     local name, modposs, primes, checkordinary, i, record, p, tmodp,|
  !gapprompt@>| !gapinput@           t2modp, poss, modlib, trans, reps;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     if not IsCharacterTable( ordlibtblGV4 ) then|
  !gapprompt@>| !gapinput@       Print( "#I  no ordinary library table ...\n" );|
  !gapprompt@>| !gapinput@       return [];|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     name:= Identifier( ordlibtblGV4 );|
  !gapprompt@>| !gapinput@     modposs:= List( ordposs, x -> [] );|
  !gapprompt@>| !gapinput@     primes:= ShallowCopy( PrimeDivisors( Size( tblG ) ) );|
  !gapprompt@>| !gapinput@     ordposs:= ShallowCopy( ordposs );|
  !gapprompt@>| !gapinput@     checkordinary:= false;|
  !gapprompt@>| !gapinput@     for i in [ 1 .. Length( ordposs ) ] do|
  !gapprompt@>| !gapinput@       record:= ordposs[i];|
  !gapprompt@>| !gapinput@       for p in primes do|
  !gapprompt@>| !gapinput@         tmodp := tblG  mod p;|
  !gapprompt@>| !gapinput@         t2modp:= List( tblsG2, t2 -> t2 mod p );|
  !gapprompt@>| !gapinput@         if IsCharacterTable( tmodp ) and|
  !gapprompt@>| !gapinput@            ForAll( t2modp, IsCharacterTable ) then|
  !gapprompt@>| !gapinput@           poss:= PossibleCharacterTablesOfTypeGV4( tmodp, t2modp,|
  !gapprompt@>| !gapinput@                      record.table, record.G2fusGV4 );|
  !gapprompt@>| !gapinput@           poss:= RepresentativesCharacterTables( poss );|
  !gapprompt@>| !gapinput@           if   Length( poss ) = 0 then|
  !gapprompt@>| !gapinput@             Print( "#I  excluded cand. ", i, " (out of ",|
  !gapprompt@>| !gapinput@                    Length( ordposs ), ") for ", name, " by ", p,|
  !gapprompt@>| !gapinput@                    "-mod. table\n" );|
  !gapprompt@>| !gapinput@             Unbind( ordposs[i] );|
  !gapprompt@>| !gapinput@             Unbind( modposs[i] );|
  !gapprompt@>| !gapinput@             checkordinary:= true;|
  !gapprompt@>| !gapinput@             break;|
  !gapprompt@>| !gapinput@           elif Length( poss ) = 1 then|
  !gapprompt@>| !gapinput@             # Compare the computed table with the library table.|
  !gapprompt@>| !gapinput@             modlib:= ordlibtblGV4 mod p;|
  !gapprompt@>| !gapinput@             if IsCharacterTable( modlib ) then|
  !gapprompt@>| !gapinput@               trans:= TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                           poss[1].table, modlib );|
  !gapprompt@>| !gapinput@               if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@                 Print( "#E  computed table and library table for ",|
  !gapprompt@>| !gapinput@                        name, " mod ", p, " differ\n" );|
  !gapprompt@>| !gapinput@               fi;|
  !gapprompt@>| !gapinput@             else|
  !gapprompt@>| !gapinput@               Print( "#I  no library table for ",|
  !gapprompt@>| !gapinput@                      name, " mod ", p, "\n" );|
  !gapprompt@>| !gapinput@               PrintToLib( name, poss[1].table );|
  !gapprompt@>| !gapinput@             fi;|
  !gapprompt@>| !gapinput@           else|
  !gapprompt@>| !gapinput@             Print( "#I  ", name, " mod ", p, ": ", Length( poss ),|
  !gapprompt@>| !gapinput@                    " equivalence classes\n" );|
  !gapprompt@>| !gapinput@           fi;|
  !gapprompt@>| !gapinput@           Add( modposs[i], poss );|
  !gapprompt@>| !gapinput@         elif i = 1 then|
  !gapprompt@>| !gapinput@           Print( "#I  not all input tables for ", name, " mod ", p,|
  !gapprompt@>| !gapinput@                  " available\n" );|
  !gapprompt@>| !gapinput@           primes:= Difference( primes, [ p ] );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     if checkordinary then|
  !gapprompt@>| !gapinput@       # Test whether the ordinary table is admissible.|
  !gapprompt@>| !gapinput@       ordposs:= Compacted( ordposs );|
  !gapprompt@>| !gapinput@       modposs:= Compacted( modposs );|
  !gapprompt@>| !gapinput@       reps:= RepresentativesCharacterTables( ordposs );|
  !gapprompt@>| !gapinput@       if 1 < Length( reps ) then|
  !gapprompt@>| !gapinput@         Print( "#I  ", name, ": ", Length( reps ),|
  !gapprompt@>| !gapinput@                " equivalence classes (ord. table)\n" );|
  !gapprompt@>| !gapinput@       elif Length( reps ) = 0 then|
  !gapprompt@>| !gapinput@         Print( "#E  ", name, ": no solution (ord. table)\n" );|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         # Compare the computed table with the library table.|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                     ordposs[1].table, ordlibtblGV4 );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@         # Compare the computed fusions with the stored ones.|
  !gapprompt@>| !gapinput@         if List( ordposs[1].G2fusGV4, x -> OnTuples( x, trans.columns ) )|
  !gapprompt@>| !gapinput@              <> List( tblsG2, x -> GetFusionMap( x, ordlibtblGV4 ) ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed and stored fusions for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     return rec( ordinary:= ordposs, modular:= modposs );|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 

 Finally, here is the loop over the list of tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in listGV4 do|
  !gapprompt@>| !gapinput@     tblG   := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tblsG2 := List( input{ [ 2 .. 4 ] }, CharacterTable );|
  !gapprompt@>| !gapinput@     lib    := CharacterTable( input[5] );|
  !gapprompt@>| !gapinput@     poss   := ConstructOrdinaryGV4Table( tblG, tblsG2, input[5], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 2 (out of 2) for L3(4).2^2 by 3-mod. table
  #I  excluded cand. 2 (out of 8) for 2^2.L3(4).2^2 by 7-mod. table
  #I  excluded cand. 3 (out of 8) for 2^2.L3(4).2^2 by 5-mod. table
  #I  excluded cand. 4 (out of 8) for 2^2.L3(4).2^2 by 5-mod. table
  #I  excluded cand. 5 (out of 8) for 2^2.L3(4).2^2 by 5-mod. table
  #I  excluded cand. 6 (out of 8) for 2^2.L3(4).2^2 by 5-mod. table
  #I  excluded cand. 7 (out of 8) for 2^2.L3(4).2^2 by 7-mod. table
  #I  excluded cand. 2 (out of 2) for 3.L3(4).2^2 by 3-mod. table
  #I  not all input tables for L2(49).2^2 mod 7 available
  #I  not all input tables for L2(81).2^2 mod 3 available
  #I  excluded cand. 2 (out of 2) for L3(9).2^2 by 7-mod. table
  #I  not all input tables for O8+(3).(2^2)_{122} mod 3 available
  #I  not all input tables for O8-(3).2^2 mod 3 available
  #I  not all input tables for O8-(3).2^2 mod 5 available
  #I  not all input tables for O8-(3).2^2 mod 7 available
  #I  not all input tables for O8-(3).2^2 mod 13 available
  #I  not all input tables for O8-(3).2^2 mod 41 available
  #I  excluded cand. 2 (out of 2) for L3(4).D12 by 3-mod. table
  #I  excluded cand. 2 (out of 2) for 2^2.L3(4).D12 by 7-mod. table
  #I  not all input tables for O8+(3).D8 mod 3 available
  #I  not all input tables for L4(4).2^2 mod 3 available
  #I  not all input tables for L4(4).2^2 mod 5 available
  #I  not all input tables for L4(4).2^2 mod 7 available
  #I  not all input tables for L4(4).2^2 mod 17 available
  #I  not all input tables for U4(5).2^2 mod 2 available
  #I  not all input tables for U4(5).2^2 mod 3 available
  #I  not all input tables for U4(5).2^2 mod 5 available
  #I  not all input tables for U4(5).2^2 mod 7 available
  #I  not all input tables for U4(5).2^2 mod 13 available
\end{Verbatim}
 

 The groups $3.A_6.2^2$, $3.L_3(4).2^2$, and $3_2.U_4(3).(2^2)_{133}$ have also the structure $M.G.A$, with $M.G$ equal to $3.A_6.2_3$, $3.L_3(4).2_1$, and $3_2.U_4(3).2_3$, respectively, and $G.A$ equal to $A_6.2^2$, $L_3(4).2^2$, and $U_4(3).(2^2)_{133}$, respectively (see Section{\nobreakspace}\ref{subsect:ATLASMGA}). 

 Similarly, the group $L_3(4).D_{12}$ has also the structure $G.S_3$, with $G = L_3(4).2_1$, $G.2 = L_3(4).2^2$, and $G.3 = L_3(4).6$, respectively (see Section{\nobreakspace}\ref{subsect:xplGS3}).  }

  
\subsection{\textcolor{Chapter }{The Character Table of $S_4(9).2^2$ (September 2011)}}\label{subsect:The Character Table of S_4(9).2^2}
\logpage{[ 2, 6, 3 ]}
\hyperdef{L}{X869B65D3863EDEC3}{}
{
  The available functions yield two possibilities for the ordinary character
table of $S_4(9).2^2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "S4(9)" );;|
  !gapprompt@gap>| !gapinput@tblsG2:= List( [ "S4(9).2_1", "S4(9).2_2", "S4(9).2_3" ],|
  !gapprompt@>| !gapinput@                  CharacterTable );;|
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "S4(9).2^2" );;|
  !gapprompt@gap>| !gapinput@poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, "newS4(9).2^2", lib );;|
  #I  newS4(9).2^2: 2 equivalence classes
  !gapprompt@gap>| !gapinput@poss:= RepresentativesCharacterTables( poss );;|
\end{Verbatim}
 

 The two candidates differ w.{\nobreakspace}r.{\nobreakspace}t. the action of $S_4(9).2^2$ on the classes of element order $80$ in $S_4(9).2_2$. In the two possible tables, each element of order $80$ is conjugate to its third power or to its $13$-th power, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@order80:= PositionsProperty( OrdersClassRepresentatives( tblsG2[2] ),|
  !gapprompt@>| !gapinput@                 x -> x = 80 );|
  [ 98, 99, 100, 101, 102, 103, 104, 105 ]
  !gapprompt@gap>| !gapinput@List( poss, r -> r.G2fusGV4[2]{ order80 } );|
  [ [ 77, 77, 78, 79, 80, 78, 79, 80 ], 
    [ 77, 78, 79, 79, 77, 80, 80, 78 ] ]
  !gapprompt@gap>| !gapinput@PowerMap( tblsG2[2], 3 ){ order80 };|
  [ 99, 98, 103, 104, 105, 100, 101, 102 ]
  !gapprompt@gap>| !gapinput@PowerMap( tblsG2[2], 13 ){ order80 };|
  [ 102, 105, 101, 100, 98, 104, 103, 99 ]
\end{Verbatim}
 

 We claim that the first candidate is the correct one. For that, first note
that $S_4(9).2_2$ is the extension of the simple group by a diagonal automorphism. (An easy way
to see this is that for any subgroup of $S_4(9)$ isomorphic with $S_2(81) \cong L_2(81)$, the extension by a diagonal automorphism contains elements of order $80$ {\textendash}this group is isomorphic with PGL$(2,81)${\textendash} and only $S_4(9).2_2$ contains elements of order $80$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( tblsG2, x -> 80 in OrdersClassRepresentatives( x ) );|
  [ false, true, false ]
\end{Verbatim}
 

 Now the field automorphism of $S_4(9).2_2$ maps each element $x$ of order $80$ in $S_4(9).2_2$ to a conjugate of $x^3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= poss[1].table;;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tbl, lib ) );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Tables of Groups of the Type $2.L_3(4).2^2$ (June 2010)}}\label{subsect:2L34V4}
\logpage{[ 2, 6, 4 ]}
\hyperdef{L}{X7B38006380618543}{}
{
  The outer automorphism group of the group $L_3(4)$ is a dihedral group of order $12$; its Sylow $2$-subgroups are Klein four groups, so there is a unique almost simple group $H$ of the type $L_3(4).2^2$, up to isomorphism. In this section, we construct the character tables of the
double covers of this group with the approach from Section{\nobreakspace}\ref{subsect:theorGV4}. 

 The group $H$ has three subgroups of index two, of the types $L_3(4).2_1$, $L_3(4).2_2$, and $L_3(4).2_3$, respectively. So any double cover of $H$ contains one subgroup of each of the types $2.L_3(4).2_1$, $2.L_3(4).2_2$, and $2.L_3(4).2_3$, and there are two isoclinic variants of each of these group to consider, see
Section{\nobreakspace}\ref{subsect:isoclinicATLAS}. So we start with eight different inputs for the construction of the
character tables of double covers. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= List( [ 1 .. 3 ],|
  !gapprompt@>| !gapinput@                 i -> Concatenation( "2.L3(4).2_", String( i ) ) );;|
  !gapprompt@gap>| !gapinput@tbls:= List( names, CharacterTable );|
  [ CharacterTable( "2.L3(4).2_1" ), CharacterTable( "2.L3(4).2_2" ), 
    CharacterTable( "2.L3(4).2_3" ) ]
  !gapprompt@gap>| !gapinput@isos:= List( names, nam -> CharacterTable( Concatenation( nam, "*" ) ) );|
  [ CharacterTable( "Isoclinic(2.L3(4).2_1)" ), 
    CharacterTable( "Isoclinic(2.L3(4).2_2)" ), 
    CharacterTable( "Isoclinic(2.L3(4).2_3)" ) ]
  !gapprompt@gap>| !gapinput@inputs:= [|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], tbls[3], "2.L3(4).(2^2)_{123}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], tbls[3], "2.L3(4).(2^2)_{12*3}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], isos[3], "2.L3(4).(2^2)_{123*}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], isos[3], "2.L3(4).(2^2)_{12*3*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], tbls[3], "2.L3(4).(2^2)_{1*23}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], tbls[3], "2.L3(4).(2^2)_{1*2*3}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], isos[3], "2.L3(4).(2^2)_{1*23*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], isos[3], "2.L3(4).(2^2)_{1*2*3*}" ] ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@result:= [];;|
  !gapprompt@gap>| !gapinput@for input in inputs do|
  !gapprompt@>| !gapinput@     tblsG2:= input{ [ 1 .. 3 ] };|
  !gapprompt@>| !gapinput@     lib:= CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, input[4], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@     Append( result, RepresentativesCharacterTables( poss ) );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 2 (out of 8) for 2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 2.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 2.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 2.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 2.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 2.L3(4).(2^2)_{12*3*} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 2.L3(4).(2^2)_{12*3*} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 2.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 2.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 2.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 2.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 2.L3(4).(2^2)_{1*2*3} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 2.L3(4).(2^2)_{1*2*3} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 2.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 2.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 2.L3(4).(2^2)_{1*23*} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 2.L3(4).(2^2)_{1*23*} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  !gapprompt@gap>| !gapinput@result:= List( result, x -> x.table );|
  [ CharacterTable( "new2.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{12*3*}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{1*23}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{1*2*3}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{1*23*}" ), 
    CharacterTable( "new2.L3(4).(2^2)_{1*2*3*}" ) ]
\end{Verbatim}
 

 We get exactly one character table for each input. For each of these tables,
there are three possibilities to form an isoclinic table, corresponding to the
three subgroups of index two. It turns out that the eight solutions form two
orbits under forming some isoclinic table. Tables in different orbits are
essentially different, already their numbers of conjugacy classes differ. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( result, NrConjugacyClasses );|
  [ 39, 33, 33, 39, 33, 39, 39, 33 ]
  !gapprompt@gap>| !gapinput@t:= result[1];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 4, 7, 6 ]
  !gapprompt@gap>| !gapinput@t:= result[2];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 3, 8, 5 ]
\end{Verbatim}
 

 Up to now, it is not clear that the character tables we have constructed are
really the character tables of some groups. The existence of groups for the
first orbit of character tables can be established as follows. 

 The group $U_6(2).2$ contains a maximal subgroup $M$ of the type $L_3(4).2^2$, see{\nobreakspace}\cite[p. 115]{CCN85}. Its derived subgroup $M'$ of the type $L_3(4)$ lies inside $U_6(2)$, and we claim that the preimage of $M'$ under the natural epimorphism from $2.U_6(2)$ to $U_6(2)$ is a double cover of $L_3(4)$. Unfortunately, $L_3(4)$ admits class fusions into $2.U_6(2)$, so this criterion cannot be used. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@l34:= CharacterTable( "L3(4)" );;|
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "U6(2)" );;|
  !gapprompt@gap>| !gapinput@2u:= CharacterTable( "2.U6(2)" );;|
  !gapprompt@gap>| !gapinput@cand:= PossibleClassFusions( l34, 2u );|
  [ [ 1, 5, 12, 16, 22, 22, 23, 23, 41, 41 ], 
    [ 1, 5, 12, 22, 16, 22, 23, 23, 41, 41 ], 
    [ 1, 5, 12, 22, 22, 16, 23, 23, 41, 41 ] ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( l34 );|
  [ 1, 2, 3, 4, 4, 4, 5, 5, 7, 7 ]
\end{Verbatim}
 

 Consider the three classes of elements of order four in $L_3(4)$. Under the possible fusions into $2.U_6(2)$, they are mapped to the classes $16$ and $22$, which are preimages of the classes $10$ and $14$ (\texttt{4C} and \texttt{4G}) of $U_6(2)$. Note that the maximal subgroups of type $L_3(4).2$ in $U_6(2)$ extend to $L_3(4).6$ type subgroups in $U_6(2).3$, and the three classes \texttt{4C}, \texttt{4D}, \texttt{4E} form one orbit under the action of an outer automorphism of order three of $U_6(2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( 2u, u ){ [ 16, 22 ] };|
  [ 10, 14 ]
  !gapprompt@gap>| !gapinput@ClassNames( u, "ATLAS" ){ [ 10, 14 ] };|
  [ "4C", "4G" ]
  !gapprompt@gap>| !gapinput@GetFusionMap( u, CharacterTable( "U6(2).3" ) );|
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, 14, 15, 16, 17, 
    18, 19, 20, 21, 22, 23, 24, 24, 24, 25, 26, 27, 28, 29, 30, 31, 32, 
    33, 34, 35, 36, 36, 36, 37, 38, 39, 40 ]
\end{Verbatim}
 

 This means that any $L_3(4)$ type subgroup of $U_6(2)$ that extends to an $L_3(4).6$ type subgroup in $U_6(2).3$ either contains elements from all three classes \texttt{4C}, \texttt{4D}, \texttt{4E} of $U_6(2)$, or contains no element from these classes. Thus we know that any double
cover of $U_6(2).2$ contains a double cover of $L_3(4).2^2$. Only the first of our result tables admits a class fusion into the table of $2.U_6(2).2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2u2:= CharacterTable( "2.U6(2).2" );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 2u2 ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 4, 0, 0, 0, 0, 0, 0, 0 ]
\end{Verbatim}
 

 As a consequence, the fourth result table is established as that of a maximal
subgroup of the group isoclinic to $2.U_6(2).2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2u2iso:= CharacterTableIsoclinic( 2u2 );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 2u2iso ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 0, 4, 0, 0, 0, 0 ]
\end{Verbatim}
 

 Similarly, the group $HS.2$ contains a maximal subgroup $M$ of the type $L_3(4).2^2$, see{\nobreakspace}\cite[p. 80]{CCN85}. Its derived subgroup $M'$ of the type $L_3(4)$ lies inside $HS$, and the preimage of $M'$ under the natural epimorphism from $2.HS$ to $HS$ is a double cover of $L_3(4)$, because $L_3(4)$ does not admit a class fusion into $2.HS.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@h2:= CharacterTable( "HS.2" );;|
  !gapprompt@gap>| !gapinput@2h2:= CharacterTable( "2.HS.2" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( l34, 2h2 );|
  [  ]
\end{Verbatim}
 

 Only the fifth of our result tables admits a class fusion into $2.HS.2$, which means that $2.L_3(4).(2^2)_{1{\ast}23}$ is a subgroup of $2.HS.2$, and the eighth result table {\textendash}$2.L_3(4).(2^2)_{1{\ast}2{\ast}3{\ast}}${\textendash} admits a class fusion into the isoclinic variant of $2.HS.2$ This shows the existence of groups for the tables from the second orbit. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 2h2 ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 0, 0, 4, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@2h2iso:= CharacterTableIsoclinic( 2h2 );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 2h2iso ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 0, 0, 0, 0, 0, 4 ]
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Tables of Groups of the Type $6.L_3(4).2^2$ (October 2011)}}\label{subsect:6L34V4}
\logpage{[ 2, 6, 5 ]}
\hyperdef{L}{X79818ABD7E972370}{}
{
  We have two approaches for constructing the character tables of these groups. 

 First, we may regard them as normal products of the three normal subgroups of
index two, each of them having the structure $6.L_3(4).2$, and use the approach from Section{\nobreakspace}\ref{subsect:theorGV4}, as we did in Section{\nobreakspace}\ref{subsect:2L34V4} for the groups of the structure $2.L_3(4).2^2$. 

 Second, we may use the approach from Section{\nobreakspace}\ref{subsect:theorMGA}. Note that the factor group $L_3(4).2^2$ contains each of the three groups $L_3(4).2_i$ as a subgroup, for $1 \leq i \leq 3$, and the groups of the type $6.L_3(4).2_1$ have a centre of order six, whereas the centres of the $6.L_3(4).2_2$ and $6.L_3(4).2_3$ type groups have order two. For that, the character tables of the subgroups $6.L_3(4).2_1$ and $6.L_3(4).2_1^{\ast}$ are needed, as well as the character tables of the eight possible factor
groups $2.L_3(4).2^2$; the latter tables are known from Section{\nobreakspace}\ref{subsect:2L34V4}. 

 We show both approaches. (The second approach is better suited for storing the
character tables in the Character Table Library, since the irreducible
characters need not be stored, and since the Brauer tables of the groups can
be derived from the Brauer tables of the compound tables.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= List( [ "1", "2", "3" ],|
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "6.L3(4).2_", i ) ) );|
  [ CharacterTable( "6.L3(4).2_1" ), CharacterTable( "6.L3(4).2_2" ), 
    CharacterTable( "6.L3(4).2_3" ) ]
  !gapprompt@gap>| !gapinput@isos:= List( [ "1", "2", "3" ],|
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "6.L3(4).2_", i, "*" ) ) );|
  [ CharacterTable( "Isoclinic(6.L3(4).2_1)" ), 
    CharacterTable( "Isoclinic(6.L3(4).2_2)" ), 
    CharacterTable( "Isoclinic(6.L3(4).2_3)" ) ]
  !gapprompt@gap>| !gapinput@inputs:= [|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], tbls[3], "6.L3(4).(2^2)_{123}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], tbls[3], "6.L3(4).(2^2)_{12*3}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], isos[3], "6.L3(4).(2^2)_{123*}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], isos[3], "6.L3(4).(2^2)_{12*3*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], tbls[3], "6.L3(4).(2^2)_{1*23}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], tbls[3], "6.L3(4).(2^2)_{1*2*3}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], isos[3], "6.L3(4).(2^2)_{1*23*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], isos[3], "6.L3(4).(2^2)_{1*2*3*}" ] ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "6.L3(4)" );;|
  !gapprompt@gap>| !gapinput@result:= [];;|
  !gapprompt@gap>| !gapinput@for input in inputs do|
  !gapprompt@>| !gapinput@     tblsG2:= input{ [ 1 .. 3 ] };|
  !gapprompt@>| !gapinput@     lib:= CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, input[4], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@     Append( result, RepresentativesCharacterTables( poss ) );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 2 (out of 8) for 6.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 6.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 6.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 6.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 6.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 6.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 6.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 6.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 6.L3(4).(2^2)_{12*3*} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 6.L3(4).(2^2)_{12*3*} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 6.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 6.L3(4).(2^2)_{12*3*} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 6.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 6.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 6.L3(4).(2^2)_{1*2*3} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 6.L3(4).(2^2)_{1*2*3} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 6.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 6.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 6.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 6.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 6.L3(4).(2^2)_{1*23*} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 6.L3(4).(2^2)_{1*23*} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 6.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 6.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  !gapprompt@gap>| !gapinput@result:= List( result, x -> x.table );|
  [ CharacterTable( "new6.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{12*3*}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*23}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*2*3}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*23*}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*2*3*}" ) ]
\end{Verbatim}
 

 As in Section{\nobreakspace}\ref{subsect:2L34V4}, we get exactly one character table for each input, and the eight solutions
lie in two orbits under isoclinism. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( result, NrConjugacyClasses );|
  [ 59, 53, 53, 59, 53, 59, 59, 53 ]
  !gapprompt@gap>| !gapinput@t:= result[1];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 7, 6, 4 ]
  !gapprompt@gap>| !gapinput@t:= result[2];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 8, 5, 3 ]
\end{Verbatim}
 

 Up to now, it is not clear that the character tables we have constructed are
really the character tables of some groups. The existence of groups for the
first orbit of character tables can be established as follows. 

 We have shown in Section{\nobreakspace}\ref{subsect:2L34V4} that the maximal subgroups $M$ of the type $L_3(4).2^2$ in $U_6(2).2$ lift to double covers $2.L_3(4).2^2$ in $2.U_6(2).2$. The preimages of these groups under the natural epimorphism from $6.U_6(2).2$ have the structure $6.L_3(4).2^2$, where the derived subgroup is the six-fold cover of $L_3(4)$; this follows from the fact that $6.U_6(2)$ does not admit a class fusion from the double cover $2.L_3(4)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2l34:= CharacterTable( "2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@6u:= CharacterTable( "6.U6(2)" );;|
  !gapprompt@gap>| !gapinput@cand:= PossibleClassFusions( 2l34, 6u );|
  [  ]
\end{Verbatim}
 

 This establishes the first and the fourth result as character tables of
subgroups of $6.U_6(2)$ and its isoclinic variant, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@6u2:= CharacterTable( "6.U6(2).2" );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 6u2 ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 8, 0, 0, 0, 0, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@6u2iso:= CharacterTableIsoclinic( 6u2 );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 6u2iso ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 0, 8, 0, 0, 0, 0 ]
\end{Verbatim}
 

 Similarly, the group $G_2(4).2$ contains a maximal subgroup $M$ of the type $3.L_3(4).2^2$, see{\nobreakspace}\cite[p. 97]{CCN85}. Its derived subgroup $M'$ of the type $3.L_3(4)$ lies inside $G_2(4)$, and the preimage of $M'$ under the natural epimorphism from $2.G_2(4)$ to $G_2(4)$ is a double cover of $3.L_3(4)$, because $3.L_3(4)$ does not admit a class fusion into $2.G_2(4).2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@3l34:= CharacterTable( "3.L3(4)" );;|
  !gapprompt@gap>| !gapinput@g2:= CharacterTable( "G2(4).2" );;|
  !gapprompt@gap>| !gapinput@2g2:= CharacterTable( "2.G2(4).2" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( 3l34, 2g2 );|
  [  ]
\end{Verbatim}
 

 Only the third and eighth of our result tables admit a class fusion into $2.G_2(4).2$ and its isoclinic variant, respectively. This shows the existence of groups
for the tables from the second orbit. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 2g2 ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 16, 0, 0, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@2g2iso:= CharacterTableIsoclinic( 2g2 );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, 2g2iso ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 0, 0, 0, 0, 0, 16 ]
\end{Verbatim}
 

 Now we try the second approach and compare the results. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= [ "L3(4).(2^2)_{123}", "L3(4).(2^2)_{12*3}",|
  !gapprompt@>| !gapinput@             "L3(4).(2^2)_{123*}", "L3(4).(2^2)_{12*3*}" ];;|
  !gapprompt@gap>| !gapinput@inputs1:= List( names, nam -> [ "6.L3(4).2_1", "2.L3(4).2_1",|
  !gapprompt@>| !gapinput@       Concatenation( "2.", nam ), Concatenation( "6.", nam ) ] );;|
  !gapprompt@gap>| !gapinput@names:= List( names, nam -> ReplacedString( nam, "1", "1*" ) );;|
  !gapprompt@gap>| !gapinput@inputs2:= List( names, nam -> [ "6.L3(4).2_1*", "2.L3(4).2_1*",|
  !gapprompt@>| !gapinput@       Concatenation( "2.", nam ), Concatenation( "6.", nam ) ] );;|
  !gapprompt@gap>| !gapinput@inputs:= Concatenation( inputs1, inputs2 );|
  [ [ "6.L3(4).2_1", "2.L3(4).2_1", "2.L3(4).(2^2)_{123}", 
        "6.L3(4).(2^2)_{123}" ], 
    [ "6.L3(4).2_1", "2.L3(4).2_1", "2.L3(4).(2^2)_{12*3}", 
        "6.L3(4).(2^2)_{12*3}" ], 
    [ "6.L3(4).2_1", "2.L3(4).2_1", "2.L3(4).(2^2)_{123*}", 
        "6.L3(4).(2^2)_{123*}" ], 
    [ "6.L3(4).2_1", "2.L3(4).2_1", "2.L3(4).(2^2)_{12*3*}", 
        "6.L3(4).(2^2)_{12*3*}" ], 
    [ "6.L3(4).2_1*", "2.L3(4).2_1*", "2.L3(4).(2^2)_{1*23}", 
        "6.L3(4).(2^2)_{1*23}" ], 
    [ "6.L3(4).2_1*", "2.L3(4).2_1*", "2.L3(4).(2^2)_{1*2*3}", 
        "6.L3(4).(2^2)_{1*2*3}" ], 
    [ "6.L3(4).2_1*", "2.L3(4).2_1*", "2.L3(4).(2^2)_{1*23*}", 
        "6.L3(4).(2^2)_{1*23*}" ], 
    [ "6.L3(4).2_1*", "2.L3(4).2_1*", "2.L3(4).(2^2)_{1*2*3*}", 
        "6.L3(4).(2^2)_{1*2*3*}" ] ]
  !gapprompt@gap>| !gapinput@result2:= [];;|
  !gapprompt@gap>| !gapinput@for  input in inputs do|
  !gapprompt@>| !gapinput@     tblMG := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tblG  := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     tblGA := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     name  := Concatenation( "new", input[4] );|
  !gapprompt@>| !gapinput@     lib   := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );|
  !gapprompt@>| !gapinput@     Append( result2, poss );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@result2:= List( result2, x -> x.table );|
  [ CharacterTable( "new6.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{12*3*}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*23}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*2*3}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*23*}" ), 
    CharacterTable( "new6.L3(4).(2^2)_{1*2*3*}" ) ]
  !gapprompt@gap>| !gapinput@trans:= List( [ 1 .. 8 ], i ->|
  !gapprompt@>| !gapinput@       TransformingPermutationsCharacterTables( result[i],|
  !gapprompt@>| !gapinput@           result2[i] ) );;|
  !gapprompt@gap>| !gapinput@ForAll( trans, IsRecord );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Tables of Groups of the Type $2.U_4(3).2^2$ (February 2012)}}\label{subsect:2U43V4}
\logpage{[ 2, 6, 6 ]}
\hyperdef{L}{X878889308653435F}{}
{
  The outer automorphism group of the group $U_4(3)$ is a dihedral group of order $8$. There are two almost simple groups of the type $U_4(3).2^2$, up to isomorphism, denoted as $U_4(3).(2^2)_{122}$ and $U_4(3).(2^2)_{133}$, respectively. Note that $U_4(3).2_1$ is the extension by the central involution of the outer automorphism group of $U_4(3)$, the other two subgroups of index two in $U_4(3).(2^2)_{122}$ are $U_4(3).2_2$ and $U_4(3).2^{\prime}_2$, respectively, and the other two subgroups of index two in $U_4(3).(2^2)_{133}$ are $U_4(3).2_3$ and $U_4(3).2^{\prime}_3$, respectively. 

 Since Aut$( U_4(3) )$ possesses a double cover (see{\nobreakspace}\cite[p. 52]{CCN85}), double covers of $U_4(3).(2^2)_{122}$ and $U_4(3).(2^2)_{133}$ exist. 

 First we deal with the double covers of $U_4(3).(2^2)_{122}$. Any such group contains one subgroup of the type $2.U_4(3).2_1$ and two subgroups of the type $2.U_4(3).2_2$, and there are two isoclinic variants of each of these group to consider, see
Section{\nobreakspace}\ref{subsect:isoclinicATLAS}. Thus we start with six different inputs for the construction of the
character tables of double covers. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= List( [ "1", "2", "2'" ], i ->|
  !gapprompt@>| !gapinput@     CharacterTable( Concatenation( "2.U4(3).2_", i ) ) );;|
  !gapprompt@gap>| !gapinput@isos:= List( [ "1", "2", "2'" ], i ->|
  !gapprompt@>| !gapinput@     CharacterTable( Concatenation( "Isoclinic(2.U4(3).2_", i, ")" ) ) );;|
  !gapprompt@gap>| !gapinput@inputs:= [|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], tbls[3], "2.U4(3).(2^2)_{122}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], tbls[3], "2.U4(3).(2^2)_{1*22}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], tbls[3], "2.U4(3).(2^2)_{12*2}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], tbls[3], "2.U4(3).(2^2)_{1*2*2}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], isos[3], "2.U4(3).(2^2)_{12*2*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], isos[3], "2.U4(3).(2^2)_{1*2*2*}" ] ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@result:= [];;|
  !gapprompt@gap>| !gapinput@for input in inputs do|
  !gapprompt@>| !gapinput@     tblsG2:= input{ [ 1 .. 3 ] };|
  !gapprompt@>| !gapinput@     lib:= CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, input[4], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@     Append( result, RepresentativesCharacterTables( poss ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@result:= List( result, x -> x.table );|
  [ CharacterTable( "new2.U4(3).(2^2)_{122}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{1*22}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{12*2}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{1*2*2}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{12*2*}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{1*2*2*}" ) ]
\end{Verbatim}
 

 We get exactly one character table for each input. For each of these tables,
there are three possibilities to form an isoclinic table, corresponding to the
three subgroups of index two. It turns out that the six solutions form two
orbits under forming some isoclinic table. Tables in different orbits are
essentially different, already their numbers of conjugacy classes differ. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( result, NrConjugacyClasses );|
  [ 87, 102, 102, 87, 87, 102 ]
  !gapprompt@gap>| !gapinput@t:= result[1];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 4, 4, 5 ]
  !gapprompt@gap>| !gapinput@t:= result[2];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 3, 3, 6 ]
\end{Verbatim}
 

 Up to now, it is not clear that the character tables we have constructed are
really the character tables of some groups. The existence of groups for the
first orbit of character tables can be established as follows. 

 The group $O_8^+(3)$ contains maximal subgroups of the type $2.U_4(3).2^2$, see{\nobreakspace}\cite[p. 140]{CCN85}. Only the first of our result tables admits a class fusion into the table of $O_8^+(3)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "O8+(3)" );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, u ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 24, 0, 0, 0, 0, 0 ]
\end{Verbatim}
 

 A table in the second orbit belongs to a maximal subgroup of $O_7(3).2$, see{\nobreakspace}\cite[p. 109]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "O7(3).2" );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, u ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 16, 0, 0, 0, 0 ]
\end{Verbatim}
 

 Note that this subgroup of $O_7(3).2 \cong SO(7,3)$ is the orthogonal group GO$_6^-(3)$.                                  

 Now we deal with the double covers of $U_4(3).(2^2)_{133}$. The constructions of the character tables are completely analogous to those
in the case of $U_4(3).(2^2)_{122}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= List( [ "1", "3", "3'" ],|
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "2.U4(3).2_", i ) ) );;|
  !gapprompt@gap>| !gapinput@isos:= List( [ "1", "3", "3'" ], i ->|
  !gapprompt@>| !gapinput@     CharacterTable( Concatenation( "Isoclinic(2.U4(3).2_", i, ")" ) ) );;|
  !gapprompt@gap>| !gapinput@inputs:= [|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], tbls[3], "2.U4(3).(2^2)_{133}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], tbls[3], "2.U4(3).(2^2)_{1*33}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], tbls[3], "2.U4(3).(2^2)_{13*3}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], tbls[3], "2.U4(3).(2^2)_{1*3*3}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], isos[3], "2.U4(3).(2^2)_{13*3*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], isos[3], "2.U4(3).(2^2)_{1*3*3*}" ] ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@result:= [];;|
  !gapprompt@gap>| !gapinput@for input in inputs do|
  !gapprompt@>| !gapinput@     tblsG2:= input{ [ 1 .. 3 ] };|
  !gapprompt@>| !gapinput@     lib:= CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, input[4], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@     Append( result, RepresentativesCharacterTables( poss ) );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 2 (out of 4) for 2.U4(3).(2^2)_{1*33} by 
  3-mod. table
  #I  excluded cand. 3 (out of 4) for 2.U4(3).(2^2)_{1*33} by 
  3-mod. table
  #I  excluded cand. 2 (out of 4) for 2.U4(3).(2^2)_{13*3} by 
  3-mod. table
  #I  excluded cand. 3 (out of 4) for 2.U4(3).(2^2)_{13*3} by 
  3-mod. table
  #I  excluded cand. 2 (out of 4) for 2.U4(3).(2^2)_{1*3*3*} by 
  3-mod. table
  #I  excluded cand. 3 (out of 4) for 2.U4(3).(2^2)_{1*3*3*} by 
  3-mod. table
  !gapprompt@gap>| !gapinput@result:= List( result, x -> x.table );|
  [ CharacterTable( "new2.U4(3).(2^2)_{133}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{1*33}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{13*3}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{1*3*3}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{13*3*}" ), 
    CharacterTable( "new2.U4(3).(2^2)_{1*3*3*}" ) ]
  !gapprompt@gap>| !gapinput@List( result, NrConjugacyClasses );|
  [ 69, 72, 72, 69, 69, 72 ]
  !gapprompt@gap>| !gapinput@t:= result[1];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 4, 4, 5 ]
  !gapprompt@gap>| !gapinput@t:= result[2];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 3, 3, 6 ]
\end{Verbatim}
     

          }

  
\subsection{\textcolor{Chapter }{The Character Tables of Groups of the Type $4_1.L_3(4).2^2$ (October 2011)}}\label{subsect:41L34V4}
\logpage{[ 2, 6, 7 ]}
\hyperdef{L}{X7DC42AE57E9EED4D}{}
{
  The situation with $4_1.L_3(4).2^2$ is analogous to that with $6.L_3(4).2^2$, see Section{\nobreakspace}\ref{subsect:6L34V4}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= List( [ "1", "2", "3" ],|
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "4_1.L3(4).2_", i ) ) );|
  [ CharacterTable( "4_1.L3(4).2_1" ), CharacterTable( "4_1.L3(4).2_2" )
      , CharacterTable( "4_1.L3(4).2_3" ) ]
  !gapprompt@gap>| !gapinput@isos:= List( [ "1", "2", "3" ],|
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "4_1.L3(4).2_", i, "*" ) ) );|
  [ CharacterTable( "Isoclinic(4_1.L3(4).2_1)" ), 
    CharacterTable( "Isoclinic(4_1.L3(4).2_2)" ), 
    CharacterTable( "4_1.L3(4).2_3*" ) ]
\end{Verbatim}
 

 Note that the group $4_1.L_3(4).2_3$ has a centre of order four, so one cannot construct the isoclinic variant by
calling the one argument version of \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( tbls, ClassPositionsOfCentre );|
  [ [ 1, 3 ], [ 1, 3 ], [ 1, 2, 3, 4 ] ]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tbls[3],|
  !gapprompt@>| !gapinput@       CharacterTableIsoclinic( tbls[3] ) ) );|
  true
\end{Verbatim}
 

 Again, we get eight different character tables, in two orbits. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inputs:= [|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], tbls[3], "4_1.L3(4).(2^2)_{123}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], tbls[3], "4_1.L3(4).(2^2)_{1*23}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], tbls[3], "4_1.L3(4).(2^2)_{12*3}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], tbls[3], "4_1.L3(4).(2^2)_{1*2*3}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], isos[3], "4_1.L3(4).(2^2)_{123*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], isos[3], "4_1.L3(4).(2^2)_{1*23*}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], isos[3], "4_1.L3(4).(2^2)_{12*3*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], isos[3], "4_1.L3(4).(2^2)_{1*2*3*}" ] ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "4_1.L3(4)" );;|
  !gapprompt@gap>| !gapinput@result:= [];;|
  !gapprompt@gap>| !gapinput@for input in inputs do|
  !gapprompt@>| !gapinput@     tblsG2:= input{ [ 1 .. 3 ] };|
  !gapprompt@>| !gapinput@     lib:= CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, input[4], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@     Append( result, RepresentativesCharacterTables( poss ) );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 2 (out of 8) for 4_1.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_1.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_1.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_1.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_1.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_1.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 4_1.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_1.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_1.L3(4).(2^2)_{1*23} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_1.L3(4).(2^2)_{1*23} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_1.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_1.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 4_1.L3(4).(2^2)_{12*3} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_1.L3(4).(2^2)_{12*3} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_1.L3(4).(2^2)_{12*3} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_1.L3(4).(2^2)_{12*3} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_1.L3(4).(2^2)_{12*3} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_1.L3(4).(2^2)_{12*3} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 4_1.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_1.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_1.L3(4).(2^2)_{1*2*3} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_1.L3(4).(2^2)_{1*2*3} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_1.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_1.L3(4).(2^2)_{1*2*3} by 
  5-mod. table
  !gapprompt@gap>| !gapinput@result:= List( result, x -> x.table );|
  [ CharacterTable( "new4_1.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{1*23}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{1*2*3}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{1*23*}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{12*3*}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{1*2*3*}" ) ]
  !gapprompt@gap>| !gapinput@List( result, NrConjugacyClasses );|
  [ 48, 48, 48, 48, 42, 42, 42, 42 ]
  !gapprompt@gap>| !gapinput@t:= result[1];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 3, 2, 4 ]
  !gapprompt@gap>| !gapinput@t:= result[5];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 7, 6, 8 ]
\end{Verbatim}
 

 Note that only two out of the eight tables of the type $2.L_3(4).2^2$ occur as factors of the eight tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@facts:= [ CharacterTable( "2.L3(4).(2^2)_{123}" ), |
  !gapprompt@>| !gapinput@             CharacterTable( "2.L3(4).(2^2)_{123*}" ) ];;|
  !gapprompt@gap>| !gapinput@factresults:= List( result, t -> t / ClassPositionsOfCentre( t ) );;|
  !gapprompt@gap>| !gapinput@List( factresults, t -> PositionProperty( facts, f ->|
  !gapprompt@>| !gapinput@           IsRecord( TransformingPermutationsCharacterTables( t, f ) ) ) );|
  [ 1, 1, 1, 1, 2, 2, 2, 2 ]
\end{Verbatim}
 

 This is not surprising; note that for $1 \leq i \leq 2$, the two isoclinic variants of $4_1.L_3(4).2_i$ have isomorphic factor groups of the type $2.L_3(4).2_i$. (For $i = 3$, this is not the case.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@test:= [ CharacterTable( "4_1.L3(4).2_1" ),|
  !gapprompt@>| !gapinput@            CharacterTable( "4_1.L3(4).2_1*" ) ];;|
  !gapprompt@gap>| !gapinput@List( test, ClassPositionsOfCentre );|
  [ [ 1, 3 ], [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@fact:= List( test, t -> t / ClassPositionsOfCentre( t ) );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( fact[1], fact[2] ) );|
  true
  !gapprompt@gap>| !gapinput@test:= [ CharacterTable( "4_1.L3(4).2_2" ),|
  !gapprompt@>| !gapinput@            CharacterTable( "4_1.L3(4).2_2*" ) ];;|
  !gapprompt@gap>| !gapinput@List( test, ClassPositionsOfCentre );|
  [ [ 1, 3 ], [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@fact:= List( test, t -> t / ClassPositionsOfCentre( t ) );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( fact[1], fact[2] ) );|
  true
\end{Verbatim}
 

 Now we try the second approach and compare the results. By the abovementioned
asymmetry, it is clear that the tables are not uniquely determined by the
input data. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= [ "L3(4).(2^2)_{123}", "L3(4).(2^2)_{1*23}",|
  !gapprompt@>| !gapinput@             "L3(4).(2^2)_{12*3}", "L3(4).(2^2)_{1*2*3}" ];;|
  !gapprompt@gap>| !gapinput@inputs1:= List( names, nam -> [ "4_1.L3(4).2_3", "2.L3(4).2_3",|
  !gapprompt@>| !gapinput@     Concatenation( "2.", nam ), Concatenation( "4_1.", nam ) ] );;|
  !gapprompt@gap>| !gapinput@names:= List( names, nam -> ReplacedString( nam, "3}", "3*}" ) );;|
  !gapprompt@gap>| !gapinput@inputs2:= List( names, nam -> [ "4_1.L3(4).2_3*", "2.L3(4).2_3*",|
  !gapprompt@>| !gapinput@     Concatenation( "2.", nam ), Concatenation( "4_1.", nam ) ] );;|
  !gapprompt@gap>| !gapinput@inputs:= Concatenation( inputs1, inputs2 );|
  [ [ "4_1.L3(4).2_3", "2.L3(4).2_3", "2.L3(4).(2^2)_{123}", 
        "4_1.L3(4).(2^2)_{123}" ], 
    [ "4_1.L3(4).2_3", "2.L3(4).2_3", "2.L3(4).(2^2)_{1*23}", 
        "4_1.L3(4).(2^2)_{1*23}" ], 
    [ "4_1.L3(4).2_3", "2.L3(4).2_3", "2.L3(4).(2^2)_{12*3}", 
        "4_1.L3(4).(2^2)_{12*3}" ], 
    [ "4_1.L3(4).2_3", "2.L3(4).2_3", "2.L3(4).(2^2)_{1*2*3}", 
        "4_1.L3(4).(2^2)_{1*2*3}" ], 
    [ "4_1.L3(4).2_3*", "2.L3(4).2_3*", "2.L3(4).(2^2)_{123*}", 
        "4_1.L3(4).(2^2)_{123*}" ], 
    [ "4_1.L3(4).2_3*", "2.L3(4).2_3*", "2.L3(4).(2^2)_{1*23*}", 
        "4_1.L3(4).(2^2)_{1*23*}" ], 
    [ "4_1.L3(4).2_3*", "2.L3(4).2_3*", "2.L3(4).(2^2)_{12*3*}", 
        "4_1.L3(4).(2^2)_{12*3*}" ], 
    [ "4_1.L3(4).2_3*", "2.L3(4).2_3*", "2.L3(4).(2^2)_{1*2*3*}", 
        "4_1.L3(4).(2^2)_{1*2*3*}" ] ]
  !gapprompt@gap>| !gapinput@result2:= [];;|
  !gapprompt@gap>| !gapinput@for  input in inputs do|
  !gapprompt@>| !gapinput@     tblMG := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tblG  := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     tblGA := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     name  := Concatenation( "new", input[4] );|
  !gapprompt@>| !gapinput@     lib   := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );|
  !gapprompt@>| !gapinput@     Append( result2, poss );|
  !gapprompt@>| !gapinput@   od;|
  #E  4 possibilities for new4_1.L3(4).(2^2)_{123}
  #E  no solution for new4_1.L3(4).(2^2)_{1*23}
  #E  no solution for new4_1.L3(4).(2^2)_{12*3}
  #E  no solution for new4_1.L3(4).(2^2)_{1*2*3}
  #E  4 possibilities for new4_1.L3(4).(2^2)_{123*}
  #E  no solution for new4_1.L3(4).(2^2)_{1*23*}
  #E  no solution for new4_1.L3(4).(2^2)_{12*3*}
  #E  no solution for new4_1.L3(4).(2^2)_{1*2*3*}
  !gapprompt@gap>| !gapinput@Length( result2 );|
  8
  !gapprompt@gap>| !gapinput@result2:= List( result2, x -> x.table );|
  [ CharacterTable( "new4_1.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new4_1.L3(4).(2^2)_{123*}" ) ]
  !gapprompt@gap>| !gapinput@List( result, t1 -> PositionsProperty( result2, t2 -> IsRecord(|
  !gapprompt@>| !gapinput@     TransformingPermutationsCharacterTables( t1, t2 ) ) ) );|
  [ [ 1 ], [ 4 ], [ 3 ], [ 2 ], [ 7 ], [ 6 ], [ 5 ], [ 8 ] ]
\end{Verbatim}
 

 At the moment, I do not know interesting groups that contain one of the $4_1.L_3(4).2^2$ type groups and whose character tables are available. }

  
\subsection{\textcolor{Chapter }{The Character Tables of Groups of the Type $4_2.L_3(4).2^2$ (October 2011)}}\label{subsect:42L34V4}
\logpage{[ 2, 6, 8 ]}
\hyperdef{L}{X7E9AF180869B4786}{}
{
  The situation with $4_2.L_3(4).2^2$ is analogous to that with $6.L_3(4).2^2$, see Section{\nobreakspace}\ref{subsect:6L34V4}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbls:= List( [ "1", "2", "3" ],|
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "4_2.L3(4).2_", i ) ) );|
  [ CharacterTable( "4_2.L3(4).2_1" ), CharacterTable( "4_2.L3(4).2_2" )
      , CharacterTable( "4_2.L3(4).2_3" ) ]
  !gapprompt@gap>| !gapinput@isos:= List( [ "1", "2", "3" ], |
  !gapprompt@>| !gapinput@     i -> CharacterTable( Concatenation( "4_2.L3(4).2_", i, "*" ) ) );|
  [ CharacterTable( "Isoclinic(4_2.L3(4).2_1)" ), 
    CharacterTable( "4_2.L3(4).2_2*" ), 
    CharacterTable( "Isoclinic(4_2.L3(4).2_3)" ) ]
\end{Verbatim}
 

 Note that the group $4_1.L_3(4).2_2$ has a centre of order four, so one cannot construct the isoclinic variant not
by calling the one argument version of \texttt{CharacterTableIsoclinic} (\textbf{Reference: CharacterTableIsoclinic}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( tbls, ClassPositionsOfCentre );|
  [ [ 1, 3 ], [ 1, 2, 3, 4 ], [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( tbls[2],|
  !gapprompt@>| !gapinput@       CharacterTableIsoclinic( tbls[2] ) ) );|
  true
\end{Verbatim}
 

 Again, we get eight different character tables, in two orbits. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inputs:= [|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], tbls[3], "4_2.L3(4).(2^2)_{123}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], tbls[3], "4_2.L3(4).(2^2)_{1*23}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], tbls[3], "4_2.L3(4).(2^2)_{12*3}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], tbls[2], isos[3], "4_2.L3(4).(2^2)_{123*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], tbls[3], "4_2.L3(4).(2^2)_{1*2*3}" ],|
  !gapprompt@>| !gapinput@[ isos[1], tbls[2], isos[3], "4_2.L3(4).(2^2)_{1*23*}" ],|
  !gapprompt@>| !gapinput@[ tbls[1], isos[2], isos[3], "4_2.L3(4).(2^2)_{12*3*}" ],|
  !gapprompt@>| !gapinput@[ isos[1], isos[2], isos[3], "4_2.L3(4).(2^2)_{1*2*3*}" ] ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "4_2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@result:= [];;|
  !gapprompt@gap>| !gapinput@for input in inputs do|
  !gapprompt@>| !gapinput@     tblsG2:= input{ [ 1 .. 3 ] };|
  !gapprompt@>| !gapinput@     lib:= CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryGV4Table( tblG, tblsG2, input[4], lib );|
  !gapprompt@>| !gapinput@     ConstructModularGV4Tables( tblG, tblsG2, poss, lib );|
  !gapprompt@>| !gapinput@     Append( result, RepresentativesCharacterTables( poss ) );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 2 (out of 8) for 4_2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_2.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_2.L3(4).(2^2)_{123} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_2.L3(4).(2^2)_{123} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 4_2.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_2.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_2.L3(4).(2^2)_{1*23} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_2.L3(4).(2^2)_{1*23} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_2.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_2.L3(4).(2^2)_{1*23} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 4_2.L3(4).(2^2)_{123*} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_2.L3(4).(2^2)_{123*} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_2.L3(4).(2^2)_{123*} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_2.L3(4).(2^2)_{123*} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_2.L3(4).(2^2)_{123*} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_2.L3(4).(2^2)_{123*} by 
  5-mod. table
  #I  excluded cand. 2 (out of 8) for 4_2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 3 (out of 8) for 4_2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 4 (out of 8) for 4_2.L3(4).(2^2)_{1*23*} by 
  7-mod. table
  #I  excluded cand. 5 (out of 8) for 4_2.L3(4).(2^2)_{1*23*} by 
  7-mod. table
  #I  excluded cand. 6 (out of 8) for 4_2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  #I  excluded cand. 7 (out of 8) for 4_2.L3(4).(2^2)_{1*23*} by 
  5-mod. table
  !gapprompt@gap>| !gapinput@result:= List( result, x -> x.table );|
  [ CharacterTable( "new4_2.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{1*23}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{123*}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{1*2*3}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{1*23*}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{12*3*}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{1*2*3*}" ) ]
  !gapprompt@gap>| !gapinput@List( result, NrConjugacyClasses );|
  [ 50, 50, 44, 50, 44, 50, 44, 44 ]
  !gapprompt@gap>| !gapinput@t:= result[1];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 4, 2, 6 ]
  !gapprompt@gap>| !gapinput@t:= result[3];;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@           x -> Sum( SizesConjugacyClasses( t ){ x } ) = Size( t ) / 2 );;|
  !gapprompt@gap>| !gapinput@iso:= List( nsg, x -> CharacterTableIsoclinic( t, x ) );;|
  !gapprompt@gap>| !gapinput@List( iso, x -> PositionProperty( result, y ->|
  !gapprompt@>| !gapinput@           TransformingPermutationsCharacterTables( x, y ) <> fail ) );|
  [ 7, 5, 8 ]
\end{Verbatim}
 

 Note that only two out of the eight tables of the type $2.L_3(4).2^2$ occur as factors of the eight tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@facts:= [ CharacterTable( "2.L3(4).(2^2)_{123}" ),|
  !gapprompt@>| !gapinput@             CharacterTable( "2.L3(4).(2^2)_{12*3}" ) ];;|
  !gapprompt@gap>| !gapinput@factresults:= List( result, t -> t / ClassPositionsOfCentre( t ) );;|
  !gapprompt@gap>| !gapinput@List( factresults, t -> PositionProperty( facts, f ->|
  !gapprompt@>| !gapinput@           IsRecord( TransformingPermutationsCharacterTables( t, f ) ) ) );|
  [ 1, 1, 2, 1, 2, 1, 2, 2 ]
\end{Verbatim}
 

 This is not surprising; note that for $i \in \{ 1, 3 \}$, the two isoclinic variants of $4_1.L_3(4).2_i$ have isomorphic factor groups of the type $2.L_3(4).2_i$. (For $i = 2$, this is not the case.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@test:= [ CharacterTable( "4_2.L3(4).2_1" ),|
  !gapprompt@>| !gapinput@            CharacterTable( "4_2.L3(4).2_1*" ) ];;|
  !gapprompt@gap>| !gapinput@List( test, ClassPositionsOfCentre );|
  [ [ 1, 3 ], [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@fact:= List( test, t -> t / ClassPositionsOfCentre( t ) );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( fact[1], fact[2] ) );|
  true
  !gapprompt@gap>| !gapinput@test:= [ CharacterTable( "4_2.L3(4).2_3" ),|
  !gapprompt@>| !gapinput@            CharacterTable( "4_2.L3(4).2_3*" ) ];;|
  !gapprompt@gap>| !gapinput@List( test, ClassPositionsOfCentre );|
  [ [ 1, 3 ], [ 1, 3 ] ]
  !gapprompt@gap>| !gapinput@fact:= List( test, t -> t / ClassPositionsOfCentre( t ) );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( fact[1], fact[2] ) );|
  true
\end{Verbatim}
 

 Now we try the second approach and compare the results. By the abovementioned
asymmetry, it is clear that the tables are not uniquely determined by the
input data. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= [ "L3(4).(2^2)_{123}", "L3(4).(2^2)_{1*23}",|
  !gapprompt@>| !gapinput@             "L3(4).(2^2)_{123*}", "L3(4).(2^2)_{1*23*}" ];;|
  !gapprompt@gap>| !gapinput@inputs1:= List( names, nam -> [ "4_2.L3(4).2_2", "2.L3(4).2_2",|
  !gapprompt@>| !gapinput@     Concatenation( "2.", nam ), Concatenation( "4_2.", nam ) ] );;|
  !gapprompt@gap>| !gapinput@names:= List( names, nam -> ReplacedString( nam, "23", "2*3" ) );;|
  !gapprompt@gap>| !gapinput@inputs2:= List( names, nam -> [ "4_2.L3(4).2_2*", "2.L3(4).2_2*",|
  !gapprompt@>| !gapinput@     Concatenation( "2.", nam ), Concatenation( "4_2.", nam ) ] );;|
  !gapprompt@gap>| !gapinput@inputs:= Concatenation( inputs1, inputs2 );|
  [ [ "4_2.L3(4).2_2", "2.L3(4).2_2", "2.L3(4).(2^2)_{123}", 
        "4_2.L3(4).(2^2)_{123}" ], 
    [ "4_2.L3(4).2_2", "2.L3(4).2_2", "2.L3(4).(2^2)_{1*23}", 
        "4_2.L3(4).(2^2)_{1*23}" ], 
    [ "4_2.L3(4).2_2", "2.L3(4).2_2", "2.L3(4).(2^2)_{123*}", 
        "4_2.L3(4).(2^2)_{123*}" ], 
    [ "4_2.L3(4).2_2", "2.L3(4).2_2", "2.L3(4).(2^2)_{1*23*}", 
        "4_2.L3(4).(2^2)_{1*23*}" ], 
    [ "4_2.L3(4).2_2*", "2.L3(4).2_2*", "2.L3(4).(2^2)_{12*3}", 
        "4_2.L3(4).(2^2)_{12*3}" ], 
    [ "4_2.L3(4).2_2*", "2.L3(4).2_2*", "2.L3(4).(2^2)_{1*2*3}", 
        "4_2.L3(4).(2^2)_{1*2*3}" ], 
    [ "4_2.L3(4).2_2*", "2.L3(4).2_2*", "2.L3(4).(2^2)_{12*3*}", 
        "4_2.L3(4).(2^2)_{12*3*}" ], 
    [ "4_2.L3(4).2_2*", "2.L3(4).2_2*", "2.L3(4).(2^2)_{1*2*3*}", 
        "4_2.L3(4).(2^2)_{1*2*3*}" ] ]
  !gapprompt@gap>| !gapinput@result2:= [];;|
  !gapprompt@gap>| !gapinput@for  input in inputs do|
  !gapprompt@>| !gapinput@     tblMG := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     tblG  := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     tblGA := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     name  := Concatenation( "new", input[4] );|
  !gapprompt@>| !gapinput@     lib   := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );|
  !gapprompt@>| !gapinput@     Append( result2, poss );|
  !gapprompt@>| !gapinput@   od;|
  #E  4 possibilities for new4_2.L3(4).(2^2)_{123}
  #E  no solution for new4_2.L3(4).(2^2)_{1*23}
  #E  no solution for new4_2.L3(4).(2^2)_{123*}
  #E  no solution for new4_2.L3(4).(2^2)_{1*23*}
  #E  4 possibilities for new4_2.L3(4).(2^2)_{12*3}
  #E  no solution for new4_2.L3(4).(2^2)_{1*2*3}
  #E  no solution for new4_2.L3(4).(2^2)_{12*3*}
  #E  no solution for new4_2.L3(4).(2^2)_{1*2*3*}
  !gapprompt@gap>| !gapinput@Length( result2 );|
  8
  !gapprompt@gap>| !gapinput@result2:= List( result2, x -> x.table );|
  [ CharacterTable( "new4_2.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{123}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{12*3}" ), 
    CharacterTable( "new4_2.L3(4).(2^2)_{12*3}" ) ]
  !gapprompt@gap>| !gapinput@List( result, t1 -> PositionsProperty( result2, t2 -> IsRecord(|
  !gapprompt@>| !gapinput@     TransformingPermutationsCharacterTables( t1, t2 ) ) ) );|
  [ [ 1 ], [ 4 ], [ 7 ], [ 3 ], [ 6 ], [ 2 ], [ 5 ], [ 8 ] ]
\end{Verbatim}
 

 The group $ON.2$ contains a maximal subgroup $M$ of the type $4_2.L_3(4).2^2$, see{\nobreakspace}\cite[p. 132]{CCN85}. Only the third result table admits a class fusion into $ON.2$. This shows the existence of groups for the tables from the second orbit. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@on2:= CharacterTable( "ON.2" );;|
  !gapprompt@gap>| !gapinput@fus:= List( result, x -> PossibleClassFusions( x, on2 ) );;|
  !gapprompt@gap>| !gapinput@List( fus, Length );|
  [ 0, 0, 16, 0, 0, 0, 0, 0 ]
\end{Verbatim}
                 }

  
\subsection{\textcolor{Chapter }{The Character Table of Aut$(L_2(81))$}}\label{subsect:Aut(L_2(81))}
\logpage{[ 2, 6, 9 ]}
\hyperdef{L}{X7EAF9CD07E536120}{}
{
  The group Aut$(L_2(81)) \cong L_2(81).(2 \times 4)$ has the structure $G.2^2$ where $G = L_2(81).2_1$. Here we get two triples of possible actions on the tables of the groups $G.2_i$, and one possible character table for each triple. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@input:= [ "L2(81).2_1", "L2(81).4_1", "L2(81).4_2", "L2(81).2^2",|
  !gapprompt@>| !gapinput@                                                       "L2(81).(2x4)" ];;|
  !gapprompt@gap>| !gapinput@tblG   := CharacterTable( input[1] );;|
  !gapprompt@gap>| !gapinput@tblsG2 := List( input{ [ 2 .. 4 ] }, CharacterTable );;|
  !gapprompt@gap>| !gapinput@name   := Concatenation( "new", input[5] );;|
  !gapprompt@gap>| !gapinput@lib    := CharacterTable( input[5] );;|
  !gapprompt@gap>| !gapinput@poss   := ConstructOrdinaryGV4Table( tblG, tblsG2, name, lib );;|
  #I  newL2(81).(2x4): 2 equivalence classes
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( poss );;|
  !gapprompt@gap>| !gapinput@Length( reps );|
  2
\end{Verbatim}
 

 Due to the different underlying actions, the power maps of the two candidate
tables differ. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord:= OrdersClassRepresentatives( reps[1].table );;|
  !gapprompt@gap>| !gapinput@ord = OrdersClassRepresentatives( reps[2].table ); |
  true
  !gapprompt@gap>| !gapinput@pos:= Position( ord, 80 );|
  33
  !gapprompt@gap>| !gapinput@PowerMap( reps[1].table, 3 )[ pos ];|
  34
  !gapprompt@gap>| !gapinput@PowerMap( reps[2].table, 3 )[ pos ];|
  33
\end{Verbatim}
 

 Aut$(L_2(81))$ can be generated by PGL$(2,81) = L_2(81).2_2$ and the Frobenius automorphism of order four that is defined on GL$(2,81)$ as the map that cubes the matrix entries. The elements of order $80$ in Aut$(L_2(81))$ are conjugates of diagonal matrices modulo scalar matrices, which are mapped
to their third powers by the Frobenius homomorphism. So the third power map of
Aut$(L_2(81))$ fixes the classes of elements of order $80$. In other words, the second of the two tables is the right one. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@trans:= TransformingPermutationsCharacterTables( reps[2].table, lib );;|
  !gapprompt@gap>| !gapinput@IsRecord( trans );|
  true
  !gapprompt@gap>| !gapinput@List( reps[2].G2fusGV4, x -> OnTuples( x, trans.columns ) )|
  !gapprompt@>| !gapinput@ = List( tblsG2, x -> GetFusionMap( x, lib ) );|
  true
  !gapprompt@gap>| !gapinput@ConstructModularGV4Tables( tblG, tblsG2, poss, lib );;|
  #I  not all input tables for L2(81).(2x4) mod 3 available
  #I  not all input tables for L2(81).(2x4) mod 41 available
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $O_8^+(3).2^2_{111}$}}\label{subsect:O_8^+(3).2^2_111}
\logpage{[ 2, 6, 10 ]}
\hyperdef{L}{X78AED04685EDCC19}{}
{
  The construction of the character table of the group $O_8^+(3).2^2_{111}$ is not as straightforward as the constructions shown in Section{\nobreakspace}\ref{subsect:xplGV43.A6.V4}. Here we get $26$ triples of actions on the tables of the three subgroups $G.2_i$ of index two, but only one of them leads to candidates for the desired
character table. Specifically, we get $64$ such candidates, in two equivalence classes w.r.t.{\nobreakspace}permutation
equivalence.      

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@input:= [ "O8+(3)", "O8+(3).2_1",  "O8+(3).2_1'", "O8+(3).2_1''",|
  !gapprompt@>| !gapinput@                                                 "O8+(3).(2^2)_{111}" ];;|
  !gapprompt@gap>| !gapinput@tblG   := CharacterTable( input[1] );;|
  !gapprompt@gap>| !gapinput@tblsG2 := List( input{ [ 2 .. 4 ] }, CharacterTable );;|
  !gapprompt@gap>| !gapinput@name   := Concatenation( "new", input[5] );;|
  !gapprompt@gap>| !gapinput@lib    := CharacterTable( input[5] );;|
  !gapprompt@gap>| !gapinput@poss   := ConstructOrdinaryGV4Table( tblG, tblsG2, name, lib );;|
  #I  newO8+(3).(2^2)_{111}: 2 equivalence classes
  !gapprompt@gap>| !gapinput@Length( poss );|
  64
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( poss );;|
  !gapprompt@gap>| !gapinput@Length( reps );|
  2
\end{Verbatim}
 

 The two candidate tables differ only in four irreducible characters involving
irrationalities on the classes of element order $28$. All three subgroups $G.2_i$ contain elements of order $28$ that do not lie in the simple group $G$; these classes are roots of the same (unique) class of element order $7$. The centralizer $C$ of an order $7$ element in $G.2^2$ has order $112 = 2^4 \cdot 7$, the intersection of $C$ with $G$ has the structure $2^2 \times 7$ since $G$ contains three classes of cyclic subgroups of the order $14$, and each of the intersections of $C$ with one of the subgroups $G.2_i$ has the structure $2 \times 4 \times 7$, so the structure of $C$ is $4^2 \times 7 \cong 4 \times 28$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= reps[1].table;;|
  !gapprompt@gap>| !gapinput@ord7:= Filtered( [ 1 .. NrConjugacyClasses( t ) ],                        |
  !gapprompt@>| !gapinput@              i -> OrdersClassRepresentatives( t )[i] = 7 );|
  [ 37 ]
  !gapprompt@gap>| !gapinput@SizesCentralizers( t ){ ord7 };|
  [ 112 ]
  !gapprompt@gap>| !gapinput@ord28:= Filtered( [ 1 .. NrConjugacyClasses( t ) ],|
  !gapprompt@>| !gapinput@              i -> OrdersClassRepresentatives( t )[i] = 28 );|
  [ 112, 113, 114, 115, 161, 162, 163, 164, 210, 211, 212, 213 ]
  !gapprompt@gap>| !gapinput@List( reps[1].G2fusGV4, x -> Intersection( ord28, x ) );|
  [ [ 112, 113, 114, 115 ], [ 161, 162, 163, 164 ], 
    [ 210, 211, 212, 213 ] ]
  !gapprompt@gap>| !gapinput@sub:= CharacterTable( "Cyclic", 28 ) * CharacterTable( "Cyclic", 4 );;|
  !gapprompt@gap>| !gapinput@List( reps, x -> Length( PossibleClassFusions( sub, x.table ) ) );|
  [ 0, 96 ]
\end{Verbatim}
 

 It turns out that only one of the two candidate tables admits a class fusion
from the character table of $C$, thus we have determined the ordinary character table of $O_8^+(3).2^2_{111}$. It coincides with the table from the library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@trans:= TransformingPermutationsCharacterTables( reps[2].table, lib );;|
  !gapprompt@gap>| !gapinput@IsRecord( trans );|
  true
  !gapprompt@gap>| !gapinput@List( reps[2].G2fusGV4, x -> OnTuples( x, trans.columns ) )|
  !gapprompt@>| !gapinput@ = List( tblsG2, x -> GetFusionMap( x, lib ) );|
  true
\end{Verbatim}
 

 (If we do not believe the statement about the structure of $C$ then we can check all $14$ groups of order $112$ that contain a central subgroup of order $7$. A unique such group admits a class fusion into at least one of the two
candidate tables.) 

 The wrong candidate for the ordinary table cannot be excluded via conditions
that are forced by the construction of the $p$-modular tables of $O_8^+(3).2^2_{111}$. Thus we restrict the ordinary tables used for this construction to those
candidates that are equivalent to the correct table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@poss:= Filtered( poss,|
  !gapprompt@>| !gapinput@     r -> TransformingPermutationsCharacterTables( r.table, lib )|
  !gapprompt@>| !gapinput@          <> fail );;|
  !gapprompt@gap>| !gapinput@ConstructModularGV4Tables( tblG, tblsG2, poss, lib );;|
  #I  not all input tables for O8+(3).(2^2)_{111} mod 3 available
\end{Verbatim}
 

 So also the $p$-modular tables of $O_8^+(3).2^2_{111}$ can be computed this way, provided that the $p$-modular tables of the index $2$ subgroups are available. }

 }

  
\section{\textcolor{Chapter }{Examples for the Type $2^2.G$}}\label{sect:xplV4G}
\logpage{[ 2, 7, 0 ]}
\hyperdef{L}{X845BAA2A7FD768B0}{}
{
  We compute the character table of a group of the type $2^2.G$ from the character tables of the three factor groups of the type $2.G$, using the function \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}), see Section{\nobreakspace}\ref{subsect:theorV4G}.  
\subsection{\textcolor{Chapter }{The Character Table of $2^2.Sz(8)$}}\label{subsect:2^2.Sz(8)}
\logpage{[ 2, 7, 1 ]}
\hyperdef{L}{X87EEBDB987249117}{}
{
  The three central involutions in $2^2.Sz(8)$ are permuted cyclicly by an outer automorphism $\alpha$ of order three. In order to apply \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}), we need the character table of the group $2.Sz(8)$ and the action on the classes of $Sz(8)$ that is induced by $\alpha$. 

 The ordinary character table of $G = Sz(8)$ admits exactly five table automorphisms of order dividing $3$. Each of these possibilities leads to exactly one possible character table of $2^2.G$, and the five tables are permutation equivalent. From this point of view, we
need not know which of the table automorphisms are induced by outer \emph{group} automorphisms of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Sz(8)" );;|
  !gapprompt@gap>| !gapinput@2t:= CharacterTable( "2.Sz(8)" );;|
  !gapprompt@gap>| !gapinput@aut:= AutomorphismsOfTable( t );;|
  !gapprompt@gap>| !gapinput@elms:= Set( Filtered( aut, x -> Order( x ) in [ 1, 3 ] ),           |
  !gapprompt@>| !gapinput@               SmallestGeneratorPerm );|
  [ (), (9,10,11), (6,7,8), (6,7,8)(9,10,11), (6,7,8)(9,11,10) ]
  !gapprompt@gap>| !gapinput@poss:= List( elms,                                         |
  !gapprompt@>| !gapinput@      pi -> PossibleCharacterTablesOfTypeV4G( t, 2t, pi, "2^2.Sz(8)" ) );|
  [ [ CharacterTable( "2^2.Sz(8)" ) ], [ CharacterTable( "2^2.Sz(8)" ) ]
      , [ CharacterTable( "2^2.Sz(8)" ) ], 
    [ CharacterTable( "2^2.Sz(8)" ) ], 
    [ CharacterTable( "2^2.Sz(8)" ) ] ]
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( Concatenation( poss ) );|
  [ CharacterTable( "2^2.Sz(8)" ) ]
\end{Verbatim}
 

 The tables coincide with the one that is stored in the \textsf{GAP} library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( reps[1],|
  !gapprompt@>| !gapinput@       CharacterTable( "2^2.Sz(8)" ) ) );|
  true
\end{Verbatim}
 

 The computation of the $p$-modular character table of $2^2.G$ from the $p$-modular character table of $2.G$ and the three factor fusions from $2^2.G$ to $2.G$ is straightforward, as is stated in Section{\nobreakspace}\ref{subsect:theorV4G}. The three fusions are stored on the tables returned by \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( poss[1][1], 2t, "1" );|
  [ 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 
    12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( poss[1][1], 2t, "2" );|
  [ 1, 2, 1, 2, 3, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 
    13, 12, 13, 14, 15, 14, 15, 16, 17, 16, 17, 18, 19, 18, 19 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( poss[1][1], 2t, "3" );|
  [ 1, 2, 2, 1, 3, 4, 5, 6, 7, 7, 6, 8, 9, 9, 8, 10, 11, 11, 10, 12, 
    13, 13, 12, 14, 15, 15, 14, 16, 17, 17, 16, 18, 19, 19, 18 ]
\end{Verbatim}
 

 The \textsf{GAP} library function \texttt{BrauerTableOfTypeV4G} (\textbf{CTblLib: BrauerTableOfTypeV4G}) can be used to derive Brauer tables of $2^2.G$. We have to compute the $p$-modular tables for prime divisors $p$ of $|G|$, that is, for $p \in \{ 2, 5, 7, 13 \}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PrimeDivisors( Size( t ) );|
  [ 2, 5, 7, 13 ]
\end{Verbatim}
 

 Clearly $p = 2$ is uninteresting from this point of view because the $2$-modular table of $2^2.G$ can be identified with the $2$-modular table of $G$. 

 For each of the five ordinary tables (corresponding to the five possible table
automorphisms of $G$) constructed above, we get one candidate of a $5$-modular table. However, these tables are \emph{not} all equivalent. There are two equivalence classes, and one of the two
possibilities is inconsistent in the sense that not all tensor products of
irreducibles decompose into irreducibles. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= List( poss, l -> BrauerTableOfTypeV4G( l[1], 2t mod 5,|
  !gapprompt@>| !gapinput@     ConstructionInfoCharacterTable( l[1] )[3] ) );|
  [ BrauerTable( "2^2.Sz(8)", 5 ), BrauerTable( "2^2.Sz(8)", 5 ), 
    BrauerTable( "2^2.Sz(8)", 5 ), BrauerTable( "2^2.Sz(8)", 5 ), 
    BrauerTable( "2^2.Sz(8)", 5 ) ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesCharacterTables( cand ) );|
  2
  !gapprompt@gap>| !gapinput@List( cand, CTblLib.Test.TensorDecomposition );|
  [ false, true, false, true, true ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesCharacterTables( cand{ [ 2, 4, 5 ] } ) );|
  1
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( cand[2],|
  !gapprompt@>| !gapinput@       CharacterTable( "2^2.Sz(8)" ) mod 5 ) );|
  true
\end{Verbatim}
 

 This implies that only those table automorphisms of $G$ can be induced by an outer group automorphism that move the classes of element
order $13$. 

 The $7$-modular table of $2^2.G$ is uniquely determined, independent of the choice of the table automorphism of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= List( poss, l -> BrauerTableOfTypeV4G( l[1], 2t mod 7,|
  !gapprompt@>| !gapinput@     ConstructionInfoCharacterTable( l[1] )[3] ) );|
  [ BrauerTable( "2^2.Sz(8)", 7 ), BrauerTable( "2^2.Sz(8)", 7 ), 
    BrauerTable( "2^2.Sz(8)", 7 ), BrauerTable( "2^2.Sz(8)", 7 ), 
    BrauerTable( "2^2.Sz(8)", 7 ) ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesCharacterTables( cand ) );|
  1
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( cand[1],      |
  !gapprompt@>| !gapinput@       CharacterTable( "2^2.Sz(8)" ) mod 7 ) );|
  true
\end{Verbatim}
 

 We get two candidates for the $13$-modular table of $2^2.G$, also if we consider only the three admissible table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@elms:= elms{ [ 2, 4, 5 ] };|
  [ (9,10,11), (6,7,8)(9,10,11), (6,7,8)(9,11,10) ]
  !gapprompt@gap>| !gapinput@poss:= poss{ [ 2, 4, 5 ] };;                                     |
  !gapprompt@gap>| !gapinput@cand:= List( poss, l -> BrauerTableOfTypeV4G( l[1], 2t mod 13,|
  !gapprompt@>| !gapinput@     ConstructionInfoCharacterTable( l[1] )[3] ) );|
  [ BrauerTable( "2^2.Sz(8)", 13 ), BrauerTable( "2^2.Sz(8)", 13 ), 
    BrauerTable( "2^2.Sz(8)", 13 ) ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesCharacterTables( cand ) );|
  2
  !gapprompt@gap>| !gapinput@List( cand, CTblLib.Test.TensorDecomposition );                      |
  [ true, true, true ]
\end{Verbatim}
 

 The action of the outer automorphism of order three of $G$ can be read off from the $2$-modular table of $G$. Note that the ordinary and the $5$-modular character table of $G$ possess two independent table automorphisms of order three, whereas the group
of table automorphisms of the $2$-modular table has order three. (The reason is that the irrational values on
the classes of the element orders $7$ and $13$ appear in the same irreducible $2$-modular Brauer characters.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@mod2:= CharacterTable( "Sz(8)" ) mod 2;|
  BrauerTable( "Sz(8)", 2 )
  !gapprompt@gap>| !gapinput@AutomorphismsOfTable( mod2 );|
  Group([ (3,4,5)(6,7,8) ])
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( mod2 );|
  [ 1, 5, 7, 7, 7, 13, 13, 13 ]
\end{Verbatim}
 

 This means that the first candidate is ruled out; this determines the $13$-modular character table of $2^2.G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Length( RepresentativesCharacterTables( cand{ [ 2, 3 ] } ) );|
  1
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( cand[2],|
  !gapprompt@>| !gapinput@       CharacterTable( "2^2.Sz(8)" ) mod 13 ) );|
  true
\end{Verbatim}
                       }

  
\subsection{\textcolor{Chapter }{\textsf{Atlas} Tables of the Type $2^2.G$ (September 2005)}}\label{subsect:V4GATLAS}
\logpage{[ 2, 7, 2 ]}
\hyperdef{L}{X83652A0282A64D14}{}
{
  Besides $2^2.Sz(8)$ (cf.{\nobreakspace}Section{\nobreakspace}\ref{subsect:2^2.Sz(8)}), $2^2.O_8^+(3)$ (cf.{\nobreakspace}Section{\nobreakspace}\ref{subsect:MultO8p3}), and certain central extensions of $L_3(4)$ (cf.{\nobreakspace}Section{\nobreakspace}\ref{subsect:MultL34}), the following examples of central extensions of nearly simple \textsf{Atlas} groups $G$ by a Klein four group occur. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@listV4G:= [|
  !gapprompt@>| !gapinput@     [ "2^2.L3(4)",         "2.L3(4)",     "L3(4)"       ],|
  !gapprompt@>| !gapinput@     [ "2^2.L3(4).2_1",     "2.L3(4).2_1", "L3(4).2_1"   ],|
  !gapprompt@>| !gapinput@     [ "(2^2x3).L3(4)",     "6.L3(4)",     "3.L3(4)"     ],|
  !gapprompt@>| !gapinput@     [ "(2^2x3).L3(4).2_1", "6.L3(4).2_1", "3.L3(4).2_1" ],|
  !gapprompt@>| !gapinput@     [ "2^2.O8+(2)",        "2.O8+(2)",    "O8+(2)"      ],|
  !gapprompt@>| !gapinput@     [ "2^2.U6(2)",         "2.U6(2)",     "U6(2)"       ],|
  !gapprompt@>| !gapinput@     [ "(2^2x3).U6(2)",     "6.U6(2)",     "3.U6(2)"     ],|
  !gapprompt@>| !gapinput@     [ "2^2.2E6(2)",        "2.2E6(2)",    "2E6(2)"      ],|
  !gapprompt@>| !gapinput@     [ "(2^2x3).2E6(2)",    "6.2E6(2)",    "3.2E6(2)"    ],|
  !gapprompt@>| !gapinput@];;|
\end{Verbatim}
 

 (For the tables of $(2^2 \times 3).G$, with $G$ one of $L_3(4)$, $U_6(2)$, or ${}^2E_6(2)$, we could alternatively use the tables of $2^2.G$ and $3.G$, and the construction described in Chapter \ref{chap:CCE}.)  

 The function for computing the candidates for the ordinary character tables is
similar to the one from Section{\nobreakspace}\ref{subsect:xplGV43.A6.V4}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ConstructOrdinaryV4GTable:= function( tblG, tbl2G, name, lib )|
  !gapprompt@>| !gapinput@     local ord3, nam, poss, reps, trans;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     # Compute the possible actions for the ordinary tables.|
  !gapprompt@>| !gapinput@     ord3:= Set( Filtered( AutomorphismsOfTable( tblG ),|
  !gapprompt@>| !gapinput@                           x -> Order( x ) = 3 ),|
  !gapprompt@>| !gapinput@                 SmallestGeneratorPerm );|
  !gapprompt@>| !gapinput@     if 1 < Length( ord3 ) then|
  !gapprompt@>| !gapinput@       Print( "#I  ", name,|
  !gapprompt@>| !gapinput@              ": the action of the automorphism is not unique" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     # Compute the possible ordinary tables for the given actions.|
  !gapprompt@>| !gapinput@     nam:= Concatenation( "new", name );|
  !gapprompt@>| !gapinput@     poss:= Concatenation( List( ord3, pi ->|
  !gapprompt@>| !gapinput@            PossibleCharacterTablesOfTypeV4G( tblG, tbl2G, pi, nam ) ) );|
  !gapprompt@>| !gapinput@     # Test the possibilities for permutation equivalence.|
  !gapprompt@>| !gapinput@     reps:= RepresentativesCharacterTables( poss );|
  !gapprompt@>| !gapinput@     if 1 < Length( reps ) then|
  !gapprompt@>| !gapinput@       Print( "#I  ", name, ": ", Length( reps ),|
  !gapprompt@>| !gapinput@              " equivalence classes\n" );|
  !gapprompt@>| !gapinput@     elif Length( reps ) = 0 then|
  !gapprompt@>| !gapinput@       Print( "#E  ", name, ": no solution\n" );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       # Compare the computed table with the library table.|
  !gapprompt@>| !gapinput@       if not IsCharacterTable( lib ) then|
  !gapprompt@>| !gapinput@         Print( "#I  no library table for ", name, "\n" );|
  !gapprompt@>| !gapinput@         PrintToLib( name, poss[1].table );|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( reps[1], lib );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     return poss;|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 

 Concerning the Brauer tables, the same ambiguity problem may occur as in
Section{\nobreakspace}\ref{subsect:xplGV43.A6.V4}: Some candidates for the ordinary table may be excluded due to information
provided by some $p$-modular table, see Section{\nobreakspace}\ref{subsect:2^2.Sz(8)} for an easy example. Our strategy is analogous to the one used in
Section{\nobreakspace}\ref{subsect:xplGV43.A6.V4}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ConstructModularV4GTables:= function( tblG, tbl2G, ordposs,|
  !gapprompt@>| !gapinput@                                         ordlibtblV4G )|
  !gapprompt@>| !gapinput@     local name, modposs, primes, checkordinary, i, p, tmodp, 2tmodp, aut,|
  !gapprompt@>| !gapinput@           poss, modlib, trans, reps;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     if not IsCharacterTable( ordlibtblV4G ) then|
  !gapprompt@>| !gapinput@       Print( "#I  no ordinary library table ...\n" );|
  !gapprompt@>| !gapinput@       return [];|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     name:= Identifier( ordlibtblV4G );|
  !gapprompt@>| !gapinput@     modposs:= [];|
  !gapprompt@>| !gapinput@     primes:= ShallowCopy( PrimeDivisors( Size( tblG ) ) );|
  !gapprompt@>| !gapinput@     ordposs:= ShallowCopy( ordposs );|
  !gapprompt@>| !gapinput@     checkordinary:= false;|
  !gapprompt@>| !gapinput@     for i in [ 1 .. Length( ordposs ) ] do|
  !gapprompt@>| !gapinput@       modposs[i]:= [];|
  !gapprompt@>| !gapinput@       for p in primes do|
  !gapprompt@>| !gapinput@         tmodp := tblG  mod p;|
  !gapprompt@>| !gapinput@         2tmodp:= tbl2G mod p;|
  !gapprompt@>| !gapinput@         if IsCharacterTable( tmodp ) and IsCharacterTable( 2tmodp ) then|
  !gapprompt@>| !gapinput@           aut:= ConstructionInfoCharacterTable( ordposs[i] )[3];|
  !gapprompt@>| !gapinput@           poss:= BrauerTableOfTypeV4G( ordposs[i], 2tmodp, aut );|
  !gapprompt@>| !gapinput@           if CTblLib.Test.TensorDecomposition( poss, false ) = false then|
  !gapprompt@>| !gapinput@             Print( "#I  excluded cand. ", i, " (out of ",|
  !gapprompt@>| !gapinput@                    Length( ordposs ), ") for ", name, " by ", p,|
  !gapprompt@>| !gapinput@                    "-mod. table\n" );|
  !gapprompt@>| !gapinput@             Unbind( ordposs[i] );|
  !gapprompt@>| !gapinput@             Unbind( modposs[i] );|
  !gapprompt@>| !gapinput@             checkordinary:= true;|
  !gapprompt@>| !gapinput@             break;|
  !gapprompt@>| !gapinput@           fi;|
  !gapprompt@>| !gapinput@           Add( modposs[i], poss );|
  !gapprompt@>| !gapinput@         else|
  !gapprompt@>| !gapinput@           Print( "#I  not all input tables for ", name, " mod ", p,|
  !gapprompt@>| !gapinput@                  " available\n" );|
  !gapprompt@>| !gapinput@           primes:= Difference( primes, [ p ] );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@       if IsBound( modposs[i] ) then|
  !gapprompt@>| !gapinput@         # Compare the computed Brauer tables with the library tables.|
  !gapprompt@>| !gapinput@         for poss in modposs[i] do|
  !gapprompt@>| !gapinput@           p:= UnderlyingCharacteristic( poss );|
  !gapprompt@>| !gapinput@           modlib:= ordlibtblV4G mod p;|
  !gapprompt@>| !gapinput@           if IsCharacterTable( modlib ) then|
  !gapprompt@>| !gapinput@             trans:= TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                         poss, modlib );|
  !gapprompt@>| !gapinput@             if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@               Print( "#E  computed table and library table for ",|
  !gapprompt@>| !gapinput@                      name, " mod ", p, " differ\n" );|
  !gapprompt@>| !gapinput@             fi;|
  !gapprompt@>| !gapinput@           else|
  !gapprompt@>| !gapinput@             Print( "#I  no library table for ",|
  !gapprompt@>| !gapinput@                    name, " mod ", p, "\n" );|
  !gapprompt@>| !gapinput@             PrintToLib( name, poss );|
  !gapprompt@>| !gapinput@           fi;|
  !gapprompt@>| !gapinput@         od;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     if checkordinary then|
  !gapprompt@>| !gapinput@       # Test whether the ordinary table is admissible.|
  !gapprompt@>| !gapinput@       ordposs:= Compacted( ordposs );|
  !gapprompt@>| !gapinput@       modposs:= Compacted( modposs );|
  !gapprompt@>| !gapinput@       reps:= RepresentativesCharacterTables( ordposs );|
  !gapprompt@>| !gapinput@       if 1 < Length( reps ) then|
  !gapprompt@>| !gapinput@         Print( "#I  ", name, ": ", Length( reps ),|
  !gapprompt@>| !gapinput@                " equivalence classes (ord. table)\n" );|
  !gapprompt@>| !gapinput@       elif Length( reps ) = 0 then|
  !gapprompt@>| !gapinput@         Print( "#E  ", name, ": no solution (ord. table)\n" );|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         # Compare the computed table with the library table.|
  !gapprompt@>| !gapinput@         trans:= TransformingPermutationsCharacterTables( reps[1],|
  !gapprompt@>| !gapinput@                     ordlibtblV4G );|
  !gapprompt@>| !gapinput@         if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", name,|
  !gapprompt@>| !gapinput@                  " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     # Test the uniqueness of the Brauer tables.|
  !gapprompt@>| !gapinput@     for poss in TransposedMat( modposs ) do|
  !gapprompt@>| !gapinput@       reps:= RepresentativesCharacterTables( poss );|
  !gapprompt@>| !gapinput@       if Length( reps ) <> 1 then|
  !gapprompt@>| !gapinput@         Print( "#I  ", name, ": ", Length( reps ), " candidates for the ",|
  !gapprompt@>| !gapinput@                UnderlyingCharacteristic( reps[1] ), "-modular table\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     return rec( ordinary:= ordposs, modular:= modposs );|
  !gapprompt@>| !gapinput@   end;;|
\end{Verbatim}
 

 In our examples, the action of the outer automorphism of order three on the
classes of $G$ turns out to be uniquely determined by the table automorphisms of the
character table of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in listV4G do|
  !gapprompt@>| !gapinput@     tblG  := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     tbl2G := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     lib   := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     poss  := ConstructOrdinaryV4GTable( tblG, tbl2G, input[1], lib );|
  !gapprompt@>| !gapinput@     ConstructModularV4GTables( tblG, tbl2G, poss, lib );|
  !gapprompt@>| !gapinput@   od;|
  #I  excluded cand. 1 (out of 16) for 2^2.L3(4).2_1 by 7-mod. table
  #I  excluded cand. 2 (out of 16) for 2^2.L3(4).2_1 by 7-mod. table
  #I  excluded cand. 7 (out of 16) for 2^2.L3(4).2_1 by 7-mod. table
  #I  excluded cand. 10 (out of 16) for 2^2.L3(4).2_1 by 7-mod. table
  #I  excluded cand. 15 (out of 16) for 2^2.L3(4).2_1 by 7-mod. table
  #I  excluded cand. 16 (out of 16) for 2^2.L3(4).2_1 by 7-mod. table
  #I  excluded cand. 1 (out of 16) for (2^2x3).L3(4).2_1 by 7-mod. table
  #I  excluded cand. 2 (out of 16) for (2^2x3).L3(4).2_1 by 7-mod. table
  #I  excluded cand. 7 (out of 16) for (2^2x3).L3(4).2_1 by 7-mod. table
  #I  excluded cand. 10 (out of 16) for (2^2x3).L3(4).2_1 by 
  7-mod. table
  #I  excluded cand. 15 (out of 16) for (2^2x3).L3(4).2_1 by 
  7-mod. table
  #I  excluded cand. 16 (out of 16) for (2^2x3).L3(4).2_1 by 
  7-mod. table
  #I  not all input tables for 2^2.2E6(2) mod 2 available
  #I  not all input tables for 2^2.2E6(2) mod 3 available
  #I  not all input tables for 2^2.2E6(2) mod 5 available
  #I  not all input tables for 2^2.2E6(2) mod 7 available
  #I  not all input tables for (2^2x3).2E6(2) mod 2 available
  #I  not all input tables for (2^2x3).2E6(2) mod 3 available
  #I  not all input tables for (2^2x3).2E6(2) mod 5 available
  #I  not all input tables for (2^2x3).2E6(2) mod 7 available
  #I  not all input tables for (2^2x3).2E6(2) mod 11 available
  #I  not all input tables for (2^2x3).2E6(2) mod 13 available
  #I  not all input tables for (2^2x3).2E6(2) mod 17 available
  #I  not all input tables for (2^2x3).2E6(2) mod 19 available
\end{Verbatim}
            }

  
\subsection{\textcolor{Chapter }{The Character Table of $2^2.O_8^+(3)$ (March 2009)}}\label{subsect:MultO8p3}
\logpage{[ 2, 7, 3 ]}
\hyperdef{L}{X7F63DDF77870F967}{}
{
  When one tries to construct the character table of the central extensions of $G = O_8^+(3)$ by a Klein four group, in the same way as in Section{\nobreakspace}\ref{subsect:V4GATLAS}, one notices that the order three automorphism that relates the three central
extensions of $G$ by an involution is \emph{not} uniquely determined. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@entry:= [ "2^2.O8+(3)", "2.O8+(3)", "O8+(3)" ];;|
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( entry[3] );;|
  !gapprompt@gap>| !gapinput@aut:= AutomorphismsOfTable( tblG );;|
  !gapprompt@gap>| !gapinput@ord3:= Set( Filtered( aut, x -> Order( x ) = 3 ),|
  !gapprompt@>| !gapinput@               SmallestGeneratorPerm );;|
  !gapprompt@gap>| !gapinput@Length( ord3 );|
  4
\end{Verbatim}
 

 However, the table candidates one gets from the four possible automorphisms
turn out to be all equivalent, hence the character table of $2^2.O_8^+(3)$ can be constructed as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@poss:= [];;|
  !gapprompt@gap>| !gapinput@tbl2G:= CharacterTable( entry[2] );|
  CharacterTable( "2.O8+(3)" )
  !gapprompt@gap>| !gapinput@for pi in ord3 do|
  !gapprompt@>| !gapinput@  Append( poss,|
  !gapprompt@>| !gapinput@          PossibleCharacterTablesOfTypeV4G( tblG, tbl2G, pi, entry[1] ) );|
  !gapprompt@>| !gapinput@od;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  32
  !gapprompt@gap>| !gapinput@poss:= RepresentativesCharacterTables( poss );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  1
\end{Verbatim}
 

 The computed table coincides with the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( entry[1] );;|
  !gapprompt@gap>| !gapinput@if TransformingPermutationsCharacterTables( poss[1], lib ) = fail then|
  !gapprompt@>| !gapinput@     Print( "#E  differences for ", entry[1], "\n" );|
  !gapprompt@>| !gapinput@   fi;|
\end{Verbatim}
     }

  
\subsection{\textcolor{Chapter }{The Character Table of the Schur Cover of $L_3(4)$ (September 2005)}}\label{subsect:MultL34}
\logpage{[ 2, 7, 4 ]}
\hyperdef{L}{X86A1607787DE6BB9}{}
{
  The Schur cover of $G = L_3(4)$ has the structure $(4^2 \times 3).L_3(4)$. Following{\nobreakspace}\cite[p. 23]{CCN85}, we regard the multiplier of $G$ as 
\[ M = \langle a, b, c, d \mid [a,b] = [a,c] = [a,d] = [b,c] = [b,d] = [c,d] =
a^4 = b^4 = c^4 = d^3 = abc \rangle , \]
 and we will consider the automorphism $\alpha$ of $M.G$ that acts as $(a,b,c)(d)$ on $M$. 

 The subgroup lattice of the subgroup $\langle a, b, c \rangle = \langle a, b \rangle \cong 4^2$ of $M$ looks as follows. (The subgroup in the centre of the picture is the Klein four
group $\langle a^2, b^2, c^2 \rangle = \langle a^2, b^2 \rangle$.) 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(70,45)(-35,-20)
\put(  0, 20){\circle*{1}}\put( 0,23){\makebox(0,0){$\langle a, b, c \rangle$}}
\put(-10, 10){\circle*{1}}\put(-15,11.5){\makebox(0,0){$\langle a, b^2 \rangle$}}
\put(  0, 10){\circle*{1}}\put( -4,11.5){\makebox(0,0){$\langle b, c^2 \rangle$}}
\put( 10, 10){\circle*{1}}\put( 15,11.5){\makebox(0,0){$\langle c, a^2 \rangle$}}
\put(  0,  0){\circle*{1}}
\put(-30,  0){\circle*{1}}\put(-33, 0){\makebox(0,0){$\langle a \rangle$}}
\put(-20,  0){\circle*{1}}\put(-24, 0){\makebox(0,0){$\langle a b^2 \rangle$}}
\put(-10,  0){\circle*{1}}\put(-13, 0){\makebox(0,0){$\langle b \rangle$}}
\put( 10,  0){\circle*{1}}\put( 14, 0){\makebox(0,0){$\langle b c^2 \rangle$}}
\put( 20,  0){\circle*{1}}\put( 23, 0){\makebox(0,0){$\langle c \rangle$}}
\put( 30,  0){\circle*{1}}\put( 34, 0){\makebox(0,0){$\langle c a^2 \rangle$}}
\put(-10,-10){\circle*{1}}\put(-13,-12){\makebox(0,0){$\langle a^2 \rangle$}}
\put(  0,-10){\circle*{1}}\put( -3,-12){\makebox(0,0){$\langle b^2 \rangle$}}
\put( 10,-10){\circle*{1}}\put( 13,-12){\makebox(0,0){$\langle c^2 \rangle$}}
\put(  0,-20){\circle*{1}}
\put(-30,0){\line(2, 1){20}}
\put(-30,0){\line(2,-1){20}}
\put(-20,0){\line(1, 1){10}}
\put(-20,0){\line(1,-1){10}}
\put(-10,0){\line(1, 1){10}}
\put(-10,0){\line(1,-1){10}}
\put(-10,10){\line(1, 1){10}}
\put(-10,-10){\line(1,-1){10}}
\put(  0,-20){\line(0,1){40}}
\put(-10, 10){\line(1,-1){20}}
\put(-10,-10){\line(1,1){20}}
\put(30,0){\line(-2, 1){20}}
\put(30,0){\line(-2,-1){20}}
\put(20,0){\line(-1, 1){10}}
\put(20,0){\line(-1,-1){10}}
\put(10,0){\line(-1, 1){10}}
\put(10,0){\line(-1,-1){10}}
\put(10,10){\line(-1, 1){10}}
\put(10,-10){\line(-1,-1){10}}
\end{picture}
\end{center}


 

 (The symmetry w.r.t.{\nobreakspace}$\alpha$ would be reflected better in a three dimensional model, with $\langle a, b \rangle$, $\langle a^2, b^2 \rangle$, and the trivial subgroup on a vertical symmetry axis, and with the remaining
subgroups on three circles such that $\alpha$ induces a rotation.) 

  The following is a 3D variant of the picture, which shows the symmetry of
order three of the group $4 \times 4$.   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(60,50)(-30,-25)
\put(  0, 25){\circle*{2}}
\put( 14, 10){\circle*{2}}
\put(  1, 17){\circle*{2}}
\put(-15, 11){\circle*{2}}
\put(  0,  0){\circle*{2}}
\put( 12, -7){\circle*{2}}
\put( 29, -1){\circle*{2}}
\put(-12,  7){\circle*{2}}
\put( 17,  6){\circle*{2}}
\put(-29,  1){\circle*{2}}
\put(-17, -6){\circle*{2}}
\put( 14,-15){\circle*{2}}
\put(  1, -8){\circle*{2}}
\put(-15,-14){\circle*{2}}
\put(  0,-25){\circle*{2}}
\drawline(0,25)( 14,10)
\drawline(0,25)(  1,17)
\drawline(0,25)(-15,11)
\drawline( 14,10)(0,0)
\drawline( 14,10)(29,-1)
\drawline( 14,10)(12,-7)
\drawline( 1,17)(0,0)
\drawline( 1,17)(16,6)
\drawline( 1,17)(-12,7)
\drawline(-15,11)(0,0)
\drawline(-15,11)(-29,1)
\drawline(-15,11)(-17,-6)
\drawline( 14,-15)(0,0)
\drawline( 14,-15)(29,-1)
\drawline( 14,-15)(12,-7)
\drawline(  1, -8)(0,0)
\drawline(  1, -8)(16,6)
\drawline(  1, -8)(-12,7)
\drawline(-15,-14)(0,0)
\drawline(-15,-14)(-29,1)
\drawline(-15,-14)(-17,-6)
\drawline( 14,-15)(0,-25)
\drawline(  1, -8)(0,-25)
\drawline(-15,-14)(0,-25)
\end{picture}
\end{center}


 

 We have $(M / \langle a \rangle).G \cong (M / \langle b \rangle).G \cong (M / \langle c
\rangle).G \cong 12_2.G$ and $(M / \langle a b^2 \rangle).G \cong (M / \langle b c^2 \rangle).G \cong (M /
\langle c a^2 \rangle).G \cong 12_1.G$. This is because the action of $G.2_2$ fixes $a$, and swaps $b$ and $c$; so $b$ is inverted modulo $\langle a \rangle$ but fixed modulo $\langle a b^2 \rangle$, and the normal subgroup of order four in $4_2.G.2_2$ is central but that in $4_1.G.2_2$ is not central. 

 The constructions of the character tables of $4^2.G$ and $(4^2 \times 3).G$ are essentially the same. We start with the table of $4^2.G$. It can be regarded as a central extension $H = V.2^2.G$ of $2^2.G$ by a Klein four group $V$. The three subgroups of order two in $V$ are cyclicly permuted by the automorphism of $M / \langle d \rangle$ induced by $\alpha$, so the three factors by these subgroups are isomorphic groups $F$, say, with the structure $(2 \times 4).G$. 

 The group $F$ itself is a central extension of $2.G$ by a Klein four group, but in this case the three factor groups by the order
two subgroups of the Klein four group are nonisomorphic groups, of the types $4_1.G$, $4_2.G$, and $2^2.G$, respectively. The \textsf{GAP} function \texttt{PossibleCharacterTablesOfTypeV4G} (\textbf{CTblLib: PossibleCharacterTablesOfTypeV4G}) can be used to construct the character table of $F$ from the three factors. Note that in this case, no information about table
automorphisms is required. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tbls2G:= List( [ "4_1.L3(4)", "4_2.L3(4)", "2^2.L3(4)"],|
  !gapprompt@>| !gapinput@                  CharacterTable );;|
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeV4G( tblG, tbls2G, "(2x4).L3(4)" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  2
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( poss );|
  [ CharacterTable( "(2x4).L3(4)" ) ]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "(2x4).L3(4)" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( reps[1], lib ) );|
  true
\end{Verbatim}
 

 In the second step, we construct the table of $4^2.G$ from that of $(2 \times 4).G$ and the table automorphism of $2^2.G$ that is induced by $\alpha$; it turns out that the group of table automorphisms of $2^2.G$ contains a unique subgroup of order three. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= tbls2G[3];|
  CharacterTable( "2^2.L3(4)" )
  !gapprompt@gap>| !gapinput@tbl2G:= lib;       |
  CharacterTable( "(2x4).L3(4)" )
  !gapprompt@gap>| !gapinput@aut:= AutomorphismsOfTable( tblG );;|
  !gapprompt@gap>| !gapinput@ord3:= Set( Filtered( aut, x -> Order( x ) = 3 ),|
  !gapprompt@>| !gapinput@               SmallestGeneratorPerm );|
  [ (2,3,4)(6,7,8)(10,11,12)(13,15,17)(14,16,18)(20,21,22)(24,25,26)(28,
      29,30)(32,33,34) ]
  !gapprompt@gap>| !gapinput@pi:= ord3[1];;|
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeV4G( tblG, tbl2G, pi, "4^2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  4
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( poss );        |
  [ CharacterTable( "4^2.L3(4)" ) ]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "4^2.L3(4)" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( reps[1], lib ) );|
  true
\end{Verbatim}
 

 With the same approach, we compute the table of $(2 \times 12).G = 2^2.6.G$ from the tables of the three nonisomorphic factor groups $12_1.G$, $12_2.G$, and $(2^2 \times 3).G$, and we compute the table of $(4^2 \times 3).G = 2^2.(2^2 \times 3).G$ from the three tables of the factor groups $(2 \times 12).G$ and the action induced by $\alpha$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "6.L3(4)" );;|
  !gapprompt@gap>| !gapinput@tbls2G:= List( [ "12_1.L3(4)", "12_2.L3(4)", "(2^2x3).L3(4)"],            |
  !gapprompt@>| !gapinput@                  CharacterTable );;|
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeV4G( tblG, tbls2G, "(2x12).L3(4)" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  2
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( poss );|
  [ CharacterTable( "(2x12).L3(4)" ) ]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "(2x12).L3(4)" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( reps[1], lib ) );|
  true
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "(2^2x3).L3(4)" ); |
  CharacterTable( "(2^2x3).L3(4)" )
  !gapprompt@gap>| !gapinput@tbl2G:= CharacterTable( "(2x12).L3(4)" );|
  CharacterTable( "(2x12).L3(4)" )
  !gapprompt@gap>| !gapinput@aut:= AutomorphismsOfTable( tblG );;|
  !gapprompt@gap>| !gapinput@ord3:= Set( Filtered( aut, x -> Order( x ) = 3 ),|
  !gapprompt@>| !gapinput@               SmallestGeneratorPerm );|
  [ (2,7,8)(3,4,10)(6,11,12)(14,19,20)(15,16,22)(18,23,24)(26,27,28)(29,
      35,41)(30,37,43)(31,39,45)(32,36,42)(33,38,44)(34,40,46)(48,53,
      54)(49,50,56)(52,57,58)(60,65,66)(61,62,68)(64,69,70)(72,77,
      78)(73,74,80)(76,81,82)(84,89,90)(85,86,92)(88,93,94) ]
  !gapprompt@gap>| !gapinput@pi:= ord3[1];;|
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeV4G( tblG, tbl2G, pi,|
  !gapprompt@>| !gapinput@                                            "(4^2x3).L3(4)" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  4
  !gapprompt@gap>| !gapinput@reps:= RepresentativesCharacterTables( poss );|
  [ CharacterTable( "(4^2x3).L3(4)" ) ]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "(4^2x3).L3(4)" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( reps[1], lib ) );|
  true
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Examples of Extensions by $p$-singular Automorphisms}}\label{sect:xplpsing}
\logpage{[ 2, 8, 0 ]}
\hyperdef{L}{X8711DBB083655A25}{}
{
   
\subsection{\textcolor{Chapter }{Some $p$-Modular Tables of Groups of the Type $M.G.A$}}\label{subsect:Some p-Modular Tables of Groups of the Type M.G.A}
\logpage{[ 2, 8, 1 ]}
\hyperdef{L}{X81C08739850E4AAE}{}
{
  We show an alternative construction of $p$-modular tables of certain groups that have been met in Section{\nobreakspace}\ref{subsect:ATLASMGA}. Each entry in the \textsf{GAP} list \texttt{listMGA} contains the \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) values of character tables of groups of the types $M.G$, $G$, $G.A$, and $M.G.A$. For each entry with $|A| = p$, a prime integer, we fetch the $p$-modular table of $G$ and the ordinary table of $G.A$, compute the action of $G.A$ on the $p$-regular classes of $G$, and then compute the $p$-modular table of $G.A$. Analogously, we compute the $p$-modular table of $M.G.A$ from the $p$-modular table of $M.G$ and the ordinary table of $M.G.A$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in listMGA do|
  !gapprompt@>| !gapinput@     ordtblMG  := CharacterTable( input[1] );|
  !gapprompt@>| !gapinput@     ordtblG   := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@     ordtblGA  := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@     ordtblMGA := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@     p:= Size( ordtblGA ) / Size( ordtblG );|
  !gapprompt@>| !gapinput@     if IsPrimeInt( p ) then|
  !gapprompt@>| !gapinput@       modtblG:= ordtblG mod p;|
  !gapprompt@>| !gapinput@       if modtblG <> fail then|
  !gapprompt@>| !gapinput@         modtblGA := CharacterTableRegular( ordtblGA, p );|
  !gapprompt@>| !gapinput@         SetIrr( modtblGA, IBrOfExtensionBySingularAutomorphism( modtblG,|
  !gapprompt@>| !gapinput@                               ordtblGA ) );|
  !gapprompt@>| !gapinput@         modlibtblGA:= ordtblGA mod p;|
  !gapprompt@>| !gapinput@         if modlibtblGA = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  ", p, "-modular table of '", Identifier( ordtblGA ),|
  !gapprompt@>| !gapinput@                  "' is missing\n" );|
  !gapprompt@>| !gapinput@         elif TransformingPermutationsCharacterTables( modtblGA,|
  !gapprompt@>| !gapinput@                  modlibtblGA ) = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", input[3],|
  !gapprompt@>| !gapinput@                  " mod ", p, " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@       modtblMG:= ordtblMG mod p;|
  !gapprompt@>| !gapinput@       if modtblMG <> fail then|
  !gapprompt@>| !gapinput@         modtblMGA := CharacterTableRegular( ordtblMGA, p );|
  !gapprompt@>| !gapinput@         SetIrr( modtblMGA, IBrOfExtensionBySingularAutomorphism( modtblMG,|
  !gapprompt@>| !gapinput@                                ordtblMGA ) );|
  !gapprompt@>| !gapinput@         modlibtblMGA:= ordtblMGA mod p;|
  !gapprompt@>| !gapinput@         if modlibtblMGA = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  ", p, "-modular table of '", Identifier( ordtblMGA ),|
  !gapprompt@>| !gapinput@                  "' is missing\n" );|
  !gapprompt@>| !gapinput@         elif TransformingPermutationsCharacterTables( modtblMGA,|
  !gapprompt@>| !gapinput@                  modlibtblMGA ) = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", input[4],|
  !gapprompt@>| !gapinput@                  " mod ", p, " differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Some $p$-Modular Tables of Groups of the Type $G.S_3$}}\label{subsect:Some p-Modular Tables of Groups of the Type G.S_3}
\logpage{[ 2, 8, 2 ]}
\hyperdef{L}{X7FED618F83ACB7C2}{}
{
  We show an alternative construction of $2$- and $3$-modular tables of certain groups that have been met in Section{\nobreakspace}\ref{subsect:xplGS3}. Each entry in the \textsf{GAP} list \texttt{listGS3} contains the \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) values of character tables of groups of the types $G$, $G.2$, $G.3$, and $G.S_3$. For each entry, we fetch the $2$-modular table of $G$ and the ordinary table of $G.2$, compute the action of $G.2$ on the $2$-regular classes of $G$, and then compute the $2$-modular table of $G.2$. Analogously, we compute the $3$-modular table of $G.3$ from the $3$-modular table of $G$ and the ordinary table of $G.3$, and we compute the $2$-modular table of $G.S_3$ from the $2$-modular table of $G.3$ and the ordinary table of $G.S_3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in listGS3 do|
  !gapprompt@>| !gapinput@     modtblG:= CharacterTable( input[1] ) mod 2;|
  !gapprompt@>| !gapinput@     if modtblG <> fail then|
  !gapprompt@>| !gapinput@       ordtblG2 := CharacterTable( input[2] );|
  !gapprompt@>| !gapinput@       modtblG2 := CharacterTableRegular( ordtblG2, 2 );|
  !gapprompt@>| !gapinput@       SetIrr( modtblG2, IBrOfExtensionBySingularAutomorphism( modtblG,|
  !gapprompt@>| !gapinput@                             ordtblG2 ) );|
  !gapprompt@>| !gapinput@       modlibtblG2:= ordtblG2 mod 2;|
  !gapprompt@>| !gapinput@       if modlibtblG2 = fail then|
  !gapprompt@>| !gapinput@         Print( "#E  2-modular table of '", Identifier( ordtblG2 ),|
  !gapprompt@>| !gapinput@                "' is missing\n" );|
  !gapprompt@>| !gapinput@       elif TransformingPermutationsCharacterTables( modtblG2,|
  !gapprompt@>| !gapinput@                modlibtblG2 ) = fail then|
  !gapprompt@>| !gapinput@         Print( "#E  computed table and library table for ", input[2],|
  !gapprompt@>| !gapinput@                " mod 2 differ\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     modtblG:= CharacterTable( input[1] ) mod 3;|
  !gapprompt@>| !gapinput@     if modtblG <> fail then|
  !gapprompt@>| !gapinput@       ordtblG3 := CharacterTable( input[3] );|
  !gapprompt@>| !gapinput@       modtblG3 := CharacterTableRegular( ordtblG3, 3 );|
  !gapprompt@>| !gapinput@       SetIrr( modtblG3, IBrOfExtensionBySingularAutomorphism( modtblG,|
  !gapprompt@>| !gapinput@                             ordtblG3 ) );|
  !gapprompt@>| !gapinput@       modlibtblG3:= ordtblG3 mod 3;|
  !gapprompt@>| !gapinput@       if modlibtblG3 = fail then|
  !gapprompt@>| !gapinput@         Print( "#E  3-modular table of '", Identifier( ordtblG3 ),|
  !gapprompt@>| !gapinput@                "' is missing\n" );|
  !gapprompt@>| !gapinput@       elif TransformingPermutationsCharacterTables( modtblG3,|
  !gapprompt@>| !gapinput@                modlibtblG3 ) = fail then|
  !gapprompt@>| !gapinput@         Print( "#E  computed table and library table for ", input[3],|
  !gapprompt@>| !gapinput@                " mod 3 differ\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     modtblG3:= CharacterTable( input[3] ) mod 2;|
  !gapprompt@>| !gapinput@     if modtblG3 <> fail then|
  !gapprompt@>| !gapinput@       ordtblGS3 := CharacterTable( input[4] );|
  !gapprompt@>| !gapinput@       modtblGS3 := CharacterTableRegular( ordtblGS3, 2 );|
  !gapprompt@>| !gapinput@       SetIrr( modtblGS3, IBrOfExtensionBySingularAutomorphism( modtblG3,|
  !gapprompt@>| !gapinput@                              ordtblGS3 ) );|
  !gapprompt@>| !gapinput@       modlibtblGS3:= ordtblGS3 mod 2;|
  !gapprompt@>| !gapinput@       if modlibtblGS3 = fail then|
  !gapprompt@>| !gapinput@         Print( "#E  2-modular table of '", Identifier( ordtblGS3 ),|
  !gapprompt@>| !gapinput@                "' is missing\n" );|
  !gapprompt@>| !gapinput@       elif TransformingPermutationsCharacterTables( modtblGS3,|
  !gapprompt@>| !gapinput@                modlibtblGS3 ) = fail then|
  !gapprompt@>| !gapinput@         Print( "#E  computed table and library table for ", input[4],|
  !gapprompt@>| !gapinput@                " mod 2 differ\n" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
     }

  
\subsection{\textcolor{Chapter }{$2$-Modular Tables of Groups of the Type $G.2^2$}}\label{subsect:2-Modular Tables of Groups of the Type G.2^2}
\logpage{[ 2, 8, 3 ]}
\hyperdef{L}{X7EEF6A7F8683177A}{}
{
  We show an alternative construction of $2$-modular tables of certain groups that have been met in Section{\nobreakspace}\ref{subsect:xplGV43.A6.V4}. Each entry in the \textsf{GAP} list \texttt{listGV4} contains the \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) values of character tables of groups of the types $G$, $G.2_1$, $G.2_2$, $G.2_3$, and $G.2^2$. For each entry, we fetch the $2$-modular table of $G$ and the ordinary tables of the groups $G.2_i$, and compute the $2$-modular tables of $G.2_i$; Then we compute from this modular table and the ordinary table of $G.2^2$ the $2$-modular table of $G.2^2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for input in listGV4 do|
  !gapprompt@>| !gapinput@     modtblG:= CharacterTable( input[1] ) mod 2;|
  !gapprompt@>| !gapinput@     if modtblG <> fail then|
  !gapprompt@>| !gapinput@       ordtblsG2:= List( input{ [ 2 .. 4 ] }, CharacterTable );|
  !gapprompt@>| !gapinput@       ordtblGV4:= CharacterTable( input[5] );|
  !gapprompt@>| !gapinput@       for tblG2 in ordtblsG2 do|
  !gapprompt@>| !gapinput@         modtblG2:= CharacterTableRegular( tblG2, 2 );|
  !gapprompt@>| !gapinput@         SetIrr( modtblG2, IBrOfExtensionBySingularAutomorphism( modtblG,|
  !gapprompt@>| !gapinput@                               tblG2 ) );|
  !gapprompt@>| !gapinput@         modlibtblG2:= tblG2 mod 2;|
  !gapprompt@>| !gapinput@         if modlibtblG2 = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  2-modular table of '", Identifier( tblG2 ),|
  !gapprompt@>| !gapinput@                  "' is missing\n" );|
  !gapprompt@>| !gapinput@         elif TransformingPermutationsCharacterTables( modtblG2,|
  !gapprompt@>| !gapinput@                  modlibtblG2 ) = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ",|
  !gapprompt@>| !gapinput@                  Identifier( tblG2 ), " mod 2 differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@         modtblGV4:= CharacterTableRegular( ordtblGV4, 2 );|
  !gapprompt@>| !gapinput@         SetIrr( modtblGV4, IBrOfExtensionBySingularAutomorphism( modtblG2,|
  !gapprompt@>| !gapinput@                               ordtblGV4 ) );|
  !gapprompt@>| !gapinput@         modlibtblGV4:= ordtblGV4 mod 2;|
  !gapprompt@>| !gapinput@         if modlibtblGV4 = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  2-modular table of '", Identifier( ordtblGV4 ),|
  !gapprompt@>| !gapinput@                  "' is missing\n" );|
  !gapprompt@>| !gapinput@         elif TransformingPermutationsCharacterTables( modtblGV4,|
  !gapprompt@>| !gapinput@                ordtblGV4 mod 2 ) = fail then|
  !gapprompt@>| !gapinput@           Print( "#E  computed table and library table for ", input[5],|
  !gapprompt@>| !gapinput@                  " mod 2 differ\n" );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The $3$-Modular Table of $U_3(8).3^2$}}\label{subsect:The 3-Modular Table of U38.32}
\logpage{[ 2, 8, 4 ]}
\hyperdef{L}{X875F8DD77C0997FA}{}
{
  The only example of an \textsf{Atlas} group of the structure $G.3^3$ is $U_3(8).3^2$. Its $3$-modular character table can be constructed from the known $3$-modular character table of any of its index $3$ subgroups, plus the action of $U_3(8).3^2$ on the classes of this subgroup. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ordtblG3:= CharacterTable( "U3(8).3^2" );;|
  !gapprompt@gap>| !gapinput@modlibtblG3:= ordtblG3 mod 3;|
  BrauerTable( "U3(8).3^2", 3 )
  !gapprompt@gap>| !gapinput@for nam in [ "U3(8).3_1", "U3(8).3_2", "U3(8).3_3" ] do|
  !gapprompt@>| !gapinput@     modtblG:= CharacterTable( nam ) mod 3;|
  !gapprompt@>| !gapinput@     if modtblG = fail then|
  !gapprompt@>| !gapinput@       Error( "no 3-modular table of ", nam );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     modtblG3:= CharacterTableRegular( ordtblG3, 3 );|
  !gapprompt@>| !gapinput@     SetIrr( modtblG3, IBrOfExtensionBySingularAutomorphism( modtblG,|
  !gapprompt@>| !gapinput@                           ordtblG3 ) );|
  !gapprompt@>| !gapinput@     if TransformingPermutationsCharacterTables( modtblG3,|
  !gapprompt@>| !gapinput@            modlibtblG3 ) = fail then|
  !gapprompt@>| !gapinput@       Print( "#E  computed table and library table for ",|
  !gapprompt@>| !gapinput@              Identifier( ordtblG3 ), " mod 3 differ\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 As expected, we get the same $3$-modular table for any choice of the index $3$ subgroup. 

 Note that all $3$-modular Brauer characters of $U_3(8).3^2$ lift to characteristic zero. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@rest:= RestrictedClassFunctions( Irr( ordtblG3 ), modlibtblG3 );;|
  !gapprompt@gap>| !gapinput@IsSubset( rest, Irr( modlibtblG3 ) );|
  true
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Examples of Subdirect Products of Index Two}}\label{sect:Gsubdir}
\logpage{[ 2, 9, 0 ]}
\hyperdef{L}{X7A4D6044865E516B}{}
{
  Typical examples of this construction are those maximal subgroups of
alternating groups $A_n$ that extend in the corresponding symmetric groups $S_n$ to direct products of the structures $S_m \times S_{n-m}$, for $2 < m < n/2$. Also certain subgroups of these maximal subgroups that have this structure
can be interesting, see Section{\nobreakspace}\ref{subsect:A12N7}.  
\subsection{\textcolor{Chapter }{Certain Dihedral Groups as Subdirect Products of Index Two}}\label{subsect:dihedralsubdir}
\logpage{[ 2, 9, 1 ]}
\hyperdef{L}{X850FF694801700CF}{}
{
  Also dihedral groups of order $2 n$ with $n$ divisible by at least two different primes have the required structure: Let $n = n_1 n_2$ with coprime $n_1$, $n_2$, and let the normal subgroups $H_1$, $H_2$ be cyclic subgroups of order $n_1$ and $n_2$, respectively, inside the cyclic subgroup of index two. Then the factors $G/N_1$, $G/N_2$ are themselves dihedral groups. 

 So an example (with $n_1 = 3$ and $n_2 = 5$) is the construction of the dihedral group $D_{30}$ as a subdirect product of index two in the direct product $D_6 \times D_{10}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblh1:= CharacterTable( "C3" );;|
  !gapprompt@gap>| !gapinput@tblg1:= CharacterTable( "S3" );;|
  !gapprompt@gap>| !gapinput@StoreFusion( tblh1, PossibleClassFusions( tblh1, tblg1 )[1], tblg1 );|
  !gapprompt@gap>| !gapinput@tblh2:= CharacterTable( "C5" );;|
  !gapprompt@gap>| !gapinput@tblg2:= CharacterTable( "D10" );;|
  !gapprompt@gap>| !gapinput@StoreFusion( tblh2, PossibleClassFusions( tblh2, tblg2 )[1], tblg2 );|
  !gapprompt@gap>| !gapinput@subdir:= CharacterTableOfIndexTwoSubdirectProduct( tblh1, tblg1,|
  !gapprompt@>| !gapinput@                tblh2, tblg2, "D30" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( subdir.table,|
  !gapprompt@>| !gapinput@                 CharacterTable( "Dihedral", 30 ) ) );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{The Character Table of $(D_{10} \times HN).2 < M$ (June 2008)}}\label{subsect:The Character Table of (D10xHN).2}
\logpage{[ 2, 9, 2 ]}
\hyperdef{L}{X80C5D6FA83D7E2CF}{}
{
   The sporadic simple Monster group contains maximal subgroups with the
structure $(D_{10} \times HN).2$ (see{\nobreakspace}\cite[p. 234]{CCN85}), the factor group modulo $D_{10}$ is the automorphism group $HN.2$ of $HN$, and the factor group modulo $HN$ is the Frobenius group $5:4$ of order $20$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblh1:= CharacterTable( "D10" );;|
  !gapprompt@gap>| !gapinput@tblg1:= CharacterTable( "5:4" );;|
  !gapprompt@gap>| !gapinput@tblh2:= CharacterTable( "HN" );;|
  !gapprompt@gap>| !gapinput@tblg2:= CharacterTable( "HN.2" );;|
  !gapprompt@gap>| !gapinput@subdir:= CharacterTableOfIndexTwoSubdirectProduct( tblh1, tblg1,|
  !gapprompt@>| !gapinput@                tblh2, tblg2, "(D10xHN).2" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( subdir.table,|
  !gapprompt@>| !gapinput@                 CharacterTable( "(D10xHN).2" ) ) );|
  true
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( subdir.table, m );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  16
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( subdir.table, fus, m ) );|
  1
\end{Verbatim}
 

 An alternative construction is the one described in Section{\nobreakspace}\ref{subsect:theorMGA}, as $(D_{10} \times HN).2 = M.G.A$ with $G = 2 \times HN$, $M.G = D_{10} \times HN$, and $G.A$ the subdirect product of $HN.2$ and a cyclic group of order four (which can be constructed as the isoclinic
variant of $2 \times HN.2$, see Section{\nobreakspace}\ref{subsect:isoclinism}). 

 Here is this construction: 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@c2:= CharacterTable( "C2" );;|
  !gapprompt@gap>| !gapinput@hn:= CharacterTable( "HN" );;|
  !gapprompt@gap>| !gapinput@g:= c2 * hn;;|
  !gapprompt@gap>| !gapinput@d10:= CharacterTable( "D10" );;|
  !gapprompt@gap>| !gapinput@mg:= d10 * hn;;|
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( mg );|
  [ [ 1 ], [ 1, 55 .. 109 ], [ 1, 55 .. 163 ], [ 1 .. 54 ], 
    [ 1 .. 162 ], [ 1 .. 216 ] ]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( mg ){ nsg[2] };|
  [ 1, 2, 2 ]
  !gapprompt@gap>| !gapinput@g:= mg / nsg[2];|
  CharacterTable( "D10xHN/[ 1, 55, 109 ]" )
  !gapprompt@gap>| !gapinput@help:= c2 * CharacterTable( "HN.2" );|
  CharacterTable( "C2xHN.2" )
  !gapprompt@gap>| !gapinput@ga:= CharacterTableIsoclinic( help ); |
  CharacterTable( "Isoclinic(C2xHN.2)" )
  !gapprompt@gap>| !gapinput@gfusga:= PossibleClassFusions( g, ga ); |
  [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, 16, 17, 
        18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 
        32, 32, 33, 33, 34, 35, 36, 37, 37, 38, 39, 40, 40, 41, 42, 42, 
        43, 43, 44, 44, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 89, 
        90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 101, 102, 
        103, 103, 104, 105, 106, 107, 108, 109, 110, 110, 111, 111, 
        112, 113, 114, 115, 115, 116, 117, 118, 118, 119, 120, 120, 
        121, 121, 122, 122 ], 
    [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, 16, 17, 
        18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 
        32, 32, 33, 33, 35, 34, 36, 37, 37, 38, 39, 40, 40, 41, 42, 42, 
        43, 43, 44, 44, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 89, 
        90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 101, 102, 
        103, 103, 104, 105, 106, 107, 108, 109, 110, 110, 111, 111, 
        113, 112, 114, 115, 115, 116, 117, 118, 118, 119, 120, 120, 
        121, 121, 122, 122 ] ]
  !gapprompt@gap>| !gapinput@StoreFusion( g, gfusga[1], ga );|
  !gapprompt@gap>| !gapinput@acts:= PossibleActionsForTypeMGA( mg, g, ga );;|
  !gapprompt@gap>| !gapinput@Length( acts );|
  1
  !gapprompt@gap>| !gapinput@poss:= PossibleCharacterTablesOfTypeMGA( mg, g, ga, acts[1],       |
  !gapprompt@>| !gapinput@              "(D10xHN).2" );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  1
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables( poss[1].table,|
  !gapprompt@>| !gapinput@                 CharacterTable( "(D10xHN).2" ) ) );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{A Counterexample (August 2015)}}\label{subsect:Counterexample}
\logpage{[ 2, 9, 3 ]}
\hyperdef{L}{X85EECFD47EC252A2}{}
{
  A group $G$ is called \emph{real} if each of its elements is conjugate in $G$ to its inverse. Equivalently, a group is real if and only if all its character
values are real. One might ask whether the Sylow $2$-subgroup of a real group is itself real. Counterexamples can be found by a
search through \textsf{GAP}'s library of small groups. Using the facts we have collected about index two
subdirect products in Section \ref{subsect:theorsubdir}, we can demonstrate such a counterexample without using \textsf{GAP}. 

 Let $H_1 = A_4$, $G_1 = S_4$, $H_2 = C_4$, and $G_2$ a nonabelian group of order $8$, and consider the unique index two subgroup $G$ of $G_1 \times G_2$ that is different from $H_1 \times G_2$ and $G_1 \times H_2$. 

 Each irreducible character of $G$ either extends to $G_1 \times G_2$ or it is induced from an irreducible character of $H_1 \times H_2$. In the former case, the character is integer valued. Irrational values in
the latter case arise as follows. 

 Let $\chi$ be an irreducible character of $H_1 \times H_2$; then it is the product of irreducible characters $\chi_1$ and $\chi_2$ of $H_1$ and $H_2$, respectively. If $\chi$ has irrational values then $\chi_1$ takes primitive third roots of unity $\omega, \omega^2$ on elements of order three in $H_1$, or $\chi_2$ takes primitive fourth roots of unity $\pm i$ on elements of order four in $H_2$, or both. In the first two cases, inducing $\chi$ to $G$ yields an integer valued character, because each pair of Galois conjugate
classes fuses in $G$ on which $\chi$ takes irrational values. In the last case, $\chi$ takes primitive $12$-th roots of unity $\pm i \omega$ and $\pm i \omega^2$ on elements of order $12$; since $G$ fuses the classes with the character values $i \omega$ and $-i \omega^2$, we get the character value $i \omega -i \omega^2 = -\sqrt{{3}}$ in the induced character $\chi^G$. This means that this character is real valued. Hence $G$ is real. 

 Now we consider a Sylow $2$-subgroup of $G$. It has also the structure of a subdirect product, as follows. Let $H_1 = V_4$, $G_1 = D_8$, and $H_2$ and $G_2$ as above, and consider the unique index two subgroup $G$ of $G_1 \times G_2$ that is different from $H_1 \times G_2$ and $G_1 \times H_2$. 

 As above, irrational values in an irreducible character of $G$ arise only if this character is induced from a character $\chi$, say, that is the product of irreducible characters $\chi_1$ and $\chi_2$ of $H_1$ and $H_2$, respectively. In this case, $\chi_2$ takes primitive fourth roots of unity $\pm i$ on elements of order four in $H_2$. Moreover, $\chi_1$ takes different values $\pm 1$ on the two classes of $H_1$ that are fused in $G$ if the induced character has irrational values, and these values are $\pm 2i$. Hence the group $G$ is \emph{not} real. 

 (In fact the above two groups of order $96$ are the smallest real groups with non-real Sylow $2$-subgroup, and there are no other such groups of this order.) }

 }

 }

    
\chapter{\textcolor{Chapter }{Constructing Character Tables of Central Extensions in \textsf{GAP}}}\label{chap:CCE}
\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X7A80D5ED7D6E57B7}{}
{
  Date: February 19th, 2004 

 This chapter has three aims. First it shows how the \textsf{GAP} system{\nobreakspace}\cite{GAP} can be utilized to construct character tables of certain central extensions
from known character tables; the \textsf{GAP} functions used for that are part of the \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib}. Second it documents several constructions of character tables which are
contained in the \textsf{GAP} Character Table Library. Third it serves as a testfile for the \textsf{GAP} functions. 

 A typo (wrong sign of $\varepsilon^5$) in the picture in Section{\nobreakspace}\ref{compat} has been corrected in 2013.  
\section{\textcolor{Chapter }{Coprime Central Extensions}}\label{cce}
\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X87B17873861E2F64}{}
{
  In this section, we will deal with the following situation. Let $H$ be a group, $Z$ be a cyclic central subgroup in $H$, and $Z = Z_1 Z_2$ for subgroups $Z_1$ and $Z_2$ of coprime orders $m$ and $n$, say. For the sake of simplicity, suppose that both $m$ and $n$ are primes; the general case is then obtained by iterating the construction
process. 

 Our aim is to compute the character table of $H$ from the character tables of $H/Z_1$ and $H/Z_2$. We assume that the factor fusions from these tables to that of the common
factor group $H/Z$ are known. Again for the sake of simplicity, we will take the character table
of $H/Z$ as an input. (See Section{\nobreakspace}\ref{3F3pN2B} for an example where two different orderings of classes and characters of $H/Z$ arise from the tables of $H/Z_1$ and $H/Z_2$.) 

 For example, the character table of $H = 12.M_{22}$ can be computed from those of $6.M_{22}$ and $4.M_{22}$, and the character table of $6.M_{22}$ can be computed from those of $3.M_{22}$ and $2.M_{22}$ (see Section{\nobreakspace}\ref{12M22}).  
\subsection{\textcolor{Chapter }{The Character Table Head}}\label{subsect:The Character Table Head}
\logpage{[ 3, 1, 1 ]}
\hyperdef{L}{X85CB2671851D1206}{}
{
  The conjugacy classes and power maps of $H$ are uniquely determined by the input data specified above. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(70,40)
\put(0,0){\begin{picture}(30,40)
\put(15, 5){\circle*{1}} % trivial group
\put( 5,15){\circle*{1}} \put(2,15){\makebox(0,0){$Z_1$}}
\put(25,15){\circle*{1}} \put(28,15){\makebox(0,0){$Z_2$}}
\put(15,25){\circle*{1}} \put(18,25){\makebox(0,0){$Z$}}
\put(15,35){\circle*{1}} \put(15,38){\makebox(0,0){$H$}}
\put(15, 5){\line(-1,1){10}}
\put(15, 5){\line( 1,1){10}}
\put( 5,15){\line( 1,1){10}}
\put(25,15){\line(-1,1){10}}
\put(15,25){\line( 0,1){10}}
\end{picture}}
\put(40,2){\begin{picture}(30,40)
\put( 5,20){\makebox(0,0){$H/Z_1$}}
\put(20, 5){\makebox(0,0){$H$}}
\put(20,35){\makebox(0,0){$H/Z$}}
\put(35,20){\makebox(0,0){$H/Z_2$}}
\put( 7,22){\vector(1,1){11}}
\put(18, 7){\vector(-1,1){11}}
\put(22, 7){\vector(1,1){11}}
\put(33,22){\vector(-1,1){11}}
\end{picture}}
\end{picture}
\end{center}


 

 Suppose that a class $C$ of elements of $H/Z$ has $n_C$ preimage classes in $H/Z_1$ and $m_C$ preimage classes in $H/Z_2$; then $n_C$ is either $1$ or $n$, and $m_C$ is either $1$ or $m$. The preimage classes of $C$ in $H/Z_1$ and $H/Z_2$ are parametrized by $\{ j; 0 \leq j < n_C \}$ and $\{ i; 0 \leq i < m_C \}$, respectively, and the preimage classes in $H$ are parametrized by the pairs $\{ (i,j); 0 \leq i < m_C, 0 \leq j < n_C \}$. 

 The centralizer orders of these classes in $H$ are $m_C n_C$ times the centralizer order of $C$ in $H/Z$. 

 The factor fusion onto $H/Z_1$ is then given by mapping the class with the parameter $(i,j)$ to the class with the parameter $j$; analogously, the factor fusion onto $H/Z_2$ maps this class to the class with the parameter $i$. To see this, let $Z = \langle z \rangle$, and set $z_1 = z^n$ and $z_2 = z^m$. Now take an element $g \in H$ for which $g Z$ lies in $C$. Then the elements $g z_1^i z_2^j$, $1 \leq i \leq m_C$, $1 \leq j \leq n_C$ form a set of representatives of the preimage classes of $C$ in $H$. In $H/Z_1$ and $H/Z_2$, these elements map to $g z_2^j Z_1$, $1 \leq j \leq n_C$ and $g z_1^i Z_2$, $1 \leq i \leq m_C$, respectively, which are sets of representatives of the classes in question
in these groups. 

 For each prime $p$, the factor fusions determine the $p$-th power map of $H$ from the $p$-th power maps of $H/Z_1$ and $H/Z_2$. To see this, take a class $C_0$ in $H$ that is a preimage of the class $C$ of $H/Z$, and let $K$ be the class of $p$-th powers of the elements in $C$. Then the image of $C_0$ under the $p$-th power map is one of the preimages of $K$. We know the images of $C_0$ under the factor fusions to $H/Z_1$ and $H/Z_2$, and thus also their images $K_1$ and $K_2$ under the $p$-th power maps of these groups. So the class of $p$-th powers of the elements in $C_0$ is the unique class that is mapped to $K_1$ and $K_2$ under the factor fusions. 

 The construction of the character table head of $H$ from the input data specified above is implemented by the \textsf{GAP} function \texttt{CharacterTableOfCommonCentralExtension} (\textbf{CTblLib: CharacterTableOfCommonCentralExtension}). }

  
\subsection{\textcolor{Chapter }{The Irreducible Characters}}\label{subsect:The Irreducible Characters}
\logpage{[ 3, 1, 2 ]}
\hyperdef{L}{X7D8F6E5D7D632046}{}
{
  First of all, it should be said that it is not obvious how the irreducible
characters of $H$ can be computed from the irreducible characters of $H/Z_1$ and $H/Z_2$. Clearly the irreducible characters of the two factor groups can be inflated
to $H$ via the factor fusions, so we have to find those irreducibles that have
neither $Z_1$ nor $Z_2$ in their kernels. 

 For that, we use the following heuristic. Let $\varepsilon_z$ be a complex primitive $|z|$-th root of unity. For integers $i$, set ${{\rm Irr}}_{{z,i}}(H) = \{ \chi \in {{\rm Irr}}(H); \chi(z) = \varepsilon_z^i \chi(1) \}$. Then ${{\rm Irr}}(H) = \bigcup_{{i=0}}^{{|z|-1}} {{\rm Irr}}_{{z,i}}(H)$, as a disjoint union. If $i$ is a multiple of $m$ or $n$, respectively, then ${{\rm Irr}}_{{z,i}}(H)$ consists of the inflations of certain irreducible characters of $H/Z_1$ or $H/Z_2$, respectively. The remaining irreducible characters of $H$ lie in ${{\rm Irr}}_{{z,i}}(H)$ with $i$ coprime to $|z|$. These characters are algebraic conjugates of ${{\rm Irr}}_{{z,1}}(H)$, so it suffices to compute this subset; the conjugates are then derived as
the last step. 

 Since ${{\rm Irr}}_{{z,i}}(H) \otimes {{\rm Irr}}_{{z,j}}(H) \subset {\ensuremath{\mathbb Z}}[ {{\rm Irr}}_{{z,i+j}}(H) ]$ holds, we start with the tensor products of the known irreducible characters
in ${{\rm Irr}}_{{z,i}}(H)$ and ${{\rm Irr}}_{{z,j}}(H)$ with the property $i+j \equiv 1 \bmod m n$. 

 For example, if we have $m = 2$ and $n = 3$ then ${{\rm Irr}}_{{z,3}}(H)$ consists of the inflations of those characters in ${{\rm Irr}}(H/Z_2)$ that are not characters of $H/Z$, and ${{\rm Irr}}_{{z,4}}(H)$ consists of the inflations of certain characters in ${{\rm Irr}}(H/Z_1)$ that are not characters of $H/Z$. The tensor products of these sets of characters lie in the span of ${{\rm Irr}}_{{z,1}}(H)$. 

 In general these tensor products are reducible, but some of them may be in
fact irreducible, so we first take these irreducibles, and reduce the other
tensor products with them. (If $H$ is a direct product of $Z$ and $H/Z$ then all missing irreducibles are obtained this way.) 

 Then we tensor algebraic conjugates of the known characters in the span of ${{\rm Irr}}_{{z,1}}(H)$ with characters in suitable sets ${{\rm Irr}}_{{z,i}}(H)$, in order to get more characters in ${{\rm Irr}}_{{z,1}}(H)$; for example, ${{\rm Irr}}_{{z,1}}(H) \otimes {{\rm Irr}}_{{z,0}}(H)$ is a subset of ${\ensuremath{\mathbb Z}}[{{\rm Irr}}_{{z,1}}(H)]$. 

 In the case $m = 2$ and $n = 3$, also ${{\rm Irr}}_{{z,5}}(H) \otimes Irr_{{z,2}}(H)$ yields linear combinations of ${{\rm Irr}}_{{z,1}}(H)$. Note that ${{\rm Irr}}_{{z,5}}(H)$ consists of the complex conjugates of ${{\rm Irr}}_{{z,1}}(H)$. 

 In the next step, we apply the LLL algorithm (implemented via the \textsf{GAP} function \texttt{LLL} (\textbf{Reference: LLL})) to the set of reducible characters in ${\ensuremath{\mathbb Z}}[{{\rm Irr}}_{{z,1}}(H)]$ which we got from the tensor products, and hope to find irreducibles. In the
examples shown below, this step yields all desired irreducible characters.   

 The \textsf{GAP} function \texttt{CharacterTableOfCommonCentralExtension} (\textbf{CTblLib: CharacterTableOfCommonCentralExtension}) implements the strategy sketched above. }

  
\subsection{\textcolor{Chapter }{Ordering of Conjugacy Classes}}\label{classes}
\logpage{[ 3, 1, 3 ]}
\hyperdef{L}{X867D16E07D36560F}{}
{
  One ``natural'' choice for the ordering of the columns in the character table of $H$ is given by respecting the ordering of columns in the character table of $H/Z$, and taking the preimage of the class $C$ corresponding to the parameter $(k \bmod m_C, k \bmod n_C)$ as the $k$-th class for $C$.  

 If the preimages of $C$ in $H/Z_1$ and $H/Z_2$ have class representatives $g Z_1$, $g z_2 Z_1$, $g z_2^2 Z_1$, $\ldots$ and $g Z_2$, $g z_1 Z_2$, $g z_1^2 Z_2$, $\ldots$, respectively (in this ordering), then the above rule yields representatives
of preimages in $H$ in the ordering $g$, $g (z_1 z_2)$, $g (z_1 z_2)^2$, $\ldots$. 

 In the case $m = 2$, $n = 3$, the following pattern arises for classes of $H/Z$ that have $m$ and $n$ preimages in $H/Z_1$ and $H/Z_2$, respectively. The vertices are labelled by the roots of unity with which the
values of the characters in the set ${{\rm Irr}}_{{z,1}}(H)$ on the first preimage must be multiplied in order to obtain the values on the
given class; we have $\omega = \exp(2 \pi i/3)$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(130,70)
\put(55, 5){\makebox(0,0){$1$}}
\put(120, 5){\makebox(0,0){$G$}}
\put(25,20){\makebox(0,0){$1$}}
\put(85,20){\makebox(0,0){$-1$}}
\put(120,20){\makebox(0,0){$2.G$}}
\put( 5,35){\makebox(0,0){$1$}}
\put(25,35){\makebox(0,0){$-\omega$}}
\put(45,35){\makebox(0,0){$\omega^2$}}
\put(65,35){\makebox(0,0){$-1$}}
\put(85,35){\makebox(0,0){$\omega$}}
\put(105,35){\makebox(0,0){$-\omega^2$}}
\put(120,35){\makebox(0,0){$6.G$}}
\put(35,50){\makebox(0,0){$1$}}
\put(55,50){\makebox(0,0){$\omega$}}
\put(75,50){\makebox(0,0){$\omega^2$}}
\put(120,50){\makebox(0,0){$3.G$}}
\put(55,65){\makebox(0,0){$1$}}
\put(120,65){\makebox(0,0){$G$}}
\put(53, 7){\line(-2,1){26}}
\put(57, 7){\line( 2,1){26}}
\put(23,22){\line(-4,3){16}}
\put(27,22){\line( 4,3){15}}
\put(27,21){\line( 4,1){55}}
\put(87,22){\line( 4,3){16}}
\put(83,22){\line(-4,3){15}}
\put(83,21){\line(-4,1){55}}
\put( 7,36){\line( 2,1){26}}
\put(28,36){\line( 2,1){25}}
\put(47,36){\line( 2,1){25}}
\put(63,36){\line(-2,1){25}}
\put(82,36){\line(-2,1){25}}
\put(103,36){\line(-2,1){26}}
\put(37,52){\line( 4,3){16}}
\put(55,52){\line( 0,1){11}}
\put(73,52){\line(-4,3){16}}
\end{picture}
\end{center}


 }

  
\subsection{\textcolor{Chapter }{Compatibility with Smaller Factor Groups}}\label{compat}
\logpage{[ 3, 1, 4 ]}
\hyperdef{L}{X813B9F5180A45077}{}
{
  It may happen that a cyclic central subgroup $Z_0$ of $H$ contains $Z$ properly. Then we choose a class ordering relative to that in the factor group $H/Z_0$, mainly because the \textsf{Atlas} tables of this type are sorted this way. 

 The typical case is the character table of a central extension of the type $12.G$ that shall be constructed from the character tables of the groups of the types $4.G$ and $6.G$; here we prefer to order the preimages of a class in the smaller factor group
of the type $G$ according to the above rule. This results in the following pattern, where $\varepsilon = \exp(2 \pi i/12)$ holds (cf. Section ``ATLAS Tables'' in the manual of the \textsf{GAP} Character Table Library). 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(140,100)
\put(60, 5){\makebox(0,0){$1$}}
\put(130, 5){\makebox(0,0){$G$}}
\put(30,20){\makebox(0,0){$1$}}
\put(90,20){\makebox(0,0){$-1$}}
\put(130,20){\makebox(0,0){$2.G$}}
\put(15,35){\makebox(0,0){$1$}}
\put(45,35){\makebox(0,0){$-i$}}
\put(75,35){\makebox(0,0){$-1$}}
\put(105,35){\makebox(0,0){$i$}}
\put(130,35){\makebox(0,0){$4.G$}}
\put( 5,50){\makebox(0,0){$1$}}
\put(15,50){\makebox(0,0){$\varepsilon^7$}}
\put(25,50){\makebox(0,0){$-\omega^2$}}
\put(35,50){\makebox(0,0){$-i$}}
\put(45,50){\makebox(0,0){$\omega$}}
\put(55,50){\makebox(0,0){$\varepsilon^{11}$}}
\put(65,50){\makebox(0,0){$-1$}}
\put(75,50){\makebox(0,0){$\varepsilon$}}
\put(85,50){\makebox(0,0){$\omega^2$}}
\put(95,50){\makebox(0,0){$i$}}
\put(105,50){\makebox(0,0){$-\omega$}}
\put(115,50){\makebox(0,0){$\varepsilon^5$}}
\put(130,50){\makebox(0,0){$12.G$}}
\put(10,65){\makebox(0,0){$1$}}
\put(30,65){\makebox(0,0){$-\omega$}}
\put(50,65){\makebox(0,0){$\omega^2$}}
\put(70,65){\makebox(0,0){$-1$}}
\put(90,65){\makebox(0,0){$\omega$}}
\put(110,65){\makebox(0,0){$-\omega^2$}}
\put(130,65){\makebox(0,0){$6.G$}}
\put(30,80){\makebox(0,0){$1$}}
\put(90,80){\makebox(0,0){$-1$}}
\put(130,80){\makebox(0,0){$2.G$}}
\put(60,95){\makebox(0,0){$1$}}
\put(130,95){\makebox(0,0){$G$}}
\put(58, 7){\line(-2,1){25}}
\put(62, 7){\line( 2,1){25}}
\put(28,22){\line(-1,1){11}}
\put(32,21){\line( 3,1){39}}
\put(88,21){\line(-3,1){39}}
\put(92,22){\line( 1,1){11}}
\put(13,37){\line(-2,3){7}}
\put(43,36){\line(-2,1){26}}
\put(72,35){\line(-3,1){42}}
\put(103,35){\line(-5,1){65}}
\put(17,36){\line( 2,1){26}}
\put(46,37){\line( 2,3){7}}
\put(74,37){\line(-2,3){7}}
\put(103,36){\line(-2,1){26}}
\put(17,35){\line( 5,1){65}}
\put(48,35){\line( 3,1){42}}
\put(77,36){\line( 2,1){26}}
\put(107,37){\line( 2,3){7}}
\put( 6,53){\line(1,3){3}}
\put(17,52){\line(1,1){11}}
\put(28,52){\line(5,3){19}}
\put(38,51){\line(2,1){28}}
\put(47,51){\line(3,1){40}}
\put(57,51){\line(4,1){50}}
\put(63,51){\line(-4,1){50}}
\put(73,51){\line(-3,1){40}}
\put(82,51){\line(-2,1){28}}
\put(92,52){\line(-5,3){19}}
\put(103,52){\line(-1,1){11}}
\put(114,53){\line(-1,3){3}}
\put(28,78){\line(-4,-3){16}}
\put(32,78){\line( 4,-3){15}}
\put(32,79){\line( 4,-1){55}}
\put(92,78){\line( 4,-3){16}}
\put(88,78){\line(-4,-3){15}}
\put(88,79){\line(-4,-1){55}}
\put(58,93){\line(-2,-1){26}}
\put(62,93){\line( 2,-1){26}}
\end{picture}
\end{center}


 

 A more important aspect concerns the computation of the irreducible
characters. Let $Z_0 = \langle z_0 \rangle$. Instead of computing ${{\rm Irr}}_{{z,1}}(H)$, we compute the set ${{\rm Irr}}_{{z_0,1}}(H)$. 

 In the computation of the character table of a central extension of the type $12.G$ as mentioned above, with $|z_0| = 12$, we start with the characters 
\[ {{\rm Irr}}_{{z_0,3}}(H) \otimes {{\rm Irr}}_{{z_0,10}}(H) \cup {{\rm Irr}}_{{z_0,4}}(H) \otimes {{\rm Irr}}_{{z_0,9}}(H) \subseteq {\ensuremath{\mathbb Z}}[{{\rm Irr}}_{{z_0,1}}(H)], \]
 and later form tensor products involving algebraic conjugates of the
characters in the span of ${{\rm Irr}}_{{z_0,1}}(H)$, using that 
\[ {{\rm Irr}}_{{z_0,1}}(H) \otimes {{\rm Irr}}_{{z_0,0}}(H) \cup {{\rm Irr}}_{{z_0,2}}(H) \otimes {{\rm Irr}}_{{z_0,11}}(H) \cup {{\rm Irr}}_{{z_0,5}}(H) \otimes {{\rm Irr}}_{{z_0,8}}(H) \cup {{\rm Irr}}_{{z_0,6}}(H) \otimes {{\rm Irr}}_{{z_0,7}}(H) \]
 is a subset of ${\ensuremath{\mathbb Z}}[{{\rm Irr}}_{{z_0,1}}(H)]$. 

 Without that modification, the computation of irreducibles is significantly
more involved. 

 The \textsf{GAP} function \texttt{CharacterTableOfCommonCentralExtension} (\textbf{CTblLib: CharacterTableOfCommonCentralExtension}) chooses the class ordering relative to larger cyclic factor groups, as in the
above picture, and also uses the above refinement for the computation of
irreducible characters. }

 }

  
\section{\textcolor{Chapter }{Examples}}\label{sect:Examples}
\logpage{[ 3, 2, 0 ]}
\hyperdef{L}{X7A489A5D79DA9E5C}{}
{
  The following examples use the \textsf{GAP} Character Table Library, so we first load this package. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", false );|
  true
\end{Verbatim}
  
\subsection{\textcolor{Chapter }{Central Extensions of Simple \textsf{Atlas} Groups}}\label{12M22}
\logpage{[ 3, 2, 1 ]}
\hyperdef{L}{X861B5C3F7B1F6AB7}{}
{
  For the following groups, the \textsf{Atlas} contains the character tables of central extensions $M.G$ of simple groups $G$ with $|M|$ divisible by two different primes; in all these cases, we have $M \in \{ 6, 12 \}$. 

 (The entry concerning $6.{}^2E_6(2)$ has been added to the list after the character table of $3.{}^2E_6(2)$ became available. This table has been computed by Frank L{\"u}beck.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@list:= [|
  !gapprompt@>| !gapinput@    #         G          m.G          n.G           mn.G|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    [      "A6",      "2.A6",      "3.A6",        "6.A6" ],|
  !gapprompt@>| !gapinput@    [      "A7",      "2.A7",      "3.A7",        "6.A7" ],|
  !gapprompt@>| !gapinput@    [   "L3(4)",   "2.L3(4)",   "3.L3(4)",     "6.L3(4)" ],|
  !gapprompt@>| !gapinput@    [ "2.L3(4)", "4_1.L3(4)",   "6.L3(4)",  "12_1.L3(4)" ],|
  !gapprompt@>| !gapinput@    [ "2.L3(4)", "4_2.L3(4)",   "6.L3(4)",  "12_2.L3(4)" ],|
  !gapprompt@>| !gapinput@    [     "M22",     "2.M22",     "3.M22",       "6.M22" ],|
  !gapprompt@>| !gapinput@    [   "2.M22",     "4.M22",     "6.M22",      "12.M22" ],|
  !gapprompt@>| !gapinput@    [   "U4(3)",   "2.U4(3)", "3_1.U4(3)",   "6_1.U4(3)" ],|
  !gapprompt@>| !gapinput@    [   "U4(3)",   "2.U4(3)", "3_2.U4(3)",   "6_2.U4(3)" ],|
  !gapprompt@>| !gapinput@    [ "2.U4(3)",   "4.U4(3)", "6_1.U4(3)",  "12_1.U4(3)" ],|
  !gapprompt@>| !gapinput@    [ "2.U4(3)",   "4.U4(3)", "6_2.U4(3)",  "12_2.U4(3)" ],|
  !gapprompt@>| !gapinput@    [   "O7(3)",   "2.O7(3)",   "3.O7(3)",     "6.O7(3)" ],|
  !gapprompt@>| !gapinput@    [   "U6(2)",   "2.U6(2)",   "3.U6(2)",     "6.U6(2)" ],|
  !gapprompt@>| !gapinput@    [     "Suz",     "2.Suz",     "3.Suz",       "6.Suz" ],|
  !gapprompt@>| !gapinput@    [    "Fi22",    "2.Fi22",    "3.Fi22",      "6.Fi22" ],|
  !gapprompt@>| !gapinput@    [  "2E6(2)",  "2.2E6(2)",  "3.2E6(2)",    "6.2E6(2)" ],|
  !gapprompt@>| !gapinput@  ];;|
\end{Verbatim}
 

 As was discussed in the sections{\nobreakspace}\ref{classes} and{\nobreakspace}\ref{compat}, the class ordering of the result tables is the same as that in the \textsf{GAP} library tables, so it is enough to check whether the set of characters in the
computed table coincides with the set of characters in the library table. 

 In order to list information about the progress, we set the relevant info
level to $1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoCharacterTable, 1 );|
  !gapprompt@gap>| !gapinput@for entry in list do|
  !gapprompt@>| !gapinput@  id    := entry[4];|
  !gapprompt@>| !gapinput@  tblG  := CharacterTable( entry[1] );|
  !gapprompt@>| !gapinput@  tblmG := CharacterTable( entry[2] );|
  !gapprompt@>| !gapinput@  tblnG := CharacterTable( entry[3] );|
  !gapprompt@>| !gapinput@  lib   := CharacterTable( id );|
  !gapprompt@>| !gapinput@  res:= CharacterTableOfCommonCentralExtension( tblG, tblmG, tblnG, id );|
  !gapprompt@>| !gapinput@  if not res.IsComplete then|
  !gapprompt@>| !gapinput@    Print( "#E  not complete: ", id, "\n" );|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@  if not IsSubset( Irr( lib ), res.irreducibles ) then|
  !gapprompt@>| !gapinput@    Print( "#E  inconsistent: ", id, "\n" );|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@od;|
  #I  6.A6: need 4 faithful irreducibles
  #I  6.A6: 4 found by tensoring
  #I  6.A7: need 5 faithful irreducibles
  #I  6.A7: 5 found by tensoring
  #I  6.L3(4): need 7 faithful irreducibles
  #I  6.L3(4): 7 found by LLL
  #I  12_1.L3(4): need 5 faithful irreducibles
  #I  12_1.L3(4): 2 found by tensoring
  #I  12_1.L3(4): 3 found by tensoring
  #I  12_2.L3(4): need 6 faithful irreducibles
  #I  12_2.L3(4): 6 found by LLL
  #I  6.M22: need 10 faithful irreducibles
  #I  6.M22: 1 found by tensoring
  #I  6.M22: 9 found by LLL
  #I  12.M22: need 7 faithful irreducibles
  #I  12.M22: 7 found by LLL
  #I  6_1.U4(3): need 15 faithful irreducibles
  #I  6_1.U4(3): 1 found by tensoring
  #I  6_1.U4(3): 14 found by LLL
  #I  6_2.U4(3): need 12 faithful irreducibles
  #I  6_2.U4(3): 12 found by LLL
  #I  12_1.U4(3): need 12 faithful irreducibles
  #I  12_1.U4(3): 4 found by tensoring
  #I  12_1.U4(3): 8 found by tensoring
  #I  12_2.U4(3): need 9 faithful irreducibles
  #I  12_2.U4(3): 9 found by LLL
  #I  6.O7(3): need 12 faithful irreducibles
  #I  6.O7(3): 2 found by tensoring
  #I  6.O7(3): 10 found by LLL
  #I  6.U6(2): need 28 faithful irreducibles
  #I  6.U6(2): 2 found by tensoring
  #I  6.U6(2): 26 found by LLL
  #I  6.Suz: need 29 faithful irreducibles
  #I  6.Suz: 29 found by LLL
  #I  6.Fi22: need 34 faithful irreducibles
  #I  6.Fi22: 4 found by tensoring
  #I  6.Fi22: 30 found by LLL
  #I  6.2E6(2): need 60 faithful irreducibles
  #I  6.2E6(2): 60 found by LLL
  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoCharacterTable, 0 );|
\end{Verbatim}
 

 We see that in all cases, the irreducible characters of the groups $M.G$ are obtained by reducing tensor products and applying the LLL algorithm. }

  
\subsection{\textcolor{Chapter }{Central Extensions of Other \textsf{Atlas} Groups}}\label{subsect:Central Extensions of Other ATLAS Groups}
\logpage{[ 3, 2, 2 ]}
\hyperdef{L}{X799ADD5487613BA2}{}
{
  The following cases also fit to the pattern introduced above. 

 (The following examples were added in October{\nobreakspace}2006.) 

 The group $(2^2 \times 3).L_3(4)$ can be viewed as a common central extension of its factor group $2.L_3(4)$ by the two groups $2^2.L_3(4)$ and $6.L_3(4)$. 

 Analogously, the group $(4^2 \times 3).L_3(4)$ can be viewed as a common central extension of its factor group $(2 \times 4).L_3(4)$ by the two groups $4^2.L_3(4)$ and $(2 \times 12).L_3(4)$. 

 Finally, the group $(2 \times 12).L_3(4)$ can be viewed as a common central extension of the factor group $2^2.L_3(4)$ by the two groups $(2 \times 4).L_3(4)$ and $(2^2 \times 3).L_3(4)$. 

 The construction of the character tables of the involved factor groups $2^2.L_3(4)$ and $(2 \times 4).L_3(4)$, as well as an alternative construction of the table of $(2 \times 12).L_3(4)$ can be found in the sections \ref{subsect:V4GATLAS} and \ref{subsect:MultL34}.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@list2:= [|
  !gapprompt@>| !gapinput@    [ "2.L3(4)",     "2^2.L3(4)",   "6.L3(4)",       "(2^2x3).L3(4)" ],|
  !gapprompt@>| !gapinput@    [ "2^2.L3(4)",   "(2x4).L3(4)", "(2^2x3).L3(4)", "(2x12).L3(4)"  ],|
  !gapprompt@>| !gapinput@    [ "(2x4).L3(4)", "4^2.L3(4)",   "(2x12).L3(4)",  "(4^2x3).L3(4)" ],|
  !gapprompt@>| !gapinput@  ];;|
\end{Verbatim}
       

 (The following examples were added in December{\nobreakspace}2010.) 

 The group $(3^2 \times 2).U_4(3)$ can be viewed as a common central extension of its factor group $3_1.U_4(3)$ by the two groups $6_1.U_4(3)$ and $3^2.U_4(3)$, or as a common central extension of its factor group $3_2.U_4(3)$ by the two groups $6_2.U_4(3)$ and $3^2.U_4(3)$. 

 Analogously, the group $(3^2 \times 4).U_4(3)$ can be viewed as a common central extension of its factor group $6_1.U_4(3)$ by the two groups $12_1.U_4(3)$ and $(3^2 \times 2).U_4(3)$, or as a common central extension of its factor group $6_2.U_4(3)$ by the two groups $12_2.U_4(3)$ and $(3^2 \times 2).U_4(3)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Append( list2, [|
  !gapprompt@>| !gapinput@    [ "3_1.U4(3)",   "6_1.U4(3)",   "3^2.U4(3)",     "(3^2x2).U4(3)" ],|
  !gapprompt@>| !gapinput@    [ "3_2.U4(3)",   "6_2.U4(3)",   "3^2.U4(3)",     "(3^2x2).U4(3)" ],|
  !gapprompt@>| !gapinput@    [ "6_1.U4(3)",   "12_1.U4(3)",  "(3^2x2).U4(3)", "(3^2x4).U4(3)" ],|
  !gapprompt@>| !gapinput@    [ "6_2.U4(3)",   "12_2.U4(3)",  "(3^2x2).U4(3)", "(3^2x4).U4(3)" ],|
  !gapprompt@>| !gapinput@  ] );|
  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoCharacterTable, 1 );|
  !gapprompt@gap>| !gapinput@for entry in list2 do|
  !gapprompt@>| !gapinput@  id    := entry[4];|
  !gapprompt@>| !gapinput@  tblG  := CharacterTable( entry[1] );|
  !gapprompt@>| !gapinput@  tblmG := CharacterTable( entry[2] );|
  !gapprompt@>| !gapinput@  tblnG := CharacterTable( entry[3] );|
  !gapprompt@>| !gapinput@  lib   := CharacterTable( id );|
  !gapprompt@>| !gapinput@  res:= CharacterTableOfCommonCentralExtension(|
  !gapprompt@>| !gapinput@            tblG, tblmG, tblnG, id );|
  !gapprompt@>| !gapinput@  if not res.IsComplete then|
  !gapprompt@>| !gapinput@    Print( "#E  not complete: ", id, "\n" );|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@  if TransformingPermutationsCharacterTables( res.tblmnG, lib )|
  !gapprompt@>| !gapinput@         = fail then|
  !gapprompt@>| !gapinput@    Print( "#E  inconsistent: ", id, "\n" );|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@od;|
  #I  (2^2x3).L3(4): need 14 faithful irreducibles
  #I  (2^2x3).L3(4): 14 found by tensoring
  #I  (2x12).L3(4): need 11 faithful irreducibles
  #I  (2x12).L3(4): 7 found by tensoring
  #I  (2x12).L3(4): 4 found by LLL
  #I  (4^2x3).L3(4): need 22 faithful irreducibles
  #I  (4^2x3).L3(4): 14 found by tensoring
  #I  (4^2x3).L3(4): 8 found by LLL
  #I  (3^2x2).U4(3): need 39 faithful irreducibles
  #I  (3^2x2).U4(3): 27 found by tensoring
  #I  (3^2x2).U4(3): 12 found by LLL
  #I  (3^2x2).U4(3): need 42 faithful irreducibles
  #I  (3^2x2).U4(3): 2 found by tensoring
  #I  (3^2x2).U4(3): 40 found by LLL
  #I  (3^2x4).U4(3): need 30 faithful irreducibles
  #I  (3^2x4).U4(3): 6 found by tensoring
  #I  (3^2x4).U4(3): 8 found by tensoring
  #I  (3^2x4).U4(3): 16 found by LLL
  #I  (3^2x4).U4(3): need 33 faithful irreducibles
  #I  (3^2x4).U4(3): 9 found by tensoring
  #I  (3^2x4).U4(3): 18 found by tensoring
  #I  (3^2x4).U4(3): 6 found by further tensoring
  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoCharacterTable, 0 );|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Compatible Central Extensions of Maximal Subgroups}}\label{subsect:Compatible Central Extensions of Maximal Subgroups}
\logpage{[ 3, 2, 3 ]}
\hyperdef{L}{X861F558380FE4812}{}
{
  The \textsf{GAP} Character Table Library contains the character tables of all maximal subgroups
of the groups $4.M_{22}$, $3.M_{22}$, $2.Suz$, and $3.Suz$. So we can use the approach from Section{\nobreakspace}\ref{cce} for computing the character tables of the maximal subgroups of $6.M_{22}$, $12.M_{22}$, and $6.Suz$. 

 These tables are contained in the \textsf{GAP} Character Table Library. Several of the groups are direct products, and the
library tables of direct products are usually stored in the form of Kronecker
products of the tables of the factors, so the class ordering of the result
tables does not necessarily coincide with the class ordering in the library
tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sublist:= list{ [ 6, 7, 14 ] };|
  [ [ "M22", "2.M22", "3.M22", "6.M22" ], 
    [ "2.M22", "4.M22", "6.M22", "12.M22" ], 
    [ "Suz", "2.Suz", "3.Suz", "6.Suz" ] ]
  !gapprompt@gap>| !gapinput@for entry in sublist do|
  !gapprompt@>| !gapinput@  tblG  := CharacterTable( entry[1] );|
  !gapprompt@>| !gapinput@  tblmG := CharacterTable( entry[2] );|
  !gapprompt@>| !gapinput@  tblnG := CharacterTable( entry[3] );|
  !gapprompt@>| !gapinput@  lib   := CharacterTable( entry[4] );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  maxesG   := List( Maxes( tblG ), CharacterTable );|
  !gapprompt@>| !gapinput@  maxesmG  := List( Maxes( tblmG ), CharacterTable );|
  !gapprompt@>| !gapinput@  maxesnG  := List( Maxes( tblnG ), CharacterTable );|
  !gapprompt@>| !gapinput@  maxeslib := List( Maxes( lib ), CharacterTable );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  for i in [ 1 .. Length( maxesG ) ] do|
  !gapprompt@>| !gapinput@    id:= Identifier( maxeslib[i] );|
  !gapprompt@>| !gapinput@    res:= CharacterTableOfCommonCentralExtension( maxesG[i],|
  !gapprompt@>| !gapinput@              maxesmG[i], maxesnG[i], id );|
  !gapprompt@>| !gapinput@    if not res.IsComplete then|
  !gapprompt@>| !gapinput@      Print( "#E  not complete: ", id, "\n" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    if not IsSubset( Irr( maxeslib[i] ), res.irreducibles ) then|
  !gapprompt@>| !gapinput@      trans:= TransformingPermutationsCharacterTables( maxeslib[i],|
  !gapprompt@>| !gapinput@                                                       res.tblmnG );|
  !gapprompt@>| !gapinput@      if not IsRecord( trans ) then|
  !gapprompt@>| !gapinput@        Print( "#E  not transformable: ", id, "\n" );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@  od;|
  !gapprompt@>| !gapinput@od;|
\end{Verbatim}
 

 Since we get no output, all tables in question can be computed with the \textsf{GAP} functions, and coincide (up to permutations of rows and columns) with the
library tables. }

  
\subsection{\textcolor{Chapter }{The \texttt{2B} Centralizer in $3.Fi_{24}'$ (January 2004)}}\label{3F3pN2B}
\logpage{[ 3, 2, 4 ]}
\hyperdef{L}{X7C73944579D6EE73}{}
{
  As is stated in{\nobreakspace}\cite[p. 207]{CCN85}, the \texttt{2B} centralizer $N_0$ in the sporadic simple Fischer group $Fi_{24}'$ has the structure $2^{{1+12}}_+.3U_4(3).2_2$. The character table of $N_0$ is contained in the \textsf{GAP} Character Table Library since the year $2000$. 

 Our aim is to compute the character table of the preimage $N$ of $N_0$ in the central extension $3.Fi_{24}'$ of $Fi_{24}'$; let $Z_1$ denote the centre of $3.Fi_{24}'$. 

 Using the ``dihedral group method'' in the faithful permutation representation of degree $920\,808$ for $3.Fi_{24}'$, we first compute a generating set of $N$. This group has three orbits of the lengths $774\,144$, $145\,152$, and $1\,512$; the actions on the first two orbits are faithful, and the action on the
orbit of length $1\,512$ (which consists of the fixed points of the central involution of $N$) has kernel exactly the central subgroup $Z_2$, say, of order $2$ in $N$. 

 Since the permutation representation on $1\,512$ points is so small, it is straightforward to compute the character table of $N/Z_2$ using the implementation of Dixon's algorithm in \textsf{GAP}; now this table is part of the \textsf{GAP} Character Table Library. 

 Note that $N$ is a central extension of $N_0/Z(N_0)$ by the cyclic group $Z = Z_1 Z_2$ of order $6$, and that we know the character tables of the groups $N/Z_1$ and $N/Z_2$. So we can apply the method described in Section{\nobreakspace}\ref{cce} for computing the character table of $N$. 

 First we fetch the input data. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblmG := CharacterTable( "F3+N2B" );;|
  !gapprompt@gap>| !gapinput@tblG  := tblmG / ClassPositionsOfCentre( tblmG );;|
  !gapprompt@gap>| !gapinput@tblnG := CharacterTable( "2^12.3^2.U4(3).2_2'" );;|
\end{Verbatim}
 

 The character tables of the library table of $N_0$ and the character table of $N/Z_2$ obtained from the permutation group are not compatible in the sense that the
tables of the factor groups modulo the centres are not sorted compatibly, so
we have to compute and store the fusion from \texttt{tblnG} to \texttt{tblG}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@f2:= tblnG / ClassPositionsOfCentre( tblnG );;|
  !gapprompt@gap>| !gapinput@trans:= TransformingPermutationsCharacterTables( f2, tblG );;|
  !gapprompt@gap>| !gapinput@tblnGfustblG:= OnTuples( GetFusionMap( tblnG, f2 ),|
  !gapprompt@>| !gapinput@                            trans.columns );;|
  !gapprompt@gap>| !gapinput@StoreFusion( tblnG, tblnGfustblG, tblG );|
  !gapprompt@gap>| !gapinput@IsSubset( Irr( tblnG ),|
  !gapprompt@>| !gapinput@             List( Irr( tblG ), x -> x{ tblnGfustblG } ) );|
  true
\end{Verbatim}
 

 Now we apply \texttt{CharacterTableOfCommonCentralExtension} (\textbf{CTblLib: CharacterTableOfCommonCentralExtension}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoCharacterTable, 1 );|
  !gapprompt@gap>| !gapinput@id:= "3.2^(1+12).3U4(3).2";;|
  !gapprompt@gap>| !gapinput@res:= CharacterTableOfCommonCentralExtension(|
  !gapprompt@>| !gapinput@             tblG, tblmG, tblnG, id );;|
  #I  3.2^(1+12).3U4(3).2: need 36 faithful irreducibles
  #I  3.2^(1+12).3U4(3).2: 16 found by tensoring
  #I  3.2^(1+12).3U4(3).2: 20 found by LLL
  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoCharacterTable, 0 );|
\end{Verbatim}
 

 So we have found all missing irreducibles of $N$. Let us check whether the result table coincides with the table in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@lib:= CharacterTable( "3.F3+N2B" );;|
  !gapprompt@gap>| !gapinput@IsRecord( TransformingPermutationsCharacterTables(|
  !gapprompt@>| !gapinput@                 res.tblmnG, lib ) );|
  true
\end{Verbatim}
 

 We were interested in the character table because $N$ is a maximal subgroup of $3.Fi_{24}'$. So the class fusion into the table of this group is an interesting
information. We assume that the class fusion of $N_0$ into $Fi_{24}'$ is known, and compute only those possible class fusions that are compatible
with this map. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@3f3p:= CharacterTable( "3.F3+" );;|
  !gapprompt@gap>| !gapinput@f3p:= CharacterTable( "F3+" );;|
  !gapprompt@gap>| !gapinput@approxfus:= CompositionMaps(|
  !gapprompt@>| !gapinput@                   InverseMap( GetFusionMap( 3f3p, f3p ) ),|
  !gapprompt@>| !gapinput@                   CompositionMaps( GetFusionMap( tblmG, f3p ),|
  !gapprompt@>| !gapinput@                       GetFusionMap( lib, tblmG ) ) );;|
  !gapprompt@gap>| !gapinput@poss:= PossibleClassFusions( lib, 3f3p,|
  !gapprompt@>| !gapinput@              rec( fusionmap:= approxfus ) );;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  1
\end{Verbatim}
 

 It turns out that only one map has this property. (Without the condition on
the compatibility, we would have got $128$ possibilities, which form one orbit under table automorphisms.) }

 }

 }

    
\chapter{\textcolor{Chapter }{\textsf{GAP} Computations Concerning Hamiltonian Cycles in the Generating Graphs of Finite
Groups}}\label{chap:hamilcyc}
\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X7D5919C182B1A462}{}
{
  Date: April 24th, 2012 

 This is a collection of examples showing how the \textsf{GAP} system{\nobreakspace}\cite{GAP} can be used to compute information about the generating graphs of finite
groups. It includes all examples that were needed for the computational
results in{\nobreakspace}\cite{GMN}. 

 The purpose of this writeup is twofold. On the one hand, the computations are
documented this way. On the other hand, the \textsf{GAP} code shown for the examples can be used as test input for automatic checking
of the data and the functions used. 

 A first version of this document, which was based on \textsf{GAP}{\nobreakspace}4.4.12, is available in the arXiv at \href{http://arxiv.org/abs/0911.5589v1} {\texttt{http://arxiv.org/abs/0911.5589v1}} since November{\nobreakspace}2009. The differences between this file and the
current document are as follows. 

 
\begin{itemize}
\item  The format of the \textsf{GAP} output was adjusted to the changed behaviour of \textsf{GAP}{\nobreakspace}4.5. 
\item  The records returned by \texttt{IsomorphismTypeInfoFiniteSimpleGroup} (\textbf{Reference: IsomorphismTypeInfoFiniteSimpleGroup}) contain a component \texttt{"shortname"} since \textsf{GAP}{\nobreakspace}4.11. 
\item  The sporadic simple Monster group has exactly one class of maximal subgroups
of the type ${{\rm PSL}}(2, 41)$ (see{\nobreakspace}\cite{NW12}), and has no maximal subgroups which have the socle ${{\rm PSL}}(2, 27)$ (see{\nobreakspace}\cite{Wil10}). As a consequence, the lower bounds computed in Section{\nobreakspace}\ref{Monster} have been improved. 
\item  The known information about the primitive permutation characters of the
sporadic simple Monster group is available in the data file \texttt{data/prim{\textunderscore}perm{\textunderscore}M.json} of \textsf{GAP}'s library of character tables since the release of \textsf{CTblLib}{\nobreakspace}1.3.3. The data from this file are used in Section \ref{Monster} instead of the explicit list that had been defined in the code in earlier
versions. 
\end{itemize}
  
\section{\textcolor{Chapter }{Overview}}\label{sect:Overview}
\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X8389AD927B74BA4A}{}
{
  The purpose of this note is to document the \textsf{GAP} computations that were carried out in order to obtain the computational
results in{\nobreakspace}\cite{GMN}. 

 In order to keep this note self-contained, we first describe the theory
needed, in Section{\nobreakspace}\ref{background}. The translation of the relevant formulae into \textsf{GAP} functions can be found in Section{\nobreakspace}\ref{functions}. Then Section{\nobreakspace}\ref{chartheor} describes the computations that only require (ordinary) character tables in
the \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib}. Computations using also the groups are shown in Section{\nobreakspace}\ref{grouptheor}. 

 The examples use the \textsf{GAP} Character Table Library and the \textsf{GAP} Library of Tables of Marks, so we first load these packages in the required
versions. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@if not CompareVersionNumbers( GAPInfo.Version, "4.5" ) then|
  !gapprompt@>| !gapinput@     Error( "need GAP in version at least 4.5" );|
  !gapprompt@>| !gapinput@   fi;|
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", "1.2", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "tomlib", "1.1.1", false );|
  true
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Theoretical Background}}\label{background}
\logpage{[ 4, 2, 0 ]}
\hyperdef{L}{X7B6AEBDF7B857E2E}{}
{
  Let $G$ be a finite noncyclic group and denote by $G^{\times}$ the set of nonidentity elements in $G$. We define the \emph{generating graph} $\Gamma(G)$ as the undirected graph on the vertex set $G^{\times}$ by joining two elements $x, y \in G^{\times}$ by an edge if and only if $\langle x, y \rangle = G$ holds. For $x \in G^{\times}$, the \emph{vertex degree} $d(\Gamma, x)$ is $|\{ y \in G^{\times}; \langle x, y \rangle = G \}|$. The \emph{closure} ${{\rm cl}}(\Gamma)$ of the graph $\Gamma$ with $m$ vertices is defined as the graph with the same vertex set as $\Gamma$, where the vertices $x, y$ are joined by an edge if they are joined by an edge in $\Gamma$ or if $d(\Gamma, x) + d(\Gamma, y) \geq m$. We denote iterated closures by ${{\rm cl}}^{(i)}(\Gamma) = {{\rm cl}}({{\rm cl}}^{(i-1)}(\Gamma))$, where ${{\rm cl}}^{(0)}(\Gamma) = \Gamma$. 

 In the following, we will show that the generating graphs of the following
groups contain a Hamiltonian cycle: 
\begin{itemize}
\item  Nonabelian simple groups of orders at most $10^7$, 
\item  groups $G$ containing a unique minimal normal subgroup $N$ such that $N$ has order at most $10^6$, $N$ is nonsolvable, and $G/N$ is cyclic,  
\item  sporadic simple groups and their automorphism groups. 
\end{itemize}
 

 Clearly the condition that $G/N$ is cyclic for all nontrivial normal subgroups $N$ of $G$ is necessary for $\Gamma(G)$ being connected, and{\nobreakspace}\cite[Conjecture 1.6]{GMN} states that this condition is also sufficient. By{\nobreakspace}\cite[Proposition 1.1]{GMN}, this conjecture is true for all solvable groups, and the second entry in the
above list implies that this conjecture holds for all nonsolvable groups of
order up to $10^6$. 

 The question whether a graph $\Gamma$ contains a Hamiltonian cycle (i.{\nobreakspace}e., a closed path in $\Gamma$ that visits each vertex exactly once) can be answered using the following
sufficient criteria (see{\nobreakspace}\cite{GMN}). Let $d_1 \leq d_2 \leq \cdots \leq d_m$ be the vertex degrees in $\Gamma$. 

 
\begin{description}
\item[{P{\a'o}sa's criterion:}]  If $d_k \geq k+1$ holds for $1 \leq k < m/2$ then $\Gamma$ contains a Hamiltonian cycle. 
\item[{Chv{\a'a}tal's criterion:}]  If $d_k \geq k+1$ or $d_{m-k} \geq m-k$ holds for $1 \leq k < m/2$ then $\Gamma$ contains a Hamiltonian cycle. 
\item[{Closure criterion:}]  A graph contains a Hamiltonian cycle if and only if its closure contains a
Hamiltonian cycle. 
\end{description}
  
\subsection{\textcolor{Chapter }{Character-Theoretic Lower Bounds for Vertex Degrees}}\label{sect:Character-Theoretic Lower Bounds for Vertex Degrees}
\logpage{[ 4, 2, 1 ]}
\hyperdef{L}{X7AD3962D7AE4ADFB}{}
{
  Using character-theoretic methods similar to those used to obtain the results
in{\nobreakspace}\cite{BGK} (the computations for that paper are shown in{\nobreakspace}\cite{ProbGenArxiv}), we can compute lower bounds for the vertex degrees in generating graphs, as
follows. 

 Let $R$ be a set of representatives of conjugacy classes of nonidentity elements in $G$, fix $s \in G^{\times}$, let ${{\mathbb M}}(G,s)$ denote the set of those maximal subgroups of $G$ that contain $s$, let ${{\mathbb M}}(G,s)/\sim$ denote a set of representatives in ${{\mathbb M}}(G,s)$ w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}conjugacy in $G$. For a subgroup $M$ of $G$, the \emph{permutation character} $1_M^G$ is defined by 
\[ 1_M^G(g):= (|G| \cdot |g^G \cap M|) / (|M| \cdot |g^G|), \]
 where $g^G = \{ g^x; x \in G \}$, with $g^x = x^{-1} g x$, denotes the conjugacy class of $g$ in $G$. So we have $1_M^G(1) = |G|/|M|$ and thus $|g^G \cap M| = |g^G| \cdot 1_M^G(g) / 1_M^G(1)$. 

 Doubly counting the set $\{ (s^x, M^y); x, y \in G, s^x \in M^y \}$ yields $|M^G| \cdot |s^G \cap M| = |s^G| \cdot |\{ M^x; x \in G, s \in M^x \}|$ and thus $|\{ M^x; x \in G, s \in M^x \}| = |M^G| \cdot 1_M^G(s) / 1_M^G(1) \leq
1_M^G(s)$. (If $M$ is a \emph{maximal} subgroup of $G$ then either $M$ is normal in $G$ or self-normalizing, and in the latter case the inequality is in fact an
equality.) 

 Let $\Pi$ denote the multiset of \emph{primitive} permutation characters of $G$, i.{\nobreakspace}e., of the permutation characters $1_M^G$ where $M$ ranges over representatives of the conjugacy classes of maximal subgroups of $G$. 

 Define 
\[ \delta(s, g^G):= |g^G| \cdot \max\left\{ 0, 1 - \sum_{{\pi \in \Pi}} \pi(g)
\cdot \pi(s) / \pi(1) \right\} \]
 and $d(s, g^G):= |\{ x \in g^G; \langle s, x \rangle = G \}|$, the contribution of the class $g^G$ to the vertex degree of $s$. Then we have $d(\Gamma(G), s) = \sum_{{x \in R}} d(s, x^G)$ and 
\begin{eqnarray*}
   d(s, g^G)
       & = & |g^G| - |\bigcup_{M \in {{\cal M}}(G,s)}
                \{ x \in g^G; \langle x, s \rangle \subseteq M \}| \\
    & \geq & \max\left\{ 0, |g^G| - \sum_{M \in {{\cal M}}(G,s)}
                                      |g^G \cap M| \right\} \\
       & = & |g^G| \cdot \max\left\{ 0, 1 - \sum_{M \in {{\cal M}}(G,s)}
                                      1_M^G(g) / 1_M^G(1) \right\} \\
    & \geq & |g^G| \cdot \max\left\{ 0, 1 - \sum_{M \in {{\cal M}}(G,s)/\sim}
                       1_M^G(g) \cdot 1_M^G(s) / 1_M^G(1) \right\} \\
       & = & \delta(s, g^G)
\end{eqnarray*}
   

 So $\delta(s):= \sum_{x \in R} \delta(s, x^G)$ is a lower bound for the vertex degree of $s$; this bound can be computed if $\Pi$ is known. 

 For computing the vertex degrees of the iterated closures of $\Gamma(G)$, we define $d^{(0)}(s, g^G):= d(s, g^G)$ and 
\[
    d^{(i+1)}(s, g^G):= \left\{ \begin{array}{lcl}
         |g^G|           & ; & d^{(i)}(\Gamma(G), s) + d^{(i)}(\Gamma(G), g)
                               \geq |G|-1 \\
         d^{(i)}(s, g^G) & ; & \mbox{\rm otherwise}
                               \end{array} \right..
\]
     and $\delta^{(i)}(s):= \sum_{{x \in R}} \delta^{(i)}(s, x^G)$, a lower bound for $d({{\rm cl}}^{(i)}(\Gamma(G)), s)$ that can be computed if $\Pi$ is known. }

  
\subsection{\textcolor{Chapter }{Checking the Criteria}}\label{critcheck}
\logpage{[ 4, 2, 2 ]}
\hyperdef{L}{X825776BA8687E475}{}
{
  Let us assume that we know lower bounds $\beta(s)$ for the vertex degrees $d({{\rm cl}}^{(i)}(\Gamma(G)), s)$, for some fixed $i$, and let us choose representatives $s_1, s_2, \ldots, s_l$ of the nonidentity conjugacy classes of $G$ such that $\beta(s_1) \leq \beta(s_2) \leq \cdots \leq \beta(s_l)$ holds. Let $c_k = |s_k^G|$ be the class lengths of these representatives. 

 Then the first $c_1$ vertex degrees, ordered by increasing size, are larger than or equal to $\beta(s_1)$, the next $c_2$ vertex degrees are larger than or equal to $\beta(s_2)$, and so on. 

 Then the set of indices in the $k$-th nonidentity class of $G$ for which P{\a'o}sa's criterion is not guaranteed by the given bounds is 
\[ \{ x; c_1 + c_2 + \cdots + c_{k-1} < x \leq c_1 + c_2 + \cdots c_k, x < (|G| -
1) / 2, \beta(s_k) < x+1 \}. \]
 This is an interval $\{ L_k, L_k + 1, \ldots, U_k \}$ with 
\[ L_k = \max\left\{ 1 + c_1 + c_2 + \cdots + c_{k-1}, \beta(s_k) \right\} \]
 and 
\[ U_k = \min\left\{ c_1 + c_2 + \cdots + c_k, \left\lfloor |G|/2 \right\rfloor -
1 \right\} . \]
 (Note that the generating graph has $m = |G|-1$ vertices, and that $x < m/2$ is equivalent to $x \leq \left\lfloor |G|/2 \right\rfloor - 1$.) 

 The generating graph $\Gamma(G)$ satisfies P{\a'o}sa's criterion if all these intervals are empty,
i.{\nobreakspace}e., if $L_k > U_k$ holds for $1 \leq k \leq l$. 

 The set of indices for which Chv{\a'a}tal's criterion is not guaranteed is the
intersection of 
\[ \{ m-k; 1 \leq m-k < m/2, d_k < k \} \]
 with the set of indices for which P{\a'o}sa's criterion is not guaranteed. 

 Analogously to the above considerations, the set of indices $m-x$ in the former set for which Chv{\a'a}tal's criterion is not guaranteed by the
given bounds and such that $x$ is an index in the $k$-th nonidentity class of $G$ is 
\[ \{ m-x; c_1 + c_2 + \cdots + c_{k-1} < x \leq c_1 + c_2 + \cdots c_k, 1 \leq
m-x < (|G| - 1) / 2, \beta(s_k) < x \}. \]
 This is again an interval $\{ L^{\prime}_k, L^{\prime}_k + 1, \ldots, U^{\prime}_k \}$ with 
\[ L^{\prime}_k = \max\left\{ 1, m - ( c_1 + c_2 + \cdots + c_k ) \right\} \]
 and 
\[ U^{\prime}_k = \min\left\{ m - ( c_1 + c_2 + \cdots + c_{k-1} ) - 1,
\left\lfloor |G|/2 \right\rfloor - 1, m-1 - \beta(s_k) \right\} . \]
 The generating graph $\Gamma(G)$ satisfies Chv{\a'a}tal's criterion if the union of the intervals $\{ L^{\prime}_k, L^{\prime}_k + 1, \ldots, U^{\prime}_k \}$, for $1 \leq k \leq l$ is disjoint to the union of the intervals $\{ L_k, L_k + 1, \ldots, U_k \}$, for $1 \leq k \leq l$. }

 }

  
\section{\textcolor{Chapter }{\textsf{GAP} Functions for the Computations}}\label{functions}
\logpage{[ 4, 3, 0 ]}
\hyperdef{L}{X7B56BE5384BAD54E}{}
{
  We describe two approaches to compute, for a given group $G$, vertex degrees for the generating graph of $G$ or lower bounds for them, by calculating exact vertex degrees from $G$ itself (see Section{\nobreakspace}\ref{groups}) or by deriving lower bounds for the vertex degrees using just
character-theoretic information about $G$ and its subgroups (see Section{\nobreakspace}\ref{characters}). Finally, Section{\nobreakspace}\ref{clos} deals with deriving lower bounds of vertex degrees of iterated closures.  
\subsection{\textcolor{Chapter }{Computing Vertex Degrees from the Group}}\label{groups}
\logpage{[ 4, 3, 1 ]}
\hyperdef{L}{X802B2ED2802334B0}{}
{
  In this section, the task is to compute the vertex degrees $d(s,g^G)$ using explicit computations with the group $G$. 

 The function \texttt{IsGeneratorsOfTransPermGroup} checks whether the permutations in the list \texttt{list} generate the permutation group \texttt{G}, \emph{provided that} \texttt{G} is transitive on its moved points. (Note that testing the necessary condition
that the elements in \texttt{list} generate a transitive group is usually much faster than testing generation.)
This function has been used already in{\nobreakspace}\cite{ProbGenArxiv}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsGeneratorsOfTransPermGroup:= function( G, list )|
  !gapprompt@>| !gapinput@    local S;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not IsTransitive( G ) then|
  !gapprompt@>| !gapinput@      Error( "<G> must be transitive on its moved points" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    S:= SubgroupNC( G, list );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return IsTransitive( S, MovedPoints( G ) )|
  !gapprompt@>| !gapinput@           and Size( S ) = Size( G );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 The function \texttt{VertexDegreesGeneratingGraph} takes a \emph{transitive} permutation group $G$ (in order to be allowed to use \texttt{IsGeneratorsOfTransPermGroup}), the list \texttt{classes} of conjugacy classes of $G$ (in order to prescribe an ordering of the classes), and a list \texttt{normalsubgroups} of proper normal subgroups of $G$, and returns the matrix $[ d(s, g^G) ]_{s, g}$ of vertex degrees, with rows and columns indexed by nonidentity class
representatives ordered as in the list \texttt{classes}. (The class containing the identity element may be contained in \texttt{classes}.) 

 The following criteria are used in this function. 

 
\begin{itemize}
\item  The function tests the (non)generation only for representatives of $C_G(g)$-$C_G(s)$-double cosets, where $C_G(g):= \{ x \in G; g x = x g \}$ denotes the centralizer of $g$ in $G$. Note that for $c_1 \in C_G(g)$, $c_2 \in C_G(s)$, and a representative $r \in G$, we have $\langle s, g^{c_1 r c_2} \rangle = \langle s, g^r \rangle^{c_2}$. If $\langle s, g^r \rangle = G$ then the double coset $D = C_G(g) r C_G(s)$ contributes $|D|/|C_G(g)|$ to the vertex degree $d(s, g^G)$, otherwise the contribution is zero.               
\item  We have $d(s, g^G) \cdot |C_G(g)| = d(g, s^G) \cdot |C_G(s)|$. (To see this, either establish a bijection of the above double cosets, or
doubly count the edges between elements of the conjugacy classes of $s$ and $g$.) 
\item  If $\langle s_1 \rangle = \langle s_2 \rangle$ and $\langle g_1 \rangle = \langle g_2 \rangle$ hold then we have $d(s_1, g_1^G) = d(s_2, g_1^G) = d(s_1, g_2^G) = d(s_2, g_2^G)$, so only one of these values must be computed. 
\item  If both $s$ and $g$ are contained in one of the normal subgroups given then $d(s, g^G)$ is zero. 
\item  If $G$ is not a dihedral group and both $s$ and $g$ are involutions then $d(s, g^G)$ is zero. 
\end{itemize}
 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "VertexDegreesGeneratingGraph",|
  !gapprompt@>| !gapinput@    function( G, classes, normalsubgroups )|
  !gapprompt@>| !gapinput@    local nccl, matrix, cents, powers, normalsubgroupspos, i, j, g_i,|
  !gapprompt@>| !gapinput@          nsg, g_j, gen, pair, d, pow;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not IsTransitive( G ) then|
  !gapprompt@>| !gapinput@      Error( "<G> must be transitive on its moved points" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    classes:= Filtered( classes,|
  !gapprompt@>| !gapinput@                        C -> Order( Representative( C ) ) <> 1 );|
  !gapprompt@>| !gapinput@    nccl:= Length( classes );|
  !gapprompt@>| !gapinput@    matrix:= [];|
  !gapprompt@>| !gapinput@    cents:= [];|
  !gapprompt@>| !gapinput@    powers:= [];|
  !gapprompt@>| !gapinput@    normalsubgroupspos:= [];|
  !gapprompt@>| !gapinput@    for i in [ 1 .. nccl ] do|
  !gapprompt@>| !gapinput@      matrix[i]:= [];|
  !gapprompt@>| !gapinput@      if IsBound( powers[i] ) then|
  !gapprompt@>| !gapinput@        # The i-th row equals the earlier row 'powers[i]'.|
  !gapprompt@>| !gapinput@        for j in [ 1 .. i ] do|
  !gapprompt@>| !gapinput@          matrix[i][j]:= matrix[ powers[i] ][j];|
  !gapprompt@>| !gapinput@          matrix[j][i]:= matrix[j][ powers[i] ];|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        # We have to compute the values.|
  !gapprompt@>| !gapinput@        g_i:= Representative( classes[i] );|
  !gapprompt@>| !gapinput@        nsg:= Filtered( [ 1 .. Length( normalsubgroups ) ],|
  !gapprompt@>| !gapinput@                        i -> g_i in normalsubgroups[i] );|
  !gapprompt@>| !gapinput@        normalsubgroupspos[i]:= nsg;|
  !gapprompt@>| !gapinput@        cents[i]:= Centralizer( G, g_i );|
  !gapprompt@>| !gapinput@        for j in [ 1 .. i ] do|
  !gapprompt@>| !gapinput@          g_j:= Representative( classes[j] );|
  !gapprompt@>| !gapinput@          if IsBound( powers[j] ) then|
  !gapprompt@>| !gapinput@            matrix[i][j]:= matrix[i][ powers[j] ];|
  !gapprompt@>| !gapinput@            matrix[j][i]:= matrix[ powers[j] ][i];|
  !gapprompt@>| !gapinput@          elif not IsEmpty( Intersection( nsg, normalsubgroupspos[j] ) )|
  !gapprompt@>| !gapinput@               or ( Order( g_i ) = 2 and Order( g_j ) = 2|
  !gapprompt@>| !gapinput@                    and not IsDihedralGroup( G ) ) then|
  !gapprompt@>| !gapinput@            matrix[i][j]:= 0;|
  !gapprompt@>| !gapinput@            matrix[j][i]:= 0;|
  !gapprompt@>| !gapinput@          else|
  !gapprompt@>| !gapinput@            # Compute $d(g_i, g_j^G)$.|
  !gapprompt@>| !gapinput@            gen:= 0;|
  !gapprompt@>| !gapinput@            for pair in DoubleCosetRepsAndSizes( G, cents[j],|
  !gapprompt@>| !gapinput@                            cents[i] ) do|
  !gapprompt@>| !gapinput@              if IsGeneratorsOfTransPermGroup( G,|
  !gapprompt@>| !gapinput@                     [ g_i, g_j^pair[1] ] ) then|
  !gapprompt@>| !gapinput@                gen:= gen + pair[2];|
  !gapprompt@>| !gapinput@              fi;|
  !gapprompt@>| !gapinput@            od;|
  !gapprompt@>| !gapinput@            matrix[i][j]:= gen / Size( cents[j] );|
  !gapprompt@>| !gapinput@            if i <> j then|
  !gapprompt@>| !gapinput@              matrix[j][i]:= gen / Size( cents[i] );|
  !gapprompt@>| !gapinput@            fi;|
  !gapprompt@>| !gapinput@          fi;|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@        # For later, provide information about algebraic conjugacy.|
  !gapprompt@>| !gapinput@        for d in Difference( PrimeResidues( Order( g_i ) ), [ 1 ] ) do|
  !gapprompt@>| !gapinput@          pow:= g_i^d;|
  !gapprompt@>| !gapinput@          for j in [ i+1 .. nccl ] do|
  !gapprompt@>| !gapinput@            if not IsBound( powers[j] ) and pow in classes[j] then|
  !gapprompt@>| !gapinput@              powers[j]:= i;|
  !gapprompt@>| !gapinput@              break;|
  !gapprompt@>| !gapinput@            fi;|
  !gapprompt@>| !gapinput@          od;|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return matrix;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Computing Lower Bounds for Vertex Degrees}}\label{characters}
\logpage{[ 4, 3, 2 ]}
\hyperdef{L}{X87FE2DDD7F086D2F}{}
{
  In this section, the task is to compute the lower bounds $\delta(s, g^G)$ for the vertex degrees $d(s, g^G)$ using character-theoretic methods. 

 We provide \textsf{GAP} functions for computing the multiset $\Pi$ of the primitive permutation characters of a given group $G$ and for computing the lower bounds $\delta(s, g^G)$ from $\Pi$. 

 For many almost simple groups, the \textsf{GAP} libraries of character tables and of tables of marks contain information for
quickly computing the primitive permutation characters of the group in
question. Therefore, the function \texttt{PrimitivePermutationCharacters} takes as its argument not the group $G$ but its character table $T$, say. (This function is shown already in{\nobreakspace}\cite{ProbGenArxiv}.) 

 If $T$ is contained in the \textsf{GAP} Character Table Library (see{\nobreakspace}\cite{CTblLib}) then the complete set of primitive permutation characters can be easily
computed if the character tables of all maximal subgroups and their class
fusions into $T$ are known (in this case, we check whether the attribute \texttt{Maxes} (\textbf{CTblLib: Maxes}) of $T$ is bound) or if the table of marks of $G$ and the class fusion from $T$ into this table of marks are known (in this case, we check whether the
attribute \texttt{FusionToTom} (\textbf{CTblLib: FusionToTom}) of $T$ is bound). If the attribute \texttt{UnderlyingGroup} (\textbf{Reference: UnderlyingGroup for tables of marks}) of $T$ is bound then the group stored as the value of this attribute can be used to
compute the primitive permutation characters. The latter happens if $T$ was computed from the group $G$; for tables in the \textsf{GAP} Character Table Library, this is not the case by default. 

 The \textsf{GAP} function \texttt{PrimitivePermutationCharacters} tries to compute the primitive permutation characters of a group using this
information; it returns the required list of characters if this can be
computed this way, otherwise \texttt{fail} is returned. (For convenience, we use the \textsf{GAP} mechanism of \emph{attributes} in order to store the permutation characters in the character table object
once they have been computed.) 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@DeclareAttribute( "PrimitivePermutationCharacters",|
  !gapprompt@>| !gapinput@                     IsCharacterTable );|
  !gapprompt@gap>| !gapinput@InstallOtherMethod( PrimitivePermutationCharacters,|
  !gapprompt@>| !gapinput@    [ IsCharacterTable ],|
  !gapprompt@>| !gapinput@    function( tbl )|
  !gapprompt@>| !gapinput@    local maxes, i, fus, poss, tom, G;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if HasMaxes( tbl ) then|
  !gapprompt@>| !gapinput@      maxes:= List( Maxes( tbl ), CharacterTable );|
  !gapprompt@>| !gapinput@      for i in [ 1 .. Length( maxes ) ] do|
  !gapprompt@>| !gapinput@        fus:= GetFusionMap( maxes[i], tbl );|
  !gapprompt@>| !gapinput@        if fus = fail then|
  !gapprompt@>| !gapinput@          fus:= PossibleClassFusions( maxes[i], tbl );|
  !gapprompt@>| !gapinput@          poss:= Set( fus,|
  !gapprompt@>| !gapinput@            map -> InducedClassFunctionsByFusionMap(|
  !gapprompt@>| !gapinput@                       maxes[i], tbl,|
  !gapprompt@>| !gapinput@                       [ TrivialCharacter( maxes[i] ) ], map )[1] );|
  !gapprompt@>| !gapinput@          if Length( poss ) = 1 then|
  !gapprompt@>| !gapinput@            maxes[i]:= poss[1];|
  !gapprompt@>| !gapinput@          else|
  !gapprompt@>| !gapinput@            return fail;|
  !gapprompt@>| !gapinput@          fi;|
  !gapprompt@>| !gapinput@        else|
  !gapprompt@>| !gapinput@          maxes[i]:= TrivialCharacter( maxes[i] )^tbl;|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@      return maxes;|
  !gapprompt@>| !gapinput@    elif HasFusionToTom( tbl ) then|
  !gapprompt@>| !gapinput@      tom:= TableOfMarks( tbl );|
  !gapprompt@>| !gapinput@      maxes:= MaximalSubgroupsTom( tom );|
  !gapprompt@>| !gapinput@      return PermCharsTom( tbl, tom ){ maxes[1] };|
  !gapprompt@>| !gapinput@    elif HasUnderlyingGroup( tbl ) then|
  !gapprompt@>| !gapinput@      G:= UnderlyingGroup( tbl );|
  !gapprompt@>| !gapinput@      return List( MaximalSubgroupClassReps( G ),|
  !gapprompt@>| !gapinput@                   M -> TrivialCharacter( M )^tbl );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return fail;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
  

 The next function computes the lower bounds $\delta(s, g^G)$ from the two lists \texttt{classlengths} of conjugacy class lengths of the group $G$ and \texttt{prim} of all primitive permutation characters of $G$. (The first entry in \texttt{classlengths} is assumed to represent the class containing the identity element of $G$.) The return value is the matrix that contains in row $i$ and column $j$ the value $\delta(s, g^G)$, where $s$ and $g$ are in the conjugacy classes represented by the $(i+1)$-st and $(j+1)$-st column of \texttt{tbl}, respectively. So the row sums of this matrix are the values $\delta(s)$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LowerBoundsVertexDegrees:= function( classlengths, prim )|
  !gapprompt@>| !gapinput@    local sizes, nccl;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    nccl:= Length( classlengths );|
  !gapprompt@>| !gapinput@    return List( [ 2 .. nccl ],|
  !gapprompt@>| !gapinput@             i -> List( [ 2 .. nccl ],|
  !gapprompt@>| !gapinput@                    j -> Maximum( 0, classlengths[j] - Sum( prim,|
  !gapprompt@>| !gapinput@                    pi -> classlengths[j] * pi[j] * pi[i]|
  !gapprompt@>| !gapinput@                              / pi[1] ) ) ) );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Evaluating the (Lower Bounds for the) Vertex Degrees}}\label{clos}
\logpage{[ 4, 3, 3 ]}
\hyperdef{L}{X8677A8B1788ACD2C}{}
{
  In this section, the task is to compute (lower bounds for) the vertex degrees
of iterated closures of a generating graph from (lower bounds for) the vertex
degrees of the graph itself, and then to check the criteria of P{\a'o}sa and
Chv{\a'a}tal. 

 The arguments of all functions defined in this section are the list \texttt{classlengths} of conjugacy class lengths for the group $G$ (including the class of the identity element, in the first position) and a
matrix \texttt{bounds} of the values $d^{(i)}(s, g^G)$ or $\delta^{(i)}(s, g^G)$, with rows and columns indexed by nonidentity class representatives $s$ and $g$, respectively. Such a matrix is returned by the functions \texttt{VertexDegreesGeneratingGraph} or \texttt{LowerBoundsVertexDegrees}, respectively. 

 The function \texttt{LowerBoundsVertexDegreesOfClosure} returns the corresponding matrix of the values $d^{(i+1)}(s, g^G)$ or $\delta^{(i+1)}(s, g^G)$, respectively. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LowerBoundsVertexDegreesOfClosure:= function( classlengths, bounds )|
  !gapprompt@>| !gapinput@    local delta, newbounds, size, i, j;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    delta:= List( bounds, Sum );|
  !gapprompt@>| !gapinput@    newbounds:= List( bounds, ShallowCopy );|
  !gapprompt@>| !gapinput@    size:= Sum( classlengths );|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( bounds ) ] do|
  !gapprompt@>| !gapinput@      for j in [ 1 .. Length( bounds ) ] do|
  !gapprompt@>| !gapinput@        if delta[i] + delta[j] >= size - 1 then|
  !gapprompt@>| !gapinput@          newbounds[i][j]:= classlengths[ j+1 ];|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return newbounds;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Once the values $d^{(i)}(s, g^G)$ or $\delta^{(i)}(s, g^G)$ are known, we can check whether P{\a'o}sa's or Chv{\a'a}tal's criterion is
satisfied for the graph ${{\rm cl}}^{(i)}(\Gamma(G))$, using the function \texttt{CheckCriteriaOfPosaAndChvatal} shown below. (Of course a \emph{negative} result is meaningless in the case that only lower bounds for the vertex
degrees are used.) 

 The idea is to compute the row sums of the given matrix, and to compute the
intervals $\{ L_k, L_k + 1, \ldots, U_k \}$ and $\{ L^{\prime}_k, L^{\prime}_k + 1, \ldots, U^{\prime}_k \}$ that were introduced in Section{\nobreakspace}\ref{critcheck}. 

 The function \texttt{CheckCriteriaOfPosaAndChvatal} returns, given the list of class lengths of $G$ and the matrix of (bounds for the) vertex degrees, a record with the
components \texttt{badForPosa} (the list of those pairs $[ L_k, U_k ]$ with the property $L_k \leq U_k$), \texttt{badForChvatal} (the list of pairs of lower and upper bounds of nonempty intervals where
Chv{\a'a}tal's criterion may be violated), and \texttt{data} (the sorted list of triples $[ \delta(g_k), |g_k^G|, \iota(k) ]$, where $\iota(k)$ is the row and column position of $g_k$ in the matrix \texttt{bounds}). The ordering of class lengths must of course be compatible with the
ordering of rows and columns of the matrix, and the identity element of $G$ must belong to the first entry in the list of class lengths. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CheckCriteriaOfPosaAndChvatal:= function( classlengths, bounds )|
  !gapprompt@>| !gapinput@    local size, degs, addinterval, badForPosa, badForChvatal1, pos,|
  !gapprompt@>| !gapinput@          half, i, low1, upp2, upp1, low2, badForChvatal, interval1,|
  !gapprompt@>| !gapinput@          interval2;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    size:= Sum( classlengths );|
  !gapprompt@>| !gapinput@    degs:= List( [ 2 .. Length( classlengths ) ],|
  !gapprompt@>| !gapinput@                 i -> [ Sum( bounds[ i-1 ] ), classlengths[i], i ] );|
  !gapprompt@>| !gapinput@    Sort( degs );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    addinterval:= function( intervals, low, upp )|
  !gapprompt@>| !gapinput@      if low <= upp then|
  !gapprompt@>| !gapinput@        Add( intervals, [ low, upp ] );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    end;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    badForPosa:= [];|
  !gapprompt@>| !gapinput@    badForChvatal1:= [];|
  !gapprompt@>| !gapinput@    pos:= 1;|
  !gapprompt@>| !gapinput@    half:= Int( size / 2 ) - 1;|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( degs ) ] do|
  !gapprompt@>| !gapinput@      # We have pos = c_1 + c_2 + \cdots + c_{i-1} + 1|
  !gapprompt@>| !gapinput@      low1:= Maximum( pos, degs[i][1] );  # L_i|
  !gapprompt@>| !gapinput@      upp2:= Minimum( half, size-1-pos, size-1-degs[i][1] ); # U'_i|
  !gapprompt@>| !gapinput@      pos:= pos + degs[i][2];|
  !gapprompt@>| !gapinput@      upp1:= Minimum( half, pos-1 ); # U_i|
  !gapprompt@>| !gapinput@      low2:= Maximum( 1, size-pos ); # L'_i|
  !gapprompt@>| !gapinput@      addinterval( badForPosa, low1, upp1 );|
  !gapprompt@>| !gapinput@      addinterval( badForChvatal1, low2, upp2 );|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Intersect intervals.|
  !gapprompt@>| !gapinput@    badForChvatal:= [];|
  !gapprompt@>| !gapinput@    for interval1 in badForPosa do|
  !gapprompt@>| !gapinput@      for interval2 in badForChvatal1 do|
  !gapprompt@>| !gapinput@        addinterval( badForChvatal,|
  !gapprompt@>| !gapinput@                     Maximum( interval1[1], interval2[1] ),|
  !gapprompt@>| !gapinput@                     Minimum( interval1[2], interval2[2] ) );|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return rec( badForPosa:= badForPosa,|
  !gapprompt@>| !gapinput@                badForChvatal:= Set( badForChvatal ),|
  !gapprompt@>| !gapinput@                data:= degs );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Finally, the function \texttt{HamiltonianCycleInfo} assumes that the matrix \texttt{bounds} contains lower bounds for the vertex degrees in the generating graph $\Gamma$, and returns a string that describes the minimal $i$ with the property that the given bounds suffice to show that $cl^{(i)}(\Gamma)$ satisfies P{\a'o}sa's or Chv{\a'a}tal's criterion, if such a closure exists.
If no closure has this property, the string \texttt{"no decision"} is returned. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@HamiltonianCycleInfo:= function( classlengths, bounds )|
  !gapprompt@>| !gapinput@    local i, result, res, oldbounds;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    i:= 0;|
  !gapprompt@>| !gapinput@    result:= rec( Posa:= fail, Chvatal:= fail );|
  !gapprompt@>| !gapinput@    repeat|
  !gapprompt@>| !gapinput@      res:= CheckCriteriaOfPosaAndChvatal( classlengths, bounds );|
  !gapprompt@>| !gapinput@      if result.Posa = fail and IsEmpty( res.badForPosa ) then|
  !gapprompt@>| !gapinput@        result.Posa:= i;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@      if result.Chvatal = fail and IsEmpty( res.badForChvatal ) then|
  !gapprompt@>| !gapinput@        result.Chvatal:= i;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@      i:= i+1;|
  !gapprompt@>| !gapinput@      oldbounds:= bounds;|
  !gapprompt@>| !gapinput@      bounds:= LowerBoundsVertexDegreesOfClosure( classlengths,|
  !gapprompt@>| !gapinput@                   bounds );|
  !gapprompt@>| !gapinput@    until oldbounds = bounds;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if result.Posa <> fail then|
  !gapprompt@>| !gapinput@      if result.Posa <> result.Chvatal then|
  !gapprompt@>| !gapinput@        return Concatenation(|
  !gapprompt@>| !gapinput@            "Chvatal for ", Ordinal( result.Chvatal ), " closure, ",|
  !gapprompt@>| !gapinput@            "Posa for ", Ordinal( result.Posa ), " closure" );|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        return Concatenation( "Posa for ", Ordinal( result.Posa ),|
  !gapprompt@>| !gapinput@            " closure" );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    elif result.Chvatal <> fail then|
  !gapprompt@>| !gapinput@      return Concatenation( "Chvatal for ", Ordinal( result.Chvatal ),|
  !gapprompt@>| !gapinput@                            " closure" );|
  !gapprompt@>| !gapinput@    else|
  !gapprompt@>| !gapinput@      return "no decision";|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Character-Theoretic Computations}}\label{chartheor}
\logpage{[ 4, 4, 0 ]}
\hyperdef{L}{X7A221012861440E2}{}
{
  In this section, we apply the functions introduced in Section{\nobreakspace}\ref{functions} to character tables of almost simple groups that are available in the \textsf{GAP} Character Table Library. 

 Our first examples are the sporadic simple groups, in Section{\nobreakspace}\ref{spor}, then their automorphism groups are considered in Section{\nobreakspace}\ref{sporaut}. Small alternating and symmetric groups are treated in Section{\nobreakspace}\ref{symmalt}. 

 For our convenience, we provide a small function that takes as its argument
only the character table in question, and returns a string, either \texttt{"no prim. perm. characters"} or the return value of \texttt{HamiltonianCycleInfo} for the bounds computed from the primitive permutation characters. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@HamiltonianCycleInfoFromCharacterTable:= function( tbl )|
  !gapprompt@>| !gapinput@    local prim, classlengths, bounds;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    prim:= PrimitivePermutationCharacters( tbl );|
  !gapprompt@>| !gapinput@    if prim = fail then|
  !gapprompt@>| !gapinput@      return "no prim. perm. characters";|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    classlengths:= SizesConjugacyClasses( tbl );|
  !gapprompt@>| !gapinput@    bounds:= LowerBoundsVertexDegrees( classlengths, prim );|
  !gapprompt@>| !gapinput@    return HamiltonianCycleInfo( classlengths, bounds );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
  
\subsection{\textcolor{Chapter }{Sporadic Simple Groups, except the Monster}}\label{spor}
\logpage{[ 4, 4, 1 ]}
\hyperdef{L}{X78EFD6898145F244}{}
{
  The \textsf{GAP} Character Table Library contains the tables of maximal subgroups of all
sporadic simple groups except $M$. 

     So the function \texttt{PrimitivePermutationCharacters} can be used to compute all primitive permutation characters for $25$ of the $26$ sporadic simple groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spornames:= AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                   IsDuplicateTable, false );|
  [ "B", "Co1", "Co2", "Co3", "F3+", "Fi22", "Fi23", "HN", "HS", "He", 
    "J1", "J2", "J3", "J4", "Ly", "M", "M11", "M12", "M22", "M23", 
    "M24", "McL", "ON", "Ru", "Suz", "Th" ]
  !gapprompt@gap>| !gapinput@for tbl in List( spornames, CharacterTable ) do|
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromCharacterTable( tbl );|
  !gapprompt@>| !gapinput@     if info <> "Posa for 0th closure" then|
  !gapprompt@>| !gapinput@       Print( Identifier( tbl ), ": ", info, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  M: no prim. perm. characters
\end{Verbatim}
 

 It turns out that only for the Monster group, the information available in the \textsf{GAP} Character Table Library is not sufficient to prove that the generating graph
contains a Hamiltonian cycle. }

  
\subsection{\textcolor{Chapter }{The Monster}}\label{Monster}
\logpage{[ 4, 4, 2 ]}
\hyperdef{L}{X867D338F7F453092}{}
{
  Currently $44$ classes of maximal subgroups of the Monster group $M$ are known, but there may be more, see{\nobreakspace}\cite{NW12}. For some of the known ones, the character table is not known, and for some
of those with known character table, the permutation character is not uniquely
determined by the character tables involved. 

 Nevertheless, we will show that the generating graph of $M$ satisfies P{\a'o}sa's criterion. For that, we use the information that is
available. 

 For some of the known maximal subgroups $S$, the character tables are available in the \textsf{GAP} Character Table Library, and we derive upper bounds for the values of the
primitive permutation characters $1_S^M$ from the possible class fusions from $S$ into $M$. For the other subgroups $S$, the permutation characters $1_S^M$ have been computed with other methods. 

 The list \texttt{prim} defined below has length $44$. The entry at position $i$ is a list of length one or two. If \texttt{prim[}$i$\texttt{]} has length one then its unique entry is the identifier of the library
character table of the $i$-th maximal subgroup of $M$. If \texttt{prim[}$i$\texttt{]} has length two then its entries are a string describing the structure of the $i$-th maximal subgroup $S$ of $M$ and the permutation character $1_S^M$. 

 (The construction of the explicitly given characters in this list will be
documented elsewhere. Some of the constructions can be found in Section \ref{sect:monsterperm}.)  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@dir:= DirectoriesPackageLibrary( "ctbllib", "data" );;|
  !gapprompt@gap>| !gapinput@filename:= Filename( dir, "prim_perm_M.json" );;|
  !gapprompt@gap>| !gapinput@primdata:= EvalString( StringFile( filename ) )[2];;|
  !gapprompt@gap>| !gapinput@Length( primdata );|
  44
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );;|
\end{Verbatim}
 

 We compute upper bounds for the permutation character values in the cases
where the characters are not given explicitly. (We could improve this by using
additional information about the class fusions, but this will not be
necessary.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= "dummy";;      #  Avoid a message about an unbound variable ...|
  !gapprompt@gap>| !gapinput@poss:= "dummy";;   #  Avoid a message about an unbound variable ...|
  !gapprompt@gap>| !gapinput@for entry in primdata do|
  !gapprompt@>| !gapinput@     if not IsBound( entry[2] ) then|
  !gapprompt@>| !gapinput@       s:= CharacterTable( entry[1] );|
  !gapprompt@>| !gapinput@       poss:= Set( PossibleClassFusions( s, m ),|
  !gapprompt@>| !gapinput@                   x -> InducedClassFunctionsByFusionMap( s, m,|
  !gapprompt@>| !gapinput@                            [ TrivialCharacter( s ) ], x )[1] );|
  !gapprompt@>| !gapinput@       entry[2]:= List( [ 1 .. NrConjugacyClasses( m ) ],|
  !gapprompt@>| !gapinput@                        i -> Maximum( List( poss, x -> x[i] ) ) );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
  

 According to{\nobreakspace}\cite{NW12}, any maximal subgroup of the Monster besides the above $44$ known classes is an almost simple group whose socle is one of L$_2(13)$, Sz$(8)$, U$_3(4)$, and U$_3(8)$.  

 We show that the elements of such subgroups are contained in the union of $55$ conjugacy classes of the Monster that cover less than one percent of the
elements in the Monster. For that, we compute the possible class fusions from
the abovementioned simple groups $S$ into the Monster, and then the possible class fusions from the automorphic
extensions of $S$ into the Monster, using the possible class fusions of $S$. (This approach is faster than computing each class fusion from scratch.) 

 After the following computations, the list \texttt{badclasses} will contain the positions of all those classes of $M$ that may contain elements in some of the hypothetical maximal subgroups. 

 For each simple group in question, we enter the identifiers of the character
tables of the automorphic extensions that can occur. Note that the
automorphism groups of the four groups have the structures L$_2(13).2$, Sz$(8).3$, U$_3(4).4$, and U$_3(8).(3 \times S_3)$, respectively. We need not consider the groups U$_3(8).3^2$ and U$_3(8).(3 \times S_3)$ because already U$_3(8).3_2$ does not admit an embedding into $M$, and we need not consider the group U$_3(8).S_3$ because its set of elements is covered by its subgroups of the types U$_3(8).2$ and U$_3(8).3_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleClassFusions( CharacterTable( "U3(8).3_2" ), m );|
  [  ]
  !gapprompt@gap>| !gapinput@badclasses:= [];;|
  !gapprompt@gap>| !gapinput@names:= [|
  !gapprompt@>| !gapinput@   [ "L2(13)", "L2(13).2" ],|
  !gapprompt@>| !gapinput@   [ "Sz(8)", "Sz(8).3" ],|
  !gapprompt@>| !gapinput@   [ "U3(4)", "U3(4).2", "U3(4).4" ],|
  !gapprompt@>| !gapinput@   [ "U3(8)", "U3(8).2", "U3(8).3_1", "U3(8).3_2", "U3(8).3_3",|
  !gapprompt@>| !gapinput@              "U3(8).6" ],|
  !gapprompt@>| !gapinput@   ];;|
  !gapprompt@gap>| !gapinput@for list in names do|
  !gapprompt@>| !gapinput@     t:= CharacterTable( list[1] );|
  !gapprompt@>| !gapinput@     tfusm:= PossibleClassFusions( t, m );|
  !gapprompt@>| !gapinput@     UniteSet( badclasses, Flat( tfusm ) );|
  !gapprompt@>| !gapinput@     for nam in list{ [ 2 .. Length( list ) ] } do|
  !gapprompt@>| !gapinput@       ext:= CharacterTable( nam );|
  !gapprompt@>| !gapinput@       for map1 in PossibleClassFusions( t, ext ) do|
  !gapprompt@>| !gapinput@         inv:= InverseMap( map1 );|
  !gapprompt@>| !gapinput@         for map2 in tfusm do|
  !gapprompt@>| !gapinput@           init:= CompositionMaps( map2, inv );|
  !gapprompt@>| !gapinput@           UniteSet( badclasses, Flat( PossibleClassFusions( ext, m,|
  !gapprompt@>| !gapinput@               rec( fusionmap:= init ) ) ) );|
  !gapprompt@>| !gapinput@         od;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@badclasses;|
  [ 1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 
    24, 25, 27, 28, 30, 32, 33, 35, 36, 38, 39, 40, 42, 43, 44, 45, 46, 
    48, 49, 50, 51, 52, 53, 54, 55, 56, 60, 61, 62, 63, 70, 72, 73, 78, 
    82, 85, 86 ]
  !gapprompt@gap>| !gapinput@Length( badclasses );|
  55
  !gapprompt@gap>| !gapinput@classlengths:= SizesConjugacyClasses( m );;|
  !gapprompt@gap>| !gapinput@bad:= Sum( classlengths{ badclasses } ) / Size( m );;|
  !gapprompt@gap>| !gapinput@Int( 10000 * bad ); |
  97
\end{Verbatim}
  

 \emph{In the original version of this file, also hypothetical maximal subgroups with
socle} L$_2(27)$ \emph{had been considered. As a consequence, the list} \texttt{badclasses} \emph{computed above had length $59$ in the original version; the list contained also the classes at the positions $90, 94, 95$, and $96$, that is, the classes} \texttt{26B}, \texttt{28B}, \texttt{28C}, \texttt{28D}. \emph{The proportion} \texttt{bad} \emph{of elements in the classes of $M$ described by} \texttt{badclasses} \emph{was about $2.05$ percent of $|M|$, compared to the about $0.98$ percent in the current version.}   

 Now we estimate the lower bounds $\delta(s, g^G)$ introduced in Section{\nobreakspace}\ref{characters}. Let ${{\cal B}}$ denote the union of the classes described by \texttt{badclasses}, and let ${{\mathbb M}}$ denote a set of representatives of the $44$ known classes of maximal subgroups of $M$. 

 If $s \notin {{\cal B}}$ then 
\[ \delta(s, g^G) = |s^G| - |s^G| \cdot \sum_{{S \in {{\mathbb M}}}} 1_S^M(s) \cdot 1_S^M(g) / 1_S^M(1) , \]
 hence $\delta(s)$ can be computed from the corresponding primitive permutation characters, and a
lower bound for $\delta(s)$ can be computed from the upper bounds for the characters $1_S^G$ which are given by the list \texttt{primdata}. 

 If $s \in {{\cal B}}$ then the above equation for $\delta(s, g^G)$ holds at least for $g \notin {{\cal B}}$, so $\sum_{{g \in R \setminus {{\cal B}}}} \delta(s, g^G)$ is a lower bound for $\delta(s)$. So \texttt{primdata} yields a lower bound for $\delta(s)$ also for $s \in {{\cal B}}$, by ignoring the pairs $(s, g)$ where both $s$ and $g$ lie in ${{\cal B}}$. 

 This means that modifying the output of \texttt{LowerBoundsVertexDegrees} as follows really yields lower bounds for the vertex degrees. (Note that the
row and column positions in the matrix returned by \texttt{LowerBoundsVertexDegrees} are shifted by one, compared to \texttt{badclasses}.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= List( primdata, x -> x[2] );;|
  !gapprompt@gap>| !gapinput@badpos:= Difference( badclasses, [ 1 ] ) - 1;;|
  !gapprompt@gap>| !gapinput@bounds:= LowerBoundsVertexDegrees( classlengths, prim );;|
  !gapprompt@gap>| !gapinput@for i in badpos do|
  !gapprompt@>| !gapinput@     for j in badpos do|
  !gapprompt@>| !gapinput@       bounds[i][j]:= 0;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 Now we sum up the bounds for the individual classes. It turns out that the
minimal vertex degree is more than $99$ percent of $|M|$. This proves that the generating graph of the Monster satisfies P{\a'o}sa's
criterion. 

 (And the minimal vertex degree of elements outside ${{\cal B}}$ is more than $99.99998$ percent of $|M|$.) 

 \emph{In the original version of this file, we got only $97.95$ percent of $|M|$ as the lower bound for the minimal vertex degree. The bound for elements
outside ${{\cal B}}$ was the same in the original version. The fact that the maximal subgroups of
type} L$_2(41)$ \emph{had been ignored in the original version did not affect the lower bound for
the minimal vertex degree.} 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@degs:= List( bounds, Sum );;|
  !gapprompt@gap>| !gapinput@Int( 10000 * Minimum( degs ) / Size( m ) );|
  9902
  !gapprompt@gap>| !gapinput@goodpos:= Difference( [ 1 .. NrConjugacyClasses( m ) - 1 ],|
  !gapprompt@>| !gapinput@                         badpos );;|
  !gapprompt@gap>| !gapinput@Int( 100000000 * Minimum( degs{ goodpos } ) / Size( m ) );|
  99999987
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Nonsimple Automorphism Groups of Sporadic Simple Groups}}\label{sporaut}
\logpage{[ 4, 4, 3 ]}
\hyperdef{L}{X7DC6DFCC83502CC3}{}
{
  Next we consider the nonsimple automorphism groups of the sporadic simple
groups. Nontrivial outer automorphisms exist exactly in $12$ cases, and then the simple group has index $2$ in its automorphism group. The character tables of the groups and their
maximal subgroups are available in \textsf{GAP}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spornames:= AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                   IsDuplicateTable, false );;|
  !gapprompt@gap>| !gapinput@sporautnames:= AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                      IsDuplicateTable, false,|
  !gapprompt@>| !gapinput@                      OfThose, AutomorphismGroup );;|
  !gapprompt@gap>| !gapinput@sporautnames:= Difference( sporautnames, spornames );|
  [ "F3+.2", "Fi22.2", "HN.2", "HS.2", "He.2", "J2.2", "J3.2", "M12.2", 
    "M22.2", "McL.2", "ON.2", "Suz.2" ]
  !gapprompt@gap>| !gapinput@for tbl in List( sporautnames, CharacterTable ) do|
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromCharacterTable( tbl );|
  !gapprompt@>| !gapinput@     Print( Identifier( tbl ), ": ", info, "\n" );|
  !gapprompt@>| !gapinput@   od;|
  F3+.2: Chvatal for 0th closure, Posa for 1st closure
  Fi22.2: Chvatal for 0th closure, Posa for 1st closure
  HN.2: Chvatal for 0th closure, Posa for 1st closure
  HS.2: Chvatal for 1st closure, Posa for 2nd closure
  He.2: Chvatal for 0th closure, Posa for 1st closure
  J2.2: Chvatal for 0th closure, Posa for 1st closure
  J3.2: Chvatal for 0th closure, Posa for 1st closure
  M12.2: Chvatal for 0th closure, Posa for 1st closure
  M22.2: Posa for 1st closure
  McL.2: Chvatal for 0th closure, Posa for 1st closure
  ON.2: Chvatal for 0th closure, Posa for 1st closure
  Suz.2: Chvatal for 0th closure, Posa for 1st closure
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Alternating and Symmetric Groups $A_n$, $S_n$, for $5 \leq n \leq 13$}}\label{symmalt}
\logpage{[ 4, 4, 4 ]}
\hyperdef{L}{X8130C9CB7A33140F}{}
{
  For alternating and symmetric groups $A_n$ and $S_n$, respectively, with $5 \leq n \leq 13$, the table of marks or the character tables of the group and all its maximal
subgroups are available in \textsf{GAP}. So we can compute the character-theoretic bounds for vertex degrees. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for tbl in List( [ 5 .. 13 ], i -> CharacterTable(|
  !gapprompt@>| !gapinput@                Concatenation( "A", String( i ) ) ) )  do|
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromCharacterTable( tbl );|
  !gapprompt@>| !gapinput@     if info <> "Posa for 0th closure" then|
  !gapprompt@>| !gapinput@       Print( Identifier( tbl ), ": ", info, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 No messages are printed, so the generating graphs of the alternating groups in
question satisfy P{\a'o}sa's criterion. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for tbl in List( [ 5 .. 13 ], i -> CharacterTable(|
  !gapprompt@>| !gapinput@                Concatenation( "S", String( i ) ) ) )  do|
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromCharacterTable( tbl );|
  !gapprompt@>| !gapinput@     Print( Identifier( tbl ), ": ", info, "\n" );|
  !gapprompt@>| !gapinput@   od;|
  A5.2: no decision
  A6.2_1: Chvatal for 4th closure, Posa for 5th closure
  A7.2: Posa for 1st closure
  A8.2: Chvatal for 2nd closure, Posa for 3rd closure
  A9.2: Chvatal for 2nd closure, Posa for 3rd closure
  A10.2: Chvatal for 2nd closure, Posa for 3rd closure
  A11.2: Posa for 1st closure
  A12.2: Chvatal for 2nd closure, Posa for 3rd closure
  A13.2: Posa for 1st closure
\end{Verbatim}
 

 We see that sufficiently large closures of the generating graphs of the
symmetric groups in question satisfy P{\a'o}sa's criterion, except that the
bounds for the symmetric group $S_5$ are not sufficient for the proof. In Section{\nobreakspace}\ref{smallalmostsimple}, it is shown that the 2nd closure of the generating graph of $S_5$ satisfies P{\a'o}sa's criterion. 

 (We could find slightly better bounds derived only from character tables which
suffice to prove that the generating graph for $S_5$ contains a Hamiltonian cycle, but this seems to be not worth while.) }

 }

  
\section{\textcolor{Chapter }{Computations With Groups}}\label{grouptheor}
\logpage{[ 4, 5, 0 ]}
\hyperdef{L}{X83DACCF07EF62FAE}{}
{
  We prove in Section{\nobreakspace}\ref{smallsimp} that the generating graphs of the nonabelian simple groups of order up to $10^6$ satisfy P{\a'o}sa's criterion, and that the same holds for those nonabelian
simple groups of order between $10^6$ and $10^7$ that are not isomorphic with some ${{\rm PSL}}(2,q)$. (In Section{\nobreakspace}\ref{psl2q}, it is shown that the generating graph of ${{\rm PSL}}(2,q)$ satifies P{\a'o}sa's criterion for any prime power $q$.) Nonsimple nonsolvable groups of order up to $10^6$ are treated in Section{\nobreakspace}\ref{smallalmostsimple}. 

 (We could increase the bounds $10^6$ and $10^7$ with more computations, using the same methods.) 

 For our convenience, we provide a small function that takes as its argument
only the group in question, and returns a string, the return value of \texttt{HamiltonianCycleInfo} for the vertex degrees computed from the group. (In order to speed up the
computations, the function computes the proper normal subgroups that contain
the derived subgroup of the given group, and enters the list of these groups
as the third argument of \texttt{VertexDegreesGeneratingGraph}.) 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@HamiltonianCycleInfoFromGroup:= function( G )|
  !gapprompt@>| !gapinput@    local ccl, nsg, der, degrees, classlengths;|
  !gapprompt@>| !gapinput@    ccl:= ConjugacyClasses( G );|
  !gapprompt@>| !gapinput@    if IsPerfect( G ) then|
  !gapprompt@>| !gapinput@      nsg:= [];|
  !gapprompt@>| !gapinput@    else|
  !gapprompt@>| !gapinput@      der:= DerivedSubgroup( G );|
  !gapprompt@>| !gapinput@      nsg:= Concatenation( [ der ],|
  !gapprompt@>| !gapinput@                IntermediateSubgroups( G, der ).subgroups );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    degrees:= VertexDegreesGeneratingGraph( G, ccl, nsg );|
  !gapprompt@>| !gapinput@    classlengths:= List( ccl, Size );|
  !gapprompt@>| !gapinput@    return HamiltonianCycleInfo( classlengths, degrees );        |
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
  
\subsection{\textcolor{Chapter }{Nonabelian Simple Groups of Order up to $10^7$}}\label{smallsimp}
\logpage{[ 4, 5, 1 ]}
\hyperdef{L}{X7B9ADC91802EE09F}{}
{
  Representatives of the $56$ isomorphism types of nonabelian simple groups of order up to $10^6$ can be accessed in \textsf{GAP} with the function \texttt{AllSmallNonabelianSimpleGroups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@grps:= AllSmallNonabelianSimpleGroups( [ 1 .. 10^6 ] );;         |
  !gapprompt@gap>| !gapinput@Length( grps );|
  56
  !gapprompt@gap>| !gapinput@List( grps, StructureDescription );|
  [ "A5", "PSL(3,2)", "A6", "PSL(2,8)", "PSL(2,11)", "PSL(2,13)", 
    "PSL(2,17)", "A7", "PSL(2,19)", "PSL(2,16)", "PSL(3,3)", 
    "PSU(3,3)", "PSL(2,23)", "PSL(2,25)", "M11", "PSL(2,27)", 
    "PSL(2,29)", "PSL(2,31)", "A8", "PSL(3,4)", "PSL(2,37)", "O(5,3)", 
    "Sz(8)", "PSL(2,32)", "PSL(2,41)", "PSL(2,43)", "PSL(2,47)", 
    "PSL(2,49)", "PSU(3,4)", "PSL(2,53)", "M12", "PSL(2,59)", 
    "PSL(2,61)", "PSU(3,5)", "PSL(2,67)", "J1", "PSL(2,71)", "A9", 
    "PSL(2,73)", "PSL(2,79)", "PSL(2,64)", "PSL(2,81)", "PSL(2,83)", 
    "PSL(2,89)", "PSL(3,5)", "M22", "PSL(2,97)", "PSL(2,101)", 
    "PSL(2,103)", "HJ", "PSL(2,107)", "PSL(2,109)", "PSL(2,113)", 
    "PSL(2,121)", "PSL(2,125)", "O(5,4)" ]
  !gapprompt@gap>| !gapinput@for g in grps do                                             |
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromGroup( g );|
  !gapprompt@>| !gapinput@     if info <> "Posa for 0th closure" then|
  !gapprompt@>| !gapinput@       Print( StructureDescription( g ), ": ", info, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
  

 Nothing is printed during these computations, so the generating graphs of all
processed groups satisfy P{\a'o}sa's criterion. 

 (On my notebook, the above computations needed about $6300$ seconds of CPU time.) 

 For simple groups of order larger than $10^6$, there is not such an easy way (yet) to access representatives for each
isomorphism type. Therefore, first we compute the orders of nonabelian simple
groups between $10^6$ and $10^7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orders:= Filtered( [ 10^6+4, 10^6+8 .. 10^7 ],|
  !gapprompt@>| !gapinput@     n -> IsomorphismTypeInfoFiniteSimpleGroup( n ) <> fail );|
  [ 1024128, 1123980, 1285608, 1342740, 1451520, 1653900, 1721400, 
    1814400, 1876896, 1934868, 2097024, 2165292, 2328648, 2413320, 
    2588772, 2867580, 2964780, 3265920, 3483840, 3594432, 3822588, 
    3940200, 4245696, 4680000, 4696860, 5515776, 5544672, 5663616, 
    5848428, 6004380, 6065280, 6324552, 6825840, 6998640, 7174332, 
    7906500, 8487168, 9095592, 9732420, 9951120, 9999360 ]
  !gapprompt@gap>| !gapinput@Length( orders );|
  41
  !gapprompt@gap>| !gapinput@info:= List( orders, IsomorphismTypeInfoFiniteSimpleGroup );;|
  !gapprompt@gap>| !gapinput@Number( info, x -> IsBound( x.series ) and x.series = "L"|
  !gapprompt@>| !gapinput@                      and x.parameter[1] = 2 );|
  31
\end{Verbatim}
 

 We see that there are $31$ groups of the type ${{\rm PSL}}(2,q)$ and $10$ other nonabelian simple groups with order in the range from $10^6$ to $10^7$. The former groups can be ignored because the generating graphs of any group ${{\rm PSL}}(2,q)$ satisfies P{\a'o}sa's criterion, see Section{\nobreakspace}\ref{psl2q}. For the latter groups, we can apply the character-theoretic method to prove
that the generating graph satisfies P{\a'o}sa's criterion. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@info:= Filtered( info, x -> not IsBound( x.series ) or|
  !gapprompt@>| !gapinput@            x.series <> "L" or x.parameter[1] <> 2 );|
  [ rec( name := "B(3,2) = O(7,2) ~ C(3,2) = S(6,2)", 
        parameter := [ 3, 2 ], series := "B", shortname := "S6(2)" ), 
    rec( name := "A(10)", parameter := 10, series := "A", 
        shortname := "A10" ), 
    rec( name := "A(2,7) = L(3,7) ", parameter := [ 3, 7 ], 
        series := "L", shortname := "L3(7)" ), 
    rec( name := "2A(3,3) = U(4,3) ~ 2D(3,3) = O-(6,3)", 
        parameter := [ 3, 3 ], series := "2A", shortname := "U4(3)" ), 
    rec( name := "G(2,3)", parameter := 3, series := "G", 
        shortname := "G2(3)" ), 
    rec( name := "B(2,5) = O(5,5) ~ C(2,5) = S(4,5)", 
        parameter := [ 2, 5 ], series := "B", shortname := "S4(5)" ), 
    rec( name := "2A(2,8) = U(3,8)", parameter := [ 2, 8 ], 
        series := "2A", shortname := "U3(8)" ), 
    rec( name := "2A(2,7) = U(3,7)", parameter := [ 2, 7 ], 
        series := "2A", shortname := "U3(7)" ), 
    rec( name := "A(3,3) = L(4,3) ~ D(3,3) = O+(6,3) ", 
        parameter := [ 4, 3 ], series := "L", shortname := "L4(3)" ), 
    rec( name := "A(4,2) = L(5,2) ", parameter := [ 5, 2 ], 
        series := "L", shortname := "L5(2)" ) ]
  !gapprompt@gap>| !gapinput@names:= [ "S6(2)", "A10", "L3(7)", "U4(3)", "G2(3)", "S4(5)",|
  !gapprompt@>| !gapinput@             "U3(8)", "U3(7)", "L4(3)", "L5(2)" ];;|
  !gapprompt@gap>| !gapinput@for tbl in List( names, CharacterTable ) do|
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromCharacterTable( tbl );|
  !gapprompt@>| !gapinput@     if info <> "Posa for 0th closure" then|
  !gapprompt@>| !gapinput@       Print( Identifier( tbl ), ": ", info, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Nonsimple Groups with Nonsolvable Socle of Order at most $10^6$}}\label{smallalmostsimple}
\logpage{[ 4, 5, 2 ]}
\hyperdef{L}{X8033892B7FD6E62B}{}
{
  Let $G$ be a nonsolvable group such that $G/N$ is cyclic for all nontrivial normal subgroups $N$ of $G$. Then the socle Soc$(G)$ of $G$ is the unique minimal normal subgroup. Moreover, Soc$(G)$ is nonsolvable and thus a direct product of isomorphic nonabelian simple
groups, and $G$ is isomorphic to a subgroup of Aut$($Soc$(G))$. 

 In order to deal with all such groups $G$ for which additionally $|$Soc$(G)| \leq 10^6$ holds, it is sufficient to run over the simple groups $S$ of order up to $10^6$ and to consider those subgroups $G$ of Aut$(S^n)$, with $|S|^n \leq 10^6$, for which Inn$(G)$ is the unique minimal normal subgroup and $G / $Inn$(G)$ is cyclic. 

 We show that for each such group, a sufficient closure of the generating graph
satisfies P{\a'o}sa's criterion. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@grps:= AllSmallNonabelianSimpleGroups( [ 1 .. 10^6 ] );;         |
  !gapprompt@gap>| !gapinput@epi:= "dummy";;   #  Avoid a message about an unbound variable ...|
  !gapprompt@gap>| !gapinput@for simple in grps do|
  !gapprompt@>| !gapinput@     for n in [ 1 .. LogInt( 10^6, Size( simple ) ) ] do|
  !gapprompt@>| !gapinput@       # Compute the n-fold direct product S^n.|
  !gapprompt@>| !gapinput@       soc:= CallFuncList( DirectProduct,|
  !gapprompt@>| !gapinput@                           ListWithIdenticalEntries( n, simple ) );|
  !gapprompt@>| !gapinput@       # Compute Aut(S^n) as a permutation group.|
  !gapprompt@>| !gapinput@       aut:= Image( IsomorphismPermGroup( AutomorphismGroup( soc ) ) );|
  !gapprompt@>| !gapinput@       aut:= Image( SmallerDegreePermutationRepresentation( aut ) );|
  !gapprompt@>| !gapinput@       # Compute class representatives of subgroups of|
  !gapprompt@>| !gapinput@       # Aut(S^n)/Inn(S^n).|
  !gapprompt@>| !gapinput@       socle:= Socle( aut );|
  !gapprompt@>| !gapinput@       epi:= NaturalHomomorphismByNormalSubgroup( aut, socle );|
  !gapprompt@>| !gapinput@       # Compute the candidates for G.  (By the above computations,|
  !gapprompt@>| !gapinput@       # we need not consider simple groups.)|
  !gapprompt@>| !gapinput@       reps:= List( ConjugacyClassesSubgroups( Image( epi ) ),|
  !gapprompt@>| !gapinput@                    Representative );|
  !gapprompt@>| !gapinput@       reps:= Filtered( reps, x -> IsCyclic( x ) and Size( x ) <> 1 );|
  !gapprompt@>| !gapinput@       greps:= Filtered( List( reps, x -> PreImages( epi, x ) ),|
  !gapprompt@>| !gapinput@                     x -> Length( MinimalNormalSubgroups( x ) ) = 1 );|
  !gapprompt@>| !gapinput@       for g in greps do|
  !gapprompt@>| !gapinput@         # We have to deal with a *transitive* permutation group.|
  !gapprompt@>| !gapinput@         # (Each group in question acts faithfully on an orbit.)|
  !gapprompt@>| !gapinput@         if not IsTransitive( g ) then|
  !gapprompt@>| !gapinput@           g:= First( List( Orbits( g, MovedPoints( g ) ),|
  !gapprompt@>| !gapinput@                            x -> Action( g, x ) ),|
  !gapprompt@>| !gapinput@                      x -> Size( x ) = Size( g ) );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@         # Check this group G.|
  !gapprompt@>| !gapinput@         info:= HamiltonianCycleInfoFromGroup( g );|
  !gapprompt@>| !gapinput@         Print( Name( simple ), "^", n, ".", Size( g ) / Size( soc ),|
  !gapprompt@>| !gapinput@                ": ", info, "\n" );|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  A5^1.2: Posa for 2nd closure
  A5^2.2: Posa for 0th closure
  A5^2.4: Posa for 0th closure
  A5^3.3: Posa for 0th closure
  A5^3.6: Chvatal for 1st closure, Posa for 2nd closure
  PSL(2,7)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,7)^2.2: Posa for 0th closure
  PSL(2,7)^2.4: Posa for 0th closure
  A6^1.2: Chvatal for 0th closure, Posa for 1st closure
  A6^1.2: Chvatal for 4th closure, Posa for 5th closure
  A6^1.2: Chvatal for 0th closure, Posa for 1st closure
  A6^2.2: Posa for 0th closure
  A6^2.4: Posa for 0th closure
  A6^2.4: Posa for 0th closure
  A6^2.4: Posa for 0th closure
  PSL(2,8)^1.3: Posa for 0th closure
  PSL(2,8)^2.2: Posa for 0th closure
  PSL(2,8)^2.6: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,11)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,11)^2.2: Posa for 0th closure
  PSL(2,11)^2.4: Posa for 0th closure
  PSL(2,13)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,17)^1.2: Chvatal for 0th closure, Posa for 1st closure
  A7^1.2: Posa for 1st closure
  PSL(2,19)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,16)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,16)^1.4: Chvatal for 0th closure, Posa for 1st closure
  PSL(3,3)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSU(3,3)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,23)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,25)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,25)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,25)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,27)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,27)^1.3: Posa for 0th closure
  PSL(2,27)^1.6: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,29)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,31)^1.2: Chvatal for 0th closure, Posa for 1st closure
  A8^1.2: Chvatal for 2nd closure, Posa for 3rd closure
  PSL(3,4)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(3,4)^1.2: Chvatal for 1st closure, Posa for 2nd closure
  PSL(3,4)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(3,4)^1.3: Posa for 0th closure
  PSL(3,4)^1.6: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,37)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSp(4,3)^1.2: Chvatal for 1st closure, Posa for 2nd closure
  Sz(8)^1.3: Posa for 0th closure
  PSL(2,32)^1.5: Posa for 0th closure
  PSL(2,41)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,43)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,47)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,49)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,49)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,49)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSU(3,4)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSU(3,4)^1.4: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,53)^1.2: Chvatal for 0th closure, Posa for 1st closure
  M12^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,59)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,61)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSU(3,5)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSU(3,5)^1.3: Posa for 0th closure
  PSL(2,67)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,71)^1.2: Chvatal for 0th closure, Posa for 1st closure
  A9^1.2: Chvatal for 2nd closure, Posa for 3rd closure
  PSL(2,73)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,79)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,64)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,64)^1.3: Posa for 0th closure
  PSL(2,64)^1.6: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,81)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,81)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,81)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,81)^1.4: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,81)^1.4: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,83)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,89)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(3,5)^1.2: Chvatal for 0th closure, Posa for 1st closure
  M22^1.2: Posa for 1st closure
  PSL(2,97)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,101)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,103)^1.2: Chvatal for 0th closure, Posa for 1st closure
  J_2^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,107)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,109)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,113)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,121)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,121)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,121)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,125)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSL(2,125)^1.3: Posa for 0th closure
  PSL(2,125)^1.6: Chvatal for 0th closure, Posa for 1st closure
  PSp(4,4)^1.2: Chvatal for 0th closure, Posa for 1st closure
  PSp(4,4)^1.4: Posa for 0th closure
\end{Verbatim}
  }

 }

  
\section{\textcolor{Chapter }{The Groups ${{\rm PSL}}(2,q)$}}\label{psl2q}
\logpage{[ 4, 6, 0 ]}
\hyperdef{L}{X84E62545802FAB30}{}
{
  We show that the generating graph of any group ${{\rm PSL}}(2,q)$, for $q \geq 2$, satisfies P{\a'o}sa's criterion. Throughout this section, let $q = p^f$ for a prime integer $p$, and $G = {{\rm PSL}}(2,q)$. Set $k = \gcd(q-1, 2)$. 

 \emph{Lemma 1:} (see{\nobreakspace}\cite[II., {\S} 8]{Hup67}) The subgroups of $G$ are 
\begin{description}
\item[{(1)}]  cyclic groups of order dividing $(q \pm 1)/k$, and their normalizers, which are dihedral groups of order $2 (q \pm 1)/k$, 
\item[{(2)}]  subgroups of Sylow $p$ normalizers, which are semidirect products of elementary abelian groups of
order $q$ with cyclic groups of order $(q-1)/k$, 
\item[{(3)}]  subgroups isomorphic with ${{\rm PSL}}(2, p^m)$ if $m$ divides $f$, and isomorphic with ${{\rm PGL}}(2, p^m)$ if $2 m$ divides $f$, 
\item[{(4)}]  subgroups isomorphic with $A_4$, $S_4$, or $A_5$, for appropriate values of $q$. 
\end{description}
 

 $G$ contains exactly one conjugacy class of cyclic subgroups of each of the orders $(q-1)/k$ and $(q+1)/k$, and each nonidentity element of $G$ is contained in exactly one of these subgroups or in exactly one Sylow $p$ subgroup of $G$.  

 We estimate the number of elements that are contained in subgroups of
type{\nobreakspace}(3). 

 \emph{Lemma 2:} Let $n_{sf}(q)$ denote the number of those nonidentity elements in $G$ that are contained in proper subgroups of type{\nobreakspace}(3). Then $n_{sf}(q) \leq q^2 (2 p (\sqrt{q}-1) / (p-1) - 1)$. If $f$ is a prime then $n_{sf}(q) \leq (2p-1) q^2$ holds, and if $p = q$ then we have of course $n_{sf}(q) = 0$.  

 \emph{Proof:} The group ${{\rm PGL}}(2, p^m)$ is equal to ${{\rm PSL}}(2, p^m)$ for $p = 2$, and contains ${{\rm PSL}}(2, p^m)$ as a subgroup of index two if $p \ne 2$. So the largest element order in ${{\rm PGL}}(2, p^m)$ is at most $p^m+1$. Let $C$ be a cyclic subgroup of order $(q + \epsilon)/k$ in $G$, for $\epsilon \in \{ \pm 1 \}$. The intersection of $C$ with any subgroup of $G$ isomorphic with ${{\rm PGL}}(2, p^m)$ or ${{\rm PSL}}(2, p^m)$ is contained in the union of the unique subgroups of the orders $\gcd(|C|, p^m + 1)$ and $\gcd(|C|, p^m - 1)$ in $C$. So $C$ contains at most $2 p^m - 2$ nonidentity elements that can lie inside subgroups isomorphic with ${{\rm PGL}}(2, p^m)$ or ${{\rm PSL}}(2, p^m)$. Hence $C$ contains at most $\sum_m (2 p^m - 2)$ nonidentity elements in proper subgroups of type{\nobreakspace}(3), where $m$ runs over the proper divisors of $f$. This sum is bounded from above by $\sum_{{m=1}}^{{f/2}} (2 p^m - 2) \leq 2 p (\sqrt{{q}}-1) / (p-1) - 2$. 

 The numbers of cyclic subgroups of the orders $(q + \epsilon)/k$ in $G$ are $q (q - \epsilon) / 2$, so $G$ contains altogether $q^2$ such cyclic subgroups. They contain at most $q^2 (2 p (\sqrt{{q}}-1) / (p-1) - 2)$ elements inside proper subgroups of the type (3). 

 All elements of order $p$ in $G$ are contained in subgroups of type{\nobreakspace}(3), and there are exactly $q^2 - 1$ such elements. This yields the claimed bound for $n_{sf}(q)$. The better bound for the case that $f$ is a prime follows from $\sum_m (2 p^m - 2) = 2 p - 2$ if $m$ ranges over the proper divisors of $f$. {{\hfill\large$\Box$}}  

 Using these bounds, we see that the vertex degree of any element in $G$ that does not lie in subgroups of type{\nobreakspace}(4) is larger than $|G|/2$. (In fact we could use the calculations below to derive a better asymptotic
bound, but this is not an issue here.) 

 \emph{Lemma 3:} Let $s \in G$ be an element of order larger than $5$. Then $|\{ g \in G; \langle g, s \rangle = G \}| > |G|/2$.  

 \emph{Proof:} First suppose that the order of $s$ divides $(q+1)/k$ or $(q-1)/k$. If $g \in G$ such that $U = \langle s, g \rangle$ is a proper subgroup of $G$ then $U \leq N_G(\langle s \rangle)$ or $U$ lies in a Sylow $p$ normalizer of $G$ or $U$ lies in a subgroup of type{\nobreakspace}(3). Since $s$ is contained in at most two Sylow $p$ normalizers (each Sylow $p$ normalizer contains $q$ cyclic subgroups of order $(q-1)/k$, and $G$ contains $q+1$ Sylow normalizers and $q (q+1)/2$ cyclic subgroups of order $(q-1)/k$), the number of $g \in G$ with the property that $\langle s, g \rangle {{\not=}} G$ is at most $N = 2(q+1)/k + 2 q(q-1)/k + n_{sf}(q) = 2(q^2+1)/k + n_{sf}(q)$; for $s$ of order equal to $(q+1)/k$ or $(q-1)/k$, we can set $N = 2(q^2+1)/k$. 

 Any element $s$ of order $p$ (larger than $5$), lies only in a unique Sylow $p$ normalizer and in subgroups of type{\nobreakspace}(3), so the bound $N$ holds also in this case. 

 For $f = 1$, $N$ is smaller than $|G|/2 = q (q^2-1) / (2 k)$ if $q \geq 5$. (The statement of the lemma is trivially true for $q \leq 5$.) 

 For primes $f$, $N$ is smaller than $|G|/2$ if $q^2 (q-8p) > q+4$ holds, which is true for $p^f > 8p$. Only the following values of $p^f$ with prime $f$ do not satisfy this condition: $2^2$ and $3^2$ (where no element of order larger than $5$ exists), $2^3$ (where only elements of order equal to $q \pm 1$ must be considered), $5^2$ and $7^2$ (where $n_{sf}(q) < (p-1) q (q+1)$ because in these cases the cyclic subgroups of order $(q+1)/k$ cannot contain nonidentity elements in subgroups of type{\nobreakspace}(3)). 

 Finally, if $f$ is not a prime then $N$ is smaller than $|G|/2$ if $q^2 (q - 8p (\sqrt{{q}}-1) / (p-1)) > q+4$ holds, which is true for $q \geq 256$. The only values of $p^f$ with non-prime $f$ that do not satisfy this condition are $2^4$, $2^6$, and $3^4$. In all three cases, we have in fact $N < |G|/2$, where we have to use the better bound $n_{sf}(q) < 16 q^2$ in the third case. {{\hfill\large$\Box$}}  

 In order to show that the generating graph of $G$ satisfies P{\a'o}sa's criterion, it suffices to show that the vertex degrees
of involutions is larger than the number of involutions, and that the vertex
degrees of elements of orders $2$, $3$, $4$, and $5$ are larger than the number of elements whose order is at most $5$. 

 \emph{Lemma 4:} Let $n(q, m)$ denote the number of elements of order $m$ in $G$, and let $\varphi(m)$ denote the number of prime residues modulo $m$. 
\begin{itemize}
\item  We have $n(q, 2) = q^2 - 1$ if $q$ is even and $n(q, 2) \leq q (q+1)/2$ if $q$ is odd. 
\item  For $m \in \{ 3, 4, 5 \}$, we have $n(q, m) \leq \varphi(m) q (q+1)/2$. 
\item  We have $n(q, (q+1)/k) = \varphi((q+1)/k) q (q-1)/2$. 
\end{itemize}
   

 \emph{Lemma 5:} If $q > 11$ then each involution in $G$ has vertex degree larger than $n(q, 2)$. 

 If $\varphi((q+1)/k) \geq 12$ then each element of order $3$, $4$, or $5$ has vertex degree larger than $\sum_{{m=2}}^5 n(q, m)$.  

 \emph{Proof:} Let $s \in G$ of order at most $5$. For each element $g \in G$ of order $(q+1)/k$, $U = \langle g, s \rangle$ is either $G$ or contained in the dihedral group of order $2(q+1)/k$ that normalizes $\langle g \rangle$. 

 If $s$ is an involution then the number of such dihedral groups that contain $s$ is at most $(q+3)/2$,  and at least $n(q, (q+1)/k) - \varphi((q+1)/k) (q+3)/2 = \varphi((q+1)/k) (q^2-2q-3)/2$ elements of order $(q+1)/k$ contribute to the vertex degree of $s$. This number is larger than $q^2 - 1 \geq n(q, 2)$ if $q > 11$ (and hence $\varphi((q+1)/k) \geq 3$) holds. 

 If $s$ is an element of order $3$, $4$, or $5$ then $U {{\not=}} G$ means that $s \in \langle g \rangle$, so at least $n(q, (q+1)/k) - 4$ elements of order $(q+1)/k$ contribute to the vertex degree of $s$. This number is larger than $5 q (q+1) > \sum_{{m=2}}^5 n(q, m)$ if $\varphi((q+1)/k) \geq 12$. {{\hfill\large$\Box$}}  

 It remains to deal with the values $q$ where $\varphi((q+1)/k) < 12$, that is, $(q+1)/k \leq 30$. We compute that the statement of Lemma{\nobreakspace}5 is true also for
prime powers $q$ with $11 < q \leq 59$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@TestL2q:= function( t )|
  !gapprompt@>| !gapinput@   local name, orders, nccl, cl, prim, bds, n, ord;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   name:= Identifier( t );|
  !gapprompt@>| !gapinput@   orders:= OrdersClassRepresentatives( t );|
  !gapprompt@>| !gapinput@   nccl:= Length( orders );|
  !gapprompt@>| !gapinput@   cl:= SizesConjugacyClasses( t );|
  !gapprompt@>| !gapinput@   prim:= PrimitivePermutationCharacters( t );|
  !gapprompt@>| !gapinput@   bds:= List( LowerBoundsVertexDegrees( cl, prim ), Sum );|
  !gapprompt@>| !gapinput@   n:= List( [ 1 .. 5 ], i -> Sum( cl{ Filtered( [ 1 .. nccl ],|
  !gapprompt@>| !gapinput@                                       x -> orders[x] = i ) } ) );|
  !gapprompt@>| !gapinput@   if ForAny( Filtered( [ 1 .. nccl ], i -> orders[i] > 5 ),|
  !gapprompt@>| !gapinput@              i -> bds[i-1] <= Size( t ) / 2 ) then|
  !gapprompt@>| !gapinput@     Error( "problem with large orders for ", name );|
  !gapprompt@>| !gapinput@   elif ForAny( Filtered( [ 1 .. nccl ], i -> orders[i] = 2 ),|
  !gapprompt@>| !gapinput@                i -> bds[i-1] <= n[2] ) then|
  !gapprompt@>| !gapinput@     Error( "problem with order 2 for ", name, "\n" );|
  !gapprompt@>| !gapinput@   elif ForAny( Filtered( [ 1 .. nccl ],|
  !gapprompt@>| !gapinput@                          i -> orders[i] in [ 3 .. 5 ] ),|
  !gapprompt@>| !gapinput@                i -> bds[i-1] <= Sum( n{ [ 2 .. 5 ] } ) ) then|
  !gapprompt@>| !gapinput@     Error( "problem with order in [ 3 .. 5 ] for ", name );|
  !gapprompt@>| !gapinput@   fi;|
  !gapprompt@>| !gapinput@end;;|
  !gapprompt@gap>| !gapinput@for q in Filtered( [ 13 .. 59 ], IsPrimePowerInt ) do|
  !gapprompt@>| !gapinput@     TestL2q( CharacterTable(|
  !gapprompt@>| !gapinput@                  Concatenation( "L2(", String( q ), ")" ) ) );|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 For $2 \leq q \leq 11$, the statement of Lemma{\nobreakspace}5 is not true but P{\a'o}sa's criterion
is satisfied for the generating graphs of the groups ${{\rm PSL}}(2,q)$ with $2 \leq q \leq 11$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for q in Filtered( [ 2 .. 11 ], IsPrimePowerInt ) do|
  !gapprompt@>| !gapinput@     info:= HamiltonianCycleInfoFromGroup( PSL( 2, q ) );|
  !gapprompt@>| !gapinput@     if info <> "Posa for 0th closure" then|
  !gapprompt@>| !gapinput@       Print( q, ": ", info, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 }

 }

    
\chapter{\textcolor{Chapter }{\textsf{GAP} Computations with $O_8^+(5).S_3$ and $O_8^+(2).S_3$}}\label{chap:o8p2s3_o8p5s3}
\logpage{[ 5, 0, 0 ]}
\hyperdef{L}{X8703EFEE81DDE3DD}{}
{
  Date: October 08th, 2006 

 This chapter shows how to construct a representation of the automorphic
extension $G$ of the simple group $S = O_8^+(5)$ by a symmetric group on three points, together with an embedding of the
normalizer $H$ of an $O_8^+(2)$ type subgroup of $O_8^+(5)$. 

 As an application, it is shown that the permutation representation of $G$ on the cosets of $H$ has a base of length two. This question arose in{\nobreakspace}\cite{BGS11}.  
\section{\textcolor{Chapter }{Overview}}\label{sect:overview_o8p2s3}
\logpage{[ 5, 1, 0 ]}
\hyperdef{L}{X8389AD927B74BA4A}{}
{
  Let $S$ denote the simple group $O_8^+(5) \cong $ P$\Omega^+(8,5)$, that is, the nonabelian simple group that occurs as a composition factor of
the general orthogonal group GO${}^+(8,5)$ of $8 \times 8$ matrices over the field with five elements. 

 The outer automorphism group of $S$ is isomorphic to the symmetric group on four points. Let $G$ be an automorphic extension of $S$ by the symmetric group on three points. By{\nobreakspace}\cite{Kle87}, the group $S$ contains a maximal subgroup $M$ of the type $O_8^+(2)$ such that the normalizer $H$, say, of $M$ in $G$ is an automorphic extension of $M$ by a symmetric group on three points. (In fact, $H$ is isomorphic to the full automorphism group of $O_8^+(2)$.) 

 Let $S.2$ and $S.3$ denote intermediate subgroups between $S$ and $G$, in which $S$ has the indices $2$ and $3$, respectively. Analogously, let $M.2 = H \cap S.2$ and $M.3 = H \cap S.3$. 

 In Section{\nobreakspace}\ref{sect:sect2}, we use the following approach to construct representations of $M.2$ and $S.2$. By{\nobreakspace}\cite[p. 85]{CCN85}, the Weyl group $W$ of type $E_8$ is a double cover of $M.2$, and the reduction of its rational $8$-dimensional representation modulo $5$ embeds into the general orthogonal group GO${}^+(8,5)$, which has the structure $2.O_8^+(5).2^2$. Then the actions of GO${}^+(8,5)$ and of an isomorphic image of $W$ in GO${}^+(8,5)$ on $1$-spaces in the natural module of GO${}^+(8,5)$ yield $M.2$ as a subgroup of (a supergroup of) $S.2$, where both groups are represented as permutation groups on $N = 19\,656$ points. 

 In Section{\nobreakspace}\ref{sect:sect3}, first we use \textsf{GAP} to compute the automorphism group of $M$. Then we take an outer automorphism $\alpha$ of $M$, of order three, and extend $\alpha$ to an automorphism of $S$. Concretely, we compute the images of generating sets of $S$ and $M$ under $\alpha$ and $\alpha^2$. This yields permutation representations of $S.3$ and its subgroup $M.3$ on $3 N = 58\,968$ points. 

 In Section{\nobreakspace}\ref{sect:sect4}, we put the above information together, in order to construct permutation
representations of $G$ and $M$, on $3 N$ points. 

 As an application, it is shown in Section{\nobreakspace}\ref{sect:appl} that the permutation representation of $G$ on the cosets of $H$ has a base of length two; this question arose in{\nobreakspace}\cite{BGS11}. 

 In two appendices, it is discussed how to derive a part of this result from
the permutation character $(1_H^G)_H$ (see Section{\nobreakspace}\ref{sect:appendix_permchar}), and a file containing the data used in the earlier sections is described
(see Section{\nobreakspace}\ref{sect:appendix_data}). }

  
\section{\textcolor{Chapter }{Constructing Representations of $M.2$ and $S.2$}}\label{sect:sect2}
\logpage{[ 5, 2, 0 ]}
\hyperdef{L}{X85FF559084C08F0F}{}
{
   
\subsection{\textcolor{Chapter }{A Matrix Representation of the Weyl Group of Type $E_8$}}\label{subsect:repres_W_E8}
\logpage{[ 5, 2, 1 ]}
\hyperdef{L}{X7FEE53AB845B9327}{}
{
  Following the recipe listed in{\nobreakspace}\cite[p. 85, Section Weyl]{CCN85}, we can generate the Weyl group $W$ of type $E_8$ as a group of rational $8 \times 8$ matrices generated by the reflections in the vectors 
\[ \left(\pm 1/2, \pm 1/2, 0, 0, 0, 0, 0, 0\right) \]
 plus the vectors obtained from these by permuting the coordinates, plus those
those vectors of the form 
\[ \left( \pm 1/2, \pm 1/2, \pm 1/2, \pm 1/2, \pm 1/2, \pm 1/2, \pm 1/2, \pm 1/2
\right) \]
 that have an even number of negative signs. (Clearly it is sufficient to
consider only one vector form a pair $\pm v$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@rootvectors:= [];;|
  !gapprompt@gap>| !gapinput@for i in Combinations( [ 1 .. 8 ], 2 ) do|
  !gapprompt@>| !gapinput@     v:= 0 * [ 1 .. 8 ];|
  !gapprompt@>| !gapinput@     v{i}:= [ 1, 1 ];|
  !gapprompt@>| !gapinput@     Add( rootvectors, v );|
  !gapprompt@>| !gapinput@     v:= 0 * [ 1 .. 8 ];|
  !gapprompt@>| !gapinput@     v{i}:= [ 1, -1 ];|
  !gapprompt@>| !gapinput@     Add( rootvectors, v );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Append( rootvectors,|
  !gapprompt@>| !gapinput@     1/2 * Filtered( Tuples( [ -1, 1 ], 8 ),|
  !gapprompt@>| !gapinput@             x -> x[1] = 1 and Number( x, y -> y = 1 ) mod 2 = 0 ) );|
  !gapprompt@gap>| !gapinput@we8:= Group( List( rootvectors, ReflectionMat ) );|
  <matrix group with 120 generators>
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Embedding the Weyl group of Type $E_8$ into GO${}^+(8,5)$}}\label{subsect:embedding_W_E8}
\logpage{[ 5, 2, 2 ]}
\hyperdef{L}{X7C8AA7747F160F8A}{}
{
  The elements in the group constructed above respect the symmetric bilinear
form that is given by the identity matrix. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@I:= IdentityMat( 8 );;|
  !gapprompt@gap>| !gapinput@ForAll( GeneratorsOfGroup( we8 ), x -> x * TransposedMat(x) = I );|
  true
\end{Verbatim}
 

 So the reduction of the matrices modulo $5$ yields a group $W^{\ast}$ of orthogonal matrices w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}the
identity matrix. The group GO${}^+(8,5)$ returned by the \textsf{GAP} function \texttt{GO} (\textbf{Reference: GO}) leaves a different bilinear form invariant. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@largegroup:= GO(1,8,5);;|
  !gapprompt@gap>| !gapinput@Display( InvariantBilinearForm( largegroup ).matrix );|
   . 1 . . . . . .
   1 . . . . . . .
   . . 2 . . . . .
   . . . 2 . . . .
   . . . . 2 . . .
   . . . . . 2 . .
   . . . . . . 2 .
   . . . . . . . 2
\end{Verbatim}
 

 In order to conjugate $W^{\ast}$ into this group, we need a $2 \times 2$ matrix $T$ over the field with five elements with the property that $T T^{tr}$ is half of the upper left $2 \times 2$ matrix in the above matrix. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@T:= [ [ 1, 2 ], [ 4, 2 ] ] * One( GF(5) );;|
  !gapprompt@gap>| !gapinput@Display( 2 * T * TransposedMat( T ) );|
   . 1
   1 .
  !gapprompt@gap>| !gapinput@I:= IdentityMat( 8, GF(5) );;|
  !gapprompt@gap>| !gapinput@I{ [ 1, 2 ] }{ [ 1, 2 ] }:= T;;|
  !gapprompt@gap>| !gapinput@conj:= List( GeneratorsOfGroup( we8 ), x -> I * x * I^-1 );;|
  !gapprompt@gap>| !gapinput@IsSubset( largegroup, conj );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Compatible Generators of $M$, $M.2$, $S$, and $S.2$}}\label{subsect:120pt}
\logpage{[ 5, 2, 3 ]}
\hyperdef{L}{X83E3E79F8724C365}{}
{
  For the next computations, we switch from the natural matrix representation of
GO${}^+(8,5)$ to a permutation representation of PGO${}^+(8,5)$, of degree $N = 19\,656$, which is given by the action of GO${}^+(8,5)$ on the smallest orbit of $1$-spaces in its natural module. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( largegroup, NormedRowVectors( GF(5)^8 ),|
  !gapprompt@>| !gapinput@                        OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 39000, 39000, 19656 ]
  !gapprompt@gap>| !gapinput@N:= Length( orbs[3] );|
  19656
  !gapprompt@gap>| !gapinput@orbN:= SortedList( orbs[3] );;|
  !gapprompt@gap>| !gapinput@largepermgroup:= Action( largegroup, orbN, OnLines );;|
\end{Verbatim}
 

 In the same way, permutation representations of the subgroup $M.2 \cong $SO${}^+(8,2)$ and of its derived subgroup $M$ are obtained. But first we compute a smaller generating set of the simple
group $M$, using a permutation representation on $120$ points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbwe8:= SortedList( Orbit( we8, rootvectors[1], OnLines ) );;|
  !gapprompt@gap>| !gapinput@Length( orbwe8 );|
  120
  !gapprompt@gap>| !gapinput@we8_to_m2:= ActionHomomorphism( we8, orbwe8, OnLines );;|
  !gapprompt@gap>| !gapinput@m2_120:= Image( we8_to_m2 );;|
  !gapprompt@gap>| !gapinput@m_120:= DerivedSubgroup( m2_120 );;|
  !gapprompt@gap>| !gapinput@sml:= SmallGeneratingSet( m_120 );;  Length( sml );|
  2
  !gapprompt@gap>| !gapinput@gens_m:= List( sml, x -> PreImagesRepresentative( we8_to_m2, x ) );;|
\end{Verbatim}
 

 Now we compute the actions of $M$ and $M.2$ on the above orbit of length $N$. For generating $M.2$, we choose an element $b_N \in M.2 \setminus M$, which is obtained from the action of a matrix $b \in 2.M.2 \setminus 2.M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@gens_m_N:= List( gens_m,|
  !gapprompt@>| !gapinput@     x -> Permutation( I * x * I^-1, orbN, OnLines ) );;|
  !gapprompt@gap>| !gapinput@m_N:= Group( gens_m_N );;|
  !gapprompt@gap>| !gapinput@b:= I * we8.1 * I^-1;;|
  !gapprompt@gap>| !gapinput@DeterminantMat( b );|
  Z(5)^2
  !gapprompt@gap>| !gapinput@b_N:= Permutation( b, orbN, OnLines );;|
  !gapprompt@gap>| !gapinput@m2_N:= ClosureGroup( m_N, b_N );;|
\end{Verbatim}
 

 (Note that $M.2$ is not contained in PSO${}^+(8,5)$, since the determinant of $b$ is $-1$ in the field with five elements.) 

 The group $S$ is the derived subgroup of PSO${}^+(8,5)$, and $S.2$ is generated by $S$ together with $b_N$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s_N:= DerivedSubgroup( largepermgroup );;|
  !gapprompt@gap>| !gapinput@s2_N:= ClosureGroup( s_N, b_N );;|
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Constructing Representations of $M.3$ and $S.3$}}\label{sect:sect3}
\logpage{[ 5, 3, 0 ]}
\hyperdef{L}{X83F897DD7C48511C}{}
{
   
\subsection{\textcolor{Chapter }{The Action of $M.3$ on $M$}}\label{sect:action_M.3_M}
\logpage{[ 5, 3, 1 ]}
\hyperdef{L}{X7B7561D0855EC4F1}{}
{
  Let $\alpha$ be an automorphism of $M$, of order three. Then a representation of the semidirect product $M.3$ of $M$ by $\langle \alpha \rangle$ can be constructed as follows. 

 If $M$ is given by a matrix representation then we map $g \in M$ to the block diagonal matrix 
\[
   \left[ \begin{array}{ccc}
             g &          & \\
               & g^\alpha & \\
               & &    g^{(\alpha^2)}
          \end{array} \right] ,
\]
   and we represent $\alpha$ by the block permutation matrix 
\[
   \left[ \begin{array}{ccc}
            & & I \\
            I     & & \\
            & I     &
          \end{array} \right] ,
\]
   where $I$ is the identity element in $M$. 

 We need the action of $\alpha$ on $M$. More precisely, we need images of the chosen generators of $M$ under $\alpha$ and $\alpha^2$. 

 The group $M$ is small enough for asking \textsf{GAP} to compute its automorphism group, which is isomorphic with $O^+_8(2).S_3$; for that, we use the degree $120$ permutation representation constructed in Section{\nobreakspace}\ref{subsect:120pt}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@aut_m:= AutomorphismGroup( m_120 );;|
\end{Verbatim}
 

 We pick an outer automorphism $\alpha$ of order three. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nice_aut_m:= NiceMonomorphism( aut_m );;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( Image( nice_aut_m ) );;|
  !gapprompt@gap>| !gapinput@der2:= DerivedSubgroup( der );;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( der );|
  !gapprompt@>| !gapinput@     ord:= Order( x );|
  !gapprompt@>| !gapinput@   until ord mod 3 = 0 and ord mod 9 <> 0 and not x in der2;|
  !gapprompt@gap>| !gapinput@x:= x^( ord / 3 );;|
  !gapprompt@gap>| !gapinput@alpha_120:= PreImagesRepresentative( nice_aut_m, x );;|
\end{Verbatim}
 

 Next we compute the images of the generators \texttt{sml} under $\alpha$ and $\alpha^2$, and the corresponding elements in the action of $M$ on $N$ points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sml_alpha:= List( sml, x -> Image( alpha_120, x ) );;|
  !gapprompt@gap>| !gapinput@sml_alpha_2:= List( sml_alpha, x -> Image( alpha_120, x ) );;|
  !gapprompt@gap>| !gapinput@gens_m_alpha:= List( sml_alpha,|
  !gapprompt@>| !gapinput@                    x -> PreImagesRepresentative( we8_to_m2, x ) );;|
  !gapprompt@gap>| !gapinput@gens_m_alpha_2:= List( sml_alpha_2,|
  !gapprompt@>| !gapinput@                      x -> PreImagesRepresentative( we8_to_m2, x ) );;|
  !gapprompt@gap>| !gapinput@gens_m_N_alpha:= List( gens_m_alpha,|
  !gapprompt@>| !gapinput@     x -> Permutation( I * x * I^-1, orbN, OnLines ) );;|
  !gapprompt@gap>| !gapinput@gens_m_N_alpha_2:= List( gens_m_alpha_2,|
  !gapprompt@>| !gapinput@     x -> Permutation( I * x * I^-1, orbN, OnLines ) );;|
\end{Verbatim}
 

 Finally, we use the construction descibed in the beginning of this section,
and obtain a permutation representation of $M.3$ on $3 N = 58\,968$ points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@alpha_3N:= PermList( Concatenation( [ [ 1 .. N ] + 2*N,|
  !gapprompt@>| !gapinput@                                         [ 1 .. N ],|
  !gapprompt@>| !gapinput@                                         [ 1 .. N ] + N ] ) );;|
  !gapprompt@gap>| !gapinput@gens_m_3N:= List( [ 1 .. Length( gens_m_N ) ],|
  !gapprompt@>| !gapinput@     i -> gens_m_N[i] *|
  !gapprompt@>| !gapinput@          ( gens_m_N_alpha[i]^alpha_3N ) *|
  !gapprompt@>| !gapinput@          ( gens_m_N_alpha_2[i]^(alpha_3N^2) ) );;|
  !gapprompt@gap>| !gapinput@m_3N:= Group( gens_m_3N );;|
  !gapprompt@gap>| !gapinput@m3_3N:= ClosureGroup( m_3N, alpha_3N );;|
\end{Verbatim}
  }

  
\subsection{\textcolor{Chapter }{The Action of $S.3$ on $S$}}\label{subsect:M.3andS.3}
\logpage{[ 5, 3, 2 ]}
\hyperdef{L}{X8246803779EB8FEE}{}
{
  Our approach is to extend the automorphism $\alpha$ of $M$ to $S$; we can do this because in the full automorphism group of $S$, \emph{any} $O^+_8(2)$ type subgroup extends to a group of the type $O^+_8(2).3$, and this extension lies in a subgroup of the type $O^+_8(5).3$ (see{\nobreakspace}\cite{Kle87}). 

 The group $M$ is maximal in $S$, so $S$ is generated by $M$ together with any element $s \in S \setminus M$. Having fixed such an element $s$, what we have to is to find the images of $s$ under the automorphisms that extend $\alpha$ and $\alpha^2$. 

 For that, we first choose $x \in M$ such that $C_S(x)$ is a small group that is not contained in $M$. Then we choose $s \in C_S(x) \setminus M$, and using that $s^\alpha$ must lie in $C_S(C_M(s)^\alpha)$, we then check which elements of this small subgroup can be the desired
image. 

 Each element $x$ of order nine in $M$ has a root $s$ of order $63$ in $S$, and $C_S(x)$ has order $189$. For suitable such $x$, exactly one element $y \in C_S(C_M(s)^\alpha)$ has order $63$ and satisfies the necessary conditions that the orders of the products of $s$ and the generators of $M$ are equal to the orders of the product of $y$ and the images of these generators under $\alpha$. In other words, we have $s^\alpha = y$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@alpha:= GroupHomomorphismByImagesNC( m_N, m_N,|
  !gapprompt@>| !gapinput@               gens_m_N, gens_m_N_alpha );;|
  !gapprompt@gap>| !gapinput@CheapTestForHomomorphism:= function( gens, genimages, x, cand )|
  !gapprompt@>| !gapinput@       return Order( x ) = Order( cand ) and|
  !gapprompt@>| !gapinput@              ForAll( [ 1 .. Length( gens ) ],|
  !gapprompt@>| !gapinput@           i -> Order( gens[i] * x ) = Order( genimages[i] * cand ) );|
  !gapprompt@>| !gapinput@end;;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     repeat|
  !gapprompt@>| !gapinput@       x:= Random( m_N );|
  !gapprompt@>| !gapinput@     until Order( x ) = 9;|
  !gapprompt@>| !gapinput@     c_s:= Centralizer( s_N, x );|
  !gapprompt@>| !gapinput@     repeat|
  !gapprompt@>| !gapinput@       s:= Random( c_s );|
  !gapprompt@>| !gapinput@     until Order( s ) = 63;|
  !gapprompt@>| !gapinput@     c_m_alpha:= Images( alpha, Centralizer( m_N, s ) );|
  !gapprompt@>| !gapinput@     good:= Filtered( Elements( Centralizer( s_N, c_m_alpha ) ),|
  !gapprompt@>| !gapinput@              x -> CheapTestForHomomorphism( gens_m_N,|
  !gapprompt@>| !gapinput@                     gens_m_N_alpha, s, x ) );|
  !gapprompt@>| !gapinput@   until Length( good ) = 1;|
  !gapprompt@gap>| !gapinput@s_alpha:= good[1];;|
  !gapprompt@gap>| !gapinput@c_m_alpha_2:= Images( alpha, c_m_alpha );;|
  !gapprompt@gap>| !gapinput@good:= Filtered( Elements( Centralizer( s_N, c_m_alpha_2 ) ),|
  !gapprompt@>| !gapinput@     x -> CheapTestForHomomorphism( gens_m_N_alpha, gens_m_N_alpha_2,|
  !gapprompt@>| !gapinput@                                    s_alpha, x ) );;|
  !gapprompt@gap>| !gapinput@s_alpha_2:= good[1];;|
\end{Verbatim}
 

 Using the notation of the previous section, this means that the permutation
representation of $M.3$ on $3 N$ points can be extended to $S.3$ by choosing the permutation corresponding to the block diagonal matrix 
\[
   \left[ \begin{array}{ccc}
            s     &    & \\
            & s^\alpha & \\
            & &    s^{(\alpha^2)}
          \end{array} \right] ,
\]
   as an additional generator. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@outer:= s * ( s_alpha^alpha_3N ) * ( s_alpha_2^(alpha_3N^2) );;|
  !gapprompt@gap>| !gapinput@s3_3N:= ClosureGroup( m3_3N, outer );;|
\end{Verbatim}
 

 (And of course we have $S = \langle M, s \rangle$, which yields generators for $S$ that are compatible with those of $M$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s_3N:= ClosureGroup( m_3N, outer );;|
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Constructing Compatible Generators of $H$ and $G$}}\label{sect:sect4}
\logpage{[ 5, 4, 0 ]}
\hyperdef{L}{X816AFA187E95C018}{}
{
  After having constructed compatible representations of $M.2$ and $G.2$ on $N$ points (see Section{\nobreakspace}\ref{subsect:120pt}) and of $M.3$ and $S.3$ on $3 N$ points (see Section{\nobreakspace}\ref{subsect:M.3andS.3}), the last construction step is to find a permutation on $3 N$ points with the following properties: 
\begin{itemize}
\item  The induced automorphism $\beta$ of $M$ extends to $M.3$ such that the automorphism $\alpha$ of $M$ is inverted, modulo inner automorphisms of $M$. 
\item  The action on the first $N$ points coincides with that of the element $b_N \in M.2 \setminus M$ that was constructed in Section{\nobreakspace}\ref{subsect:120pt}. 
\end{itemize}
 

 Using the notation of the previous sections, we represent $\beta$ by a block matrix 
\[
   \left[ \begin{array}{ccc}
            b     & & \\
            & &   b d \\
            &   b g &
          \end{array} \right] ,
\]
   where $b$ describes the action of $\beta$ on $M$ (on $N$ points), $g$ describes the inner automorphism $\gamma$ of $M$ that is defined by the condition $\beta \alpha = \alpha^2 \beta \gamma$, and $d$ describes $\gamma \gamma^\alpha$. 

 So we compute an element in $M$ that induces the conjugation automorphism $\gamma$, and its image under $\alpha$. We do this in the representation of $M$ on $120$ points, and carry over the result to the representation on $N$ points, via the rational matrix representation; this approach had been used
already in Section{\nobreakspace}\ref{subsect:120pt}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b_120:= Permutation( we8.1, orbwe8, OnLines );;|
  !gapprompt@gap>| !gapinput@g_120:= RepresentativeAction( m_120,|
  !gapprompt@>| !gapinput@               List( sml_alpha_2, x -> x^b_120 ),|
  !gapprompt@>| !gapinput@               List( sml, x -> (x^b_120)^alpha_120 ), OnTuples );;|
  !gapprompt@gap>| !gapinput@g_120_alpha:= g_120^alpha_120;;|
  !gapprompt@gap>| !gapinput@g_N:= Permutation( I * PreImagesRepresentative( we8_to_m2, g_120 )|
  !gapprompt@>| !gapinput@                        * I^-1, orbN, OnLines );;|
  !gapprompt@gap>| !gapinput@g_N_alpha:= Permutation( I * PreImagesRepresentative( we8_to_m2,|
  !gapprompt@>| !gapinput@                 g_120_alpha ) * I^-1, orbN, OnLines );;|
  !gapprompt@gap>| !gapinput@inv:= PermList( Concatenation(|
  !gapprompt@>| !gapinput@                     ListPerm( b_N ),|
  !gapprompt@>| !gapinput@                     ListPerm( b_N * g_N ) + 2*N,|
  !gapprompt@>| !gapinput@                     ListPerm( b_N * g_N * g_N_alpha ) + N ) );;|
\end{Verbatim}
 

 So we have constructed compatible generators for $H$ and $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@h:= ClosureGroup( m3_3N, inv );;|
  !gapprompt@gap>| !gapinput@g:= ClosureGroup( s3_3N, inv );;|
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Application: Regular Orbits of $H$ on $G/H$}}\label{sect:appl}
\logpage{[ 5, 5, 0 ]}
\hyperdef{L}{X83F0387D789709D1}{}
{
  We want to show that $H$ has regular orbits on the right cosets $G/H$. The stabilizer in $H$ of the coset $H g$ is $H \cap H^g$, so we compute that there are elements $s \in S$ with the property $|H \cap H^s| = 1$. 

 (Of course this implies that also in the permutation representations of the
subgroups $S$, $S.2$, and $S.3$ of $G$ on the cosets of the intersection with $H$, the point stabilizers have regular orbits.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     conj:= Random( s_3N );|
  !gapprompt@>| !gapinput@     inter:= Intersection( h, h^conj );|
  !gapprompt@>| !gapinput@   until Size( inter ) = 1;|
\end{Verbatim}
 

 Eventually \textsf{GAP} will return from this loop, so there are elements $s$ with the required property. 

 (Computing one such intersection takes about six minutes on a 2.5 GHz Pentium
4, so one may have to be a bit patient.) }

  
\section{\textcolor{Chapter }{Appendix: The Permutation Character $(1_H^G)_H$}}\label{sect:appendix_permchar}
\logpage{[ 5, 6, 0 ]}
\hyperdef{L}{X7F0C266082BE1578}{}
{
  

 As an alternative to the computation of $|H \cap H^s|$ for suitable $s \in S$, we can try to derive information from the permutation character $(1_H^G)_H$. Unfortunately, there seems to be no easy way to prove the existence of
regular $H$-orbits on $G/H$ (cf.{\nobreakspace}Section{\nobreakspace}\ref{sect:appl}) only by means of this character. 

 However, it is not difficult to show that regular orbits of $M$, $M.2$, and $M.3$ exist. For that, we compute $(1_H^G)_H$, by computing class representatives of $H$, their centralizer orders in $G$, and the class fusion of $H$-classes in $G$. 

 We want to compute the class representatives in a small permutation
representation of $H$; this could be done using the degree $360$ representation that was implicitly constructed above,  but it is technically easier to use a degree $405$ representation that is obtained from the degree $58\,968$ representation by the action of $H$ on blocks in an orbit of length $22\,680$. (One could get this also using the \textsf{GAP} function \texttt{SmallerDegreePermutationRepresentation} (\textbf{Reference: SmallerDegreePermutationRepresentation}).) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbs:= Orbits( h, MovedPoints( h ) );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 22680, 36288 ]
  !gapprompt@gap>| !gapinput@orb:= orbs[1];;|
  !gapprompt@gap>| !gapinput@bl:= Blocks( h, orb );;  Length( bl[1] );|
  2
  !gapprompt@gap>| !gapinput@actbl:= Action( h, bl, OnSets );;|
  !gapprompt@gap>| !gapinput@bll:= Blocks( actbl, MovedPoints( actbl ) );;  Length( bll );  |
  405
  !gapprompt@gap>| !gapinput@oneblock:= Union( bl{ bll[1] } );;|
  !gapprompt@gap>| !gapinput@orb:= SortedList( Orbit( h, oneblock, OnSets ) );;|
  !gapprompt@gap>| !gapinput@acthom:= ActionHomomorphism( h, orb, OnSets );;|
  !gapprompt@gap>| !gapinput@ccl:= ConjugacyClasses( Image( acthom ) );;|
  !gapprompt@gap>| !gapinput@reps:= List( ccl, x -> PreImagesRepresentative( acthom,|
  !gapprompt@>| !gapinput@                              Representative( x ) ) );;|
\end{Verbatim}
 

 Then we carry back class representatives to the degree $58\,968$ representation, and compute the class fusion and the centralizer orders in $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@reps:= List( ccl, x -> PreImagesRepresentative( acthom,|
  !gapprompt@>| !gapinput@                              Representative( x ) ) );;|
  !gapprompt@gap>| !gapinput@fusion:= [];;|
  !gapprompt@gap>| !gapinput@centralizers:= [];;|
  !gapprompt@gap>| !gapinput@fusreps:= [];;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( reps ) ] do|
  !gapprompt@>| !gapinput@     found:= false;|
  !gapprompt@>| !gapinput@     cen:= Size( Centralizer( g, reps[i] ) );|
  !gapprompt@>| !gapinput@     for j in [ 1 .. Length( fusreps ) ] do|
  !gapprompt@>| !gapinput@       if cen = centralizers[j] and|
  !gapprompt@>| !gapinput@          IsConjugate( g, fusreps[j], reps[i] ) then|
  !gapprompt@>| !gapinput@         fusion[i]:= j;|
  !gapprompt@>| !gapinput@         found:= true;|
  !gapprompt@>| !gapinput@         break;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     if not found then|
  !gapprompt@>| !gapinput@       Add( fusreps, reps[i] );|
  !gapprompt@>| !gapinput@       Add( fusion, Length( fusreps ) );|
  !gapprompt@>| !gapinput@       Add( centralizers, cen );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 Next we compute the permutation character values, using the formula 
\[ (1_H)^G(g) = (|C_G(g)| \sum_{h} |h^H|) /|H| , \]
 where the summation runs over class representatives $h \in H$ that are $G$-conjugate to $g$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pi:= 0 * [ 1 .. Length( fusreps ) ];;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( ccl ) ] do|
  !gapprompt@>| !gapinput@     pi[ fusion[i] ]:= pi[ fusion[i] ] + centralizers[ fusion[i] ] *|
  !gapprompt@>| !gapinput@                                             Size( ccl[i] );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@pi:= pi{ fusion } / Size( h );;|
\end{Verbatim}
 

 In order to write the permutation character w.r.t.{\nobreakspace}the ordering
of classes in the \textsf{GAP} character table, we use the \textsf{GAP} function \texttt{CompatibleConjugacyClasses} (\textbf{Reference: CompatibleConjugacyClasses}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblh:= CharacterTable( "O8+(2).S3" );;|
  !gapprompt@gap>| !gapinput@map:= CompatibleConjugacyClasses( Image( acthom ), ccl, tblh );;|
  !gapprompt@gap>| !gapinput@pi:= pi{ map }; |
  [ 51162109375, 69375, 1259375, 69375, 568750, 1750, 4000, 375, 135, 
    975, 135, 625, 150, 650, 30, 72, 80, 72, 27, 27, 3, 7, 25, 30, 6, 
    12, 25, 484375, 1750, 375, 375, 30, 40, 15, 15, 15, 6, 6, 3, 3, 3, 
    157421875, 121875, 4875, 475, 75, 3875, 475, 13000, 1750, 300, 400, 
    30, 60, 15, 15, 15, 125, 10, 30, 4, 8, 6, 9, 7, 5, 6, 5 ]
\end{Verbatim}
  

 Now we consider the restrictions of this permutation character to $M$, $M.2$, and $M.3$. Note that $(1_H^G)_M = (1_M^S)_M$, $(1_H^G)_{M.2} = (1_{M.2}^{S.2})_{M.2}$, and $(1_H^G)_{M.3} = (1_{M.3}^{S.3})_{M.3}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblm2:= CharacterTable( "O8+(2).2" );;|
  !gapprompt@gap>| !gapinput@tblm3:= CharacterTable( "O8+(2).3" );;|
  !gapprompt@gap>| !gapinput@tblm:= CharacterTable( "O8+(2)" );;|
  !gapprompt@gap>| !gapinput@pi_m2:= pi{ GetFusionMap( tblm2, tblh ) };;|
  !gapprompt@gap>| !gapinput@pi_m3:= pi{ GetFusionMap( tblm3, tblh ) };;|
  !gapprompt@gap>| !gapinput@pi_m:= pi_m3{ GetFusionMap( tblm, tblm3 ) };;|
\end{Verbatim}
 

 The permutation character $(1_M^S)_M$ decomposes into $483$ transitive permutation characters, and regular $M$-orbits on $S/M$ correspond to regular constituents in this decomposition. If there is no
regular transitive constituent in $(1_M^S)_M$ then the largest degree of a transitive constituent is $|M|/2$; but then the degree of $1_M^S$ is less than $483 |M|/2$, which is smaller than $[S:M]$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n:= ScalarProduct( tblm, pi_m, TrivialCharacter( tblm ) );|
  483
  !gapprompt@gap>| !gapinput@n * Size( tblm ) / 2;|
  42065049600
  !gapprompt@gap>| !gapinput@pi[1];|
  51162109375
\end{Verbatim}
 

 For the case of $M.2 < S.2$, this argument turns out to be not sufficient. So we first compute a lower
bound on the number of regular $M$-orbits on $S/M$. For involutions $g \in M$, the number of transitive constituents $1_{\langle g \rangle}^M$ in $(1_M^S)_M$ is at most the integral part of $1_M^S(g) / 1_{\langle g \rangle}^M(g) = 2 \cdot 1_M^S(g) / |C_M(g)|$; from this we compute that there are at most $208$ such constituents. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inv:= Filtered( [ 1 .. NrConjugacyClasses( tblm ) ],|
  !gapprompt@>| !gapinput@             i -> OrdersClassRepresentatives( tblm )[i] = 2 );|
  [ 2, 3, 4, 5, 6 ]
  !gapprompt@gap>| !gapinput@n2:= List( inv,|
  !gapprompt@>| !gapinput@          i -> Int( 2 * pi_m[i] / SizesCentralizers( tblm )[i] ) );|
  [ 1, 54, 54, 54, 45 ]
  !gapprompt@gap>| !gapinput@Sum( n2 );|
  208
\end{Verbatim}
 

 As a consequence, $M$ has at least $148$ regular orbits on $S/M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@First( [ 1 .. 483 ],                                           |
  !gapprompt@>| !gapinput@     i -> i * Size( tblm ) + 208 * Size( tblm ) / 2|
  !gapprompt@>| !gapinput@          + ( 483 - i - 208 - 1 ) * Size( tblm ) / 3 + 1 >= pi[1] );|
  148
\end{Verbatim}
 

 Now we consider the action of $M.2$ on $S.2/M.2$. If $M.2$ has no regular orbit then the $148$ regular orbits of $M$ must arise from the restriction of transitive constituents $1_U^{M.2}$ to $M$ with $|U| = 2$ and such that $U$ is not contained in $M$. (This follows from the fact that the restriction of a transitive constituent
of $(1_{M.2}^{S.2})_{M.2}$ to $M$ is either itself a transitive constituent of $(1_M^S)_M$ or the sum of two such constituents; the latter case occurs if and only if the
point stabilizer is contained in $M$.) However, the number of these constituents is at most $134$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inv:= Filtered( [ 1 .. NrConjugacyClasses( tblm2 ) ],|
  !gapprompt@>| !gapinput@             i -> OrdersClassRepresentatives( tblm2 )[i] = 2 and|
  !gapprompt@>| !gapinput@                  not i in ClassPositionsOfDerivedSubgroup( tblm2 ) );|
  [ 41, 42 ]
  !gapprompt@gap>| !gapinput@n2:= List( inv,|
  !gapprompt@>| !gapinput@          i -> Int( 2 * pi_m2[i] / SizesCentralizers( tblm2 )[i] ) );|
  [ 108, 26 ]
  !gapprompt@gap>| !gapinput@Sum( n2 );|
  134
\end{Verbatim}
  

 Finally, we consider the action of $M.3$ on $S.3/M.3$. We compute that $(1_{M.3}^{S.3})_{M.3}$ has $205$ transitive constituents, and at most $69$ of them can be induced from subgroups of order two. This is already sufficient
to show that there must be regular constituents. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n:= ScalarProduct( tblm3, pi_m3, TrivialCharacter( tblm3 ) );|
  205
  !gapprompt@gap>| !gapinput@inv:= Filtered( [ 1 .. NrConjugacyClasses( tblm3 ) ],|
  !gapprompt@>| !gapinput@             i -> OrdersClassRepresentatives( tblm3 )[i] = 2 );|
  [ 2, 3, 4 ]
  !gapprompt@gap>| !gapinput@n2:= List( inv,|
  !gapprompt@>| !gapinput@          i -> Int( 2 * pi_m3[i] / SizesCentralizers( tblm3 )[i] ) );|
  [ 0, 54, 15 ]
  !gapprompt@gap>| !gapinput@Sum( n2 );|
  69
  !gapprompt@gap>| !gapinput@69 * Size( tblm3 ) / 2 + ( n - 69 - 1 ) * Size( tblm3 ) / 3 + 1;|
  41542502401
  !gapprompt@gap>| !gapinput@pi[1];|
  51162109375
\end{Verbatim}
  }

  
\section{\textcolor{Chapter }{Appendix: The Data File}}\label{sect:appendix_data}
\logpage{[ 5, 7, 0 ]}
\hyperdef{L}{X7F3A630780F8E262}{}
{
  The file \texttt{o8p2s3{\textunderscore}o8p5s3.g} that can be found at 

 \href{http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/data/o8p2s3_o8p5s3.g} {\texttt{http://www.math.rwth-aachen.de/\texttt{\symbol{126}}Thomas.Breuer/ctbllib/data/o8p2s3{\textunderscore}o8p5s3.g}} 

 contains the relevant data used in the above computations. This covers the
representations for the groups and the permutation character of $O^+_8(2).S_3$ computed in Section{\nobreakspace}\ref{sect:appendix_permchar}. 

 Reading the file into \textsf{GAP} will define a global variable \texttt{o8p2s3{\textunderscore}o8p5s3{\textunderscore}data}, a record with the following components. 

 
\begin{description}
\item[{\texttt{pi}}]  the list of values of the permutation character of $G = O^+_8(5).S_3$ on the cosets of its subgroup $H = O^+_8(2).S_3$, restricted to $H$, corresponding to the ordering of classes in the character table of $H$ in the \textsf{GAP} Character Table Library (this table has the \texttt{Identifier} (\textbf{Reference: Identifier for tables of marks}) value \texttt{"O8+(2).3.2"}), 
\item[{\texttt{dim8Q}}]  a record with generators for $2.M$ and $2.M.2$, matrices of dimension eight over the Rationals, 
\item[{\texttt{deg120}}]  a record with generators for $M$ and $M.2$, permutations of degree $120$, 
\item[{\texttt{deg360}}]  a record with generators for $M$, $M.2$, $M.3$, and $H$, permutations of degree $360$, 
\item[{\texttt{dim8f5}}]  a record with generators for $2.M$, $2.M.2$, $2.S$, and $2.S.2$, matrices of dimension eight over the field with five elements, 
\item[{\texttt{deg19656}}]  a record with generators for $M$, $M.2$, $S$, and $S.2$, permutations of degree $19\,656$, 
\item[{\texttt{deg58968}}]  a record with generators for $M$, $M.2$, $M.3$, $H$, $S$, $S.2$, $S.3$, and $G$, permutations of degree $58\,968$, 
\item[{\texttt{seed405}}]  a block whose $H$-orbit in the representation on $58\,968$ points, w.r.t.{\nobreakspace}the action \texttt{OnSets} (\textbf{Reference: OnSets}), yields a representation of $H$ on $405$ points. 
\end{description}
 

 For each of the permutation representations, we have (where applicable) \begin{center}
\begin{tabular}{lcl}$M$&
$\cong$&
$\langle a_1, a_2 \rangle$,\\
$M.2$&
$\cong$&
$\langle a_1, a_2, b \rangle$,\\
$M.3$&
$\cong$&
$\langle a_1, a_2, t \rangle$,\\
$H$&
$\cong$&
$\langle a_1, a_2, t, b \rangle$,\\
$S$&
$\cong$&
$\langle a_1, a_2, c \rangle$,\\
$S.2$&
$\cong$&
$\langle a_1, a_2, c, b \rangle$,\\
$S.3$&
$\cong$&
$\langle a_1, a_2, c, t \rangle$,\\
$G$&
$\cong$&
$\langle a_1, a_2, c, t, b \rangle$,\\
\end{tabular}\\[2mm]
\end{center}

 where $a_1, a_2, b, t, c$ are the values of the record components \texttt{a1}, \texttt{a2}, \texttt{b}, \texttt{t}, and \texttt{c}. 

 Analogously, for the matrix representations, we have (where applicable) 

 \begin{center}
\begin{tabular}{lcl}$2.M$&
$\cong$&
$\langle a_1, a_2 \rangle$,\\
$2.M.2$&
$\cong$&
$\langle a_1, a_2, b \rangle$,\\
$2.S$&
$\cong$&
$\langle a_1, a_2, c \rangle$,\\
$2.S.2$&
$\cong$&
$\langle a_1, a_2, c, b \rangle$,\\
\end{tabular}\\[2mm]
\end{center}

 

 Additional components are used for deriving the representations from initial
data, as in the constructions in the previous sections. 

 For example, most of the permutations needed arise as the induced actions of
matrices on orbits of vectors; these orbits are computed when the file is
read, and are then stored in the components \texttt{orb120} and \texttt{orb19656}. 

 The file \texttt{o8p2s3{\textunderscore}o8p5s3.g} does not contain the generators explicitly, but it is self-contained in the
sense that only a few \textsf{GAP} functions are actually needed to produce the data; for example, it should not
be difficult to translate the contents of the file into the language of other
computer algebra systems. 

 Advantages of this way to store the data are that the relations between the
representations become explicit, and also that only very little space is
needed to describe the representations {\textendash}the size of the file is
less than $10$ kB, whereas storing (explicitly) one of the permutations on $58\,968$ points requires already about $350$ kB. }

 }

    
\chapter{\textcolor{Chapter }{Solvable Subgroups of Maximal Order in Sporadic Simple Groups}}\label{chap:sporsolv}
\logpage{[ 6, 0, 0 ]}
\hyperdef{L}{X7EF73AA88384B5F3}{}
{
  

 Date: May 14th, 2012 

  We determine the orders of solvable subgroups of maximal orders in sporadic
simple groups and their automorphism groups, using the information in the \textsf{Atlas} of Finite Groups{\nobreakspace}\cite{CCN85} and the \textsf{GAP} system{\nobreakspace}\cite{GAP}, in particular its Character Table Library{\nobreakspace}\cite{CTblLib} and its library of Tables of Marks{\nobreakspace}\cite{TomLib}. 

 We also determine the conjugacy classes of these solvable subgroups in the big
group, and the maximal overgroups. 

 A first version of this document, which was based on \textsf{GAP}{\nobreakspace}4.4.10, had been accessible in the web since
August{\nobreakspace}2006. The differences to the current version are as
follows. 

 
\begin{itemize}
\item  The format of the \textsf{GAP} output was adjusted to the changed behaviour of \textsf{GAP}{\nobreakspace}4.5. 
\item  The (too wide) table of results was split into two tables, the first one lists
the orders and indices of the subgroups, the second one lists the structure of
subgroups and the maximal overgroups. 
\item  The distribution of the solvable subgroups of maximal orders in the Baby
Monster group and the Monster group to conjugacy classes is now proved. 
\item  The sporadic simple Monster group has exactly one class of maximal subgroups
of the type PSL$(2, 41)$ (see{\nobreakspace}\cite{NW12}), and has no maximal subgroups which have the socle PSL$(2, 27)$ (see{\nobreakspace}\cite{Wil10}). This does not affect the arguments in Section{\nobreakspace}\ref{sect:M}, but some statements in this section had to be corrected. 
\end{itemize}
  
\section{\textcolor{Chapter }{The Result}}\label{sect:result}
\logpage{[ 6, 1, 0 ]}
\hyperdef{L}{X7F817DC57A69CF0D}{}
{
  The tables{\nobreakspace}I and{\nobreakspace}II list information about
solvable subgroups of maximal order in sporadic simple groups and their
automorphism groups. The first column in each table gives the names of the
almost simple groups $G$, in alphabetical order. The remaining columns of Table{\nobreakspace}I
contain the order and the index of a solvable subgroup $S$ of maximal order in $G$, the value $\log_{|G|}(|S|)$, and the page number in the \textsf{Atlas}{\nobreakspace}\cite{CCN85} where the information about maximal subgroups of $G$ is listed. The second and third columns of Table{\nobreakspace}II show a
structure description of $S$ and the structures of the maximal subgroups that contain $S$; the value ``$S$'' in the third column means that $S$ is itself maximal in $G$. The fourth and fifth columns list the pages in the \textsf{Atlas} with the information about the maximal subgroups of $G$ and the section in this note with the proof of the table row, respectively. In
the fourth column, page numbers in brackets refer to the \textsf{Atlas} pages with information about the maximal subgroups of nonsolvable quotients of
the maximal subgroups of $G$ listed in the third column. 

 Note that in the case of nonmaximal subgroups $S$, we do not claim to describe the \emph{module} structure of $S$ in the third column of the table; we have kept the \textsf{Atlas} description of the normal subgroups of the maximal overgroups of $S$. For example, the subgroup $S$ listed for $Co_2$ is contained in maximal subgroups of the types $2^{1+8}_+:S_6(2)$ and $2^{4+10}(S_4 \times S_3)$, so $S$ has normal subgroups of the orders $2$, $2^4$, $2^9$, $2^{14}$, and $2^{16}$; more \textsf{Atlas} conformal notations would be $2^{[14]}(S_4 \times S_3)$ or $2^{[16]}(S_3 \times S_3)$. 

 As a corollary (see Section{\nobreakspace}\ref{sect:corollary}), we read off the following. 

 Corollary: 

 Exactly the following almost simple groups $G$ with sporadic simple socle contain a solvable subgroup $S$ with the property $|S|^2 \geq |G|$. 
\[ Fi_{23}, J_2, J_2.2, M_{11}, M_{12}, M_{22}.2. \]
 

 The existence of the subgroups $S$ of $G$ with the structure and the order stated in Table{\nobreakspace}I
and{\nobreakspace}II follows from the \textsf{Atlas}: It is obvious in the cases where $S$ is maximal in $G$, and in the other cases, the \textsf{Atlas} information about a nonsolvable factor group of a maximal subgroup of $G$ suffices. 

 In order to show that the table rows for the group $G$ are correct, we have to show the following. 
\begin{itemize}
\item  $G$ does not contain solvable subgroups of order larger than $|S|$. 
\item  $G$ contain exactly the conjugacy classes of solvable subgroups of order $|S|$ that are listed in the second column of Table{\nobreakspace}II. 
\item  $S$ is contained exactly in the maximal subgroups listed in the third column of
Table{\nobreakspace}II. 
\end{itemize}
 

 \emph{Remark:} 
\begin{itemize}
\item  Each of the groups $M_{12}$ and $He$ contains two classes of isomorphic solvable subgroups of maximal order. 
\item  Each of the groups $Ru$, $Th$, and $M$ contains two classes of nonisomorphic solvable subgroups of maximal order. 
\item  The solvable subgroups of maximal order in $McL.2$ have the structure $3^{1+4}_+:4S_4$, the subgroups are maximal in the maximal subgroups of the structures $3^{1+4}_+:4S_5$ and $U_4(3).2_3$ in $McL.2$. Note that the \textsf{Atlas} claims another structure for these maximal subgroups of $U_4(3).2_3$, see{\nobreakspace}\cite[p. 52]{CCN85}. 
\item  The solvable subgroups of maximal order in $Co_3$ are the normalizers of Sylow $3$-subgroups of $Co_3$. 
\end{itemize}
 

 \begin{center}
\begin{tabular}{|l|r|r|r|r|r|}\hline
$G$&
$|S|$&
$|G/S|$&
$\log_{|G|}(|S|)$&
p.\\
\hline
\hline
$M_{11}$&
$144$&
$55$&
$0.5536$&
$18$\\
$M_{12}$&
$432$&
$220$&
$0.5294$&
$33$\\
$M_{12}.2$&
$432$&
$440$&
$0.4992$&
$33$\\
$J_1$&
$168$&
$1\,045$&
$0.4243$&
$36$\\
$M_{22}$&
$576$&
$770$&
$0.4888$&
$39$\\
$M_{22}.2$&
$1\,152$&
$770$&
$0.5147$&
$39$\\
$J_2$&
$1\,152$&
$525$&
$0.5295$&
$42$\\
$J_2.2$&
$2\,304$&
$525$&
$0.5527$&
$42$\\
$M_{23}$&
$1\,152$&
$8\,855$&
$0.4368$&
$71$\\
$HS$&
$2\,000$&
$22\,176$&
$0.4316$&
$80$\\
$HS.2$&
$4\,000$&
$22\,176$&
$0.4532$&
$80$\\
$J_3$&
$1\,944$&
$25\,840$&
$0.4270$&
$82$\\
$J_3.2$&
$3\,888$&
$25\,840$&
$0.4486$&
$82$\\
$M_{24}$&
$13\,824$&
$17\,710$&
$0.4935$&
$96$\\
$McL$&
$11\,664$&
$77\,000$&
$0.4542$&
$100$\\
$McL.2$&
$23\,328$&
$77\,000$&
$0.4719$&
$100$\\
$He$&
$13\,824$&
$291\,550$&
$0.4310$&
$104$\\
$He.2$&
$18\,432$&
$437\,325$&
$0.4305$&
$104$\\
$Ru$&
$49\,152$&
$2\,968\,875$&
$0.4202$&
$126$\\
$Suz$&
$139\,968$&
$3\,203\,200$&
$0.4416$&
$131$\\
$Suz.2$&
$279\,936$&
$3\,203\,200$&
$0.4557$&
$131$\\
$O'N$&
$25\,920$&
$17\,778\,376$&
$0.3784$&
$132$\\
$O'N.2$&
$51\,840$&
$17\,778\,376$&
$0.3940$&
$132$\\
$Co_3$&
$69\,984$&
$7\,084\,000$&
$0.4142$&
$134$\\
$Co_2$&
$2\,359\,296$&
$17\,931\,375$&
$0.4676$&
$154$\\
$Fi_{22}$&
$5\,038\,848$&
$12\,812\,800$&
$0.4853$&
$163$\\
$Fi_{22}.2$&
$10\,077\,696$&
$12\,812\,800$&
$0.4963$&
$163$\\
$HN$&
$2\,000\,000$&
$136\,515\,456$&
$0.4364$&
$166$\\
$HN.2$&
$4\,000\,000$&
$136\,515\,456$&
$0.4479$&
$166$\\
$Ly$&
$900\,000$&
$57\,516\,865\,560$&
$0.3562$&
$174$\\
$Th$&
$944\,784$&
$96\,049\,408\,000$&
$0.3523$&
$177$\\
$Fi_{23}$&
$3\,265\,173\,504$&
$1\,252\,451\,200$&
$0.5111$&
$177$\\
$Co_1$&
$84\,934\,656$&
$48\,952\,653\,750$&
$0.4258$&
$183$\\
$J_4$&
$28\,311\,552$&
$3\,065\,023\,459\,190$&
$0.3737$&
$190$\\
$Fi_{24}'$&
$29\,386\,561\,536$&
$42\,713\,595\,724\,800$&
$0.4343$&
$207$\\
$Fi_{24}'.2$&
$58\,773\,123\,072$&
$42\,713\,595\,724\,800$&
$0.4413$&
$207$\\
$B$&
$29\,686\,813\,949\,952$&
$139\,953\,768\,303\,693\,093\,750$&
$0.4007$&
$217$\\
$M$&
$2\,849\,934\,139\,195\,392$&
$283\,521\,437\,805\,098\,363\,752$&
&
\\
&
&
$344\,287\,234\,566\,406\,250$&
$0.2866$&
$234$\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Table I: Solvable subgroups of maximal order {\textendash} orders and indices\end{center}

 

 \begin{center}
\begin{tabular}{|l|l|l|rl|l|}\hline
$G$&
$S$&
Max. overgroups&
\cite{CCN85}&
&
see\\
\hline
\hline
$M_{11}$&
$3^2:Q_8.2$&
$S$&
18&
&
\ref{sect:EASY}\\
$M_{12}$&
$3^2:2S_4$&
$S$&
33&
&
\ref{sect:EASY}\\
&
$3^2:2S_4$&
$S$&
33&
&
\ref{sect:EASY}\\
$M_{12}.2$&
$3^2:2S_4$&
$M_{12}$&
33&
&
\ref{sect:EASY}\\
$J_1$&
$2^3:7:3$&
$S$&
36&
&
\ref{sect:EASY}\\
$M_{22}$&
$2^4:3^2:4$&
$2^4:A_6$&
39&
(4)&
\ref{sect:EASY}\\
$M_{22}.2$&
$2^4:3^2:D_8$&
$2^4:S_6$&
39&
(4)&
\ref{sect:EASY}\\
$J_2$&
$2^{2+4}:(3 \times S_3)$&
$S$&
42&
&
\ref{sect:EASY}\\
$J_2.2$&
$2^{2+4}:(S_3 \times S_3)$&
$S$&
42&
&
\ref{sect:EASY}\\
$M_{23}$&
$2^4:(3 \times A_4):2$&
$2^4:(3 \times A_5):2$,&
71&
(2)&
\ref{sect:EASY}\\
&
&
$2^4:A_7$&
&
(10)&
\\
$HS$&
$5^{1+2}_+:8:2$&
$U_3(5).2$&
80&
(34)&
\ref{sect:EASY}\\
&
&
$U_3(5).2$&
&
&
\ref{sect:EASY}\\
$HS.2$&
$5^{1+2}_+:[2^5]$&
$S$&
80&
(34)&
\ref{sect:EASY}\\
$J_3$&
$3^2.3^{1+2}_+:8$&
$S$&
82&
&
\ref{sect:EASY}\\
$J_3.2$&
$3^2.3^{1+2}_+:QD_{16}$&
$S$&
82&
&
\ref{sect:EASY}\\
$M_{24}$&
$2^6:3^{1+2}_+:D_8$&
$2^6:3.S_6$&
96&
(4)&
\ref{sect:EASY}\\
$McL$&
$3^{1+4}_+:2S_4$&
$3^{1+4}_+:2S_5$,&
100&
(2)&
\ref{sect:EASY}\\
&
&
$U_4(3)$&
&
(52)&
\ref{sect:EASY}\\
$McL.2$&
$3^{1+4}_+:4S_4$&
$3^{1+4}_+:4S_5$,&
100&
(2)&
\ref{sect:EASY}\\
&
&
$U_4(3).2_3$&
&
(52)&
\ref{sect:EASY}\\
$He$&
$2^6:3^{1+2}_+:D_8$&
$2^6:3.S_6$&
104&
(4)&
\ref{sect:EASY}\\
&
$2^6:3^{1+2}_+:D_8$&
$2^6:3.S_6$&
&
(4)&
\ref{sect:EASY}\\
$He.2$&
$2^{4+4}.(S_3 \times S_3).2$&
$S$&
104&
&
\ref{sect:EASY}\\
$Ru$&
$2.2^{4+6}:S_4$&
$2^{3+8}:L_3(2)$,&
126&
(3)&
\ref{sect:Ru}\\
&
&
$2.2^{4+6}:S_5$&
&
(2)&
\\
&
$2^{3+8}:S_4$&
$2^{3+8}:L_3(2)$,&
&
(3)&
\ref{sect:Ru}\\
$Suz$&
$3^{2+4}:2(A_4 \times 2^2).2$&
$S$&
131&
&
\ref{sect:Suz}\\
$Suz.2$&
$3^{2+4}:2(S_4 \times D_8)$&
$S$&
131&
&
\ref{sect:Suz}\\
$O'N$&
$3^4:2^{1+4}_-D_{10}$&
$S$&
132&
&
\ref{sect:ON}\\
$O'N.2$&
$3^4:2^{1+4}_-.(5:4)$&
$S$&
132&
&
\ref{sect:ON}\\
$Co_3$&
$3^{1+4}_+:4.3^2:D_8$&
$3^{1+4}_+:4S_6$&
134&
(4)&
\ref{sect:EASY}\\
&
&
$3^5:(2 \times M_{11})$&
&
(18)&
\\
$Co_2$&
$2^{4+10}(S_4 \times S_3)$&
$2^{1+8}_+:S_6(2)$,&
154&
(46)&
\ref{sect:Co2}\\
&
&
$2^{4+10}(S_5 \times S_3)$&
&
(2)&
\\
$Fi_{22}$&
$3^{1+6}_+:2^{3+4}:3^2:2$&
$S$&
163&
&
\ref{sect:Fi22}\\
$Fi_{22}.2$&
$3^{1+6}_+:2^{3+4}:(S_3 \times S_3)$&
$S$&
163&
&
\ref{sect:Fi22}\\
$HN$&
$5^{1+4}_+:2^{1+4}_-.5.4$&
$S$&
166&
&
\ref{sect:HN}\\
$HN.2$&
$5^{1+4}_+:(4 Y 2^{1+4}_-.5.4)$&
$S$&
166&
&
\ref{sect:HN}\\
$Ly$&
$5^{1+4}_+:4.3^2:D_8$&
$5^{1+4}_+:4S_6$&
174&
(4)&
\ref{sect:Ly}\\
$Th$&
$[3^9].2S_4$&
$S$&
177&
&
\ref{sect:Th}\\
&
$3^2.[3^7].2S_4$&
$S$&
&
&
\\
$Fi_{23}$&
$3^{1+8}_+.2^{1+6}_-.3^{1+2}_+.2S_4$&
$S$&
177&
&
\ref{sect:Fi23}\\
$Co_1$&
$2^{4+12}.(S_3 \times 3^{1+2}_+:D_8)$&
$2^{4+12}.(S_3 \times 3S_6)$&
183&
&
\ref{sect:Co1}\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Table II: Solvable subgroups of maximal order {\textendash} structures and
overgroups\end{center}

 

 \begin{center}
\begin{tabular}{|l|l|l|rl|l|}\hline
$G$&
$S$&
Max. overgroups&
\cite{CCN85}&
&
see\\
\hline
\hline
$J_4$&
$2^{11}:2^6:3^{1+2}_+:D_8$&
$2^{11}:M_{24}$,&
190&
(96)&
\ref{sect:J4}\\
&
&
$2^{1+12}_+.3M_{22}:2$&
&
(39)&
\\
$Fi_{24}'$&
$3^{1+10}_+:2^{1+6}_-:3^{1+2}_+:2S_4$&
$3^{1+10}_+:U_5(2):2$&
207&
(73)&
\ref{sect:F3+}\\
$Fi_{24}'.2$&
$3^{1+10}_+:(2 \times 2^{1+6}_-:3^{1+2}_+:2S_4)$&
$3^{1+10}_+:(2 \times U_5(2):2)$&
207&
(73)&
\ref{sect:F3+}\\
$B$&
$2^{2+10+20}(2^4:3^2:D_8 \times S_3)$&
$2^{2+10+20}(M_{22}:2 \times S_3)$,&
217&
(39)&
\ref{sect:B}\\
&
&
$2^{9+16}S_8(2)$&
&
(123)&
\\
$M$&
$2^{1+2+6+12+18}.(S_4 \times 3^{1+2}_+:D_8)$&
$2^{[39]}.(L_3(2) \times 3S_6)$,&
234&
(3, 4)&
\ref{sect:M}\\
&
&
$2^{1+24}_+.Co_1$&
&
(183)&
\\
&
$2^{2+1+6+12+18}.(S_4 \times 3^{1+2}_+:D_8)$&
$2^{[39]}.(L_3(2) \times 3S_6)$,&
&
(3, 4)&
\ref{sect:M}\\
&
&
$2^{2+11+22}.(M_{24} \times S_3)$&
&
(96)&
\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Table II: Solvable subgroups of maximal order {\textendash} structures and
overgroups (continued)\end{center}

 }

  
\section{\textcolor{Chapter }{The Approach}}\label{sect:approach}
\logpage{[ 6, 2, 0 ]}
\hyperdef{L}{X876F77197B2FB84A}{}
{
  We combine the information in the \textsf{Atlas}{\nobreakspace}\cite{CCN85} with explicit computations using the \textsf{GAP} system{\nobreakspace}\cite{GAP}, in particular its Character Table Library{\nobreakspace}\cite{CTblLib} and its library of Tables of Marks{\nobreakspace}\cite{TomLib}. First we load these two packages. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "CTblLib", "1.2", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "TomLib", false );|
  true
\end{Verbatim}
 

 The orders of solvable subgroups of maximal order will be collected in a
global record \texttt{MaxSolv}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv:= rec();;|
\end{Verbatim}
  
\subsection{\textcolor{Chapter }{Use the Table of Marks}}\label{sect:Use the Table of Marks}
\logpage{[ 6, 2, 1 ]}
\hyperdef{L}{X792957AB7B24C5E0}{}
{
  If the \textsf{GAP} library of Tables of Marks{\nobreakspace}\cite{TomLib} contains the table of marks of a group $G$ then we can easily inspect all conjugacy classes of subgroups of $G$. The following small \textsf{GAP} function can be used for that. It returns \texttt{false} if the table of marks of the group with the name \texttt{name} is not available, and the list \texttt{[ name, n, super ]} otherwise, where \texttt{n} is the maximal order of solvable subgroups of $G$, and \texttt{super} is a list of lists; for each conjugacy class of solvable subgroups $S$ of order \texttt{n}, \texttt{super} contains the list of orders of representatives $M$ of the classes of maximal subgroups of $G$ such that $M$ contains a conjugate of $S$. 

 Note that a subgroup in the $i$-th class of a table of marks contains a subgroup in the $j$-th class if and only if the entry in the position $(i,j)$ of the table of marks is nonzero. For tables of marks objects in \textsf{GAP}, this is the case if and only if $j$ is contained in the $i$-th row of the list that is stored as the value of the attribute \texttt{SubsTom} of the table of marks object; for this test, one need not unpack the matrix of
marks. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaximalSolvableSubgroupInfoFromTom:= function( name )|
  !gapprompt@>| !gapinput@    local tom,          # table of marks for `name'|
  !gapprompt@>| !gapinput@          n,            # maximal order of a solvable subgroup|
  !gapprompt@>| !gapinput@          maxsubs,      # numbers of the classes of subgroups of order `n'|
  !gapprompt@>| !gapinput@          orders,       # list of orders of the classes of subgroups|
  !gapprompt@>| !gapinput@          i,            # loop over the classes of subgroups|
  !gapprompt@>| !gapinput@          maxes,        # list of positions of the classes of max. subgroups|
  !gapprompt@>| !gapinput@          subs,         # `SubsTom' value|
  !gapprompt@>| !gapinput@          cont;         # list of list of positions of max. subgroups|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    tom:= TableOfMarks( name );|
  !gapprompt@>| !gapinput@    if tom = fail then|
  !gapprompt@>| !gapinput@      return false;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    n:= 1;|
  !gapprompt@>| !gapinput@    maxsubs:= [];|
  !gapprompt@>| !gapinput@    orders:= OrdersTom( tom );|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( orders ) ] do|
  !gapprompt@>| !gapinput@      if IsSolvableTom( tom, i ) then|
  !gapprompt@>| !gapinput@        if orders[i] = n then|
  !gapprompt@>| !gapinput@          Add( maxsubs, i );|
  !gapprompt@>| !gapinput@        elif orders[i] > n then|
  !gapprompt@>| !gapinput@          n:= orders[i];|
  !gapprompt@>| !gapinput@          maxsubs:= [ i ];|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    maxes:= MaximalSubgroupsTom( tom )[1];|
  !gapprompt@>| !gapinput@    subs:= SubsTom( tom );|
  !gapprompt@>| !gapinput@    cont:= List( maxsubs, j -> Filtered( maxes, i -> j in subs[i] ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return [ name, n, List( cont, l -> orders{ l } ) ];|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Use Information from the Character Table Library}}\label{sect:Use Information from the Character Table Library}
\logpage{[ 6, 2, 2 ]}
\hyperdef{L}{X7B39A4467A1CCF8A}{}
{
  The \textsf{GAP} Character Table Library contains the character tables of all maximal subgroups
of sporadic simple groups, except for the Monster group. This information can
be used as follows. 

 We start, for a sporadic simple group $G$, with a known solvable subgroup of order $n$, say, in $G$. In order to show that $G$ contains no solvable subgroup of larger order, it suffices to show that no
maximal subgroup of $G$ contains a larger solvable subgroup. 

 The point is that usually the orders of the maximal subgroups of $G$ are not much larger than $n$, and that a maximal subgroup $M$ contains a solvable subgroup of order $n$ only if the factor group of $M$ by its largest solvable normal subgroup $N$ contains a solvable subgroup of order $n/|N|$. This reduces the question to relatively small groups. 

 What we can check \emph{automatically} from the character table of $M/N$ is whether $M/N$ can contain subgroups (solvable or not) of indices between five and $|M|/n$, by computing possible permutation characters of these degrees. (Note that a
solvable subgroup of a nonsolvable group has index at least five. This lower
bound could be improved for example by considering the smallest degree of a
nontrivial character, but this is not an issue here.) 

 Then we are left with a {\textendash}hopefully short{\textendash} list of
maximal subgroups of $G$, together with upper bounds on the indices of possible solvable subgroups;
excluding these possibilities then yields that the initially chosen solvable
subgroup of $G$ is indeed the largest one. 

 The following \textsf{GAP} function can be used to compute this information for the character table \texttt{tblM} of $M$ and a given order \texttt{minorder}. It returns \texttt{false} if $M$ cannot contain a solvable subgroup of order at least \texttt{minorder}, otherwise a list \texttt{[ tblM, m, k ]} where \texttt{m} is the maximal index of a subgroup that has order at least \texttt{minorder}, and \texttt{k} is the minimal index of a possible subgroup of $M$ (a proper subgroup if $M$ is nonsolvable), according to the \textsf{GAP} function \texttt{PermChars} (\textbf{Reference: PermChars}). 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SolvableSubgroupInfoFromCharacterTable:= function( tblM, minorder )|
  !gapprompt@>| !gapinput@    local maxindex,  # index of subgroups of order `minorder'|
  !gapprompt@>| !gapinput@          N,         # class positions describing a solvable normal subgroup|
  !gapprompt@>| !gapinput@          fact,      # character table of the factor by `N'|
  !gapprompt@>| !gapinput@          classes,   # class sizes in `fact'|
  !gapprompt@>| !gapinput@          nsg,       # list of class positions of normal subgroups|
  !gapprompt@>| !gapinput@          i;         # loop over the possible indices|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    maxindex:= Int( Size( tblM ) / minorder );|
  !gapprompt@>| !gapinput@    if   maxindex = 0 then|
  !gapprompt@>| !gapinput@      return false;|
  !gapprompt@>| !gapinput@    elif IsSolvableCharacterTable( tblM ) then|
  !gapprompt@>| !gapinput@      return [ tblM, maxindex, 1 ];|
  !gapprompt@>| !gapinput@    elif maxindex < 5 then|
  !gapprompt@>| !gapinput@      return false;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    N:= [ 1 ];|
  !gapprompt@>| !gapinput@    fact:= tblM;|
  !gapprompt@>| !gapinput@    repeat|
  !gapprompt@>| !gapinput@      fact:= fact / N;|
  !gapprompt@>| !gapinput@      classes:= SizesConjugacyClasses( fact );|
  !gapprompt@>| !gapinput@      nsg:= Difference( ClassPositionsOfNormalSubgroups( fact ), [ [ 1 ] ] );|
  !gapprompt@>| !gapinput@      N:= First( nsg, x -> IsPrimePowerInt( Sum( classes{ x } ) ) );|
  !gapprompt@>| !gapinput@    until N = fail;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    for i in Filtered( DivisorsInt( Size( fact ) ),|
  !gapprompt@>| !gapinput@                       d -> 5 <= d and d <= maxindex ) do|
  !gapprompt@>| !gapinput@      if Length( PermChars( fact, rec( torso:= [ i ] ) ) ) > 0 then|
  !gapprompt@>| !gapinput@        return [ tblM, maxindex, i ];|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return false;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Cases where the Table of Marks is available in \textsf{GAP}}}\label{sect:EASY}
\logpage{[ 6, 3, 0 ]}
\hyperdef{L}{X834298A87BF43AAF}{}
{
  For twelve sporadic simple groups, the \textsf{GAP} library of Tables of Marks knows the tables of marks, so we can use \texttt{MaximalSolvableSubgroupInfoFromTom}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@solvinfo:= Filtered( List(|
  !gapprompt@>| !gapinput@        AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                                IsDuplicateTable, false ),|
  !gapprompt@>| !gapinput@        MaximalSolvableSubgroupInfoFromTom ), x -> x <> false );;|
  !gapprompt@gap>| !gapinput@for entry in solvinfo do|
  !gapprompt@>| !gapinput@     MaxSolv.( entry[1] ):= entry[2];|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@for entry in solvinfo do                                 |
  !gapprompt@>| !gapinput@     Print( String( entry[1], 5 ), String( entry[2], 7 ),|
  !gapprompt@>| !gapinput@            String( entry[3], 28 ), "\n" );|
  !gapprompt@>| !gapinput@   od;|
    Co3  69984     [ [ 3849120, 699840 ] ]
     HS   2000      [ [ 252000, 252000 ] ]
     He  13824  [ [ 138240 ], [ 138240 ] ]
     J1    168                 [ [ 168 ] ]
     J2   1152                [ [ 1152 ] ]
     J3   1944                [ [ 1944 ] ]
    M11    144                 [ [ 144 ] ]
    M12    432        [ [ 432 ], [ 432 ] ]
    M22    576                [ [ 5760 ] ]
    M23   1152         [ [ 40320, 5760 ] ]
    M24  13824              [ [ 138240 ] ]
    McL  11664      [ [ 3265920, 58320 ] ]
\end{Verbatim}
 

 We see that for $J_1$, $J_2$, $J_3$, $M_{11}$, and $M_{12}$, the subgroup $S$ is maximal. For $M_{12}$ and $He$, there are two classes of subgroups $S$. For the other groups, the class of subgroups $S$ is unique, and there are one or two classes of maximal subgroups of $G$ that contain $S$. From the shown orders of these maximal subgroups, their structures can be
read off from the \textsf{Atlas}, on the pages listed in Table{\nobreakspace}II. 

 Similarly, the \textsf{Atlas} tells us about the extensions of the subgroups $S$ in Aut$(G)$. In particular, 
\begin{itemize}
\item  the order $2\,000$ subgroups of $HS$ are contained in maximal subgroups of the type $U_3(5).2$ (two classes) which do not extend to $HS.2$, but there are novelties of the type $5^{1+2}_+:[2^5]$ and of the order $4\,000$, so the solvable subgroups of maximal order in $HS$ do in fact extend to $HS.2$. 
\item  the order $13\,824$ subgroups of $He$ are contained in maximal subgroups of the type $2^6:3S_6$ (two classes) which do not extend to $He.2$, but there are novelties of the type $2^{4+4}.(S_3 \times S_3).2$ and of the order $18\,432$. (So the solvable subgroups $S$ of maximal order in $He$ do not extend to $He.2$ but there are larger solvable subgroups in $He.2$.) 

 We inspect the maximal subgroups of $He.2$ in order to show that these are in fact the solvable subgroups of maximal
order (see{\nobreakspace}\cite[p. 104]{CCN85}): Any other solvable subgroup of order at least $n$ in $He.2$ must be contained in a subgroup of one of the types $S_4(4).4$ (of index at most $212$), $2^2.L_3(4).D_{12}$ (of index at most $52$), or $2^{1+6}_+.L_3(2).2$ (of index at most $2$). By{\nobreakspace}\cite[pp. 44, 23, 3]{CCN85}, this is not the case. 
\item  the maximal subgroups of order $1\,152$ in $J_2$ extend to subgroups of order $2\,304$ in $J_2.2$. 
\item  the maximal subgroups of order $1\,944$ in $J_3$ extend to subgroups of the type $3^2.3^{1+2}_+:8.2$ and of order $3888$ in $J_3.2$. (The structure stated in{\nobreakspace}\cite[p. 82]{CCN85} is not correct, see{\nobreakspace}\cite{BN95}.) 
\item  the maximal subgroups of order $432$ in $M_{12}$ (two classes) do \emph{not} extend in $M_{12}.2$, and we see from the table of marks of $M_{12}.2$ that there are no larger solvable subgroups in this group,
i.{\nobreakspace}e., the solvable subgroups of maximal order in $M_{12}.2$ lie in $M_{12}$. 
\item  the order $576$ subgroups of $M_{22}$ are contained in maximal subgroups of the type $2^4:A_6$ which extend to subgroups of the type $2^4:S_6$ in $M_{22}.2$, so the solvable subgroups of maximal order in $M_{22}.2$ have the type $2^4:3^2:D_8$ and the order $1\,152$. In fact the structure is $S_4 \wr S_2$. 
\item  the order $11\,664$ subgroups of $McL$ are contained in maximal subgroups of the type $3^{1+4}_+:2S_5$ which extend to subgroups of the type $3^{1+4}:4S_5$ in $McL.2$, so the solvable subgroups of maximal order in $McL.2$ have the type $3^{1+4}:4S_4$ and the order $23\,328$. 
\end{itemize}
 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "HS.2" ):= 2 * MaxSolv.( "HS" );;|
  !gapprompt@gap>| !gapinput@n:= 2^(4+4) * ( 6 * 6 ) * 2;  MaxSolv.( "He.2" ):= n;;|
  18432
  !gapprompt@gap>| !gapinput@List( [ Size( CharacterTable( "S4(4).4" ) ),|
  !gapprompt@>| !gapinput@           Factorial( 5 )^2 * 2,|
  !gapprompt@>| !gapinput@           Size( CharacterTable( "2^2.L3(4).D12" ) ),|
  !gapprompt@>| !gapinput@           2^7 * Size( CharacterTable( "L3(2)" ) ) * 2,|
  !gapprompt@>| !gapinput@           7^2 * 2 * Size( CharacterTable( "L2(7)" ) ) * 2,|
  !gapprompt@>| !gapinput@           3 * Factorial( 7 ) * 2 ], i -> Int( i / n ) );|
  [ 212, 1, 52, 2, 1, 1 ]
  !gapprompt@gap>| !gapinput@MaxSolv.( "J2.2" ):= 2 * MaxSolv.( "J2" );;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "J3.2" ):= 2 * MaxSolv.( "J3" );;|
  !gapprompt@gap>| !gapinput@info:= MaximalSolvableSubgroupInfoFromTom( "M12.2" );|
  [ "M12.2", 432, [ [ 95040 ] ] ]
  !gapprompt@gap>| !gapinput@MaxSolv.( "M12.2" ):= info[2];;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "M22.2" ):= 2 * MaxSolv.( "M22" );;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "McL.2" ):= 2 * MaxSolv.( "McL" );;|
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Cases where the Table of Marks is not available in \textsf{GAP}}}\label{sect:Cases where the Table of Marks is not available in GAP}
\logpage{[ 6, 4, 0 ]}
\hyperdef{L}{X85559C0F7AA73E48}{}
{
 \texttt{\symbol{125}} We use the \textsf{GAP} function \texttt{SolvableSubgroupInfoFromCharacterTable}, and individual arguments. In several cases, information about smaller
sporadic simple groups is needed, so we deal with the groups in increasing
order.  
\subsection{\textcolor{Chapter }{$G = Ru$}}\label{sect:Ru}
\logpage{[ 6, 4, 1 ]}
\hyperdef{L}{X7E393459822E78B5}{}
{
  The group $Ru$ contains exactly two conjugacy classes of nonisomorphic solvable subgroups of
order $n = 49\,152$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Ru" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 49152;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "2^3+8:L3(2)" ), 7, 7 ], 
    [ CharacterTable( "2.2^4+6:S5" ), 5, 5 ] ]
\end{Verbatim}
 

 The maximal subgroups of the structure $2.2^{4+6}:S_5$ in $Ru$ contain one class of solvable subgroups of order $n$ and with the structure $2.2^{4+6}:S_4$, see{\nobreakspace}\cite[p. 126, p. 2]{CCN85}. 

 The maximal subgroups of the structure $2^{3+8}:L_3(2)$ in $Ru$ contain two classes of solvable subgroups of order $n$ and with the structure $2^{3+8}:S_4$, see{\nobreakspace}\cite[p. 126, p. 3]{CCN85}. These groups are the stabilizers of vectors and two-dimensional subspaces,
respectively, in the three-dimensional submodule; note that each $2^{3+8}:L_3(2)$ type subgroup $H$ of $Ru$ is the normalizer of an elementary abelian group of order eight all of whose
involutions are in the $Ru$-class \texttt{2A} and are conjugate in $H$. Since the $2.2^{4+6}:S_5$ type subgroups of $Ru$ are the normalizers of \texttt{2A}-elements in $Ru$, the groups in one of the two classes in question coincide with the largest
solvable subgroups in the $2.2^{4+6}:S_5$ type subgroups. The groups in the other class do not centralize a \texttt{2A}-element in $Ru$ and are therefore not isomorphic with the $2.2^{4+6}:S_4$ type groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Ru" ):= n;;|
  !gapprompt@gap>| !gapinput@s:= info[1][1];;|
  !gapprompt@gap>| !gapinput@cls:= SizesConjugacyClasses( s );;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( s ),|
  !gapprompt@>| !gapinput@                   x -> Sum( cls{ x } ) = 2^3 );|
  [ [ 1, 2 ] ]
  !gapprompt@gap>| !gapinput@cls{ nsg[1] };|
  [ 1, 7 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ){ nsg[1] };|
  [ 1, 2 ]
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Suz$}}\label{sect:Suz}
\logpage{[ 6, 4, 2 ]}
\hyperdef{L}{X7AFF09337CCB7745}{}
{
  The group $Suz$ contains a unique conjugacy class of solvable subgroups of order $n = 139\,968$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Suz" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 139968;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "G2(4)" ), 1797, 416 ], 
    [ CharacterTable( "3_2.U4(3).2_3'" ), 140, 72 ], 
    [ CharacterTable( "3^5:M11" ), 13, 11 ], 
    [ CharacterTable( "2^4+6:3a6" ), 7, 6 ], 
    [ CharacterTable( "3^2+4:2(2^2xa4)2" ), 1, 1 ] ]
\end{Verbatim}
 

 The maximal subgroups $S$ of the structure $3^{2+4}:2(A_4 \times 2^2).2$ in $Suz$ are solvable and have order $n$, see{\nobreakspace}\cite[p. 131]{CCN85}. 

 In order to show that $Suz$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $G_2(4)$ of index at most $1\,797$ (see{\nobreakspace}\cite[p. 97]{CCN85}), in $U_4(3).2_3^{\prime}$ of index at most $140$ (see{\nobreakspace}\cite[p. 52]{CCN85}), in $M_{11}$ of index at most $13$ (see{\nobreakspace}\cite[p. 18]{CCN85}), and in $A_6$ of index at most $7$ (see{\nobreakspace}\cite[p. 4]{CCN85}). 

 The group $S$ extends to a group of the structure $3^{2+4}:2(S_4 \times D_8)$ in the automorphism group $Suz.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Suz" ):= n;;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "Suz.2" ):= 2 * n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = ON$}}\label{sect:ON}
\logpage{[ 6, 4, 3 ]}
\hyperdef{L}{X7969AE067D3862A3}{}
{
  The group $ON$ contains a unique conjugacy class of solvable subgroups of order $25\,920$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "ON" );;                                            |
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 25920;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "L3(7).2" ), 144, 114 ], 
    [ CharacterTable( "ONM2" ), 144, 114 ], 
    [ CharacterTable( "3^4:2^(1+4)D10" ), 1, 1 ] ]
\end{Verbatim}
 

 The maximal subgroups $S$ of the structure $3^4:2^{1+4}_-D_{10}$ in $ON$ are solvable and have order $n$, see{\nobreakspace}\cite[pp. 132]{CCN85}. 

 In order to show that $ON$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $L_3(7).2$ of index at most $144$ (see{\nobreakspace}\cite[p. 50]{CCN85}); note that the groups in the second class of maximal subgroups of $ON$ are isomorphic with $L_3(7).2$. 

 The group $S$ extends to a group of order $|S.2|$ in the automorphism group $ON.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "ON" ):= n;;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "ON.2" ):= 2 * n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Co_2$}}\label{sect:Co2}
\logpage{[ 6, 4, 4 ]}
\hyperdef{L}{X84921B85845EDA31}{}
{
  The group $Co_2$ contains a unique conjugacy class of solvable subgroups of order $2\,359\,296$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Co2" );;                                           |
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 2359296;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "U6(2).2" ), 7796, 672 ], 
    [ CharacterTable( "2^10:m22:2" ), 385, 22 ], 
    [ CharacterTable( "McL" ), 380, 275 ], 
    [ CharacterTable( "2^1+8:s6f2" ), 315, 28 ], 
    [ CharacterTable( "2^1+4+6.a8" ), 17, 8 ], 
    [ CharacterTable( "U4(3).D8" ), 11, 8 ], 
    [ CharacterTable( "2^(4+10)(S5xS3)" ), 5, 5 ] ]
\end{Verbatim}
 

 The maximal subgroups of the structure $2^{4+10}(S_5 \times S_3)$ in $Co_2$ contain solvable subgroups $S$ of order $n$ and with the structure $2^{4+10}(S_4 \times S_3)$, see{\nobreakspace}\cite[p. 154]{CCN85}. 

 The subgroups $S$ are contained also in the maximal subgroups of the type $2^{1+8}_+:S_6(2)$; note that the $2^{1+8}_+:S_6(2)$ type subgroups are described as normalizers of elements in the $Co_2$-class \texttt{2A}, and $S$ normalizes an elementary abelian group of order $16$ containing an $S$-class of length five that is contained in the $Co_2$-class \texttt{2A}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= info[7][1];|
  CharacterTable( "2^(4+10)(S5xS3)" )
  !gapprompt@gap>| !gapinput@cls:= SizesConjugacyClasses( s );;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( s ),|
  !gapprompt@>| !gapinput@                   x -> Sum( cls{ x } ) = 2^4 );|
  [ [ 1, 2, 3 ] ]
  !gapprompt@gap>| !gapinput@cls{ nsg[1] };|
  [ 1, 5, 10 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ){ nsg[1] };|
  [ 1, 2, 3 ]
\end{Verbatim}
 

 The stabilizers of these involutions in $2^{4+10}(S_5 \times S_3)$ have index five, they are solvable, and they are contained in $2^{1+8}_+:S_6(2)$ type subgroups, so they are $Co_2$-conjugates of $S$. (The corresponding subgroups of $S_6(2)$ are maximal and have the type $2.[2^6]:(S_3 \times S_3)$.) 

 In order to show that $G$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $U_6(2)$ of index at most $7\,796$ (see{\nobreakspace}\cite[p. 115]{CCN85}), in $M_{22}.2$ of index at most $385$ (see{\nobreakspace}\cite[p. 39]{CCN85} or Section{\nobreakspace}\ref{sect:EASY}), in $McL$ of index at most $380$ (see{\nobreakspace}\cite[p. 100]{CCN85} or Section{\nobreakspace}\ref{sect:EASY}), in $A_8$ of index at most $17$ (see{\nobreakspace}\cite[p. 20]{CCN85}), and in $U_4(3).D_8$ of index at most $11$ (see{\nobreakspace}\cite[p. 52]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Co2" ):= n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Fi_{22}$}}\label{sect:Fi22}
\logpage{[ 6, 4, 5 ]}
\hyperdef{L}{X7D777A0D82BE8498}{}
{
  The group $Fi_{22}$ contains a unique conjugacy class of solvable subgroups of order $5\,038\,848$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Fi22" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 5038848;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "2.U6(2)" ), 3650, 672 ], 
    [ CharacterTable( "O7(3)" ), 910, 351 ], 
    [ CharacterTable( "Fi22M3" ), 910, 351 ], 
    [ CharacterTable( "O8+(2).3.2" ), 207, 6 ], 
    [ CharacterTable( "2^10:m22" ), 90, 22 ], 
    [ CharacterTable( "3^(1+6):2^(3+4):3^2:2" ), 1, 1 ] ]
\end{Verbatim}
 

 The maximal subgroups $S$ of the structure $3^{1+6}:2^{3+4}:3^2:2$ in $Fi_{22}$ are solvable and have order $n$, see{\nobreakspace}\cite[p. 163]{CCN85}. 

 In order to show that $Fi_{22}$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $U_6(2)$ of index at most $3\,650$ (see{\nobreakspace}\cite[p. 115]{CCN85}), in $O_7(3)$ of index at most $910$ (see{\nobreakspace}\cite[p. 109]{CCN85}), in $O_8^+(2).S_3$ of index at most $207$ (see{\nobreakspace}\cite[p. 85]{CCN85}), and in $M_{22}.2$ of index at most $90$ (see{\nobreakspace}\cite[p. 39]{CCN85} or Section{\nobreakspace}\ref{sect:EASY}); note that the groups in the third class of maximal subgroups of $Fi_{22}$ are isomorphic with $O_7(3)$. 

 The group $S$ extends to a group of order $|S.2|$ in the automorphism group $Fi_{22}.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Fi22" ):= n;;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "Fi22.2" ):= 2 * n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = HN$}}\label{sect:HN}
\logpage{[ 6, 4, 6 ]}
\hyperdef{L}{X7D9DB76A861A6F62}{}
{
  The group $HN$ contains a unique conjugacy class of solvable subgroups of order $2\,000\,000$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "HN" );; |
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;                               |
  !gapprompt@gap>| !gapinput@n:= 2000000;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "A12" ), 119, 12 ], 
    [ CharacterTable( "5^(1+4):2^(1+4).5.4" ), 1, 1 ] ]
\end{Verbatim}
 

 The maximal subgroups $S$ of the structure $5^{1+4}:2^{1+4}.5.4$ in $HN$ are solvable and have order $n$, see{\nobreakspace}\cite[p. 166]{CCN85}. 

 In order to show that $HN$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $A_{12}$ of index at most $119$ (see{\nobreakspace}\cite[p. 91]{CCN85}). 

 The group $S$ extends to a group of order $|S.2|$ in the automorphism group $HN.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "HN" ):= n;;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "HN.2" ):= 2 * n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Ly$}}\label{sect:Ly}
\logpage{[ 6, 4, 7 ]}
\hyperdef{L}{X83E6436678AF562C}{}
{
  The group $Ly$ contains a unique conjugacy class of solvable subgroups of order $900\,000$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Ly" );;                                            |
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 900000;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "G2(5)" ), 6510, 3906 ], 
    [ CharacterTable( "3.McL.2" ), 5987, 275 ], 
    [ CharacterTable( "5^3.psl(3,5)" ), 51, 31 ], 
    [ CharacterTable( "2.A11" ), 44, 11 ], 
    [ CharacterTable( "5^(1+4):4S6" ), 10, 6 ] ]
\end{Verbatim}
 

 The maximal subgroups of the structure $5^(1+4):4S6$ in $Ly$ contain solvable subgroups $S$ of order $n$ and with the structure $5^{1+4}:4.3^2.D_8$, see{\nobreakspace}\cite[p. 174]{CCN85}. 

 In order to show that $Ly$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $G_2(5)$ of index at most $6\,510$ (see{\nobreakspace}\cite[p. 114]{CCN85}), in $McL.2$ of index at most $5\,987$ (see{\nobreakspace}\cite[p. 100]{CCN85} or Section{\nobreakspace}\ref{sect:EASY}), in $L_3(5)$ of index at most $51$ (see{\nobreakspace}\cite[p. 38]{CCN85}), and in $A_{11}$ of index at most $44$ (see{\nobreakspace}\cite[p. 75]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Ly" ):= n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Th$}}\label{sect:Th}
\logpage{[ 6, 4, 8 ]}
\hyperdef{L}{X7D6CF8EC812EF6FB}{}
{
  The group $Th$ contains exactly two conjugacy classes of nonisomorphic solvable subgroups of
order $n = 944\,784$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Th" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 944784;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "2^5.psl(5,2)" ), 338, 31 ], 
    [ CharacterTable( "2^1+8.a9" ), 98, 9 ], 
    [ CharacterTable( "U3(8).6" ), 35, 6 ], 
    [ CharacterTable( "ThN3B" ), 1, 1 ], 
    [ CharacterTable( "ThM7" ), 1, 1 ] ]
\end{Verbatim}
 

 The maximal subgroups $S$ of the structures $[3^9].2S_4$ and $3^2.[3^7].2S_4$ in $Th$ are solvable and have order $n$, see{\nobreakspace}\cite[p. 177]{CCN85}. 

 In order to show that $Th$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $L_5(2)$ of index at most $338$ (see{\nobreakspace}\cite[p. 70]{CCN85}), in $A_9$ of index at most $98$ (see{\nobreakspace}\cite[p. 37]{CCN85}), and in $U_3(8).6$ of index at most $35$ (see{\nobreakspace}\cite[p. 66]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Th" ):= n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Fi_{23}$}}\label{sect:Fi23}
\logpage{[ 6, 4, 9 ]}
\hyperdef{L}{X7A07090483C935DC}{}
{
  The group $Fi_{23}$ contains a unique conjugacy class of solvable subgroups of order $n = 3\,265\,173\,504$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Fi23" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 3265173504;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "2.Fi22" ), 39545, 3510 ], 
    [ CharacterTable( "O8+(3).3.2" ), 9100, 6 ], 
    [ CharacterTable( "3^(1+8).2^(1+6).3^(1+2).2S4" ), 1, 1 ] ]
\end{Verbatim}
 

 The maximal subgroups $S$ of the structure $3^{1+8}_+.2^{1+6}_-.3^{1+2}_+.2S_4$ in $Fi_{23}$ are solvable and have order $n$, see{\nobreakspace}\cite[p. 177]{CCN85}. 

 In order to show that $Fi_{23}$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $Fi_{22}$ of index at most $39\,545$ (see Section{\nobreakspace}\ref{sect:Fi22}) and in $O_8^+(3).S_3$ of index at most $9\,100$ (see{\nobreakspace}\cite[p. 140]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Fi23" ):= n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Co_1$}}\label{sect:Co1}
\logpage{[ 6, 4, 10 ]}
\hyperdef{L}{X7D028E9E7CB62A4F}{}
{
  The group $Co_1$ contains a unique conjugacy class of solvable subgroups of order $n = 84\,934\,656$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Co1" );;                                           |
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 84934656;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "Co2" ), 498093, 2300 ], 
    [ CharacterTable( "3.Suz.2" ), 31672, 1782 ], 
    [ CharacterTable( "2^11:M24" ), 5903, 24 ], 
    [ CharacterTable( "Co3" ), 5837, 276 ], 
    [ CharacterTable( "2^(1+8)+.O8+(2)" ), 1050, 120 ], 
    [ CharacterTable( "U6(2).3.2" ), 649, 6 ], 
    [ CharacterTable( "2^(2+12):(A8xS3)" ), 23, 8 ], 
    [ CharacterTable( "2^(4+12).(S3x3S6)" ), 10, 6 ] ]
\end{Verbatim}
 

 The maximal subgroups of the structure $2^{4+12}.(S_3 \times 3S_6)$ in $Co_1$ contain solvable subgroups $S$ of order $n$ and with the structure $2^{4+12}.(S_3 \times 3^{1+2}_+:D_8)$, see{\nobreakspace}\cite[p. 183]{CCN85}. 

 In order to show that $Co_1$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $Co_2$ of index at most $498\,093$ (see Section{\nobreakspace}\ref{sect:Co2}), in $Suz.2$ of index at most $31\,672$ (see Section{\nobreakspace}\ref{sect:Suz}), in $M_{24}$ of index at most $5\,903$ (see Section{\nobreakspace}\ref{sect:EASY}), in $Co_3$ of index at most $5\,837$ (see{\nobreakspace}\cite[p. 134]{CCN85} or Section{\nobreakspace}\ref{sect:EASY}), in $O_8^+(2)$ of index at most $1\,050$ (see{\nobreakspace}\cite[p. 185]{CCN85}), in $U_6(2).S_3$ of index at most $649$ (see{\nobreakspace}\cite[p. 115]{CCN85}), and in $A_8$ of index at most $23$ (see{\nobreakspace}\cite[p. 22]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Co1" ):= n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = J_4$}}\label{sect:J4}
\logpage{[ 6, 4, 11 ]}
\hyperdef{L}{X84208AB781344A9D}{}
{
  The group $J_4$ contains a unique conjugacy class of solvable subgroups of order $28\,311\,552$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J4" );; |
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 28311552;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );|
  [ [ CharacterTable( "mx1j4" ), 17710, 24 ], 
    [ CharacterTable( "c2aj4" ), 770, 22 ], 
    [ CharacterTable( "2^10:L5(2)" ), 361, 31 ], 
    [ CharacterTable( "J4M4" ), 23, 5 ] ]
\end{Verbatim}
 

 The maximal subgroups of the structure $2^{11}:M_{24}$ in $J_4$ contain solvable subgroups $S$ of order $n$ and with the structure $2^{11}:2^6:3^{1+2}_+:D_8$, see Section{\nobreakspace}\ref{sect:EASY} and{\nobreakspace}\cite[p. 190]{CCN85}. 

 (The subgroups in the first four classes of maximal subgroups of $J_4$ have the structures $2^{11}:M_{24}$, $2^{1+12}_+.3M_{22}:2$, $2^{10}:L_5(2)$, and $2^{3+12}.(S_5 \times L_3(2))$, in this order.) 

 The subgroups $S$ are contained also in the maximal subgroups of the type $2^{1+12}_+.3M_{22}:2$; note that these subgroups are described as normalizers of elements in the $J_4$-class \texttt{2A}, and $S$ normalizes an elementary abelian group of order $2^{11}$ containing an $S$-class of length $1\,771$ that is contained in the $J_4$-class \texttt{2A}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= info[1][1];|
  CharacterTable( "mx1j4" )
  !gapprompt@gap>| !gapinput@cls:= SizesConjugacyClasses( s );;|
  !gapprompt@gap>| !gapinput@nsg:= Filtered( ClassPositionsOfNormalSubgroups( s ),|
  !gapprompt@>| !gapinput@                   x -> Sum( cls{ x } ) = 2^11 );|
  [ [ 1, 2, 3 ] ]
  !gapprompt@gap>| !gapinput@cls{ nsg[1] };|
  [ 1, 276, 1771 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ){ nsg[1] };|
  [ 1, 3, 2 ]
\end{Verbatim}
 

 The stabilizers of these involutions in $2^{11}:M_{24}$ have index $1\,771$, they have the structure $2^{11}:2^6:3.S_6$, and they are contained in $2^{1+12}_+.3M_{22}:2$ type subgroups; so also $S$, which has index $10$ in $2^{11}:2^6:3.S_6$, is contained in $2^{1+12}_+.3M_{22}:2$. (The corresponding subgroups of $M_{22}:2$ are of course the solvable groups of maximal order described in
Section{\nobreakspace}\ref{sect:EASY}.) 

 In order to show that $G$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $L_5(2)$ of index at most $361$ (see{\nobreakspace}\cite[p. 70]{CCN85}) and in $S_5 \times L_3(2)$ of index at most $23$ (see{\nobreakspace}\cite[pp. 2, 3]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "J4" ):= n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = Fi_{24}^{\prime}$}}\label{sect:F3+}
\logpage{[ 6, 4, 12 ]}
\hyperdef{L}{X7BC589718203F125}{}
{
  The group $Fi_{24}^{\prime}$ contains a unique conjugacy class of solvable subgroups of order $29\,386\,561\,536$, and no larger solvable subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Fi24'" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@n:= 29386561536;;|
  !gapprompt@gap>| !gapinput@info:= List( mx, x -> SolvableSubgroupInfoFromCharacterTable( x, n ) );;|
  !gapprompt@gap>| !gapinput@info:= Filtered( info, IsList );                                        |
  [ [ CharacterTable( "Fi23" ), 139161244, 31671 ], 
    [ CharacterTable( "2.Fi22.2" ), 8787, 3510 ], 
    [ CharacterTable( "(3xO8+(3):3):2" ), 3033, 6 ], 
    [ CharacterTable( "O10-(2)" ), 851, 495 ], 
    [ CharacterTable( "3^(1+10):U5(2):2" ), 165, 165 ], 
    [ CharacterTable( "2^2.U6(2).3.2" ), 7, 6 ] ]
\end{Verbatim}
 

 The maximal subgroups of the structure $3^{1+10}_+:U5(2):2$ in $Fi_{24}^{\prime}$ contain solvable subgroups $S$ of order $n$ and with the structure $3^{1+10}_+:2^{1+6}_-:3^{1+2}_+:2S_4$, see{\nobreakspace}\cite[p. 73, p. 207]{CCN85}. 

 In order to show that $G$ contains no other solvable subgroups of order larger than or equal to $|S|$, we check that there are no solvable subgroups in $Fi_{23}$ of order at least $n$ (see Section{\nobreakspace}\ref{sect:Fi23}), in $Fi_{22}.2$ of order at least $n$ (see Section{\nobreakspace}\ref{sect:Fi22}), in $O_8^+(3).S_3$ of index at most $3\,033$ (see{\nobreakspace}\cite[p. 140]{CCN85}), in $O_{10}^-(2)$ of index at most $851$ (see{\nobreakspace}\cite[p. 147]{CCN85}), and in $U_6(2).S_3$ of index at most $7$ (see{\nobreakspace}\cite[p. 115]{CCN85}). 

 The group $S$ extends to a group of order $|S.2|$ in the automorphism group $Fi_{24}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "Fi24'" ):= n;;|
  !gapprompt@gap>| !gapinput@MaxSolv.( "Fi24'.2" ):= 2 * n;;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$G = B$}}\label{sect:B}
\logpage{[ 6, 4, 13 ]}
\hyperdef{L}{X7EDF990985573EB6}{}
{
  The group $B$ contains a unique conjugacy class of solvable subgroups of order $n = 29\,686\,813\,949\,952$, and no larger solvable subgroups. 

 The maximal subgroups of the structure $2^{2+10+20}(M_{22}:2 \times S_3)$ in $B$ contain solvable subgroups $S$ of order $n$ and with the structure $2^{2+10+20}(2^4:3^2:D_8 \times S_3)$, see{\nobreakspace}\cite[p. 217]{CCN85} and Section{\nobreakspace}\ref{sect:EASY}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n:= 29686813949952;;|
  !gapprompt@gap>| !gapinput@n = 2^(2+10+20) * 2^4 * 3^2 * 8 * 6;|
  true
  !gapprompt@gap>| !gapinput@n = 2^(2+10+20) * MaxSolv.( "M22.2" ) * 6;|
  true
\end{Verbatim}
 

 By{\nobreakspace}\cite[Table 1]{Wil99}, the only maximal subgroups of $B$ of order bigger than $|S|$ have the following structures. 

 \begin{center}
\begin{tabular}{llll}$2.{}^2E_6(2).2$&
$2^{1+22}.Co_2$&
$Fi_{23}$&
$2^{9+16}S_8(2)$\\
$Th$&
$(2^2 \times F_4(2)):2$&
$2^{2+10+20}(M_{22}:2 \times S_3)$&
$2^{5+5+10+10}L_5(2)$\\
$S_3 \times Fi_{22}:2$&
$2^{[35]}(S_5 \times L_3(2))$&
$HN:2$&
$O_8^+(3):S_4$\\
\end{tabular}\\[2mm]
\end{center}

 

 (The character tables of the maximal subgroups of $B$ are meanwhile available in \textsf{GAP}.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( b ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@Filtered( mx, x -> Size( x ) >= n );|
  [ CharacterTable( "2.2E6(2).2" ), CharacterTable( "2^(1+22).Co2" ), 
    CharacterTable( "Fi23" ), CharacterTable( "2^(9+16).S8(2)" ), 
    CharacterTable( "Th" ), CharacterTable( "(2^2xF4(2)):2" ), 
    CharacterTable( "2^(2+10+20).(M22.2xS3)" ), 
    CharacterTable( "[2^30].L5(2)" ), CharacterTable( "S3xFi22.2" ), 
    CharacterTable( "[2^35].(S5xL3(2))" ), CharacterTable( "HN.2" ), 
    CharacterTable( "O8+(3).S4" ) ]
\end{Verbatim}
 

 For the subgroups $2^{1+22}.Co_2$, $Fi_{23}$, $Th$, $S_3 \times Fi_{22}:2$, and $HN:2$, the solvable subgroups of maximal order are known from the previous sections
or can be derived from known values, and are smaller than $n$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( [ 2^(1+22) * MaxSolv.( "Co2" ),|
  !gapprompt@>| !gapinput@           MaxSolv.( "Fi23" ),|
  !gapprompt@>| !gapinput@           MaxSolv.( "Th" ),|
  !gapprompt@>| !gapinput@           6 * MaxSolv.( "Fi22.2" ),|
  !gapprompt@>| !gapinput@           MaxSolv.( "HN.2" ) ], i -> Int( i / n ) );|
  [ 0, 0, 0, 0, 0 ]
\end{Verbatim}
 

 If one of the remaining maximal groups $U$ from the above list has a solvable subgroup of order at least $n$ then the index of this subgroup in $U$ is bounded as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( [ Size( CharacterTable( "2.2E6(2).2" ) ),|
  !gapprompt@>| !gapinput@           2^(9+16) * Size( CharacterTable( "S8(2)" ) ),|
  !gapprompt@>| !gapinput@           2^3 * Size( CharacterTable( "F4(2)" ) ),|
  !gapprompt@>| !gapinput@           2^(2+10+20) * Size( CharacterTable( "M22.2" ) ) * 6,|
  !gapprompt@>| !gapinput@           2^30 * Size( CharacterTable( "L5(2)" ) ),|
  !gapprompt@>| !gapinput@           2^35 * Factorial(5) * Size( CharacterTable( "L3(2)" ) ),|
  !gapprompt@>| !gapinput@           Size( CharacterTable( "O8+(3)" ) ) * 24 ],|
  !gapprompt@>| !gapinput@         i -> Int( i / n ) );|
  [ 10311982931, 53550, 892, 770, 361, 23, 4 ]
\end{Verbatim}
 

 The group $O_8^+(3):S_4$ is nonsolvable, and its order is less than $5 n$, thus its solvable subgroups have orders less than $n$. 

 The largest solvable subgroup of $S_5 \times L_3(2)$ has index $35$, thus the solvable subgroups of $2^{[35]}(S_5 \times L_3(2))$ have orders less than $n$. 

 The groups of type $2^{5+5+10+10}L_5(2)$ cannot contain solvable subgroups of order at least $n$ because $L_5(2)$ has no solvable subgroup of index up to $361$ {\textendash}such a subgroup would be contained in $2^4:L_4(2)$, of index at most $\lfloor 361/31 \rfloor = 11$ (see{\nobreakspace}\cite[p. 70]{CCN85}), and $L_4(2) \cong A_8$ does not have such subgroups (see{\nobreakspace}\cite[p. 22]{CCN85}). 

 The largest proper subgroup of $F_4(2)$ has index $69\,615$ (see{\nobreakspace}\cite[p. 170]{CCN85}), which excludes solvable subgroups of order at least $n$ in $(2^2 \times F_4(2)):2$. 

 Ruling out the group $2.{}^2E_6(2).2$ is more involved. We consider the list of maximal subgroups of ${}^2E_6(2)$ in{\nobreakspace}\cite[p. 191]{CCN85} (which is complete, see{\nobreakspace}\cite{BN95}), and compute the maximal index of a group of order $n/4$; the possible subgroups of ${}^2E_6(2)$ to consider are the following 

 \begin{center}
\begin{tabular}{llll}$2^{1+20}:U_6(2)$&
$2^{8+16}:O_8^-(2)$&
$F_4(2)$&
$2^2.2^9.2^{18}:(L_3(4) \times S_3)$\\
$Fi_{22}$&
$O_{10}^-(2)$&
$2^3.2^{12}.2^{15}:(S_5 \times L_3(2))$&
 \\
\end{tabular}\\[2mm]
\end{center}

 

 (The order of $S_3 \times U_6(2)$ is already smaller than $n/4$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( [ 2^(1+20) * Size( CharacterTable( "U6(2)" ) ),|
  !gapprompt@>| !gapinput@           2^(8+16) * Size( CharacterTable( "O8-(2)" ) ),|
  !gapprompt@>| !gapinput@           Size( CharacterTable( "F4(2)" ) ),|
  !gapprompt@>| !gapinput@           2^(2+9+18) * Size( CharacterTable( "L3(4)" ) ) * 6,|
  !gapprompt@>| !gapinput@           Size( CharacterTable( "Fi22" ) ),|
  !gapprompt@>| !gapinput@           Size( CharacterTable( "O10-(2)" ) ),|
  !gapprompt@>| !gapinput@           2^(3+12+15) * 120 * Size( CharacterTable( "L3(2)" ) ),|
  !gapprompt@>| !gapinput@           6 * Size( CharacterTable( "U6(2)" ) ) ],|
  !gapprompt@>| !gapinput@         i -> Int( i / ( n / 4 ) ) );|
  [ 2598, 446, 446, 8, 8, 3, 2, 0 ]
\end{Verbatim}
 

 The indices of the solvable groups of maximal orders in the groups $U_6(2)$, $O_8^-(2)$, $F_4(2)$, $L_3(4)$, and $Fi_{22}$ are larger than the bounds we get for $n$, see{\nobreakspace}\cite[pp. 115, 89, 170, 23, 163]{CCN85}. 

 It remains to consider the subgroups of the type $2^{9+16}S_8(2)$. The group $S_8(2)$ contains maximal subgroups of the type $2^{3+8}:(S_3 \times S_6)$ and of index $5\,355$ (see{\nobreakspace}\cite[p. 123]{CCN85}), which contain solvable subgroups $S'$ of index $10$. This yields solvable subgroups of order $2^{9+16+3+8} \cdot 6 \cdot 72 = n$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2^(9+16+3+8) * 6 * 72 = n;|
  true
\end{Verbatim}
 

 There are no other solvable subgroups of larger or equal order in $S_8(2)$: We would need solvable subgroups of index at most $446$ in $O_8^-(2):2$, $393$ in $O_8^+(2):2$, $210$ in $S_6(2)$, or $23$ in $A_8$, which is not the case by{\nobreakspace}\cite[pp. 89, 85, 46, 22]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@index:= Int( 2^(9+16) * Size( CharacterTable( "S8(2)" ) ) / n );|
  53550
  !gapprompt@gap>| !gapinput@List( [ 120, 136, 255, 2295 ], i -> Int( index / i ) );|
  [ 446, 393, 210, 23 ]
  !gapprompt@gap>| !gapinput@MaxSolv.( "B" ):= n;;|
\end{Verbatim}
 

 So the $2^{9+16}S_8(2)$ type subgroups of $B$ yield solvable subgroups $S'$ of the type $2^{9+16}.2^{3+8}:(S_3 \times 3^2:D_8)$, and of order $n$. 

 We want to show that $S'$ is a $B$-conjugate of $S$. For that, we first show the following: 

 Lemma: 

 The group $B$ contains exactly two conjugacy classes of Klein four groups whose involutions
lie in the class \texttt{2B}. (We will call these Klein four groups \texttt{2B}-pure.) Their normalizers in $B$ have the orders $22\,858\,846\,741\,463\,040$ and $292\,229\,574\,819\,840$, respectively. 

 \emph{Proof.} Let $V$ be a \texttt{2B}-pure Klein four group in $B$, and set $N = N_B(V)$. Let $x \in V$ be an involution and set $H = C_B(x)$, then $H$ is maximal in $B$ and has the structure $2^{1+22}.Co_2$. The index of $C = C_B(V) = C_H(V)$ in $N$ divides $6$, and $C$ stabilizes the central involution in $H$ and another \texttt{2B} involution. The group $H$ contains exactly four conjugacy classes of \texttt{2B} elements. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@h:= mx[2];|
  CharacterTable( "2^(1+22).Co2" )
  !gapprompt@gap>| !gapinput@pos:= Positions( GetFusionMap( h, b ), 3 );|
  [ 2, 4, 11, 20 ]
\end{Verbatim}
 

 The $B$-classes of \texttt{2B}-pure Klein four groups arise from those of these classes $y^H \subset H$ such that $x \neq y$ holds and $x y$ is a \texttt{2B} element. We compute this subset. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos:= Filtered( Difference( pos, [ 2 ] ), i -> ForAny( pos,|
  !gapprompt@>| !gapinput@            j -> NrPolyhedralSubgroups( h, 2, i, j ).number <> 0 ) );|
  [ 4, 11 ]
\end{Verbatim}
 

 The two classes have lengths $93\,150$ and $7\,286\,400$, thus the index of $C$ in $H$ is one of these numbers. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( h ){ pos };|
  [ 93150, 7286400 ]
\end{Verbatim}
 

 Next we compute the number $n_0$ of \texttt{2B}-pure Klein four groups in $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nr:= NrPolyhedralSubgroups( b, 3, 3, 3 );|
  rec( number := 14399283809600746875, type := "V4" )
  !gapprompt@gap>| !gapinput@n0:= nr.number;;|
\end{Verbatim}
 

 The $B$-conjugacy class of $V$ has length $[B:N] = [B:H] \cdot [H:C] / [N:C]$, where $[N:C]$ divides $6$. We see that $[N:C] = 6$ in both cases. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= List( pos, i -> Size( b ) / SizesCentralizers( h )[i] / 6 );|
  [ 181758140654146875, 14217525668946600000 ]
  !gapprompt@gap>| !gapinput@Sum( cand ) = n0;|
  true
\end{Verbatim}
 

 The orders of the normalizers of the two classes of \texttt{2B}-pure Klein four groups are as claimed. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( cand, x -> Size( b ) / x );|
  [ 22858846741463040, 292229574819840 ]
\end{Verbatim}
 

 The subgroup $S$ of order $n$ is contained in a maximal subgroup $M$ of the type $2^{2+10+20}(M_{22}:2 \times S_3)$ in $B$. The group $M$ is the normalizer of a \texttt{2B}-pure Klein four group in $B$, and the other class of normalizers of \texttt{2B}-pure Klein four groups does not contain subgroups of order $n$. Thus the conjugates of $S$ are uniquely determined by $|S|$ and the property that they normalize \texttt{2B}-pure Klein four groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= mx[7];|
  CharacterTable( "2^(2+10+20).(M22.2xS3)" )
  !gapprompt@gap>| !gapinput@Size( m );|
  22858846741463040
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfMinimalNormalSubgroups( m );|
  [ [ 1, 2 ] ]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( m ){ nsg[1] };|
  [ 1, 3 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( m, b ){ nsg[1] };|
  [ 1, 3 ]
  !gapprompt@gap>| !gapinput@List( cand, x -> Size( b ) / ( n * x ) );|
  [ 770, 315/32 ]
\end{Verbatim}
 

 Now consider the subgroup $S'$ of order $n$, which is contained in a maximal subgroup of the type $2^{9+16}S_8(2)$ in $B$. In order to prove that $S'$ is $B$-conjugate to $S$, it is enough to show that $S'$ normalizes a \texttt{2B}-pure Klein four group. 

 The unique minimal normal subgroup $V$ of $2^{9+16}S_8(2)$ has order $2^8$. Its involutions lie in the class \texttt{2B} of $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= mx[4];|
  CharacterTable( "2^(9+16).S8(2)" )
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfMinimalNormalSubgroups( m );|
  [ [ 1, 2 ] ]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( m ){ nsg[1] };|
  [ 1, 255 ]
  !gapprompt@gap>| !gapinput@GetFusionMap( m, b ){ nsg[1] };|
  [ 1, 3 ]
\end{Verbatim}
 

 The group $V$ is central in the normal subgroup $W = 2^{9+16}$, since all nonidentity elements of $V$ lie in one conjugacy class of odd length. As a module for $S_8(2)$, $V$ is the unique irreducible eight-dimensional module in characteristic two. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CharacterDegrees( CharacterTable( "S8(2)" ) mod 2 );|
  [ [ 1, 1 ], [ 8, 1 ], [ 16, 1 ], [ 26, 1 ], [ 48, 1 ], [ 128, 1 ], 
    [ 160, 1 ], [ 246, 1 ], [ 416, 1 ], [ 768, 1 ], [ 784, 1 ], 
    [ 2560, 1 ], [ 3936, 1 ], [ 4096, 1 ], [ 12544, 1 ], [ 65536, 1 ] ]
\end{Verbatim}
 

 Hence we are done if the restriction of the $S_8(2)$-action on $V$ to $S'/W$ leaves a two-dimensional subspace of $V$ invariant. In fact we show that already the restriction of the $S_8(2)$-action on $V$ to the maximal subgroups of the structure $2^{3+8}:(S_3 \times S_6)$ has a two-dimensional submodule. 

 These maximal subgroups have index $5\,355$ in $S_8(2)$. The primitive permutation representation of degree $5\,355$ of $S_8(2)$ and the irreducible eight-dimensional matrix representation of $S_8(2)$ over the field with two elements are available via the \textsf{GAP} package \textsf{AtlasRep}, see{\nobreakspace}\cite{AtlasRep}. We compute generators for an index $5\,355$ subgroup in the matrix group via an isomorphism to the permutation group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@permg:= AtlasGroup( "S8(2)", NrMovedPoints, 5355 );|
  <permutation group of size 47377612800 with 2 generators>
  !gapprompt@gap>| !gapinput@matg:= AtlasGroup( "S8(2)", Dimension, 8 );|
  <matrix group of size 47377612800 with 2 generators>
  !gapprompt@gap>| !gapinput@hom:= GroupHomomorphismByImagesNC( matg, permg,|
  !gapprompt@>| !gapinput@             GeneratorsOfGroup( matg ), GeneratorsOfGroup( permg ) );;|
  !gapprompt@gap>| !gapinput@max:= PreImages( hom, Stabilizer( permg, 1 ) );;|
\end{Verbatim}
 

 These generators define the action of the index $5\,355$ subgroup of $S_8(2)$ on the eight-dimensional module. We compute the dimensions of the factors of
an ascending composition series of this module. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= GModuleByMats( GeneratorsOfGroup( max ), GF(2) );;|
  !gapprompt@gap>| !gapinput@comp:= MTX.CompositionFactors( m );;|
  !gapprompt@gap>| !gapinput@List( comp, r -> r.dimension );|
  [ 2, 4, 2 ]
\end{Verbatim}
                                          }

  
\subsection{\textcolor{Chapter }{$G = M$}}\label{sect:M}
\logpage{[ 6, 4, 14 ]}
\hyperdef{L}{X87D468D07D7237CB}{}
{
  The group $M$ contains exactly two conjugacy classes of solvable subgroups of order $n = 2\,849\,934\,139\,195\,392$, and no larger solvable subgroups. 

 The maximal subgroups of the structure $2^{1+24}_+.Co_1$ in the group $M$ contain solvable subgroups $S$ of order $n$ and with the structure $2^{1+24}_+.2^{4+12}.(S_3 \times 3^{1+2}_+:D_8)$, see{\nobreakspace}\cite[p. 234]{CCN85} and Section{\nobreakspace}\ref{sect:Co1}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n:= 2^25 * MaxSolv.( "Co1" );|
  2849934139195392
\end{Verbatim}
 

 The solvable subgroups of maximal order in groups of the types $2^{2+11+22}.(M_{24} \times S_3)$ and $2^{[39]}.(L_3(2) \times 3S_6)$ have order $n$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2^(2+11+22) * MaxSolv.( "M24" ) * 6 = n;    |
  true
  !gapprompt@gap>| !gapinput@2^39 * 24 * 3 * 72 = n;                 |
  true
\end{Verbatim}
 

 For inspecting the other maximal subgroups of $M$, we use the description from{\nobreakspace}\cite{NW12}. Currently $44$ classes of maximal subgroups are listed there, and any possible other maximal
subgroup of $G$ has socle isomorphic to one of $L_2(13)$, $Sz(8)$, $U_3(4)$, $U_3(8)$; so these maximal subgroups are isomorphic to subgroups of the automorphism
groups of these groups {\textendash} the maximum of these group orders is
smaller than $n$, hence we may ignore these possible subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= [ "L2(13)", "Sz(8)", "U3(4)", "U3(8)" ];;|
  !gapprompt@gap>| !gapinput@List( cand, nam -> ExtensionInfoCharacterTable( |
  !gapprompt@>| !gapinput@CharacterTable( nam ) ) );|
  [ [ "2", "2" ], [ "2^2", "3" ], [ "", "4" ], [ "3", "(S3x3)" ] ]
  !gapprompt@gap>| !gapinput@ll:= List( cand, x -> Size( CharacterTable( x ) ) );|
  [ 1092, 29120, 62400, 5515776 ]
  !gapprompt@gap>| !gapinput@18* ll[4];|
  99283968
  !gapprompt@gap>| !gapinput@2^39 * 24 * 3 * 72;|
  2849934139195392
\end{Verbatim}
 

 Thus only the following maximal subgroups of $M$ have order bigger than $|S|$. 

 \begin{center}
\begin{tabular}{llll}$2.B$&
$2^{1+24}_+.Co_1$&
$3.Fi_{24}$&
$2^2.{}^2E_6(2):S_3$\\
$2^{10+16}.O_{10}^+(2)$&
$2^{2+11+22}.(M_{24} \times S_3)$&
$3^{1+12}_+.2Suz.2$&
$2^{5+10+20}.(S_3 \times L_5(2))$\\
$S_3 \times Th$&
$2^{[39]}.(L_3(2) \times 3S_6)$&
$3^8.O_8^-(3).2_3$&
$(D_{10} \times HN).2$\\
\end{tabular}\\[2mm]
\end{center}

 

 For the subgroups $2.B$, $3.Fi_{24}$, $3^{1+12}_+.2Suz.2$, $S_3 \times Th$, and $(D_{10} \times HN).2$, the solvable subgroups of maximal order are smaller than $n$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( [ 2 * MaxSolv.( "B" ),|
  !gapprompt@>| !gapinput@           6 * MaxSolv.( "Fi24'" ),|
  !gapprompt@>| !gapinput@           3^13 * 2 * MaxSolv.( "Suz" ) * 2,|
  !gapprompt@>| !gapinput@           6 * MaxSolv.( "Th" ),|
  !gapprompt@>| !gapinput@           10 * MaxSolv.( "HN" ) * 2 ], i -> Int( i / n ) );|
  [ 0, 0, 0, 0, 0 ]
\end{Verbatim}
 

 The subgroup $2^2.{}^2E_6(2):S_3$ can be excluded by the fact that this group is only six times larger than the
subgroup $2.{}^2E_6(2):2$ of $B$, but $n$ is $96$ times larger than the maximal solvable subgroup in $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n / MaxSolv.( "B" );|
  96
\end{Verbatim}
 

 The group $3^8.O_8^-(3).2_3$ can be excluded by the fact that a solvable subgroup of order at least $n$ would imply the existence of a solvable subgroup of index at most $46$ in $O_8^-(3).2_3$, which is not the case (see{\nobreakspace}\cite[p. 141]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Int( 3^8 * Size( CharacterTable( "O8-(3)" ) ) * 2 / n );|
  46
\end{Verbatim}
 

 Similarly, the existence of a solvable subgroup of order at least $n$ in $2^{5+10+20}.(S_3 \times L_5(2))$ would imply the existence of a solvable subgroup of index at most $723$ in $L_5(2)$ and in turn of a solvable subgroup of index at most $23$ in $L_4(2)$, which is not the case (see{\nobreakspace}\cite[p. 70]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Int( 2^(10+16) * Size( CharacterTable( "O10+(2)" ) ) / n );    |
  553350
  !gapprompt@gap>| !gapinput@Int( 2^(5+10+20) * 6 * Size( CharacterTable( "L5(2)" ) ) / n );  |
  723
  !gapprompt@gap>| !gapinput@Int( 723 / 31 );|
  23
\end{Verbatim}
 

 It remains to exclude the subgroup $2^{10+16}.O_{10}^+(2)$, which means to show that $O_{10}^+(2)$ does not contain a solvable subgroup of index at most $553\,350$. If such a subgroup would exist then it would be contained in one of the
following maximal subgroups of $O_{10}^+(2)$ (see{\nobreakspace}\cite[p. 146]{CCN85}): in $S_8(2)$ (of index at most $1\,115$), in $2^8:O_8^+(2)$ (of index at most $1\,050$), in $2^{10}:L_5(2)$ (of index at most $241$), in $(3 \times O_8^-(2)):2$ (of index at most $27$), in $(2^{1+12}_+:(S_3 \times A_8)$ (of index at most $23$), or in $2^{3+12}:(S_3 \times S_3 \times L_3(2))$ (of index at most $4$). By{\nobreakspace}\cite[pp. 123, 85, 70, 89, 22]{CCN85}, this is not the case. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@index:= Int( 2^(10+16) * Size( CharacterTable( "O10+(2)" ) ) / n );    |
  553350
  !gapprompt@gap>| !gapinput@List( [ 496, 527, 2295, 19840, 23715, 118575 ], i -> Int( index / i ) );|
  [ 1115, 1050, 241, 27, 23, 4 ]
\end{Verbatim}
 

 As a consequence, we have shown that the largest solvable subgroups of $M$ have order $n$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MaxSolv.( "M" ):= n;;|
\end{Verbatim}
 

 In order to prove the statement about the conjugacy of subgroups of order $n$ in $M$, we first show the following. 

 Lemma: 

 The group $M$ contains exactly three conjugacy classes of \texttt{2B}-pure Klein four groups. Their normalizers in $M$ have the orders $50\,472\,333\,605\,150\,392\,320$, $259\,759\,622\,062\,080$, and $9\,567\,039\,651\,840$, respectively. 

 \emph{Proof.} The idea is the same as for the Baby Monster group, see Section{\nobreakspace}\ref{sect:B}. Let $V$ be a \texttt{2B}-pure Klein four group in $M$, and set $N = N_M(V)$. Let $x \in V$ be an involution and set $H = C_M(x)$, then $H$ is maximal in $M$ and has the structure $2^{1+24}_+.Co_1$. The index of $C = C_M(V) = C_H(V)$ in $N$ divides $6$, and $C$ stabilizes the central involution in $H$ and another \texttt{2B} involution. 

 The group $H$ contains exactly five conjugacy classes of \texttt{2B} elements, three of them consist of elements that generate a \texttt{2B}-pure Klein four group together with $x$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@h:= CharacterTable( "2^1+24.Co1" );|
  CharacterTable( "2^1+24.Co1" )
  !gapprompt@gap>| !gapinput@pos:= Positions( GetFusionMap( h, m ), 3 );|
  [ 2, 4, 7, 9, 16 ]
  !gapprompt@gap>| !gapinput@pos:= Filtered( Difference( pos, [ 2 ] ), i -> ForAny( pos,|
  !gapprompt@>| !gapinput@            j -> NrPolyhedralSubgroups( h, 2, i, j ).number <> 0 ) );|
  [ 4, 9, 16 ]
\end{Verbatim}
 

 The two classes have lengths $93\,150$ and $7\,286\,400$, thus the index of $C$ in $H$ is one of these numbers. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( h ){ pos };|
  [ 16584750, 3222483264000, 87495303168000 ]
\end{Verbatim}
 

 Next we compute the number $n_0$ of \texttt{2B}-pure Klein four groups in $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nr:= NrPolyhedralSubgroups( m, 3, 3, 3 );|
  rec( number := 87569110066985387357550925521828244921875, 
    type := "V4" )
  !gapprompt@gap>| !gapinput@n0:= nr.number;;|
\end{Verbatim}
 

 The $M$-conjugacy class of $V$ has length $[M:N] = [M:H] \cdot [H:C] / [N:C]$, where $[N:C]$ divides $6$. We see that $[N:C] = 6$ in both cases. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= List( pos, i -> Size( m ) / SizesCentralizers( h )[i] / 6 );|
  [ 16009115629875684006343550944921875, 
    3110635203347364905168577322802100000000, 
    84458458854522392576698341855475200000000 ]
  !gapprompt@gap>| !gapinput@Sum( cand ) = n0;|
  true
\end{Verbatim}
 

 The orders of the normalizers of the three classes of \texttt{2B}-pure Klein four groups are as claimed. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( cand, x -> Size( m ) / x );|
  [ 50472333605150392320, 259759622062080, 9567039651840 ]
\end{Verbatim}
 

 As we have seen above, the group $M$ contains exactly the following (solvable) subgroups of order $n$. 

 
\begin{enumerate}
\item  One class in $2^{1+24}_+.Co_1$ type subgroups, 
\item  one class in $2^{2+11+22}.(M_{24} \times S_3)$ type subgroups, and 
\item  two classes in $2^{[39]}.(L_3(2) \times 3S_6)$ type subgroups. 
\end{enumerate}
 

 Note that $2^{[39]}.(L_3(2) \times 3S_6)$ contains an elementary abelian normal subgroup of order eight whose
involutions lie in the class \texttt{2B}, see{\nobreakspace}\cite[p. 234]{CCN85}. As a module for the group $L_3(2)$, this normal subgroup is irreducible, and the restriction of the action to
the two classes of $S_4$ type subgroups fixes a one- and a two-dimensional subspace, respectively.
Hence we have one class of subgroups of order $n$ that centralize a \texttt{2B} element and one class of subgroups of order $n$ that normalize a \texttt{2B}-pure Klein four group. Clearly the subgroups in the first class coincide with
the subgroups of order $n$ in $2^{1+24}_+.Co_1$ type subgroups. By the above classification of \texttt{2B}-pure Klein four groups in $M$, the subgroups in the second class coincide with the subgroups of order $n$ in $2^{2+11+22}.(M_{24} \times S_3)$ type subgroups. 

 It remains to show that the subgroups of order $n$ do \emph{not} stabilize both a \texttt{2B} element \emph{and} a \texttt{2B}-pure Klein four group. We do this by direct computations with a $2^{2+11+22}.(M_{24} \times S_3)$ type group, which is available via the \textsf{AtlasRep} package, see{\nobreakspace}\cite{AtlasRep}. 

 First we fetch the group, and factor out the largest solvable normal subgroup,
by suitable actions on blocks. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AtlasGroup( "2^(2+11+22).(M24xS3)" );|
  <permutation group of size 50472333605150392320 with 2 generators>
  !gapprompt@gap>| !gapinput@NrMovedPoints( g );|
  294912
  !gapprompt@gap>| !gapinput@bl:= Blocks( g, MovedPoints( g ) );;|
  !gapprompt@gap>| !gapinput@Length( bl );|
  147456
  !gapprompt@gap>| !gapinput@hom1:= ActionHomomorphism( g, bl, OnSets );;|
  !gapprompt@gap>| !gapinput@act1:= Image( hom1 );;|
  !gapprompt@gap>| !gapinput@Size( g ) / Size( act1 );|
  8192
  !gapprompt@gap>| !gapinput@bl2:= Blocks( act1, MovedPoints( act1 ) );;|
  !gapprompt@gap>| !gapinput@Length( bl2 );|
  72
  !gapprompt@gap>| !gapinput@hom2:= ActionHomomorphism( act1, bl2, OnSets );;|
  !gapprompt@gap>| !gapinput@act2:= Image( hom2 );;|
  !gapprompt@gap>| !gapinput@Size( act2 );|
  1468938240
  !gapprompt@gap>| !gapinput@Size( MathieuGroup( 24 ) ) * 6;|
  1468938240
  !gapprompt@gap>| !gapinput@bl3:= AllBlocks( act2 );;|
  !gapprompt@gap>| !gapinput@List( bl3, Length );                                             |
  [ 24, 3 ]
  !gapprompt@gap>| !gapinput@bl3:= Orbit( act2, bl3[2], OnSets );;|
  !gapprompt@gap>| !gapinput@hom3:= ActionHomomorphism( act2, bl3, OnSets );;|
  !gapprompt@gap>| !gapinput@act3:= Image( hom3 );;|
\end{Verbatim}
 

 Now we compute an isomorphism from the factor group of type $M_{24}$ to the group that belongs to \textsf{GAP}'s table of marks. Then we use the information from the table of marks to
compute a solvable subgroup of maximal order in $M_{24}$ (which is $13\,824$), and take the preimage under the isomorphism. Finally, we take the preimage
of this group in te original group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "M24" );;|
  !gapprompt@gap>| !gapinput@tomgroup:= UnderlyingGroup( tom );;|
  !gapprompt@gap>| !gapinput@iso:= IsomorphismGroups( act3, tomgroup );;|
  !gapprompt@gap>| !gapinput@pos:= Positions( OrdersTom( tom ), 13824 );|
  [ 1508 ]
  !gapprompt@gap>| !gapinput@sub:= RepresentativeTom( tom, pos[1] );;|
  !gapprompt@gap>| !gapinput@pre:= PreImages( iso, sub );;|
  !gapprompt@gap>| !gapinput@pre:= PreImages( hom3, pre );;|
  !gapprompt@gap>| !gapinput@pre:= PreImages( hom2, pre );;|
  !gapprompt@gap>| !gapinput@pre:= PreImages( hom1, pre );;|
  !gapprompt@gap>| !gapinput@Size( pre ) = n;|
  true
\end{Verbatim}
 

 The subgroups stabilizes a Klein four group. It does not stabilize a \texttt{2B} element because its centre is trivial. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pciso:= IsomorphismPcGroup( pre );;|
  !gapprompt@gap>| !gapinput@Size( Centre( Image( pciso ) ) );|
  1
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Proof of the Corollary}}\label{sect:corollary}
\logpage{[ 6, 5, 0 ]}
\hyperdef{L}{X7CD8E04C7F32AD56}{}
{
  With the computations in the previous sections, we have collected the
information that is needed to show the corollary stated in
Section{\nobreakspace}\ref{sect:result}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Filtered( Set( RecNames( MaxSolv ) ), |
  !gapprompt@>| !gapinput@             x -> MaxSolv.( x )^2 >= Size( CharacterTable( x ) ) );|
  [ "Fi23", "J2", "J2.2", "M11", "M12", "M22.2" ]
\end{Verbatim}
 }

 }

    
\chapter{\textcolor{Chapter }{Large Nilpotent Subgroups of Sporadic Simple Groups}}\label{chap:spornilp}
\logpage{[ 7, 0, 0 ]}
\hyperdef{L}{X8102827B85FE3BCA}{}
{
  

 Date: June 6th, 2009 

 We show that any nontrivial nilpotent subgroup $U$ in a sporadic simple group $G$ satisfies $|U| \cdot |{{\bf N}}_G(U)| < |G|$. The proof uses the information in the \textsf{Atlas} of Finite Groups{\nobreakspace}\cite{CCN85} and the \textsf{GAP} system{\nobreakspace}\cite{GAP}, in particular its Character Table Library{\nobreakspace}\cite{CTblLib} and its library of Tables of Marks{\nobreakspace}\cite{TomLib}. (In \cite{Vdo00}, it is shown that in any finite nonabelian simple group $G$, any nilpotent subgroup $U$ satisfies $|U|^2 < |G|$.)   
\section{\textcolor{Chapter }{The Result}}\label{sect:spornilp_result}
\logpage{[ 7, 1, 0 ]}
\hyperdef{L}{X7F817DC57A69CF0D}{}
{
  The aim of this writeup is to show the following statement. 

 \emph{Proposition}: Let $G$ be a sporadic simple group, let $U$ be a nontrivial nilpotent subgroup in $G$, and let ${{\bf N}}_G(U)$ denote the normalizer of $U$ in $G$. Then $|U| \cdot |{{\bf N}}_G(U)| < |G|$ holds. 

 The following criteria are sufficient to prove this proposition. Note that we
are interested in an argument that uses only information about the character
tables of the sporadic simple groups and of their maximal subgroups. 

 \emph{Lemma 1}: Let $G$ be a nonabelian finite simple group, and suppose that $U$ is a nontrivial nilpotent subgroup of $G$ such that $|U| \cdot |{{\bf N}}_G(U)| \geq |G|$ holds. Let $\Pi = \{ p_1, p_2, \ldots, p_n \}$ be the set of prime divisors of $|U|$, and set $n = \prod_{{p \in \Pi}} p$. 
\begin{description}
\item[{(a)}]  $G$ contains an element $g$ of order $n$ and a maximal subgroup $M$ with the properties $g \in Z(U)$ and ${{\bf N}}_G(U) \leq M$. Set $c:= \gcd(|{{\bf C}}_G(g)|_{\Pi}, |M|)$, where $|{{\bf C}}_G(g)|_{\Pi}$ denotes the largest divisor of the order of the centralizer of $g$ in $G$ whose prime divisors are elements of the set $\Pi$. Then we have $|U| \leq c$ and hence $c \cdot |M| \geq |G|$, in particular $|M|^2 \geq |G|$. 
\item[{(b)}]  If $(g, M)$ is as in part{\nobreakspace}(a) then one of the following holds. 
\begin{description}
\item[{(b1)}]  $U$ is normal in $M$, and the Fitting subgroup $Fit(M)$ of $M$ satisfies $|Fit(M)| \cdot |M| \geq |G|$. 
\item[{(b2)}]  $U$ is not normal in $M$, so ${{\bf N}}_G(U)$ is a proper subgroup of $M$, in particular $|G| \leq |U| \cdot |M|/2 \leq c \cdot |M| / 2$ holds. 
\end{description}
 
\item[{(c)}]  Let $(g, M)$ be as in part{\nobreakspace}(b2) and assume that $M$ contains a normal subgroup $K$ such that $\pi(M):= M/K$ is an almost simple group with socle $S$, i.{\nobreakspace}e., $\pi(M)$ has a nonabelian simple normal subgroup $S$ such that ${{\bf C}}_{{\pi(M)}}(S)$ is trivial. Then either $U \leq K$ holds, and hence $|K| \cdot |M| \geq |G|$, or we are in the following situation. 

 The group $\pi(U):= U K / K$ is a nontrivial nilpotent normal subgroup of $\pi(N):= {{\bf N}}_G(U) K / K$, and $H:= S \cap \pi(N)$ is a proper subgroup of $S$. The latter statement holds because otherwise $S \cap \pi(U)$ would be normal in $S$ and thus would be trivial, which would imply that $S$ would centralize $\pi(U)$. 

 As a consequence, $|\pi(N)|$ divides $|\pi(M)/S| \cdot |H| = |\pi(M)| / [S:H]$, in particular, $[S:H] \leq |\pi(M)| / |\pi(N)| = |M| / |{{\bf N}}_G(U) K| \leq |M| / |{{\bf N}}_G(U)| \leq |M| \cdot |U| / |G| \leq c / [G:M]$ holds. 
\end{description}
 

 We will apply Lemma{\nobreakspace}1 as follows. 

 From the character tables of $G$ and $M$, the value $|Fit(M)|$ and the maximal possible $c$ can be computed. If part{\nobreakspace}(a) of the lemma applies then we verify
that part{\nobreakspace}(b1) does \emph{not} apply, and that either (b2) or (c) yields a contradiction. Note that we can
determine from the character table of $M$ whether $M$ has a normal subgroup $K$ such that $M/K$ is almost simple, and in this case we can compute the order of the socle $S$ of $M/K$. 

 For proving the nonexistence of the subgroup $H$ in the situation of part{\nobreakspace}(c), we will show that all subgroups of $\pi(M)$ of index up to $d:= c \cdot [\pi(M):S] / [G:M]$ contain $S$. For that, we will compute the complete list of those possible permutation
characters of $\pi(M)$ whose degree is at most $d$, and then check that the kernels of these characters contain $S$. 

 (Note that these computations are cheap because the bound $d$ is small in the cases that occur. There are easier criteria for proving the
nonexistence of a subgroup of index at most $d$ in a simple group $S$, for example in the case $|S| > d! / 2$ or if the smallest nontrivial irreducible degree of $S$ is at least $d$; but these criteria do not suffice in our situation.)  

 We illustrate the application of Lemma{\nobreakspace}1 with some examples. 

 
\begin{description}
\item[{$J_1$:}]  The first Janko group $J_1$ (see{\nobreakspace}\cite[p. 36]{CCN85}) has order $175\,560$, and the largest maximal subgroup has order $660$. The largest centralizer of a nonidentity element in $J_1$ has order $120$, and $660 \cdot 120 = 79\,200 < |J_1|$. Thus $J_1$ satisfies the proposition. 
\item[{${{\mathbb M}}$:}]  For the Monster group ${{\mathbb M}}$ (see{\nobreakspace}\cite[p. 234]{CCN85}), we read off from the list{\nobreakspace}\cite{Mmaxes} of maximal subgroups that the only maximal subgroups $M$ of ${{\mathbb M}}$ with the property $|M|^2 \geq {{\mathbb M}}$ have the structure $2.B$. Already for the second largest maximal subgroups, with the structure $2^{{1+24}}.Co_1$, the order is smaller than the index in the Monster. 

 Only elements $g$ from the classes \texttt{2A}, \texttt{2B}, and \texttt{3A} have the property that the product of $|2.B|$ and the order of the centralizer of $g$ in $M$ is not smaller than $|M|$. So $U$ can be only a $2$- or a $3$-subgroup of $2.B$. However, the $2$-part and the $3$-part of $|2.B|$ are $2^{42}$ and $3^{13}$, respectively, which are smaller than the index of $2.B$ in $M$. Thus $M$ satisfies the proposition. 
\item[{$Fi_{23}$:}]  We show that no counterexample to the proposition can arise from maximal
subgroups $M$ of the type $O_8^+(3):S_3$ in the Fischer group $Fi_{23}$ (see{\nobreakspace}\cite[p. 177]{CCN85}). Several element centralizers in $G$ satisfy Lemma{\nobreakspace}1{\nobreakspace}(a), the largest value $c$ arises from elements in the class \texttt{6B}, whose centralizers have order $2^8 \cdot 3^9$, which divides $|M|$. So $|U| \leq 2^8 \cdot 3^9$, and a possible counterexample to the proposition must satisfy $|{{\bf N}}_G(U)| \geq |G| / (2^8 \cdot 3^9) = 811\,588\,377\,600$. We have $|M| = 29\,713\,078\,886\,400$, which is less than $37$ times this minimal order required for ${{\bf N}}_G(U)$. However, the intersection $H$ of this group with the simple subgroup $S \cong O_8^+(3)$ in $M$ cannot be at most $36$, because the largest maximal subgroups in $S$ have index $1\,080$ (see{\nobreakspace}\cite[p. 140]{CCN85}). Arguing not with $S$ but with $M$, we can show {\textendash}using only the character table of $M${\textendash} that all proper subgroups of index less than $37 \cdot 6$ in $M$ contain $S$. 
\end{description}
 }

  
\section{\textcolor{Chapter }{The Proof}}\label{sect:The Proof}
\logpage{[ 7, 2, 0 ]}
\hyperdef{L}{X787B841383A16711}{}
{
  The following \textsf{GAP} function utilizes Lemma{\nobreakspace}1. Its input are the \textsf{GAP} character table \texttt{tbl} of a group $G$, say, and a list \texttt{maxesinfo} of character tables of maximal subgroups of $G$, covering at least all those maximal subgroups $M$ for which $|M|^2 \geq |G|$ holds. 

 The idea is to collect pairs $(M, g)$ that satisfy part{\nobreakspace}(a) of Lemma{\nobreakspace}1, and then to show
that they do not satisfy part{\nobreakspace}(b) or part{\nobreakspace}(c). For
each maximal subgroup $M$ that admits elements $g$ as in Lemma{\nobreakspace}1, information is printed how this candidate is
excluded. 

 The function returns a list of length three. The first entry is \texttt{true} if the criteria of Lemma{\nobreakspace}1 are sufficient to prove that the
proposition is true for $G$, and \texttt{false} otherwise. The second entry is the name of $G$, and the third entry in the number of maximal subgroups $M$ for which an element $g$ as in Lemma{\nobreakspace}1{\nobreakspace}(a) exists. 

 
\begin{Verbatim}[commandchars=!@B,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>B !gapinput@ApplyTheLemma:= function( tbl, maxesinfo )B
  !gapprompt@>B !gapinput@    local Gname, Gsize, cents, orders, result, Mtbl, Msize, maxc, i,B
  !gapprompt@>B !gapinput@          pi, pipart, c, Mclasslengths, Fit, excluded, Kclasses, Mbar,B
  !gapprompt@>B !gapinput@          Ksize, Sclasses, Ssize, d;B
  !gapprompt@>B !gapinput@    Gname:= Identifier( tbl );B
  !gapprompt@>B !gapinput@    Gsize:= Size( tbl );B
  !gapprompt@>B !gapinput@    cents:= SizesCentralizers( tbl );B
  !gapprompt@>B !gapinput@    orders:= OrdersClassRepresentatives( tbl );B
  !gapprompt@>B !gapinput@    result:= [ true, Gname, 0 ];B
  !gapprompt@>B !gapinput@    # Run over the relevant maximal subgroups.B
  !gapprompt@>B !gapinput@    for Mtbl in maxesinfo doB
  !gapprompt@>B !gapinput@      Msize:= Size( Mtbl );B
  !gapprompt@>B !gapinput@      # Run over nonidentity class representatives g of squarefreeB
  !gapprompt@>B !gapinput@      # order, compute the largest c that occurs.B
  !gapprompt@>B !gapinput@      maxc:= 1;B
  !gapprompt@>B !gapinput@      for i in [ 2 .. NrConjugacyClasses( tbl ) ] doB
  !gapprompt@>B !gapinput@        pi:= Factors( orders[i] );B
  !gapprompt@>B !gapinput@        if IsSet( pi ) thenB
  !gapprompt@>B !gapinput@          # The elements in class `i' have squarefree order.B
  !gapprompt@>B !gapinput@          pipart:= Product( Filtered( Factors( cents[i] ),B
  !gapprompt@>B !gapinput@                                      x -> x in pi ) );B
  !gapprompt@>B !gapinput@          c:= Gcd( pipart, Msize );B
  !gapprompt@>B !gapinput@          if maxc < c thenB
  !gapprompt@>B !gapinput@            maxc:= c;B
  !gapprompt@>B !gapinput@          fi;B
  !gapprompt@>B !gapinput@        fi;B
  !gapprompt@>B !gapinput@      od;B
  !gapprompt@>B !gapinput@      if maxc * Msize >= Gsize thenB
  !gapprompt@>B !gapinput@        # Criterion (a) is satisfied, try to exclude (b) and (c).B
  !gapprompt@>B !gapinput@        result[3]:= result[3] + 1;B
  !gapprompt@>B !gapinput@        Print( Gname, ": consider M = ", Identifier( Mtbl ),B
  !gapprompt@>B !gapinput@               ", c = ", StringPP( maxc ),B
  !gapprompt@>B !gapinput@               ", c * |M| / |G| >= ", Int( maxc * Msize / Gsize ),B
  !gapprompt@>B !gapinput@               "\n" );B
  !gapprompt@>B !gapinput@        Mclasslengths:= SizesConjugacyClasses( Mtbl );B
  !gapprompt@>B !gapinput@        Fit:= Mclasslengths{ ClassPositionsOfFittingSubgroup( Mtbl ) };B
  !gapprompt@>B !gapinput@        if Sum( Fit ) * Msize >= Gsize thenB
  !gapprompt@>B !gapinput@          # Criterion (b1) is satisfied.B
  !gapprompt@>B !gapinput@          Print( Gname, ": not excludable by (b1)\n" );B
  !gapprompt@>B !gapinput@          result[1]:= false;B
  !gapprompt@>B !gapinput@        elif maxc * Msize < 2 * Gsize thenB
  !gapprompt@>B !gapinput@          # Criterion (b2) is not satisfied.B
  !gapprompt@>B !gapinput@          Print( Gname, ":     excluded by (b2)\n" );B
  !gapprompt@>B !gapinput@        elseB
  !gapprompt@>B !gapinput@          # Run over the normal subgroups of M.B
  !gapprompt@>B !gapinput@          excluded:= false;B
  !gapprompt@>B !gapinput@          for Kclasses in ClassPositionsOfNormalSubgroups( Mtbl ) doB
  !gapprompt@>B !gapinput@            Mbar:= Mtbl / Kclasses;B
  !gapprompt@>B !gapinput@            Ksize:= Sum( Mclasslengths{ Kclasses } );B
  !gapprompt@>B !gapinput@            if IsAlmostSimpleCharacterTable( Mbar ) andB
  !gapprompt@>B !gapinput@               Ksize * Msize < Gsize thenB
  !gapprompt@>B !gapinput@              # We are in the situation of criterion (c).B
  !gapprompt@>B !gapinput@              # The socle is the unique minimal normal subgroup.B
  !gapprompt@>B !gapinput@              Sclasses:= ClassPositionsOfMinimalNormalSubgroups(B
  !gapprompt@>B !gapinput@                             Mbar )[1];B
  !gapprompt@>B !gapinput@              Ssize:= Sum( SizesConjugacyClasses( Mbar ){ Sclasses } );B
  !gapprompt@>B !gapinput@              d:= Int( maxc * Msize * Size( Mbar )B
  !gapprompt@>B !gapinput@                  / ( Gsize * Ssize ) );B
  !gapprompt@>B !gapinput@              # Try to show that all subgroups of index up to dB
  !gapprompt@>B !gapinput@              # in Mbar contain the socle.B
  !gapprompt@>B !gapinput@              if ForAll( [ 2 .. d ],B
  !gapprompt@>B !gapinput@                   n -> ForAll( PermChars( Mbar, rec( torso:= [ n ] ) ),B
  !gapprompt@>B !gapinput@                          chi -> IsSubset(B
  !gapprompt@>B !gapinput@                                     ClassPositionsOfKernel( chi ),B
  !gapprompt@>B !gapinput@                                     Sclasses ) ) ) thenB
  !gapprompt@>B !gapinput@                Print( Gname, ":     excluded by (c), |K| = ",B
  !gapprompt@>B !gapinput@                       StringPP( Ksize ), ", degree bound ", d, "\n" );B
  !gapprompt@>B !gapinput@                excluded:= true;B
  !gapprompt@>B !gapinput@                break;B
  !gapprompt@>B !gapinput@              fi;B
  !gapprompt@>B !gapinput@            fi;B
  !gapprompt@>B !gapinput@          od;B
  !gapprompt@>B !gapinput@          if not excluded thenB
  !gapprompt@>B !gapinput@            Print( Gname, ": not excludable by (c)\n" );B
  !gapprompt@>B !gapinput@            result[1]:= false;B
  !gapprompt@>B !gapinput@          fi;B
  !gapprompt@>B !gapinput@        fi;B
  !gapprompt@>B !gapinput@      fi;B
  !gapprompt@>B !gapinput@    od;B
  !gapprompt@>B !gapinput@    return result;B
  !gapprompt@>B !gapinput@end;;B
\end{Verbatim}
 

 So our proof relies on the classifications of maximal subgroups of sporadic
simple groups, see{\nobreakspace}\cite{CCN85} and{\nobreakspace}\cite{BN95}. 

 The \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib} contains the character tables of the sporadic simple groups and of their
maximal subgroups, except that not all character tables of maximal subgroups
of the Monster group are available yet. (See Section{\nobreakspace}\ref{sect:spornilp_result} for the treatment of the Monster group.) 

 Since the \textsf{GAP} Character Table Library is used for the computations in this section, we first
load this package. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", false );|
  true
\end{Verbatim}
 

 Now we apply the function to the sporadic simple groups. 

 
\begin{Verbatim}[commandchars=!@J,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>J !gapinput@info:= [];;                                       J
  !gapprompt@gap>J !gapinput@for name in AllCharacterTableNames( IsSporadicSimple, true,J
  !gapprompt@>J !gapinput@                                       IsDuplicateTable, false ) doJ
  !gapprompt@>J !gapinput@     tbl:= CharacterTable( name );J
  !gapprompt@>J !gapinput@     if HasMaxes( tbl ) thenJ
  !gapprompt@>J !gapinput@       mx:= List( Maxes( tbl ), CharacterTable );  J
  !gapprompt@>J !gapinput@     elif name = "M" thenJ
  !gapprompt@>J !gapinput@       mx:= [ CharacterTable( "2.B" ) ];J
  !gapprompt@>J !gapinput@     elseJ
  !gapprompt@>J !gapinput@       Error( "this should not happen ...");J
  !gapprompt@>J !gapinput@     fi;J
  !gapprompt@>J !gapinput@     Add( info, ApplyTheLemma( tbl, mx ) );J
  !gapprompt@>J !gapinput@   od;J
  B: consider M = 2.2E6(2).2, c = 2^38, c * |M| / |G| >= 20
  B:     excluded by (c), |K| = 2, degree bound 40
  Co1: consider M = Co2, c = 2^13*3^5, c * |M| / |G| >= 20
  Co1:     excluded by (c), |K| = 1, degree bound 20
  Co1: consider M = 3.Suz.2, c = 2^13*3^5, c * |M| / |G| >= 1
  Co1:     excluded by (b2)
  Co2: consider M = U6(2).2, c = 2^16, c * |M| / |G| >= 28
  Co2:     excluded by (c), |K| = 1, degree bound 56
  Co2: consider M = 2^10:m22:2, c = 2^18, c * |M| / |G| >= 5
  Co2:     excluded by (c), |K| = 2^10, degree bound 11
  Co2: consider M = 2^1+8:s6f2, c = 2^18, c * |M| / |G| >= 4
  Co2:     excluded by (c), |K| = 2^9, degree bound 4
  Co3: consider M = McL.2, c = 2^4*3^4, c * |M| / |G| >= 4
  Co3:     excluded by (c), |K| = 1, degree bound 9
  F3+: consider M = Fi23, c = 2^9*3^9, c * |M| / |G| >= 32
  F3+:     excluded by (c), |K| = 1, degree bound 32
  Fi22: consider M = 2.U6(2), c = 2^7*3^6, c * |M| / |G| >= 26
  Fi22:     excluded by (c), |K| = 2, degree bound 26
  Fi22: consider M = O7(3), c = 2^7*3^6, c * |M| / |G| >= 6
  Fi22:     excluded by (c), |K| = 1, degree bound 6
  Fi22: consider M = Fi22M3, c = 2^7*3^6, c * |M| / |G| >= 6
  Fi22:     excluded by (c), |K| = 1, degree bound 6
  Fi22: consider M = O8+(2).3.2, c = 2^7*3^6, c * |M| / |G| >= 1
  Fi22:     excluded by (b2)
  Fi23: consider M = 2.Fi22, c = 2^8*3^9, c * |M| / |G| >= 159
  Fi23:     excluded by (c), |K| = 2, degree bound 159
  Fi23: consider M = O8+(3).3.2, c = 2^8*3^9, c * |M| / |G| >= 36
  Fi23:     excluded by (c), |K| = 1, degree bound 219
  HS: consider M = M22, c = 2^7, c * |M| / |G| >= 1
  HS:     excluded by (b2)
  M11: consider M = A6.2_3, c = 2^4, c * |M| / |G| >= 1
  M11:     excluded by (b2)
  M12: consider M = M11, c = 2^4, c * |M| / |G| >= 1
  M12:     excluded by (b2)
  M12: consider M = M12M2, c = 2^4, c * |M| / |G| >= 1
  M12:     excluded by (b2)
  M22: consider M = L3(4), c = 2^6, c * |M| / |G| >= 2
  M22:     excluded by (c), |K| = 1, degree bound 2
  M22: consider M = 2^4:a6, c = 2^7, c * |M| / |G| >= 1
  M22:     excluded by (b2)
  M23: consider M = M22, c = 2^7, c * |M| / |G| >= 5
  M23:     excluded by (c), |K| = 1, degree bound 5
  M24: consider M = M23, c = 2^7, c * |M| / |G| >= 5
  M24:     excluded by (c), |K| = 1, degree bound 5
  M24: consider M = 2^4:a8, c = 2^10, c * |M| / |G| >= 1
  M24:     excluded by (b2)
  McL: consider M = U4(3), c = 3^6, c * |M| / |G| >= 2
  McL:     excluded by (c), |K| = 1, degree bound 2
  Ru: consider M = 2F4(2)'.2, c = 2^12, c * |M| / |G| >= 1
  Ru:     excluded by (b2)
  Suz: consider M = G2(4), c = 2^12, c * |M| / |G| >= 2
  Suz:     excluded by (c), |K| = 1, degree bound 2
\end{Verbatim}
 

 First of all, we see that Lemma{\nobreakspace}1 is sufficient to prove the
proposition, since all candidates were excluded. 

 Moreover, we see that for the following ten sporadic simple groups, no
candidates had to be considered. (No information was printed about these
groups.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Filtered( info, x -> x[3] = 0 );|
  [ [ true, "HN", 0 ], [ true, "He", 0 ], [ true, "J1", 0 ], 
    [ true, "J2", 0 ], [ true, "J3", 0 ], [ true, "J4", 0 ], 
    [ true, "Ly", 0 ], [ true, "M", 0 ], [ true, "ON", 0 ], 
    [ true, "Th", 0 ] ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Alternative: Use \textsf{GAP}'s Tables of Marks}}\label{sect:Alternative_Use_TOM}
\logpage{[ 7, 3, 0 ]}
\hyperdef{L}{X798EACC07F6C36D9}{}
{
  We can easily inspect all conjugacy classes of subgroups of a group $G$ whose table of marks is contained in \textsf{GAP}'s Library of Tables of Marks{\nobreakspace}\cite{TomLib}. First we load this \textsf{GAP} package. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "tomlib", false );|
  true
\end{Verbatim}
 

 The following \textsf{GAP} function takes the table of marks of a group $G$ and returns the list of pairs $[ U, {{\bf N}}_G(U) ]$ where $U$ ranges over representatives of conjugacy classes of those nilpotent subgroups
of $G$ for which $|U| \cdot |{{\bf N}}_G(U)|$ is maximal. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maximalpairs:= function( tom )|
  !gapprompt@>| !gapinput@   local g, max, result, i, u, n, prod;|
  !gapprompt@>| !gapinput@   g:= UnderlyingGroup( tom );|
  !gapprompt@>| !gapinput@   max:= 1;|
  !gapprompt@>| !gapinput@   result:= [];|
  !gapprompt@>| !gapinput@   for i in [ 1 .. Length( OrdersTom( tom ) ) ] do|
  !gapprompt@>| !gapinput@     u:= RepresentativeTom( tom, i );|
  !gapprompt@>| !gapinput@     if not IsTrivial( u ) and IsNilpotent( u ) then|
  !gapprompt@>| !gapinput@       n:= Normalizer( g, u );|
  !gapprompt@>| !gapinput@       prod:= Size( u ) * Size( n );|
  !gapprompt@>| !gapinput@       if max < prod then|
  !gapprompt@>| !gapinput@         max:= prod;|
  !gapprompt@>| !gapinput@         result:= [ [ u, n ] ];|
  !gapprompt@>| !gapinput@       elif max = prod then|
  !gapprompt@>| !gapinput@         Add( result, [ u, n ] );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@>| !gapinput@   return result;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 So let us collect the data for those sporadic simple groups for which the
table of marks is known. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@info:= [];;|
  !gapprompt@gap>| !gapinput@for name in AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                                       IsDuplicateTable, false ) do|
  !gapprompt@>| !gapinput@     tom:= TableOfMarks( name );|
  !gapprompt@>| !gapinput@     if tom <> fail then|
  !gapprompt@>| !gapinput@       Add( info, [ name, tom, maximalpairs( tom ) ] );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( info );|
  12
\end{Verbatim}
  

 We got results for twelve sporadic simple groups. The following computations
show that in ten cases, the simple group $G$ contains a unique class of nontrivial nilpotent subgroups $U$ for which the maximal value of $|U| \cdot |{{\bf N}}_G(U)|$ is attained. The ratio of this value and $|G|$ is less than $21$ per cent. The following table shows the name of the group $G$, the orders of $U$ and ${{\bf N}}_G(U)$, and the integral part of $10^6$ times the ratio. 

 
\begin{Verbatim}[commandchars=@BD,fontsize=\small,frame=single,label=Example]
  @gappromptBgap>D @gapinputBList( info, x -> Length( x[3] ) );D
  [ 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1 ]
  @gappromptBgap>D @gapinputBmat:= [];;D
  @gappromptBgap>D @gapinputBfor entry in info doD
  @gappromptB>D @gapinputB     pair:= entry[3][1];                          # [ U, N_G(U) ]D
  @gappromptB>D @gapinputB     bound:= Size( pair[1] ) * Size( pair[2] );   # |U|*|N_G(U)|D
  @gappromptB>D @gapinputB     size:= Size( UnderlyingGroup( entry[2] ) );  # |G|D
  @gappromptB>D @gapinputB     Add( mat, [ entry[1],D
  @gappromptB>D @gapinputB                 StringPP( Size( pair[1] ) ),D
  @gappromptB>D @gapinputB                 StringPP( Size( pair[2] ) ),D
  @gappromptB>D @gapinputB                 Int( 10^6 * bound / size ) ] );D
  @gappromptB>D @gapinputB     if Size( pair[1] ) * Size( pair[2] ) >= 21/100 * size thenD
  @gappromptB>D @gapinputB       Error("!");D
  @gappromptB>D @gapinputB     fi;D
  @gappromptB>D @gapinputB   od;D
  @gappromptBgap>D @gapinputBPrintArray( mat );D
  [ [           Co3,           3^5,  2^5*3^7*5*11,          1886 ],
    [            HS,           2^6,       2^9*3*7,         15515 ],
    [            He,           2^6,    2^10*3^3*5,          2195 ],
    [            J1,            19,        2*3*19,         12337 ],
    [            J2,           2^6,       2^7*3^2,        121904 ],
    [            J3,           3^5,       2^3*3^5,          9404 ],
    [           M11,           3^2,       2^4*3^2,        163636 ],
    [           M12,           2^5,         2^6*3,         64646 ],
    [           M22,           2^4,     2^7*3^2*5,        207792 ],
    [           M23,           2^4,   2^7*3^2*5*7,         63241 ],
    [           M24,           2^6,    2^10*3^3*5,         36137 ],
    [           McL,           3^5,     2^4*3^6*5,         15779 ] ]
\end{Verbatim}
 

 Moreover, we see that in most cases, the group $U$ for which the maximum is attained is not the largest $p$-subgroup in the simple group in question. }

 }

    
\chapter{\textcolor{Chapter }{Permutation Characters in \textsf{GAP}}}\label{chap:ctblpope}
\logpage{[ 8, 0, 0 ]}
\hyperdef{L}{X7A7EEBE9858333E1}{}
{
  Date: April 17th, 1999 

 This is a loose collection of examples of computations with permutation
characters and possible permutation characters in the \textsf{GAP} system{\nobreakspace}\cite{GAP}. We mainly use the \textsf{GAP} implementation of the algorithms to compute possible permutation characters
that are described in{\nobreakspace}\cite{BP98copy}, and information from the Atlas of Finite Groups{\nobreakspace}\cite{CCN85}. A \emph{possible permutation character} of a finite group $G$ is a character satisfying the conditions listed in Section ``Possible Permutation Characters'' of the \textsf{GAP} Reference Manual. 

 
\begin{itemize}
\item  Sections{\nobreakspace}\ref{sect:U35sub} and{\nobreakspace}\ref{sect:O82sub} were added in October{\nobreakspace}2001. 
\item  Section{\nobreakspace}\ref{subsect:monsterperm1} was added in June{\nobreakspace}2009. 
\item  Section{\nobreakspace}\ref{subsect:monsterperm2} was added in September{\nobreakspace}2009. 
\item  Section{\nobreakspace}\ref{subsect:monsterperm3} was added in October{\nobreakspace}2009. 
\item  Section{\nobreakspace}\ref{subsect:monsterperm4} was added in November{\nobreakspace}2009. 
\item  Section{\nobreakspace}\ref{sect:comp_B} was added in June{\nobreakspace}2012. 
\item  Section{\nobreakspace}\ref{sect:comp_2B} was added in October{\nobreakspace}2017. 
\item  Section{\nobreakspace}\ref{sect:comp_pi_piprime} was added in December{\nobreakspace}2021. 
\end{itemize}
 

       In the following, the \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib} will be used frequently. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", "1.2", false );|
  true
\end{Verbatim}
  
\section{\textcolor{Chapter }{Some Computations with $M_{24}$}}\label{sect:comp_M24}
\logpage{[ 8, 1, 0 ]}
\hyperdef{L}{X86A1325B82E5AECD}{}
{
  We start with the sporadic simple Mathieu group $G = M_{24}$ in its natural action on $24$ points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= MathieuGroup( 24 );;|
  !gapprompt@gap>| !gapinput@SetName( g, "m24" );|
  !gapprompt@gap>| !gapinput@Size( g );  IsSimple( g );  NrMovedPoints( g );|
  244823040
  true
  24
\end{Verbatim}
 

 The conjugacy classes that are computed for a group can be ordered differently
in different \textsf{GAP} sessions. In order to make the output shown in the following examples stable,
we first sort the conjugacy classes of $G$ for our purposes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ccl:= AttributeValueNotSet( ConjugacyClasses, g );;|
  !gapprompt@gap>| !gapinput@HasConjugacyClasses( g );|
  false
  !gapprompt@gap>| !gapinput@invariants:= List( ccl, c -> [ Order( Representative( c ) ),|
  !gapprompt@>| !gapinput@       Size( c ), Size( ConjugacyClass( g, Representative( c )^2 ) ) ] );;|
  !gapprompt@gap>| !gapinput@SortParallel( invariants, ccl );|
  !gapprompt@gap>| !gapinput@SetConjugacyClasses( g, ccl );|
\end{Verbatim}
 

 The permutation character \texttt{pi} of $G$ corresponding to the action on the moved points is constructed. This action is $5$-transitive. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( g );|
  26
  !gapprompt@gap>| !gapinput@pi:= NaturalCharacter( g );|
  Character( CharacterTable( m24 ),
   [ 24, 8, 0, 6, 0, 0, 4, 0, 4, 2, 0, 3, 3, 2, 0, 2, 0, 0, 1, 1, 1, 1, 
    0, 0, 1, 1 ] )
  !gapprompt@gap>| !gapinput@IsTransitive( pi );  Transitivity( pi );|
  true
  5
  !gapprompt@gap>| !gapinput@Display( pi );|
  CT1
  
       2 10 10  9  3  3  7  7  5  2  3  3  1  1  4   2   .   2   2   1
       3  3  1  1  3  2  1  .  1  1  1  1  1  1  .   .   .   1   1   .
       5  1  .  1  1  .  .  .  .  1  .  .  .  .  .   1   .   .   .   .
       7  1  1  .  .  1  .  .  .  .  .  .  1  1  .   .   .   .   .   1
      11  1  .  .  .  .  .  .  .  .  .  .  .  .  .   .   1   .   .   .
      23  1  .  .  .  .  .  .  .  .  .  .  .  .  .   .   .   .   .   .
  
         1a 2a 2b 3a 3b 4a 4b 4c 5a 6a 6b 7a 7b 8a 10a 11a 12a 12b 14a
  
  Y.1    24  8  .  6  .  .  4  .  4  2  .  3  3  2   .   2   .   .   1
  
       2   1   .   .   .   .   .   .
       3   .   1   1   1   1   .   .
       5   .   1   1   .   .   .   .
       7   1   .   .   1   1   .   .
      11   .   .   .   .   .   .   .
      23   .   .   .   .   .   1   1
  
         14b 15a 15b 21a 21b 23a 23b
  
  Y.1      1   1   1   .   .   1   1
\end{Verbatim}
 

 \texttt{pi} determines the permutation characters of the $G$-actions on related sets, for example \texttt{piop} on the set of ordered and \texttt{piup} on the set of unordered pairs of points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@piop:= pi * pi;|
  Character( CharacterTable( m24 ),
   [ 576, 64, 0, 36, 0, 0, 16, 0, 16, 4, 0, 9, 9, 4, 0, 4, 0, 0, 1, 1, 
    1, 1, 0, 0, 1, 1 ] )
  !gapprompt@gap>| !gapinput@IsTransitive( piop );|
  false
  !gapprompt@gap>| !gapinput@piup:= SymmetricParts( UnderlyingCharacterTable(pi), [ pi ], 2 )[1];|
  Character( CharacterTable( m24 ),
   [ 300, 44, 12, 21, 0, 4, 12, 0, 10, 5, 0, 6, 6, 4, 2, 3, 1, 0, 2, 2, 
    1, 1, 0, 0, 1, 1 ] )
  !gapprompt@gap>| !gapinput@IsTransitive( piup );|
  false
\end{Verbatim}
 

 Clearly the action on unordered pairs is not transitive, since the pairs $[ i, i ]$ form an orbit of their own. There are exactly two $G$-orbits on the unordered pairs, hence the $G$-action on $2$-sets of points is transitive. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ScalarProduct( piup, TrivialCharacter( g ) );|
  2
  !gapprompt@gap>| !gapinput@comb:= Combinations( [ 1 .. 24 ], 2 );;|
  !gapprompt@gap>| !gapinput@hom:= ActionHomomorphism( g, comb, OnSets );;|
  !gapprompt@gap>| !gapinput@pihom:= NaturalCharacter( hom );|
  Character( CharacterTable( m24 ),
   [ 276, 36, 12, 15, 0, 4, 8, 0, 6, 3, 0, 3, 3, 2, 2, 1, 1, 0, 1, 1, 
    0, 0, 0, 0, 0, 0 ] )
  !gapprompt@gap>| !gapinput@Transitivity( pihom );|
  1
\end{Verbatim}
 

 In terms of characters, the permutation character \texttt{pihom} is the difference of \texttt{piup} and \texttt{pi} . Note that \textsf{GAP} does not know that this difference is in fact a character; in general this
question is not easy to decide without knowing the irreducible characters of $G$, and up to now \textsf{GAP} has not computed the irreducibles. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pi2s:= piup - pi;|
  VirtualCharacter( CharacterTable( m24 ),
   [ 276, 36, 12, 15, 0, 4, 8, 0, 6, 3, 0, 3, 3, 2, 2, 1, 1, 0, 1, 1, 
    0, 0, 0, 0, 0, 0 ] )
  !gapprompt@gap>| !gapinput@pi2s = pihom;|
  true
  !gapprompt@gap>| !gapinput@HasIrr( g );  HasIrr( CharacterTable( g ) );|
  false
  false
\end{Verbatim}
 

 The point stabilizer in the action on $2$-sets is in fact a maximal subgroup of $G$, which is isomorphic to the automorphism group $M_{22}:2$ of the Mathieu group $M_{22}$. Thus this permutation action is primitive. But we cannot apply \texttt{IsPrimitive} (\textbf{Reference: IsPrimitive}) to the character \texttt{pihom} for getting this answer because primitivity of characters is defined in a
different way, cf.{\nobreakspace}\texttt{IsPrimitiveCharacter} (\textbf{Reference: IsPrimitiveCharacter}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@IsPrimitive( g, comb, OnSets );|
  true
\end{Verbatim}
 

     We could also have computed the transitive permutation character of degree $276$ using the \textsf{GAP} Character Table Library instead of the group $G$, since the character tables of $G$ and all its maximal subgroups are available, together with the class fusions
of the maximal subgroups into $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "M24" );|
  CharacterTable( "M24" )
  !gapprompt@gap>| !gapinput@maxes:= Maxes( tbl );|
  [ "M23", "M22.2", "2^4:a8", "M12.2", "2^6:3.s6", "L3(4).3.2_2", 
    "2^6:(psl(3,2)xs3)", "L2(23)", "L3(2)" ]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( maxes[2] );|
  CharacterTable( "M22.2" )
  !gapprompt@gap>| !gapinput@TrivialCharacter( s )^tbl;|
  Character( CharacterTable( "M24" ),
   [ 276, 36, 12, 15, 0, 4, 8, 0, 6, 3, 0, 3, 3, 2, 2, 1, 1, 0, 1, 1, 
    0, 0, 0, 0, 0, 0 ] )
\end{Verbatim}
 

 Note that the sequence of conjugacy classes in the library table of $G$ does in general not agree with the succession computed for the group.  }

  
\section{\textcolor{Chapter }{All Possible Permutation Characters of $M_{11}$}}\label{sect:poss_perm_char_M11}
\logpage{[ 8, 2, 0 ]}
\hyperdef{L}{X79C9051F805851DB}{}
{
  We compute all possible permutation characters of the Mathieu group $M_{11}$, using the three different strategies available in \textsf{GAP}. First we try the algorithm that enumerates all candidates via solving a
system of inequalities, which is described in{\nobreakspace}\cite[Section 3.2]{BP98copy}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m11:= CharacterTable( "M11" );;|
  !gapprompt@gap>| !gapinput@SetName( m11, "m11" );|
  !gapprompt@gap>| !gapinput@perms:= PermChars( m11 );|
  [ Character( m11, [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ), Character( m11,
    [ 11, 3, 2, 3, 1, 0, 1, 1, 0, 0 ] ), Character( m11,
    [ 12, 4, 3, 0, 2, 1, 0, 0, 1, 1 ] ), Character( m11,
    [ 22, 6, 4, 2, 2, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 55, 7, 1, 3, 0, 1, 1, 1, 0, 0 ] ), Character( m11,
    [ 66, 10, 3, 2, 1, 1, 0, 0, 0, 0 ] ), Character( m11,
    [ 110, 6, 2, 2, 0, 0, 2, 2, 0, 0 ] ), Character( m11,
    [ 110, 6, 2, 6, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 110, 14, 2, 2, 0, 2, 0, 0, 0, 0 ] ), Character( m11,
    [ 132, 12, 6, 0, 2, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 144, 0, 0, 0, 4, 0, 0, 0, 1, 1 ] ), Character( m11,
    [ 165, 13, 3, 1, 0, 1, 1, 1, 0, 0 ] ), Character( m11,
    [ 220, 4, 4, 0, 0, 4, 0, 0, 0, 0 ] ), Character( m11,
    [ 220, 12, 4, 4, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 220, 20, 4, 0, 0, 2, 0, 0, 0, 0 ] ), Character( m11,
    [ 330, 2, 6, 2, 0, 2, 0, 0, 0, 0 ] ), Character( m11,
    [ 330, 18, 6, 2, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 396, 12, 0, 4, 1, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 440, 8, 8, 0, 0, 2, 0, 0, 0, 0 ] ), Character( m11,
    [ 440, 24, 8, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 495, 15, 0, 3, 0, 0, 1, 1, 0, 0 ] ), Character( m11,
    [ 660, 4, 3, 4, 0, 1, 0, 0, 0, 0 ] ), Character( m11,
    [ 660, 12, 3, 0, 0, 3, 0, 0, 0, 0 ] ), Character( m11,
    [ 660, 12, 12, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 660, 28, 3, 0, 0, 1, 0, 0, 0, 0 ] ), Character( m11,
    [ 720, 0, 0, 0, 0, 0, 0, 0, 5, 5 ] ), Character( m11,
    [ 792, 24, 0, 0, 2, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 880, 0, 16, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 990, 6, 0, 2, 0, 0, 2, 2, 0, 0 ] ), Character( m11,
    [ 990, 6, 0, 6, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 990, 30, 0, 2, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 1320, 8, 6, 0, 0, 2, 0, 0, 0, 0 ] ), Character( m11,
    [ 1320, 24, 6, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 1584, 0, 0, 0, 4, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 1980, 12, 0, 4, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 1980, 36, 0, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 2640, 0, 12, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 3960, 24, 0, 0, 0, 0, 0, 0, 0, 0 ] ), Character( m11,
    [ 7920, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@Length( perms );|
  39
\end{Verbatim}
 

      Next we try the improved combinatorial approach that is sketched at the end of
Section{\nobreakspace}3.2 in{\nobreakspace}\cite{BP98copy}. We get the same characters, except that they may be ordered in a different
way; thus we compare the ordered lists. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@degrees:= DivisorsInt( Size( m11 ) );;|
  !gapprompt@gap>| !gapinput@perms2:= [];;|
  !gapprompt@gap>| !gapinput@for d in degrees do|
  !gapprompt@>| !gapinput@     Append( perms2, PermChars( m11, d ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Set( perms ) = Set( perms2 );|
  true
\end{Verbatim}
 

 Finally, we try the algorithm that is based on Gaussian elimination and that
is described in{\nobreakspace}\cite[Section 3.3]{BP98copy}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@perms3:= [];;|
  !gapprompt@gap>| !gapinput@for d in degrees do|
  !gapprompt@>| !gapinput@     Append( perms3, PermChars( m11, rec( torso:= [ d ] ) ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Set( perms ) = Set( perms3 );|
  true
\end{Verbatim}
 

 \textsf{GAP} provides two more functions to test properties of permutation characters. The
first one yields no new information in our case, but the second excludes one
possible permutation character; note that \texttt{TestPerm5} needs a $p$-modular Brauer table, and the \textsf{GAP} character table library contains all Brauer tables of $M_{11}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@newperms:= TestPerm4( m11, perms );;|
  !gapprompt@gap>| !gapinput@newperms = perms;|
  true
  !gapprompt@gap>| !gapinput@newperms:= TestPerm5( m11, perms, m11 mod 11 );;|
  !gapprompt@gap>| !gapinput@newperms = perms;|
  false
  !gapprompt@gap>| !gapinput@Difference( perms, newperms );|
  [ Character( m11, [ 220, 4, 4, 0, 0, 4, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 

 \textsf{GAP} knows the table of marks of $M_{11}$, from which the permutation characters can be extracted. It turns out that $M_{11}$ has $39$ conjugacy classes of subgroups but only $36$ different permutation characters, so three candidates computed above are in
fact not permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "M11" );|
  TableOfMarks( "M11" )
  !gapprompt@gap>| !gapinput@trueperms:= PermCharsTom( m11, tom );;|
  !gapprompt@gap>| !gapinput@Length( trueperms );  Length( Set( trueperms ) );|
  39
  36
  !gapprompt@gap>| !gapinput@Difference( perms, trueperms );|
  [ Character( m11, [ 220, 4, 4, 0, 0, 4, 0, 0, 0, 0 ] ), 
    Character( m11, [ 660, 4, 3, 4, 0, 1, 0, 0, 0, 0 ] ), 
    Character( m11, [ 660, 12, 3, 0, 0, 3, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{The Action of $U_6(2)$ on the Cosets of $M_{22}$}}\label{sect:act_U62_M22}
\logpage{[ 8, 3, 0 ]}
\hyperdef{L}{X81A5FC968782CFC3}{}
{
  We are interested in the permutation character of $U_6(2)$ (see{\nobreakspace}\cite[p. 115]{CCN85}) that corresponds to the action on the cosets of a $M_{22}$ subgroup (see{\nobreakspace}\cite[p. 39]{CCN85}). The character tables of both the group and the point stabilizer are
available in the \textsf{GAP} character table library, so we can compute class fusion and permutation
character directly; note that if the class fusion is not stored on the table
of the subgroup, in general one will not get a unique fusion but only a list
of candidates for the fusion. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u62:= CharacterTable( "U6(2)" );;|
  !gapprompt@gap>| !gapinput@m22:= CharacterTable( "M22" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( m22, u62 );|
  [ [ 1, 3, 7, 10, 14, 15, 22, 24, 24, 26, 33, 34 ], 
    [ 1, 3, 7, 10, 14, 15, 22, 24, 24, 26, 34, 33 ], 
    [ 1, 3, 7, 11, 14, 15, 22, 24, 24, 27, 33, 34 ], 
    [ 1, 3, 7, 11, 14, 15, 22, 24, 24, 27, 34, 33 ], 
    [ 1, 3, 7, 12, 14, 15, 22, 24, 24, 28, 33, 34 ], 
    [ 1, 3, 7, 12, 14, 15, 22, 24, 24, 28, 34, 33 ] ]
  !gapprompt@gap>| !gapinput@RepresentativesFusions( m22, fus, u62 );|
  [ [ 1, 3, 7, 10, 14, 15, 22, 24, 24, 26, 33, 34 ] ]
\end{Verbatim}
 

 We see that there are six possible class fusions that are equivalent under
table automorphisms of $U_6(2)$ and $M22$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= Set( fus,|
  !gapprompt@>| !gapinput@ x -> Induced( m22, u62, [ TrivialCharacter( m22 ) ], x )[1] );|
  [ Character( CharacterTable( "U6(2)" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, 0, 48, 0, 16, 6, 0, 0, 0, 0, 
        0, 0, 6, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "U6(2)" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, 48, 0, 0, 16, 6, 0, 0, 0, 0, 
        0, 0, 6, 0, 2, 0, 0, 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "U6(2)" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 48, 0, 0, 0, 16, 6, 0, 0, 0, 0, 
        0, 0, 6, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( u62, cand ).ATLAS;|
  [ "1a+22a+252a+616a+1155c+1386a+8064a+9240c", 
    "1a+22a+252a+616a+1155b+1386a+8064a+9240b", 
    "1a+22a+252a+616a+1155a+1386a+8064a+9240a" ]
  !gapprompt@gap>| !gapinput@aut:= AutomorphismsOfTable( u62 );;  Size( aut );|
  24
  !gapprompt@gap>| !gapinput@elms:= Filtered( Elements( aut ), x -> Order( x ) = 3 );|
  [ (10,11,12)(26,27,28)(40,41,42), (10,12,11)(26,28,27)(40,42,41) ]
  !gapprompt@gap>| !gapinput@Position( cand, Permuted( cand[1], elms[1] ) );|
  3
  !gapprompt@gap>| !gapinput@Position( cand, Permuted( cand[3], elms[1] ) );|
  2
\end{Verbatim}
 

 The six fusions induce three different characters, they are conjugate under
the action of the unique subgroup of order $3$ in the group of table automorphisms of $U_6(2)$. The table automorphisms of order $3$ are induced by group automorphisms of $U_6(2)$ (see{\nobreakspace}\cite[p. 120]{CCN85}). As can be seen from the list of maximal subgroups of $U_6(2)$ in{\nobreakspace}\cite[p. 115]{CCN85}, the three induced characters are in fact permutation characters which belong
to the three classes of maximal subgroups of type $M_{22}$ in $U_6(2)$, which are permuted by an outer automorphism of order 3. Now we want to
compute the extension of the above permutation character to the group $U_6(2).2$, which corresponds to the action of this group on the cosets of a $M_{22}.2$ subgroup. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u622:= CharacterTable( "U6(2).2" );;|
  !gapprompt@gap>| !gapinput@m222:= CharacterTable( "M22.2" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( m222, u622 );|
  [ [ 1, 3, 7, 10, 13, 14, 20, 22, 22, 24, 29, 38, 39, 42, 41, 46, 50, 
        53, 58, 59, 59 ] ]
  !gapprompt@gap>| !gapinput@cand:= Induced( m222, u622, [ TrivialCharacter( m222 ) ], fus[1] );|
  [ Character( CharacterTable( "U6(2).2" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 48, 0, 0, 16, 6, 0, 0, 0, 0, 0, 
        6, 0, 2, 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1080, 72, 
        0, 48, 8, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 2, 0, 0, 0, 0, 2, 2, 
        0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( u622, cand ).ATLAS;|
  [ "1a+22a+252a+616a+1155a+1386a+8064a+9240a" ]
\end{Verbatim}
 

 We see that for the embedding of $M_{22}.2$ into $U_6(2).2$, the class fusion is unique, so we get a unique extension of one of the above
permutation characters. This implies that exactly one class of maximal
subgroups of type $M_{22}$ extends to $M_{22}.2$ in a given group $U_6(2).2$. }

  
\section{\textcolor{Chapter }{Degree $20\,736$ Permutation Characters of $U_6(2)$}}\label{sect:deg_20736_U62}
\logpage{[ 8, 4, 0 ]}
\hyperdef{L}{X7EE1811C8496C428}{}
{
  Now we show an alternative way to compute the characters dealt with in the
previous example. This works also if the character table of the point
stabilizer is not available. In this situation we can compute all those
characters that have certain properties of permutation characters. Of course
this may take much longer than the above computations, which needed only a few
seconds. (The following calculations may need several hours, depending on the
computer used.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= PermChars( u62, rec( torso := [ 20736 ] ) );|
  [ Character( CharacterTable( "U6(2)" ), 
      [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, 0, 48, 0, 16, 6, 0, 0, 0, 
        0, 0, 0, 6, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "U6(2)" ), 
      [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, 48, 0, 0, 16, 6, 0, 0, 0, 
        0, 0, 0, 6, 0, 2, 0, 0, 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "U6(2)" ), 
      [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 48, 0, 0, 0, 16, 6, 0, 0, 0, 
        0, 0, 0, 6, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 

 For the next step, that is, the computation of the extension of the
permutation character to $U_6(2).2$, we may use the above information, since the values on the inner classes are
prescribed. The question which of the three candidates for $U_6(2)$ extends to $U_6(2).2$ depends on the choice of the class fusion of $U_6(2)$ into $U_6(2).2$. With respect to the class fusion that is stored on the \textsf{GAP} library table, the third candidate extends, as can be seen from the fact that
this one is invariant under the permutation of conjugacy classes of $U_6(2)$ that is induced by the action of the chosen supergroup $U_6(2).2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u622:= CharacterTable( "U6(2).2" );;|
  !gapprompt@gap>| !gapinput@inv:= InverseMap( GetFusionMap( u62, u622 ) );|
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [ 11, 12 ], 13, 14, 15, [ 16, 17 ], 
    18, 19, 20, 21, 22, 23, 24, 25, 26, [ 27, 28 ], [ 29, 30 ], 31, 32, 
    [ 33, 34 ], [ 35, 36 ], 37, [ 38, 39 ], 40, [ 41, 42 ], 43, 44, 
    [ 45, 46 ] ]
  !gapprompt@gap>| !gapinput@ext:= List( cand, x -> CompositionMaps( x, inv ) );|
  [ [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, [ 0, 48 ], 0, 16, 6, 0, 0, 
        0, 0, 0, 6, 0, 2, 0, 0, [ 0, 4 ], 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
        0, 0 ], 
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, [ 0, 48 ], 0, 16, 6, 0, 0, 
        0, 0, 0, 6, 0, 2, 0, 0, [ 0, 4 ], 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
        0, 0 ], 
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 48, 0, 0, 16, 6, 0, 0, 0, 0, 0, 
        6, 0, 2, 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ] ]
  !gapprompt@gap>| !gapinput@cand:= PermChars( u622, rec( torso:= ext[3] ) );|
  [ Character( CharacterTable( "U6(2).2" ), 
      [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 48, 0, 0, 16, 6, 0, 0, 0, 0, 
        0, 6, 0, 2, 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1080, 
        72, 0, 48, 8, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 2, 0, 0, 0, 0, 2, 
        2, 0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Degree $57\,572\,775$ Permutation Characters of $O_8^+(3)$}}\label{sect:degree_57572775_O8p3}
\logpage{[ 8, 5, 0 ]}
\hyperdef{L}{X7DC6A6E785A347C8}{}
{
  The group $O_8^+(3)$ (see{\nobreakspace}\cite[p. 140]{CCN85}) contains a subgroup of type $2^{{3+6}}.L_3(2)$, which extends to a maximal subgroup $U$ in $O_8^+(3).3$. For the computation of the permutation character, we cannot use explicit
induction since the table of $U$ is not available in the \textsf{GAP} table library. Since $U \cap O_8^+(3)$ is contained in a $O_8^+(2)$ subgroup of $O_8^+(3)$, we can try to find the permutation character of $O_8^+(2)$ corresponding to the action on the cosets of $U \cap O_8^+(3)$, and then induce this character to $O_8^+(3)$. This kind of computations becomes more difficult with increasing degree, so
we try to reduce the problem further. In fact, the $2^{{3+6}}.L_3(2)$ group is contained in a $2^6:A_8$ subgroup of $O_8^+(2)$, in which the index is only $15$; the unique possible permutation character of this degree can be read off
immediately. Induction to $O_8^+(3)$ through the chain of subgroups is possible provided the class fusions are
available. There are $24$ possible fusions from $O_8^+(2)$ into $O_8^+(3)$, which are all equivalent w.r.t.{\nobreakspace}table automorphisms of $O_8^+(3)$. If we later want to consider the extension of the permutation character in
question to $O_8^+(3).3$ then we have to choose a fusion of an $O_8^+(2)$ subgroup that does \emph{not} extend to $O_8^+(2).3$. But if for example our question is just whether the resulting permutation
character is multiplicity-free then this can be decided already from the
permutation character of $O_8^+(3)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o8p3:= CharacterTable("O8+(3)");;|
  !gapprompt@gap>| !gapinput@Size( o8p3 ) / (2^9*168);|
  57572775
  !gapprompt@gap>| !gapinput@o8p2:= CharacterTable( "O8+(2)" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( o8p2, o8p3 );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  24
  !gapprompt@gap>| !gapinput@rep:= RepresentativesFusions( o8p2, fus, o8p3 );|
  [ [ 1, 5, 2, 3, 4, 5, 7, 8, 12, 16, 17, 19, 23, 20, 21, 22, 23, 24, 
        25, 26, 37, 38, 42, 31, 32, 36, 49, 52, 51, 50, 43, 44, 45, 53, 
        55, 56, 57, 71, 71, 71, 72, 73, 74, 78, 79, 83, 88, 89, 90, 94, 
        100, 101, 105 ] ]
  !gapprompt@gap>| !gapinput@fus:= rep[1];;|
  !gapprompt@gap>| !gapinput@Size( o8p2 ) / (2^9*168);|
  2025
  !gapprompt@gap>| !gapinput@sub:= CharacterTable( "2^6:A8" );;|
  !gapprompt@gap>| !gapinput@subfus:= GetFusionMap( sub, o8p2 );|
  [ 1, 3, 2, 2, 4, 5, 6, 13, 3, 6, 12, 13, 14, 7, 21, 24, 11, 30, 29, 
    31, 13, 17, 15, 16, 14, 17, 36, 37, 18, 41, 24, 44, 48, 28, 33, 32, 
    34, 35, 35, 51, 51 ]
  !gapprompt@gap>| !gapinput@fus:= CompositionMaps( fus, subfus );|
  [ 1, 2, 5, 5, 3, 4, 5, 23, 2, 5, 19, 23, 20, 7, 37, 31, 17, 50, 51, 
    43, 23, 23, 21, 22, 20, 23, 56, 57, 24, 72, 31, 78, 89, 52, 45, 44, 
    53, 55, 55, 100, 100 ]
  !gapprompt@gap>| !gapinput@Size( sub ) / (2^9*168);|
  15
  !gapprompt@gap>| !gapinput@List( Irr( sub ), Degree );|
  [ 1, 7, 14, 20, 21, 21, 21, 28, 35, 45, 45, 56, 64, 70, 28, 28, 35, 
    35, 35, 35, 70, 70, 70, 70, 140, 140, 140, 140, 140, 210, 210, 252, 
    252, 280, 280, 315, 315, 315, 315, 420, 448 ]
  !gapprompt@gap>| !gapinput@cand:= PermChars( sub, 15 );|
  [ Character( CharacterTable( "2^6:A8" ),
    [ 15, 15, 15, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 
        3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@ind:= Induced( sub, o8p3, cand, fus );|
  [ Character( CharacterTable( "O8+(3)" ),
    [ 57572775, 59535, 59535, 59535, 3591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 2187, 0, 27, 135, 135, 135, 243, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 0, 0, 0, 0, 27, 
        27, 27, 27, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@o8p33:= CharacterTable( "O8+(3).3" );;|
  !gapprompt@gap>| !gapinput@inv:= InverseMap( GetFusionMap( o8p3, o8p33 ) );|
  [ 1, [ 2, 3, 4 ], 5, 6, [ 7, 8, 9 ], [ 10, 11, 12 ], 13, 
    [ 14, 15, 16 ], 17, 18, 19, [ 20, 21, 22 ], 23, [ 24, 25, 26 ], 
    [ 27, 28, 29 ], 30, [ 31, 32, 33 ], [ 34, 35, 36 ], [ 37, 38, 39 ], 
    [ 40, 41, 42 ], [ 43, 44, 45 ], 46, [ 47, 48, 49 ], 50, 
    [ 51, 52, 53 ], 54, 55, 56, 57, [ 58, 59, 60 ], [ 61, 62, 63 ], 64, 
    [ 65, 66, 67 ], 68, [ 69, 70, 71 ], [ 72, 73, 74 ], [ 75, 76, 77 ], 
    [ 78, 79, 80 ], [ 81, 82, 83 ], 84, 85, [ 86, 87, 88 ], 
    [ 89, 90, 91 ], [ 92, 93, 94 ], 95, 96, [ 97, 98, 99 ], 
    [ 100, 101, 102 ], [ 103, 104, 105 ], [ 106, 107, 108 ], 
    [ 109, 110, 111 ], [ 112, 113, 114 ] ]
  !gapprompt@gap>| !gapinput@ext:= CompositionMaps( ind[1], inv );|
  [ 57572775, 59535, 3591, 0, 0, 0, 0, 0, 2187, 0, 27, 135, 243, 0, 0, 
    0, 0, 0, 0, 0, 27, 0, 0, 27, 27, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@perms:= PermChars( o8p33, rec( torso:= ext ) );|
  [ Character( CharacterTable( "O8+(3).3" ),
    [ 57572775, 59535, 3591, 0, 0, 0, 0, 0, 2187, 0, 27, 135, 243, 0, 
        0, 0, 0, 0, 0, 0, 27, 0, 0, 27, 27, 0, 8, 1, 1, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3159, 
        3159, 243, 243, 39, 39, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 
        3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( o8p33, perms ).ATLAS;|
  [ "1a+780aabb+2457a+2808abc+9450aaabbcc+18200abcdddef+24192a+54600a^{5\
  }b+70200aabb+87360ab+139776a^{5}+147420a^{4}b^{4}+163800ab+184275aabc+\
  199017aa+218700a+245700a+291200aef+332800a^{4}b^{5}c^{5}+491400aaabcd+\
  531441a^{5}b^{4}c^{4}+552825a^{4}+568620aabb+698880a^{4}b^{4}+716800aa\
  abbccdddeeff+786240aabb+873600aa+998400aa+1257984a^{6}+1397760aa" ]
\end{Verbatim}
      }

  
\section{\textcolor{Chapter }{The Action of $O_7(3).2$ on the Cosets of $2^7.S_7$}}\label{sect:action_O73d2_27S7}
\logpage{[ 8, 6, 0 ]}
\hyperdef{L}{X792D2C2380591D8D}{}
{
  We want to know whether the permutation character of $O_7(3).2$ (see{\nobreakspace}\cite[p. 108]{CCN85}) on the cosets of its maximal subgroup $U$ of type $2^7.S_7$ is multiplicity-free. As in the previous examples, first we try to compute the
permutation character of the simple group $O_7(3)$. It turns out that the direct computation of all candidates from the degree
is very time consuming. But we can use for example the additional information
provided by the fact that $U$ contains an $A_7$ subgroup. We compute the possible class fusions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o73:= CharacterTable( "O7(3)" );;|
  !gapprompt@gap>| !gapinput@a7:= CharacterTable( "A7" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( a7, o73 );|
  [ [ 1, 3, 6, 10, 15, 16, 24, 33, 33 ], 
    [ 1, 3, 7, 10, 15, 16, 22, 33, 33 ] ]
\end{Verbatim}
 

 We cannot decide easily which fusion is the right one, but already the fact
that no other fusions are possible gives us some information about impossible
constituents of the permutation character we want to compute. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ind:= List( fus,|
  !gapprompt@>| !gapinput@      x -> Induced( a7, o73, [ TrivialCharacter( a7 ) ], x )[1] );;|
  !gapprompt@gap>| !gapinput@mat:= MatScalarProducts( o73, Irr( o73 ), ind );;|
  !gapprompt@gap>| !gapinput@sum:= Sum( mat );|
  [ 2, 6, 2, 0, 8, 6, 2, 4, 4, 8, 3, 0, 4, 4, 9, 3, 5, 0, 0, 9, 0, 10, 
    5, 6, 15, 1, 12, 1, 15, 7, 2, 4, 14, 16, 0, 12, 12, 7, 8, 8, 14, 
    12, 12, 14, 6, 6, 20, 16, 12, 12, 12, 10, 10, 12, 12, 8, 12, 6 ]
  !gapprompt@gap>| !gapinput@const:= Filtered( [ 1 .. Length( sum ) ], x -> sum[x] <> 0 );|
  [ 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 20, 22, 23, 24, 
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 
    43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 ]
  !gapprompt@gap>| !gapinput@Length( const );|
  52
  !gapprompt@gap>| !gapinput@const:= Irr( o73 ){ const };;|
  !gapprompt@gap>| !gapinput@rat:= RationalizedMat( const );;|
\end{Verbatim}
 

 But much more can be deduced from the fact that certain zeros of the
permutation character can be predicted. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= ClassNames( o73 );|
  [ "1a", "2a", "2b", "2c", "3a", "3b", "3c", "3d", "3e", "3f", "3g", 
    "4a", "4b", "4c", "4d", "5a", "6a", "6b", "6c", "6d", "6e", "6f", 
    "6g", "6h", "6i", "6j", "6k", "6l", "6m", "6n", "6o", "6p", "7a", 
    "8a", "8b", "9a", "9b", "9c", "9d", "10a", "10b", "12a", "12b", 
    "12c", "12d", "12e", "12f", "12g", "12h", "13a", "13b", "14a", 
    "15a", "18a", "18b", "18c", "18d", "20a" ]
  !gapprompt@gap>| !gapinput@List( fus, x -> names{ x } );|
  [ [ "1a", "2b", "3b", "3f", "4d", "5a", "6h", "7a", "7a" ], 
    [ "1a", "2b", "3c", "3f", "4d", "5a", "6f", "7a", "7a" ] ]
  !gapprompt@gap>| !gapinput@torso:= [ 28431 ];;|
  !gapprompt@gap>| !gapinput@zeros:= [ 5, 8, 9, 11, 17, 20, 23, 28, 29, 32, 36, 37, 38,|
  !gapprompt@>| !gapinput@             43, 46, 47, 48, 53, 54, 55, 56, 57, 58 ];;|
  !gapprompt@gap>| !gapinput@names{ zeros };|
  [ "3a", "3d", "3e", "3g", "6a", "6d", "6g", "6l", "6m", "6p", "9a", 
    "9b", "9c", "12b", "12e", "12f", "12g", "15a", "18a", "18b", "18c", 
    "18d", "20a" ]
\end{Verbatim}
 

 Every order $3$ element of $U$ lies in an $A_7$ subgroup of $U$, so among the classes of element order $3$, at most the classes \texttt{3B}, \texttt{3C}, and \texttt{3F} can have nonzero permutation character values. The excluded classes of element
order $6$ are the square roots of the excluded order $3$ elements, likewise the given classes of element orders $9$, $12$, and $18$ are excluded. The character value on \texttt{20A} must be zero because $U$ does not contain elements of this order. So we enter the additional
information about these zeros. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for i in zeros do|
  !gapprompt@>| !gapinput@     torso[i]:= 0;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@torso;|
  [ 28431,,,, 0,,, 0, 0,, 0,,,,,, 0,,, 0,,, 0,,,,, 0, 0,,, 0,,,, 0, 0, 
    0,,,,, 0,,, 0, 0, 0,,,,, 0, 0, 0, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@perms:= PermChars( o73, rec( torso:= torso, chars:= rat ) );|
  [ Character( CharacterTable( "O7(3)" ),
    [ 28431, 567, 567, 111, 0, 0, 243, 0, 0, 81, 0, 15, 3, 27, 15, 6, 
        0, 0, 27, 0, 3, 27, 0, 0, 0, 3, 9, 0, 0, 3, 3, 0, 4, 1, 1, 0, 
        0, 0, 0, 2, 2, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( o73, perms ).ATLAS;|
  [ "1a+78a+168a+182a+260ab+1092a+2457a+2730a+4095b+5460a+11648a" ]
\end{Verbatim}
 

 We see that this character is already multiplicity free, so this holds also
for its extension to $O_7(3).2$, and we need not compute this extension. (Of course we could compute it in
the same way as in the examples above.) }

  
\section{\textcolor{Chapter }{The Action of $O_8^+(3).2_1$ on the Cosets of $2^7.A_8$}}\label{sect:action_O8p3d2a_27A8}
\logpage{[ 8, 7, 0 ]}
\hyperdef{L}{X875B361C8512939F}{}
{
  We are interested in the permutation character of $O_8^+(3).2_1$ that corresponds to the action on the cosets of a subgroup of type $2^7.A_8$. The intersection of the point stabilizer with the simple group $O_8^+(3)$ is of type $2^6.A_8$. First we compute the class fusion of these groups, modulo problems with
ambiguities due to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o8p3:= CharacterTable( "O8+(3)" );;|
  !gapprompt@gap>| !gapinput@o8p2:= CharacterTable( "O8+(2)" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( o8p2, o8p3 );;|
  !gapprompt@gap>| !gapinput@NamesOfFusionSources( o8p2 );|
  [ "A9", "2^8:O8+(2)", "(D10xD10).2^2", "(3x3^3:S3):2", 
    "(3x3^(1+2)+:2A4).2", "2^(3+3+3).L3(2)", "NRS(O8+(2),2^(3+3+3)_a)", 
    "NRS(O8+(2),2^(3+3+3)_b)", "O8+(2)N2", "O8+(2)M2", "O8+(2)M3", 
    "O8+(2)M5", "O8+(2)M6", "O8+(2)M8", "O8+(2)M9", "(3xU4(2)):2", 
    "O8+(2)M11", "O8+(2)M12", "2^(1+8)_+:(S3xS3xS3)", "3^4:2^3.S4(a)", 
    "(A5xA5):2^2", "O8+(2)M16", "O8+(2)M17", "2^(1+8)+.O8+(2)", "7:6", 
    "(A5xD10).2", "(D10xA5).2", "O8+(2)N5C", "2^6:A8", "2.O8+(2)", 
    "2^2.O8+(2)", "S6(2)" ]
  !gapprompt@gap>| !gapinput@sub:= CharacterTable( "2^6:A8" );;|
  !gapprompt@gap>| !gapinput@subfus:= GetFusionMap( sub, o8p2 );|
  [ 1, 3, 2, 2, 4, 5, 6, 13, 3, 6, 12, 13, 14, 7, 21, 24, 11, 30, 29, 
    31, 13, 17, 15, 16, 14, 17, 36, 37, 18, 41, 24, 44, 48, 28, 33, 32, 
    34, 35, 35, 51, 51 ]
  !gapprompt@gap>| !gapinput@fus:= List( fus, x -> CompositionMaps( x, subfus ) );;|
  !gapprompt@gap>| !gapinput@fus:= Set( fus );;|
  !gapprompt@gap>| !gapinput@Length( fus );|
  24
\end{Verbatim}
 

 The ambiguities due to Galois automorphisms disappear when we are looking for
the permutation characters induced by the fusions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ind:= List( fus, x -> Induced( sub, o8p3,|
  !gapprompt@>| !gapinput@                             [ TrivialCharacter( sub ) ], x )[1] );;|
  !gapprompt@gap>| !gapinput@ind:= Set( ind );;|
  !gapprompt@gap>| !gapinput@Length( ind );|
  6
\end{Verbatim}
 

 Now we try to extend the candidates to $O_8^+(3).2_1$; the choice of the fusion of $O_8^+(3)$ into $O_8^+(3).2_1$ determines which of the candidates may extend. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o8p32:= CharacterTable( "O8+(3).2_1" );;|
  !gapprompt@gap>| !gapinput@fus:= GetFusionMap( o8p3, o8p32 );;|
  !gapprompt@gap>| !gapinput@ext:= List( ind, x -> CompositionMaps( x, InverseMap( fus ) ) );;|
  !gapprompt@gap>| !gapinput@ext:= Filtered( ext, x -> ForAll( x, IsInt ) );|
  [ [ 3838185, 17577, 8505, 8505, 873, 0, 0, 0, 0, 6561, 0, 0, 729, 0, 
        9, 105, 45, 45, 105, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 
        0, 9, 9, 27, 27, 0, 0, 27, 9, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
        0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 
        0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0 ], 
    [ 3838185, 17577, 8505, 8505, 873, 0, 6561, 0, 0, 0, 0, 0, 729, 0, 
        9, 105, 45, 45, 105, 30, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 9, 0, 
        0, 0, 9, 27, 27, 0, 0, 9, 27, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
        0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 
        0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]
\end{Verbatim}
 

 We compute the extensions of the first candidate; the other belongs to another
class of subgroups, which is the image under an outer automorphism.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@perms:= PermChars( o8p32, rec( torso:= ext[1] ) );|
  [ Character( CharacterTable( "O8+(3).2_1" ),
    [ 3838185, 17577, 8505, 8505, 873, 0, 0, 0, 0, 6561, 0, 0, 729, 0, 
        9, 105, 45, 45, 105, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 
        0, 9, 9, 27, 27, 0, 0, 27, 9, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
        0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 
        0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 3159, 1575, 567, 63, 87, 
        15, 0, 0, 45, 0, 81, 9, 27, 0, 0, 3, 3, 3, 3, 5, 5, 0, 0, 0, 4, 
        0, 0, 27, 0, 9, 0, 0, 15, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( o8p32, perms ).ATLAS;|
  [ "1a+260abc+520ab+819a+2808b+9450aab+18200a+23400ac+29120b+36400aab+4\
  6592abce+49140d+66339a+98280ab+163800a+189540d+232960d+332800ab+368550\
  a+419328a+531441ab" ]
\end{Verbatim}
 

 Now we repeat the calculations for $O_8^+(3).2_2$ instead of $O_8^+(3).2_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o8p32:= CharacterTable( "O8+(3).2_2" );;|
  !gapprompt@gap>| !gapinput@fus:= GetFusionMap( o8p3, o8p32 );;|
  !gapprompt@gap>| !gapinput@ext:= List( ind, x -> CompositionMaps( x, InverseMap( fus ) ) );;|
  !gapprompt@gap>| !gapinput@ext:= Filtered( ext, x -> ForAll( x, IsInt ) );;|
  !gapprompt@gap>| !gapinput@perms:= PermChars( o8p32, rec( torso:= ext[1] ) );|
  [ Character( CharacterTable( "O8+(3).2_2" ),
    [ 3838185, 17577, 8505, 873, 0, 0, 0, 6561, 0, 0, 0, 0, 729, 0, 9, 
        105, 45, 105, 30, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 9, 0, 9, 27, 
        0, 0, 0, 27, 27, 9, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 
        0, 6, 0, 0, 0, 0, 0, 0, 0, 199017, 2025, 297, 441, 73, 9, 0, 
        1215, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 27, 27, 0, 1, 9, 12, 0, 0, 
        45, 0, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 
        0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( o8p32, perms ).ATLAS;|
  [ "1a+260aac+520ab+819a+2808a+9450aaa+18200accee+23400ac+29120a+36400a\
  +46592aa+49140c+66339a+93184a+98280ab+163800a+184275ac+189540c+232960c\
  +332800aa+419328a+531441aa" ]
\end{Verbatim}
 

 We might be interested in the extension to $O_8^+(3).(2^2)_{122}$. It is clear that this cannot be multiplicity free because of the
multiplicity \texttt{9450aaa} in the character induced from $O_8^+(3).2_2$. We could put the extensions to the index two subgroups together, but it is
simpler (and not expensive) to run the same program as above. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o8p322:= CharacterTable( "O8+(3).(2^2)_{122}" );;|
  !gapprompt@gap>| !gapinput@fus:= GetFusionMap( o8p32, o8p322 );;|
  !gapprompt@gap>| !gapinput@ext:= List( perms, x -> CompositionMaps( x, InverseMap( fus ) ) );;|
  !gapprompt@gap>| !gapinput@ext:= Filtered( ext, x -> ForAll( x, IsInt ) );;|
  !gapprompt@gap>| !gapinput@perms:= PermChars( o8p322, rec( torso:= ext[1] ) );|
  [ Character( CharacterTable( "O8+(3).(2^2)_{122}" ),
    [ 3838185, 17577, 8505, 873, 0, 0, 0, 6561, 0, 0, 729, 0, 9, 105, 
        45, 105, 30, 0, 0, 0, 0, 0, 0, 189, 0, 0, 9, 9, 27, 0, 0, 27, 
        9, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 
        0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3159, 1575, 
        567, 63, 87, 15, 0, 0, 45, 0, 81, 9, 27, 0, 0, 3, 3, 3, 5, 0, 
        0, 4, 0, 0, 27, 0, 9, 0, 0, 15, 0, 3, 0, 0, 2, 0, 0, 0, 3, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199017, 2025, 297, 441, 73, 9, 0, 
        1215, 0, 0, 0, 0, 81, 0, 0, 0, 27, 27, 0, 1, 9, 12, 0, 0, 45, 
        0, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 
        0, 28431, 1647, 135, 63, 87, 39, 0, 0, 243, 27, 0, 0, 81, 63, 
        0, 0, 0, 9, 0, 3, 3, 6, 2, 0, 0, 0, 9, 0, 0, 3, 3, 3, 0, 4, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( o8p322, perms ).ATLAS;|
  [ "1a+260ace+819a+1040a+2808c+9450aac+18200a+23400ae+29120c+36400aac+4\
  6592ac+49140g+66339a+93184a+163800b+189540g+196560a+232960g+332800ac+3\
  68550a+419328a+531441ac" ]
\end{Verbatim}
  }

  
\section{\textcolor{Chapter }{The Action of $S_4(4).4$ on the Cosets of $5^2.[2^5]$}}\label{sect:action_S44d4_5225}
\logpage{[ 8, 8, 0 ]}
\hyperdef{L}{X7B1DFAF98182CFF4}{}
{
  We want to know whether the permutation character corresponding to the action
of $S_4(4).4$ (see{\nobreakspace}\cite[p. 44]{CCN85}) on the cosets of its maximal subgroup of type $5^2:[2^5]$ is multiplicity free. The library names of subgroups for which the class
fusions are stored are listed as value of the attribute \texttt{NamesOfFusionSources} (\textbf{Reference: NamesOfFusionSources}), and for groups whose isomorphism type is not determined by the name this is
the recommended way to find out whether the table of the subgroup is contained
in the \textsf{GAP} library and known to belong to this group. (It might be that a table with such
a name is contained in the library but belongs to another group, and it may
also be that the table of the group is contained in the library --with any
name-- but it is not known that this group is isomorphic to a subgroup of $S_4(4).4$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s444:= CharacterTable( "S4(4).4" );;|
  !gapprompt@gap>| !gapinput@NamesOfFusionSources( s444 );|
  [ "(L3(2)xS4(4):2).2", "S4(4)", "S4(4).2" ]
\end{Verbatim}
 

 So we cannot simply fetch the table of the subgroup. As in the previous
examples, we compute the possible permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@perms:= PermChars( s444,|
  !gapprompt@>| !gapinput@               rec( torso:= [ Size( s444 ) / ( 5^2*2^5 ) ] ) );|
  [ Character( CharacterTable( "S4(4).4" ),
    [ 4896, 384, 96, 0, 16, 32, 36, 16, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "S4(4).4" ),
    [ 4896, 192, 32, 0, 0, 8, 6, 1, 0, 2, 0, 0, 36, 0, 12, 0, 0, 0, 1, 
        0, 6, 6, 2, 2, 0, 0, 0, 0, 1, 1 ] ), 
    Character( CharacterTable( "S4(4).4" ),
    [ 4896, 240, 64, 0, 8, 8, 36, 16, 0, 0, 0, 0, 0, 12, 8, 0, 4, 4, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 

 So there are three candidates. None of them is multiplicity free, so we need
not decide which of the candidates actually belongs to the group $5^2:[2^5]$ we have in mind. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PermCharInfo( s444, perms ).ATLAS;|
  [ "1abcd+50abcd+153abcd+170a^{4}b^{4}+680aabb", 
    "1a+50ac+153a+170aab+256a+680abb+816a+1020a", 
    "1ac+50ac+68a+153abcd+170aabbb+204a+680abb+1020a" ]
\end{Verbatim}
 

 (If we would be interested which candidate is the right one, we could for
example look at the intersection with $S_4(4)$, and hope for a contradiction to the fact that the group must lie in a $(A_5 \times A_5):2$ subgroup.) }

  
\section{\textcolor{Chapter }{The Action of $Co_1$ on the Cosets of Involution Centralizers}}\label{sect:action_Co1_inv_centralizers}
\logpage{[ 8, 9, 0 ]}
\hyperdef{L}{X7F04F0C684AA8B30}{}
{
  We compute the permutation characters of the sporadic simple Conway group $Co_1$ (see{\nobreakspace}\cite[p. 180]{CCN85}) corresponding to the actions on the cosets of involution centralizers.
Equivalently, we are interested in the action of $Co_1$ on conjugacy classes of involutions. These characters can be computed as
follows. First we take the table of $Co_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Co1" );|
  CharacterTable( "Co1" )
\end{Verbatim}
 

 The centralizer of each \texttt{2A} element is a maximal subgroup of $Co_1$. This group is also contained in the table library. So we can compute the
permutation character by explicit induction, and the decomposition in
irreducibles is computed with the command \texttt{PermCharInfo} (\textbf{Reference: PermCharInfo}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( Maxes( t )[5] );|
  CharacterTable( "2^(1+8)+.O8+(2)" )
  !gapprompt@gap>| !gapinput@ind:= Induced( s, t, [ TrivialCharacter( s ) ] );;|
  !gapprompt@gap>| !gapinput@PermCharInfo( t, ind ).ATLAS;|
  [ "1a+299a+17250a+27300a+80730a+313950a+644644a+2816856a+5494125a+1243\
  2420a+24794000a" ]
\end{Verbatim}
 

 The centralizer of a \texttt{2B} element is not maximal. First we compute which maximal subgroup can contain
it. The character tables of all maximal subgroups of $Co_1$ are contained in the \textsf{GAP}'s table library, so we may take these tables and look at the group orders. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@centorder:= SizesCentralizers( t )[3];;|
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( t ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( maxes, x -> Size( x ) mod centorder = 0 );|
  [ CharacterTable( "(A4xG2(4)):2" ) ]
  !gapprompt@gap>| !gapinput@u:= cand[1];;|
  !gapprompt@gap>| !gapinput@index:= Size( u ) / centorder;|
  3
\end{Verbatim}
 

 So there is a unique class of maximal subgroups containing the centralizer of
a \texttt{2B} element, as a subgroup of index $3$. We compute the unique permutation character of degree $3$ of this group, and induce this character to $G$.          

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@subperm:= PermChars( u, rec( degree := index, bounds := false ) );|
  [ Character( CharacterTable( "(A4xG2(4)):2" ),
    [ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
        3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
        1, 1, 1, 1, 1, 1 ] ) ]
  !gapprompt@gap>| !gapinput@subperm = PermChars( u, rec( torso := [ 3 ] ) );|
  true
  !gapprompt@gap>| !gapinput@ind:= Induced( u, t, subperm );|
  [ Character( CharacterTable( "Co1" ),
    [ 2065694400, 181440, 119408, 38016, 2779920, 0, 0, 378, 30240, 
        864, 0, 720, 316, 80, 2520, 30, 0, 6480, 1508, 0, 0, 0, 0, 0, 
        38, 18, 105, 0, 600, 120, 56, 24, 0, 12, 0, 0, 0, 120, 48, 18, 
        0, 0, 6, 0, 360, 144, 108, 0, 0, 10, 0, 0, 0, 0, 0, 4, 2, 3, 9, 
        0, 0, 15, 3, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 
        12, 8, 0, 6, 0, 0, 3, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 
        0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( t, ind ).ATLAS;|
  [ "1a+1771a+8855a+27300aa+313950a+345345a+644644aa+871884aaa+1771000a+\
  2055625a+4100096a+7628985a+9669660a+12432420aa+21528000aa+23244375a+24\
  174150aa+24794000a+31574400aa+40370176a+60435375a+85250880aa+100725625\
  a+106142400a+150732800a+184184000a+185912496a+207491625a+299710125a+30\
  2176875a" ]
\end{Verbatim}
 

 Finally, we try the same for the centralizer of a \texttt{2C} element. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@centorder:= SizesCentralizers( t )[4];;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( maxes, x -> Size( x ) mod centorder = 0 );|
  [ CharacterTable( "Co2" ), CharacterTable( "2^11:M24" ) ]
\end{Verbatim}
 

 The group order excludes all except two classes of maximal subgroups. But the \texttt{2C} centralizer cannot lie in $Co_2$ because the involution centralizers in $Co_2$ are too small. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= cand[1];;|
  !gapprompt@gap>| !gapinput@GetFusionMap( u, t );|
  [ 1, 2, 2, 4, 7, 6, 9, 11, 11, 10, 11, 12, 14, 17, 16, 21, 23, 20, 
    22, 22, 24, 28, 30, 33, 31, 32, 33, 33, 37, 42, 41, 43, 44, 48, 52, 
    49, 53, 55, 53, 52, 54, 60, 60, 60, 64, 65, 65, 67, 66, 70, 73, 72, 
    78, 79, 84, 85, 87, 92, 93, 93 ]
  !gapprompt@gap>| !gapinput@centorder;|
  389283840
  !gapprompt@gap>| !gapinput@SizesCentralizers( u )[4];|
  1474560
\end{Verbatim}
 

 So we try the second candidate. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= cand[2];|
  CharacterTable( "2^11:M24" )
  !gapprompt@gap>| !gapinput@index:= Size( u ) / centorder;|
  1288
  !gapprompt@gap>| !gapinput@subperm:= PermChars( u, rec( torso := [ index ] ) );|
  [ Character( CharacterTable( "2^11:M24" ),
    [ 1288, 1288, 1288, 56, 56, 56, 56, 56, 56, 48, 48, 48, 48, 48, 10, 
        10, 10, 10, 7, 7, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
        4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 
        2, 3, 3, 3, 1, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@subperm = PermChars( u, rec( degree:= index, bounds := false ) );|
  true
  !gapprompt@gap>| !gapinput@ind:= Induced( u, t, subperm );|
  [ Character( CharacterTable( "Co1" ),
    [ 10680579000, 1988280, 196560, 94744, 0, 17010, 0, 945, 7560, 
        3432, 2280, 1728, 252, 308, 0, 225, 0, 0, 0, 270, 0, 306, 0, 
        46, 45, 25, 0, 0, 120, 32, 12, 52, 36, 36, 0, 0, 0, 0, 0, 45, 
        15, 0, 9, 3, 0, 0, 0, 0, 18, 0, 30, 0, 6, 18, 0, 3, 5, 0, 0, 0, 
        0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
        6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( t, ind ).ATLAS;|
  [ "1a+17250aa+27300a+80730aa+644644aaa+871884a+1821600a+2055625aaa+281\
  6856a+5494125a^{4}+12432420aa+16347825aa+23244375a+24174150aa+24667500\
  aa+24794000aaa+31574400a+40370176a+55255200a+66602250a^{4}+83720000aa+\
  85250880aaa+91547820aa+106142400a+150732800a+184184000aaa+185912496aaa\
  +185955000aaa+207491625aaa+215547904aa+241741500aaa+247235625a+2578576\
  00aa+259008750a+280280000a+302176875a+326956500a+387317700a+402902500a\
  +464257024a+469945476b+502078500a+503513010a+504627200a+522161640a" ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{The Multiplicity Free Permutation Characters of $G_2(3)$}}\label{sect:multfree_G23}
\logpage{[ 8, 10, 0 ]}
\hyperdef{L}{X8230719D8538384B}{}
{
  We compute the multiplicity free possible permutation characters of $G_2(3)$ (see{\nobreakspace}\cite[p. 60]{CCN85}). For each divisor $d$ of the group order, we compute all those possible permutation characters of
degree $d$ of $G$ for which each irreducible constituent occurs with multiplicity at most $1$; this is done by prescribing the \texttt{maxmult} component of the second argument of \texttt{PermChars} (\textbf{Reference: PermChars}) to be the list with $1$ at each position. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "G2(3)" );|
  CharacterTable( "G2(3)" )
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "G2(3)" );;|
  !gapprompt@gap>| !gapinput@n:= Length( RationalizedMat( Irr( t ) ) );;|
  !gapprompt@gap>| !gapinput@maxmult:= List( [ 1 .. n ], i -> 1 );;|
  !gapprompt@gap>| !gapinput@perms:= [];;|
  !gapprompt@gap>| !gapinput@divs:= DivisorsInt( Size( t ) );;|
  !gapprompt@gap>| !gapinput@for d in divs do|
  !gapprompt@>| !gapinput@     Append( perms,|
  !gapprompt@>| !gapinput@             PermChars( t, rec( bounds  := false,|
  !gapprompt@>| !gapinput@                                degree  := d,|
  !gapprompt@>| !gapinput@                                maxmult := maxmult ) ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( perms );|
  42
  !gapprompt@gap>| !gapinput@List( perms, Degree );|
  [ 1, 351, 351, 364, 364, 378, 378, 546, 546, 546, 546, 546, 702, 702, 
    728, 728, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1456, 
    1456, 1638, 1638, 2184, 2184, 2457, 2457, 2457, 2457, 3159, 3276, 
    3276, 3276, 3276, 4368, 6552, 6552 ]
\end{Verbatim}
 

 For finding out which of these candidates are really permutation characters,
we could inspect them piece by piece, using the information in{\nobreakspace}\cite{CCN85}. For example, the candidates of degrees $351$, $364$, and $378$ are induced from the trivial characters of maximal subgroups of $G$, whereas the candidates of degree $546$ are not permutation characters. 

 Since the table of marks of $G$ is available in \textsf{GAP}, we can extract all permutation characters from the table of marks, and then
filter out the multiplicity free ones. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "G2(3)" );|
  TableOfMarks( "G2(3)" )
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "G2(3)" );|
  CharacterTable( "G2(3)" )
  !gapprompt@gap>| !gapinput@permstom:= PermCharsTom( tbl, tom );;|
  !gapprompt@gap>| !gapinput@Length( permstom );|
  433
  !gapprompt@gap>| !gapinput@multfree:= Intersection( perms, permstom );;|
  !gapprompt@gap>| !gapinput@Length( multfree );|
  15
  !gapprompt@gap>| !gapinput@List( multfree, Degree );|
  [ 1, 351, 351, 364, 364, 378, 378, 702, 702, 728, 728, 1092, 1092, 
    2184, 2184 ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Degree $11\,200$ Permutation Characters of $O_8^+(2)$}}\label{sect:degree_11200_O8p2}
\logpage{[ 8, 11, 0 ]}
\hyperdef{L}{X7E3E326C7CB0E2CD}{}
{
  We compute the primitive permutation characters of degree $11\,200$ of $O_8^+(2)$ and $O_8^+(2).2$ (see{\nobreakspace}\cite[p. 85]{CCN85}). The character table of the maximal subgroup of type $3^4:2^3.S_4$ in $O_8^+(2)$ is not available in the \textsf{GAP} table library. But the group extends to a wreath product of $S_3$ and $S_4$ in the group $O_8^+(2).2$, and the table of this wreath product can be constructed easily. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl2:= CharacterTable("O8+(2).2");;|
  !gapprompt@gap>| !gapinput@s3:= CharacterTable( "Symmetric", 3 );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTableWreathSymmetric( s3, 4 );|
  CharacterTable( "Sym(3)wrS4" )
\end{Verbatim}
 

 The permutation character \texttt{pi} of $O_8^+(2).2$ can thus be computed by explicit induction, and the character of $O_8^+(2)$ is obtained by restriction of \texttt{pi}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, tbl2 );|
  [ [ 1, 41, 6, 3, 48, 9, 42, 19, 51, 8, 5, 50, 24, 49, 7, 2, 44, 22, 
        42, 12, 53, 17, 58, 21, 5, 47, 26, 50, 37, 52, 23, 60, 18, 4, 
        46, 25, 14, 61, 20, 9, 53, 30, 51, 26, 64, 8, 52, 31, 13, 56, 
        38 ] ]
  !gapprompt@gap>| !gapinput@pi:= Induced( s, tbl2, [ TrivialCharacter( s ) ], fus[1] )[1];|
  Character( CharacterTable( "O8+(2).2" ),
   [ 11200, 256, 160, 160, 80, 40, 40, 76, 13, 0, 0, 8, 8, 4, 0, 0, 16, 
    16, 4, 4, 4, 1, 1, 1, 1, 5, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 
    0, 1120, 96, 0, 16, 0, 16, 8, 10, 4, 6, 7, 12, 3, 0, 0, 2, 0, 4, 0, 
    1, 1, 0, 0, 1, 0, 0, 0 ] )
  !gapprompt@gap>| !gapinput@PermCharInfo( tbl2, pi ).ATLAS;|
  [ "1a+84a+168a+175a+300a+700c+972a+1400a+3200a+4200b" ]
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "O8+(2)" );|
  CharacterTable( "O8+(2)" )
  !gapprompt@gap>| !gapinput@rest:= RestrictedClassFunction( pi, tbl );|
  Character( CharacterTable( "O8+(2)" ),
   [ 11200, 256, 160, 160, 160, 80, 40, 40, 40, 76, 13, 0, 0, 8, 8, 8, 
    4, 0, 0, 0, 16, 16, 16, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 5, 0, 0, 0, 
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0 ] )
  !gapprompt@gap>| !gapinput@PermCharInfo( tbl, rest ).ATLAS;|
  [ "1a+84abc+175a+300a+700bcd+972a+3200a+4200a" ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{A Proof of Nonexistence of a Certain Subgroup}}\label{sect:proof_nonexistence}
\logpage{[ 8, 12, 0 ]}
\hyperdef{L}{X7D8572E68194CBB9}{}
{
  We prove that the sporadic simple Mathieu group $G = M_{22}$ (see{\nobreakspace}\cite[p. 39]{CCN85}) has no subgroup of index $56$. In{\nobreakspace}\cite{Isa76}, remark after Theorem{\nobreakspace}5.18, this is stated as an example of the
case that a character may be a possible permutation character but not a
permutation character. Let us consider the possible permutation character of
degree $56$ of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "M22" );|
  CharacterTable( "M22" )
  !gapprompt@gap>| !gapinput@perms:= PermChars( tbl, rec( torso:= [ 56 ] ) );|
  [ Character( CharacterTable( "M22" ),
    [ 56, 8, 2, 4, 0, 1, 2, 0, 0, 2, 1, 1 ] ) ]
  !gapprompt@gap>| !gapinput@pi:= perms[1];;|
  !gapprompt@gap>| !gapinput@Norm( pi );|
  2
  !gapprompt@gap>| !gapinput@Display( tbl, rec( chars:= perms ) );|
  M22
  
       2  7  7  2  5  4  .  2  .  .  3   .   .
       3  2  1  2  .  .  .  1  .  .  .   .   .
       5  1  .  .  .  .  1  .  .  .  .   .   .
       7  1  .  .  .  .  .  .  1  1  .   .   .
      11  1  .  .  .  .  .  .  .  .  .   1   1
  
         1a 2a 3a 4a 4b 5a 6a 7a 7b 8a 11a 11b
      2P 1a 1a 3a 2a 2a 5a 3a 7a 7b 4a 11b 11a
      3P 1a 2a 1a 4a 4b 5a 2a 7b 7a 8a 11a 11b
      5P 1a 2a 3a 4a 4b 1a 6a 7b 7a 8a 11a 11b
      7P 1a 2a 3a 4a 4b 5a 6a 1a 1a 8a 11b 11a
     11P 1a 2a 3a 4a 4b 5a 6a 7a 7b 8a  1a  1a
  
  Y.1    56  8  2  4  .  1  2  .  .  2   1   1
\end{Verbatim}
 

 Suppose that \texttt{pi} is a permutation character of $G$. Since $G$ is $2$-transitive on the $56$ cosets of the point stabilizer $S$, this stabilizer is transitive on $55$ points, and thus $G$ has a subgroup $U$ of index $56 \cdot 55 = 3080$. We compute the possible permutation character of this degree. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@perms:= PermChars( tbl, rec( torso:= [ 56 * 55 ] ) );;|
  !gapprompt@gap>| !gapinput@Length( perms );|
  16
\end{Verbatim}
 

 $U$ is contained in $S$, so only those candidates must be considered that vanish on all classes where \texttt{pi} vanishes. Furthermore, the index of $U$ in $S$ is odd, so the Sylow $2$ subgroups of $U$ and $S$ are isomorphic; $S$ contains elements of order $8$, hence also $U$ does. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( tbl );|
  [ 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 11, 11 ]
  !gapprompt@gap>| !gapinput@perms:= Filtered( perms, x -> x[5] = 0 and x[10] <> 0 );|
  [ Character( CharacterTable( "M22" ),
    [ 3080, 56, 2, 12, 0, 0, 2, 0, 0, 2, 0, 0 ] ), 
    Character( CharacterTable( "M22" ),
    [ 3080, 8, 2, 8, 0, 0, 2, 0, 0, 4, 0, 0 ] ), 
    Character( CharacterTable( "M22" ),
    [ 3080, 24, 11, 4, 0, 0, 3, 0, 0, 2, 0, 0 ] ), 
    Character( CharacterTable( "M22" ),
    [ 3080, 24, 20, 4, 0, 0, 0, 0, 0, 2, 0, 0 ] ) ]
\end{Verbatim}
 

 For getting an overview of the distribution of the elements of $U$ to the conjugacy classes of $G$, we use the output of \texttt{PermCharInfo} (\textbf{Reference: PermCharInfo}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@infoperms:= PermCharInfo( tbl, perms );;|
  !gapprompt@gap>| !gapinput@Display( tbl, infoperms.display );|
  M22
  
        2    7  7  2  5  2  3
        3    2  1  2  .  1  .
        5    1  .  .  .  .  .
        7    1  .  .  .  .  .
       11    1  .  .  .  .  .
  
            1a 2a 3a 4a 6a 8a
       2P   1a 1a 3a 2a 3a 4a
       3P   1a 2a 1a 4a 2a 8a
       5P   1a 2a 3a 4a 6a 8a
       7P   1a 2a 3a 4a 6a 8a
      11P   1a 2a 3a 4a 6a 8a
  
  I.1     3080 56  2 12  2  2
  I.2        1 21  8 54 24 36
  I.3        1  3  4  9 12 18
  I.4     3080  8  2  8  2  4
  I.5        1  3  8 36 24 72
  I.6        1  3  4  9 12 18
  I.7     3080 24 11  4  3  2
  I.8        1  9 44 18 36 36
  I.9        1  3  4  9 12 18
  I.10    3080 24 20  4  .  2
  I.11       1  9 80 18  . 36
  I.12       1  3  4  9 12 18
\end{Verbatim}
 

 We have four candidates. For each the above list shows first the character
values, then the cardinality of the intersection of $U$ with the classes, and then lower bounds for the lengths of $U$-conjugacy classes of these elements. Only those classes of $G$ are shown that contain elements of $U$ for at least one of the characters. 

 If the first two candidates are permutation characters corresponding to $U$ then $U$ contains exactly $8$ elements of order $3$ and thus $U$ has a normal Sylow $3$ subgroup $P$. But the order of $N_G(P)$ is bounded by $72$, which can be shown as follows. The only elements in $G$ with centralizer order divisible by $9$ are of order $1$ or $3$, so $P$ is self-centralizing in $G$. The factor $N_G(P)/C_G(P)$ is isomorphic with a subgroup of Aut$(G) \cong GL(2,3)$ which has order divisible by $16$, hence the order of $N_G(P)$ divides $144$. Now note that $[ G : N_G(P) ] \equiv 1 \pmod{3}$ by Sylow's Theorem, and $|G|/144 = 3\,080 \equiv -1 \pmod{3}$. Thus the first two candidates are not permutation characters. 

 If the last two candidates are permutation characters corresponding to $U$ then $U$ has self-normalizing Sylow subgroups. This is because the index of a Sylow $2$ normalizer in $G$ is odd and divides $9$, and if it is smaller than $9$ then $U$ contains at most $3 \cdot 15 + 1$ elements of $2$ power order; the index of a Sylow $3$ normalizer in $G$ is congruent to $1$ modulo $3$ and divides $16$, and if it is smaller than $16$ then $U$ contains at most $4 \cdot 8$ elements of order $3$. 

 But since $U$ is solvable and not a $p$-group, not all its Sylow subgroups can be self-normalizing; note that $U$ has a proper normal subgroup $N$ containing a Sylow $p$ subgroup $P$ of $U$ for a prime divisor $p$ of $|U|$, and $U = N \cdot N_U(P)$ holds by the Frattini argument (see{\nobreakspace}\cite[Satz I.7.8]{Hup67}). }

  
\section{\textcolor{Chapter }{A Permutation Character of the Lyons group}}\label{sect:character_Lyons}
\logpage{[ 8, 13, 0 ]}
\hyperdef{L}{X8068E9DA7CD03BF2}{}
{
  Let $G$ be a maximal subgroup with structure $3^{{2+4}}:2A_5.D_8$ in the sporadic simple Lyons group $Ly$. We want to compute the permutation character $1_G^{Ly}$. (This construction has been explained in{\nobreakspace}\cite[Section 4.2]{BP98copy}, without showing explicit \textsf{GAP} code.) 

 In the representation of $Ly$ as automorphism group of the rank $5$ graph \texttt{B} with $9\,606\,125$ points (see{\nobreakspace}\cite[p. 174]{CCN85}), $G$ is the stabilizer of an edge. A group $S$ with structure $3.McL.2$ is the point stabilizer. So the two point stabilizer $U = S \cap G$ is a subgroup of index $2$ in $G$. The index of $U$ in $S$ is $15\,400$, and according to the list of maximal subgroups of $McL.2$ (see{\nobreakspace}\cite[p. 100]{CCN85}), the group $U$ is isomorphic to the preimage in $3.McL.2$ of a subgroup $H$ of $McL.2$ with structure $3_+^{{1+4}}:4S_5$. 

 Using the improved combinatorial method described in{\nobreakspace}\cite[Section 3.2]{BP98copy}, all possible permutation characters of degree $15\,400$ for the group $McL$ are computed. (The method of{\nobreakspace}\cite[Section 3.3]{BP98copy} is slower but also needs only a few seconds.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ly:= CharacterTable( "Ly" );;|
  !gapprompt@gap>| !gapinput@mcl:= CharacterTable( "McL" );;|
  !gapprompt@gap>| !gapinput@mcl2:= CharacterTable( "McL.2" );;|
  !gapprompt@gap>| !gapinput@3mcl2:= CharacterTable( "3.McL.2" );;|
  !gapprompt@gap>| !gapinput@perms:= PermChars( mcl, rec( degree:= 15400 ) );|
  [ Character( CharacterTable( "McL" ),
    [ 15400, 56, 91, 10, 12, 25, 0, 11, 2, 0, 0, 2, 1, 1, 1, 0, 0, 3, 
        0, 0, 1, 1, 1, 1 ] ), Character( CharacterTable( "McL" ),
    [ 15400, 280, 10, 37, 20, 0, 5, 10, 1, 0, 0, 2, 1, 1, 0, 0, 0, 2, 
        0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 

 We get two characters, corresponding to the two classes of maximal subgroups
of index $15\,400$ in $McL$. The permutation character $\pi = 1_{{H \cap McL}}^{McL}$ is the one with nonzero value on the class \texttt{10A}, since the subgroup of structure $2S_5$ in $H \cap McL$ contains elements of order $10$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord10:= Filtered( [ 1 .. NrConjugacyClasses( mcl ) ],|
  !gapprompt@>| !gapinput@                     i -> OrdersClassRepresentatives( mcl )[i] = 10 );|
  [ 15 ]
  !gapprompt@gap>| !gapinput@List( perms, pi -> pi[ ord10[1] ] );|
  [ 1, 0 ]
  !gapprompt@gap>| !gapinput@pi:= perms[1];|
  Character( CharacterTable( "McL" ),
   [ 15400, 56, 91, 10, 12, 25, 0, 11, 2, 0, 0, 2, 1, 1, 1, 0, 0, 3, 0, 
    0, 1, 1, 1, 1 ] )
\end{Verbatim}
 

 The character $1_H^{McL.2}$ is an extension of $\pi$, so we can use the method of{\nobreakspace}\cite[Section 3.3]{BP98copy} to compute all possible permutation characters for the group $McL.2$ that have the values of $\pi$ on the classes of $McL$. We find that the extension of $\pi$ to a permutation character of $McL.2$ is unique. Regarded as a character of $3.McL.2$, this character is equal to $1_U^S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@map:= InverseMap( GetFusionMap( mcl, mcl2 ) );|
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, [ 10, 11 ], 12, [ 13, 14 ], 15, 16, 17, 
    18, [ 19, 20 ], [ 21, 22 ], [ 23, 24 ] ]
  !gapprompt@gap>| !gapinput@torso:= CompositionMaps( pi, map );|
  [ 15400, 56, 91, 10, 12, 25, 0, 11, 2, 0, 2, 1, 1, 0, 0, 3, 0, 1, 1 ]
  !gapprompt@gap>| !gapinput@perms:= PermChars( mcl2, rec( torso:= torso ) );|
  [ Character( CharacterTable( "McL.2" ),
    [ 15400, 56, 91, 10, 12, 25, 0, 11, 2, 0, 2, 1, 1, 0, 0, 3, 0, 1, 
        1, 110, 26, 2, 4, 0, 0, 5, 2, 1, 1, 0, 0, 1, 1 ] ) ]
  !gapprompt@gap>| !gapinput@pi:= Inflated( perms[1], 3mcl2 );|
  Character( CharacterTable( "3.McL.2" ),
   [ 15400, 15400, 56, 56, 91, 91, 10, 12, 12, 25, 25, 0, 0, 11, 11, 2, 
    2, 0, 0, 0, 2, 2, 1, 1, 1, 0, 0, 0, 0, 3, 3, 0, 0, 0, 1, 1, 1, 1, 
    1, 1, 110, 26, 2, 4, 0, 0, 5, 2, 1, 1, 0, 0, 1, 1 ] )
\end{Verbatim}
 

 The fusion of conjugacy classes of $S$ in $Ly$ can be computed from the character tables of $S$ and $Ly$ given in{\nobreakspace}\cite{CCN85}, it is unique up to Galois automorphisms of the table of $Ly$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( 3mcl2, ly );;  Length( fus );|
  4
  !gapprompt@gap>| !gapinput@g:= AutomorphismsOfTable( ly );;|
  !gapprompt@gap>| !gapinput@OrbitLengths( g, fus, OnTuples );    |
  [ 4 ]
\end{Verbatim}
 

 Now we can induce $1_U^S$ to $Ly$, which yields $(1_U^S)^{Ly} = 1_U^{Ly}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pi:= Induced( 3mcl2, ly, [ pi ], fus[1] )[1];|
  Character( CharacterTable( "Ly" ),
   [ 147934325000, 286440, 1416800, 1082, 784, 12500, 0, 672, 42, 24, 
    0, 40, 0, 2, 20, 0, 0, 0, 64, 10, 0, 50, 2, 0, 0, 4, 0, 0, 0, 0, 4, 
    0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] )
\end{Verbatim}
 

 All elements of odd order in $G$ are contained in $U$, for such an element $g$ we have 
\[ 1_G^{Ly}(g) = |C_{Ly}(g)| / |G| \cdot |G \cap Cl_{Ly}(g)| = |C_{Ly}(g)| / (2
\cdot |U|) \cdot |U \cap Cl_{Ly}(g)| = 1/2 \cdot 1_U^{Ly}(g) \ , \]
 so we can prescribe the values of $1_G^{Ly}$ on all classes of odd element order. For elements $g$ of even order we have the weaker condition $U\cap Cl_{Ly}(g) \subseteq G \cap Cl_{Ly}(g)$ and thus $1_G^{Ly}(g) \geq 1/2 \cdot 1_U^{Ly}(g)$, which gives lower bounds for the value of $1_G^{Ly}$ on the remaining classes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orders:= OrdersClassRepresentatives( ly );|
  [ 1, 2, 3, 3, 4, 5, 5, 6, 6, 6, 7, 8, 8, 9, 10, 10, 11, 11, 12, 12, 
    14, 15, 15, 15, 18, 20, 21, 21, 22, 22, 24, 24, 24, 25, 28, 30, 30, 
    31, 31, 31, 31, 31, 33, 33, 37, 37, 40, 40, 42, 42, 67, 67, 67 ]
  !gapprompt@gap>| !gapinput@torso:= [];;                                   |
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( orders ) ] do|
  !gapprompt@>| !gapinput@     if orders[i] mod 2 = 1 then|
  !gapprompt@>| !gapinput@       torso[i]:= pi[i]/2;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@torso;|
  [ 73967162500,, 708400, 541,, 6250, 0,,,, 0,,, 1,,, 0, 0,,,, 25, 1, 0,
    ,, 0, 0,,,,,, 0,,,, 0, 0, 0, 0, 0, 0, 0, 0, 0,,,,, 0, 0, 0 ]
\end{Verbatim}
 

 Exactly one possible permutation character of $Ly$ satisfies these conditions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@perms:= PermChars( ly, rec( torso:= torso ) );;|
  !gapprompt@gap>| !gapinput@Length( perms );|
  43
  !gapprompt@gap>| !gapinput@perms:= Filtered( perms, cand -> ForAll( [ 1 .. Length( orders ) ],|
  !gapprompt@>| !gapinput@       i -> cand[i] >= pi[i] / 2 ) );|
  [ Character( CharacterTable( "Ly" ),
    [ 73967162500, 204820, 708400, 541, 392, 6250, 0, 1456, 61, 25, 0, 
        22, 10, 1, 10, 0, 0, 0, 32, 5, 0, 25, 1, 0, 1, 2, 0, 0, 0, 0, 
        4, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 
        0, 0 ] ) ]
\end{Verbatim}
 

 (The permutation character $1_G^{Ly}$ was used in the proof that the character $\chi_{37}$ of $Ly$ (see{\nobreakspace}\cite[p. 175]{CCN85}) occurs with multiplicity at least 2 in each character of $Ly$ that is induced from a proper subgroup of $Ly$.) }

  
\section{\textcolor{Chapter }{Identifying two subgroups of Aut$(U_3(5))$ (October{\nobreakspace}2001)}}\label{sect:U35sub}
\logpage{[ 8, 14, 0 ]}
\hyperdef{L}{X87D6C1A67CC7EE0A}{}
{
  According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 34]{CCN85}, the group Aut$(U_3(5))$ has two classes of maximal subgroups of order $2^4 \cdot 3^3$, which have the structures $3^2 \colon 2S_4$ and $6^2 \colon D_{12}$, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "U3(5).3.2" );|
  CharacterTable( "U3(5).3.2" )
  !gapprompt@gap>| !gapinput@deg:= Size( tbl ) / ( 2^4*3^3 );|
  1750
  !gapprompt@gap>| !gapinput@pi:= PermChars( tbl, rec( torso:= [ deg ] ) );|
  [ Character( CharacterTable( "U3(5).3.2" ),
    [ 1750, 70, 13, 2, 0, 0, 1, 0, 0, 0, 10, 7, 10, 4, 2, 0, 0, 0, 0, 
        0, 0, 30, 10, 3, 0, 0, 1, 0, 0 ] ), 
    Character( CharacterTable( "U3(5).3.2" ),
    [ 1750, 30, 4, 6, 0, 0, 0, 0, 0, 0, 40, 7, 0, 6, 0, 0, 0, 0, 0, 0, 
        0, 20, 0, 2, 2, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 

 Now the question is which character belongs to which subgroup. We see that the
first character vanishes on the classes of element order $8$ and the second does not, so only the first one can be the permutation
character induced from $6^2 \colon D_{12}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord8:= Filtered( [ 1 .. NrConjugacyClasses( tbl ) ],|
  !gapprompt@>| !gapinput@              i -> OrdersClassRepresentatives( tbl )[i] = 8 );|
  [ 9, 25 ]
  !gapprompt@gap>| !gapinput@List( pi, x -> x{ ord8 } );|
  [ [ 0, 0 ], [ 0, 2 ] ]
\end{Verbatim}
 

 Thus the question is whether the second candidate is really a permutation
character. Since none of the two candidates vanishes on any outer coset of $U_3(5)$ in Aut$(U_3(5))$, the point stabilizers are extensions of groups of order $2^3 \cdot 3^2$ in $U_3(5)$. The restrictions of the candidates to $U_3(5)$ are different, so we can try to answer the question using information about
this group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@subtbl:= CharacterTable( "U3(5)" );|
  CharacterTable( "U3(5)" )
  !gapprompt@gap>| !gapinput@rest:= RestrictedClassFunctions( pi, subtbl );|
  [ Character( CharacterTable( "U3(5)" ),
    [ 1750, 70, 13, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "U3(5)" ),
    [ 1750, 30, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
 

 The intersection of the $3^2 \colon 2S_4$ subgroup with $U_3(5)$ lies inside the maximal subgroup of type $M_{10}$, which does not contain elements of order$6$. Only the second character has this property. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord6:= Filtered( [ 1 .. NrConjugacyClasses( subtbl ) ],|
  !gapprompt@>| !gapinput@              i -> OrdersClassRepresentatives( subtbl )[i] = 6 );|
  [ 9 ]
  !gapprompt@gap>| !gapinput@List( rest, x -> x{ ord6 } );|
  [ [ 1 ], [ 0 ] ]
\end{Verbatim}
 

 In order to establish the two characters as permutation characters, we could
also compute the permutation characters of the degree in question directly
from the table of marks of $U_3(5)$, which is contained in the \textsf{GAP} library of tables of marks. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "U3(5)" );|
  TableOfMarks( "U3(5)" )
  !gapprompt@gap>| !gapinput@perms:= PermCharsTom( subtbl, tom );;|
  !gapprompt@gap>| !gapinput@Set( Filtered( perms, x -> x[1] = deg ) ) = Set( rest );|
  true
\end{Verbatim}
 

 We were mainly interested in the multiplicities of irreducible characters in
these characters. The action of Aut$(U_3(5)$ on the cosets of $3^2 \colon 2S_4$ turns out to be multiplicity-free whereas that on the cosets of $6^2 \colon D_{12}$ is not. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PermCharInfo( tbl, pi ).ATLAS;|
  [ "1a+21a+42a+84aac+105a+125a+126a+250a+252a+288bc", 
    "1a+42a+84ac+105ab+125a+126a+250a+252b+288bc" ]
\end{Verbatim}
 

 It should be noted that the restrictions of the multiplicity-free character to
the subgroups $U_3(5).2$ and $U_3(5).3$ of Aut$(U_3(5)$ are not multiplicity-free. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@subtbl2:= CharacterTable( "U3(5).2" );;|
  !gapprompt@gap>| !gapinput@rest2:= RestrictedClassFunctions( pi, subtbl2 );;|
  !gapprompt@gap>| !gapinput@PermCharInfo( subtbl2, rest2 ).ATLAS;|
  [ "1a+21aab+28aa+56aa+84a+105a+125aab+126aab+288aa", 
    "1a+21ab+28a+56a+84a+105ab+125aab+126a+252a+288aa" ]
  !gapprompt@gap>| !gapinput@subtbl3:= CharacterTable( "U3(5).3" );;|
  !gapprompt@gap>| !gapinput@rest3:= RestrictedClassFunctions( pi, subtbl3 );;|
  !gapprompt@gap>| !gapinput@PermCharInfo( subtbl3, rest3 ).ATLAS;|
  [ "1a+21abc+84aab+105a+125abc+126abc+144bcef", 
    "1a+21bc+84ab+105aa+125abc+126adg+144bcef" ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{A Permutation Character of Aut$(O_8^+(2))$ (October{\nobreakspace}2001)}}\label{sect:O82sub}
\logpage{[ 8, 15, 0 ]}
\hyperdef{L}{X793669787CF73A55}{}
{
  According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 85]{CCN85}, the group $G =$ Aut$(O_8^+(2))$ has a class of maximal subgroups of order $2^{13} \cdot 3^2$, thus the index of these subgroups in $G$ is $3^4 \cdot 5^2 \cdot 7$. The intersection of these subgroups with $H = O_8^+(2)$ lie inside maximal subgroups of type $2^6 \colon A_8$. We want to show that the permutation character of the action of $G$ on the cosets of these subgroups is not multiplicity-free. 

 Since the table of marks for $H$ is available in \textsf{GAP}, but not that for $G$, we first compute the $H$-permutation characters of the intersections with $H$ of index $3^4 \cdot 5^2 \cdot 7 = 14\,175$ subgroups in $G$. 

 (Note that these intersections have order $2^{12} \cdot 3$ because subgroups of order $2^{12} \cdot 3^2$ are contained in $O_8^+(2).2$ and hence are not maximal in $G$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O8+(2).3.2" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "O8+(2)" );;|
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( s );;|
  !gapprompt@gap>| !gapinput@perms:= PermCharsTom( s, tom );;|
  !gapprompt@gap>| !gapinput@deg:= 3^4*5^2*7;|
  14175
  !gapprompt@gap>| !gapinput@perms:= Filtered( perms, x -> x[1] = deg );;|
  !gapprompt@gap>| !gapinput@Length( perms );|
  4
  !gapprompt@gap>| !gapinput@Length( Set( perms ) );|
  1
\end{Verbatim}
 

 We see that there are four classes of subgroups $S$ in $H$ that may belong to maximal subgroups of the desired index in $G$, and that the permutation characters are equal. They lead to such groups if
they extend to $G$, so we compute the possible permutation characters of $G$ that extend these characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, t );|
  [ [ 1, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 12, 
        12, 13, 13, 13, 14, 14, 14, 15, 16, 16, 16, 17, 17, 17, 18, 19, 
        20, 21, 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 26, 26, 26, 27, 
        27, 27 ] ]
  !gapprompt@gap>| !gapinput@fus:= fus[1];;|
  !gapprompt@gap>| !gapinput@inv:= InverseMap( fus );;|
  !gapprompt@gap>| !gapinput@comp:= CompositionMaps( perms[1], inv );|
  [ 14175, 1215, 375, 79, 0, 0, 27, 27, 99, 15, 7, 0, 0, 0, 0, 9, 3, 1, 
    0, 1, 1, 0, 0, 0, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@ext:= PermChars( t, rec( torso:= comp ) );|
  [ Character( CharacterTable( "O8+(2).3.2" ),
    [ 14175, 1215, 375, 79, 0, 0, 27, 27, 99, 15, 7, 0, 0, 0, 0, 9, 3, 
        1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 63, 9, 15, 7, 1, 0, 3, 3, 3, 1, 
        0, 0, 1, 1, 945, 129, 45, 69, 21, 25, 13, 0, 0, 0, 9, 0, 3, 3, 
        7, 1, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@PermCharInfo( t, ext[1] ).ATLAS;|
  [ "1a+50b+100a+252bb+300b+700b+972bb+1400a+1944a+3200b+4032b" ]
\end{Verbatim}
 

 Thus we get one permutation character of $G$ which is not multiplicity-free. }

  
\section{\textcolor{Chapter }{Four Primitive Permutation Characters of the Monster Group}}\label{sect:monsterperm}
\logpage{[ 8, 16, 0 ]}
\hyperdef{L}{X8337F3C682B6BE63}{}
{
  In this section, we compute four primitive permutation characters $1_H^M$ of the sporadic simple Monster group $M$, using the following strategy. 

 Let $E$ be an elementary abelian $2$-subgroup of $M$, and $H = N_M(E)$. For an involution $z \in E$, let $G = C_M(z)$ and $U = G \cap H = C_H(z)$ and $V = C_H(E)$, a normal subgroup of $H$. According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 234]{CCN85}, $G$ has the structure $2.B$ if $z$ is in the class \texttt{2A} of $M$, and $G$ has the structure $2^{{1+24}}_+.Co_1$ if $z$ is in the class \texttt{2B} of $M$. In the latter case, let $N$ denote the extraspecial normal subgroup of order $2^{25}$ in $G$. It will turn out that in our situation, $U$ contains $N$. 

 We want to compute many values of $1_H^M$ from the knowledge of permutation characters $1_X^M$, for suitable subgroups $X$ with the property $V \leq X \leq U$, and then use the \textsf{GAP} function \texttt{PermChars} (\textbf{Reference: PermChars}) for computing all those possible permutation characters of $M$ that take the known values; if there is a unique solution then this is the
desired character $1_H^M$. 

   


\begin{center}
\setlength{\unitlength}{3pt}
\begin{picture}(30,50)(0,0)
\put(20,0){\circle*{1}}
\put(20,3){\circle*{1}} \put(23,3){\makebox(0,0){Z}}
\put(20,10){\circle*{1}}
\put(25,15){\circle*{1}} \put(28,15){\makebox(0,0){N}}
\put(15,15){\circle*{1}} \put(12,15){\makebox(0,0){V}}
\put(20,20){\circle*{1}} \put(24,20){\makebox(0,0){VN}}
\put(15,25){\circle*{1}} \put(12,25){\makebox(0,0){U}}
\put(5,35){\circle*{1}} \put(2,35){\makebox(0,0){G}}
\put(20,30){\circle*{1}} \put(23,30){\makebox(0,0){H}}
\put(15,45){\circle*{1}} \put(15,48){\makebox(0,0){M}}
\put(20,0){\line(0,1){10}}
\put(20,10){\line(1,1){5}}
\put(20,10){\line(-1,1){5}}
\put(15,15){\line(1,1){5}}
\put(15,25){\line(1,1){5}}
\put(25,15){\line(-1,1){20}}
\put(5,35){\line(1,1){10}}
\put(20,30){\line(-1,3){5}}
\end{picture}
\end{center}


 

 Why does this approach have a chance to be successful? Currently we do not
have representations for the subgroups $H$ in question, but the character tables of the involution centralizers $G$ in $M$ are available, and also either the character tables of $X/V$ for the interesting subgroups $X$ are known or we have enough information to compute the characters $1_X^G$. 

 And how do we compute certain values of $1_H^M$? Suppose that ${{\cal C}}$ is a union of classes of $M$ and $I$ is an index set such that $(1_H)_{{{{\cal C}} \cap H}} = (\sum_{{i \in I}} c_i 1_{{X_i}}^H)_{{{{\cal C}} \cap H}}$ holds for suitable rational numbers $c_i$. 

 The right hand side of this equality lives in $H/V$, provided that ${{\cal C}}$ ``behaves well'' w.r.t. factoring out the normal subgroup $V$ of $H$, i.{\nobreakspace}e., if there is a set of classes in $H/V$ whose preimages in $H$ form the set $H \cap {{\cal C}}$. For example, ${{\cal C}}$ may be the set of all those elements in $M$ whose order is not divisible by a particular prime $p$ that divides $|H|$ but not $|U|$. 

 Under these conditions, we have $(1_H^M)_{{{\cal C}}} = ((\sum_{{i \in I}} c_i 1_{{X_i}}^G)^M)_{{{\cal C}}}$, and we interpret the right hand side as follows: If $X_i$ contains $N$ then $1_{{X_i}}^G$ can be identified with $1_{{X_i/N}}^{{G/N}}$. If $X_i$ contains at least $Z$ then $1_{{X_i}}^G$ can be identified with $1_{{X_i/Z}}^{{G/Z}}$. As mentioned above, we have good chances to compute these characters. So the
main task in each of the following sections is to find, for a suitable set ${{\cal C}}$ of classes, a linear combination of permutation characters of $H/V$ whose restriction to $({{\cal C}} \cap H) / V$ is constant and nonzero.  
\subsection{\textcolor{Chapter }{The Subgroup $2^2.2^{11}.2^{22}.(S_3 \times M_{24})$ (June{\nobreakspace}2009)}}\label{subsect:monsterperm1}
\logpage{[ 8, 16, 1 ]}
\hyperdef{L}{X78A8A1248336DD26}{}
{
  According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 234]{CCN85}, the Monster group $M$ has a class of maximal subgroups $H$ of the type $2^2.2^{11}.2^{22}.(S_3 \times M_{24})$. Currently the character table of $H$ and the class fusion into $M$ are not available in \textsf{GAP}. We are interested in the permutation character $1_H^G$, and we will compute it without this information. 

 The subgroup $H$ normalizes a Klein four group $E$ whose involutions lie in the class \texttt{2B}. We fix an involution $z$ in $E$, and set $G = C_M(z)$, $U = C_H(z)$, and $V = C_H(E)$. Further, let $N$ be the extraspecial normal subgroup of order $2^{25}$ in $G$. 

 So $G$ has the structure $2^{{1+24}}_+.Co_1$, and $U$ has index three in $H$. The order of $N U / N$ is a multiple of $2^{{2+11+22-25}} \cdot 2 \cdot |M_{24}|$, and $N U / N$ occurs as a subgroup of $G / N \cong Co_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@co1:= CharacterTable( "Co1" );;|
  !gapprompt@gap>| !gapinput@order:= 2^(2+11+22-25) * 2 * Size( CharacterTable( "M24" ) );|
  501397585920
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( co1 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, t -> Size( t ) mod order = 0 );|
  [ CharacterTable( "2^11:M24" ) ]
  !gapprompt@gap>| !gapinput@List( filt, t -> Size( t ) / order );|
  [ 1 ]
  !gapprompt@gap>| !gapinput@k:= filt[1];;|
\end{Verbatim}
 

 The list of maximal subgroups of $Co_1$ (see{\nobreakspace}\cite[p. 183]{CCN85}) tells us that $NU / N$ is a maximal subgroup $K$ of $Co_1$ and has the structure $2^{11}:M_{24}$. In particular, $U$ contains $N$ and thus $U/N \cong K$. 

 Let ${{\cal C}} = \{ g \in M; 3 \nmid |g|$ or $1_V^M(g^3) = 0 \}$. 

 Then $(1_H)_{{{{\cal C}} \cap H}} = (1_U^H - 1/3 1_V^H)_{{{{\cal C}} \cap H}}$ holds, as we can see from computations with $H/V \cong S_3$, as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@f:= CharacterTable( "Symmetric", 3 );|
  CharacterTable( "Sym(3)" )
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( f );|
  [ 1, 2, 3 ]
  !gapprompt@gap>| !gapinput@deg3:= PermChars( f, 3 );|
  [ Character( CharacterTable( "Sym(3)" ), [ 3, 1, 0 ] ) ]
  !gapprompt@gap>| !gapinput@deg6:= PermChars( f, 6 );|
  [ Character( CharacterTable( "Sym(3)" ), [ 6, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@deg3[1] - 1/3 * deg6[1];|
  ClassFunction( CharacterTable( "Sym(3)" ), [ 1, 1, 0 ] )
\end{Verbatim}
 

 The character table of $G$ is available in \textsf{GAP}, so we can compute the permutation character $\pi = 1_U^G$ by computing the primitive permutation character $1_K^{{Co_1}}$, identifying it with $1_{{U/N}}^{{G/N}}$, and then inflating this character to $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );|
  CharacterTable( "M" )
  !gapprompt@gap>| !gapinput@g:= CharacterTable( "MC2B" );|
  CharacterTable( "2^1+24.Co1" )
  !gapprompt@gap>| !gapinput@pi:= RestrictedClassFunction( TrivialCharacter( k )^co1, g );;|
\end{Verbatim}
 

 Next we consider the permutation character $\phi = 1_V^G$. The group $V$ does not contain $N$ because $K$ is perfect. But $V$ contains $Z$ because otherwise $U$ would be a direct product of $V$ and $Z$, which would imply that $N$ would be a direct product of $V \cap N$ and $Z$. So we can regard $\phi$ as the inflation of $1_{{V/Z}}^{{G/Z}}$ from $G/Z$ to $G$, i.{\nobreakspace}e., we can perform the computations with the character
table of the factor group $G/Z$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@zclasses:= ClassPositionsOfCentre( g );;|
  !gapprompt@gap>| !gapinput@gmodz:= g / zclasses;|
  CharacterTable( "2^1+24.Co1/[ 1, 2 ]" )
  !gapprompt@gap>| !gapinput@invmap:= InverseMap( GetFusionMap( g, gmodz ) );;|
  !gapprompt@gap>| !gapinput@pibar:= CompositionMaps( pi, invmap );;|
\end{Verbatim}
 

 Since $\phi(g) = [G:V] \cdot |g^G \cap V| / |g^G|$ holds for $g \in G$, and since $g^G \cap V \subseteq g^G \cap VN$, with equality if $g$ has odd order, we get $\phi(g) = 2 \cdot \pi(g)$ if $g$ has odd order, and $\phi(g) = 0$ if $\pi(g) = 0$. 

 We want to compute the possible permutation characters with these values. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@factorders:= OrdersClassRepresentatives( gmodz );;|
  !gapprompt@gap>| !gapinput@phibar:= [];;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. NrConjugacyClasses( gmodz ) ] do|
  !gapprompt@>| !gapinput@     if factorders[i] mod 2 = 1 then|
  !gapprompt@>| !gapinput@       phibar[i]:= 2 * pibar[i];|
  !gapprompt@>| !gapinput@     elif pibar[i] = 0 then|
  !gapprompt@>| !gapinput@       phibar[i]:= 0;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@cand:= PermChars( gmodz, rec( torso:= phibar ) );;|
  !gapprompt@gap>| !gapinput@Length( cand );|
  1
\end{Verbatim}
 

 Now we know $\pi^M = 1_U^M$ and $\phi^M = 1_V^M$, so we can write down $(1_H^M)_{{{\cal C}}}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@phi:= RestrictedClassFunction( cand[1], g )^m;;|
  !gapprompt@gap>| !gapinput@pi:= pi^m;;|
  !gapprompt@gap>| !gapinput@cand:= ShallowCopy( pi - 1/3 * phi );;|
  !gapprompt@gap>| !gapinput@morders:= OrdersClassRepresentatives( m );;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( morders ) ] do|
  !gapprompt@>| !gapinput@     if morders[i] mod 3 = 0 and phi[ PowerMap( m, 3 )[i] ] <> 0 then|
  !gapprompt@>| !gapinput@       Unbind( cand[i] );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 We claim that $1_H^M(g) \geq \pi^M(g) - 1/3 \psi^M(g)$ for all $g \in M$. In order to see this, let $H'$ denote the index two subgroup of $H$, and let $g \in M$. Since $H$ is the disjoint union of $V$, $H' \setminus V$, and three $H$-conjugates of $U \setminus V$, we get 
\begin{eqnarray*}
  1_H^M(g) & = & [M:H] \cdot |g^M \cap H| / |g^M| \\
           & = & [M:H] \cdot \left( |g^M \cap V|
                             + 3 |g^M \cap U \setminus V|
                             + |g^M \cap H' \setminus V| \right) / |g^M| \\
           & = & [M:H] \cdot \left( 3 |g^M \cap U| - 2 |g^M \cap V|
                             + |g^M \cap H' \setminus V| \right) / |g^M| \\
           & = & 1_U^M(g) - 1/3 \cdot 1_V^G(g) +
                    [M:H] \cdot |g^M \cap H' \setminus V| / |g^M| .
\end{eqnarray*}
   

 Possible constituents of $1_H^M$ are those rational irreducible characters of $M$ that are constituents of $\pi^M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@constit:= Filtered( RationalizedMat( Irr( m ) ),|
  !gapprompt@>| !gapinput@                       chi -> ScalarProduct( m, chi, pi ) <> 0 );;|
\end{Verbatim}
 

 Now we compute the possible permutation characters that have the prescribed
values, are compatible with the given lower bounds for values, and have only
constituents in the given list. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= PermChars( m,|
  !gapprompt@>| !gapinput@     rec( torso:= cand, chars:= constit,|
  !gapprompt@>| !gapinput@          lower:= ShallowCopy( pi - 1/3 * phi ),|
  !gapprompt@>| !gapinput@          normalsubgroup:= [ 1 .. NrConjugacyClasses( m ) ],|
  !gapprompt@>| !gapinput@          nonfaithful:= TrivialCharacter( m ) ) );|
  [ Character( CharacterTable( "M" ),
    [ 16009115629875684006343550944921875, 7774182899642733721875, 
        120168544413337875, 4436049512692980, 215448838605, 
        131873639625, 760550656275, 110042727795, 943894035, 568854195, 
        1851609375, 0, 4680311220, 405405, 78624756, 14467005, 178605, 
        248265, 874650, 0, 76995, 591163, 224055, 34955, 29539, 20727, 
        0, 0, 375375, 15775, 0, 0, 0, 495, 116532, 3645, 62316, 1017, 
        11268, 357, 1701, 45, 117, 705, 0, 0, 4410, 1498, 0, 3780, 810, 
        0, 0, 83, 135, 31, 0, 0, 0, 0, 0, 0, 0, 255, 195, 0, 215, 0, 0, 
        210, 0, 42, 0, 35, 15, 1, 1, 160, 48, 9, 92, 25, 9, 9, 5, 1, 
        21, 0, 0, 0, 0, 0, 98, 74, 42, 0, 0, 0, 120, 76, 10, 0, 0, 0, 
        0, 0, 1, 1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 
        0, 0, 18, 0, 10, 0, 3, 3, 0, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 
        0, 0, 2, 0, 0, 0, 0, 0, 6, 12, 0, 0, 2, 0, 0, 0, 2, 0, 0, 1, 1, 
        0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
  

 There is only one candidate, so we have found the permutation character. }

  
\subsection{\textcolor{Chapter }{The Subgroup $2^3.2^6.2^{12}.2^{18}.(L_3(2) \times 3.S_6)$ (September{\nobreakspace}2009)}}\label{subsect:monsterperm2}
\logpage{[ 8, 16, 2 ]}
\hyperdef{L}{X79E9247182B20474}{}
{
  According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 234]{CCN85}, the Monster group $M$ has a class of maximal subgroups $H$ of the type $2^3.2^6.2^{12}.2^{18}.(L_3(2) \times 3.S_6)$. Currently the character table of $H$ and the class fusion into $M$ are not available in \textsf{GAP}. We are interested in the permutation character $1_H^G$, and we will compute it without this information. 

 The subgroup $H$ normalizes an elementary abelian group $E$ of order eight whose involutions lie in the class \texttt{2B}. We fix an involution $z$ in $E$, and set $G = C_M(z)$, $U = C_H(z)$, and $V = C_H(E)$. Further, let $N$ be the extraspecial normal subgroup of order $2^{25}$ in $G$. 

 So $G$ has the structure $2^{{1+24}}_+.Co_1$, and $U$ has index seven in $H$.   The order of $N U / N$ is a multiple of $2^{{3+6+12+18-25}} \cdot |L_3(2)| \cdot |3.S_6| / 7$, and $N U / N$ occurs as a subgroup of $G / N \cong Co_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@co1:= CharacterTable( "Co1" );;|
  !gapprompt@gap>| !gapinput@order:= 2^(3+6+12+18-25) * 168 * 3 * Factorial( 6 ) / 7;|
  849346560
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( co1 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, t -> Size( t ) mod order = 0 );|
  [ CharacterTable( "2^(1+8)+.O8+(2)" ), 
    CharacterTable( "2^(4+12).(S3x3S6)" ) ]
  !gapprompt@gap>| !gapinput@List( filt, t -> Size( t ) / order );|
  [ 105, 1 ]
  !gapprompt@gap>| !gapinput@o8p2:= CharacterTable( "O8+(2)" );;|
  !gapprompt@gap>| !gapinput@PermChars( o8p2, rec( torso:= [ 105 ] ) );|
  [  ]
  !gapprompt@gap>| !gapinput@k:= filt[2];;|
\end{Verbatim}
 

 The list of maximal subgroups of $Co_1$ (see{\nobreakspace}\cite[p. 183]{CCN85}) tells us that $NU / N$ is a maximal subgroup $K$ of $Co_1$ and has the structure $2^{{4+12}}.(S_3 \times 3.S_6)$. (Note that the group $O_8^+(2)$ has no proper subgroup of index $105$.) In particular, $U$ contains $N$ and thus $U/N \cong K$. 

 Let ${{\cal C}}$ be the set of elements in $M$ whose order is not divisible by $7$. Then $(1_H)_{{{{\cal C}} \cap H}} = (1_U^H - 1/3 1_{VN}^H + 1/21 1_V^H)_{{{{\cal C}} \cap H}}$ holds, as we can see from computations with $H/V \cong L_3(2)$, as follows. 

  So S4, V4, 1 suffice! --{\textgreater} 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@f:= CharacterTable( "L3(2)" );|
  CharacterTable( "L3(2)" )
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( f );|
  [ 1, 2, 3, 4, 7, 7 ]
  !gapprompt@gap>| !gapinput@deg7:= PermChars( f, 7 );|
  [ Character( CharacterTable( "L3(2)" ), [ 7, 3, 1, 1, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@deg42:= PermChars( f, 42 );|
  [ Character( CharacterTable( "L3(2)" ), [ 42, 2, 0, 2, 0, 0 ] ), 
    Character( CharacterTable( "L3(2)" ), [ 42, 6, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@deg168:= PermChars( f, 168 );|
  [ Character( CharacterTable( "L3(2)" ), [ 168, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@deg7[1] - 1/3 * deg42[2] + 1/21 * deg168[1];|
  ClassFunction( CharacterTable( "L3(2)" ), [ 1, 1, 1, 1, 0, 0 ] )
\end{Verbatim}
 

 (Note that $VN/V$ is a Klein four group, and there is only one transitive permutation character
of $L_3(2)$ that is induced from such subgroups.) 

 The character table of $G$ is available in \textsf{GAP}, so we can compute the permutation character $\pi = 1_U^G$ by computing the primitive permutation character $1_K^{{Co_1}}$, identifying it with $1_{{U/N}}^{{G/N}}$, and then inflating this character to $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );|
  CharacterTable( "M" )
  !gapprompt@gap>| !gapinput@g:= CharacterTable( "MC2B" );|
  CharacterTable( "2^1+24.Co1" )
  !gapprompt@gap>| !gapinput@pi:= RestrictedClassFunction( TrivialCharacter( k )^co1, g );;|
\end{Verbatim}
 

 The permutation character $\psi = 1_{VN}^G$ can be computed as the inflation of $1_{{VN/N}}^{{G/N}} = (1_{{VN/N}}^{{U/N}})^{{G/N}}$, where $1_{{VN/N}}^{{U/N}}$ is a character of $K$ that can be identified with the regular permutation character of $U/VN \cong S_3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( k );;|
  !gapprompt@gap>| !gapinput@nsgsizes:= List( nsg, x -> Sum( SizesConjugacyClasses( k ){ x } ) );;|
  !gapprompt@gap>| !gapinput@nn:= nsg[ Position( nsgsizes, Size( k ) / 6 ) ];;|
  !gapprompt@gap>| !gapinput@psi:= 0 * [ 1 .. NrConjugacyClasses( k ) ];;|
  !gapprompt@gap>| !gapinput@for i in nn do|
  !gapprompt@>| !gapinput@     psi[i]:= 6;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@psi:= InducedClassFunction( k, psi, co1 );;|
  !gapprompt@gap>| !gapinput@psi:= RestrictedClassFunction( psi, g );;|
\end{Verbatim}
 

 Next we consider the permutation character $\phi = 1_V^G$. The group $V$ does not contain $N$ because $K$ does not have a factor group of the type $S_4$. But $V$ contains $Z$ because $U/V$ is centerless. So we can regard $\phi$ as the inflation of $1_{{V/Z}}^{{G/Z}}$ from $G/Z$ to $G$, i.{\nobreakspace}e., we can perform the computations with the character
table of the factor group $G/Z$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@zclasses:= ClassPositionsOfCentre( g );;|
  !gapprompt@gap>| !gapinput@gmodz:= g / zclasses;|
  CharacterTable( "2^1+24.Co1/[ 1, 2 ]" )
  !gapprompt@gap>| !gapinput@invmap:= InverseMap( GetFusionMap( g, gmodz ) );;|
  !gapprompt@gap>| !gapinput@psibar:= CompositionMaps( psi, invmap );;|
\end{Verbatim}
 

 Since $\phi(g) = [G:V] \cdot |g^G \cap V| / |g^G|$ holds for $g \in G$, and since $g^G \cap V \subseteq g^G \cap VN$, with equality if $g$ has odd order, we get $\phi(g) = 4 \cdot \psi(g)$ if $g$ has odd order, and $\phi(g) = 0$ if $\psi(g) = 0$. 

 We want to compute the possible permutation characters with these values. This
is easier if we ``go down'' from $VN$ to $V$ in two steps. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@factorders:= OrdersClassRepresentatives( gmodz );;|
  !gapprompt@gap>| !gapinput@phibar:= [];;|
  !gapprompt@gap>| !gapinput@upperphibar:= [];;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. NrConjugacyClasses( gmodz ) ] do|
  !gapprompt@>| !gapinput@     if factorders[i] mod 2 = 1 then|
  !gapprompt@>| !gapinput@       phibar[i]:= 2 * psibar[i];|
  !gapprompt@>| !gapinput@     elif psibar[i] = 0 then|
  !gapprompt@>| !gapinput@       phibar[i]:= 0;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@     upperphibar[i]:= 2 * psibar[i];|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@cand:= PermChars( gmodz, rec( torso:= phibar,|
  !gapprompt@>| !gapinput@            upper:= upperphibar,|
  !gapprompt@>| !gapinput@            normalsubgroup:= [ 1 .. NrConjugacyClasses( gmodz ) ],|
  !gapprompt@>| !gapinput@            nonfaithful:= TrivialCharacter( gmodz ) ) );;|
  !gapprompt@gap>| !gapinput@Length( cand );|
  3
\end{Verbatim}
 

  One of the candidates computed in this first step is excluded by the fact that
it is induced from a subgroup that contains $N/Z$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nn:= First( ClassPositionsOfNormalSubgroups( gmodz ),|
  !gapprompt@>| !gapinput@               x -> Sum( SizesConjugacyClasses( gmodz ){x} ) = 2^24 );|
  [ 1 .. 4 ]
  !gapprompt@gap>| !gapinput@cont:= PermCharInfo( gmodz, cand ).contained;;|
  !gapprompt@gap>| !gapinput@cand:= cand{ Filtered( [ 1 .. Length( cand ) ],|
  !gapprompt@>| !gapinput@                          i -> Sum( cont[i]{ nn } ) < 2^24 ) };;|
  !gapprompt@gap>| !gapinput@Length( cand );|
  2
\end{Verbatim}
 

 Now we run the second step. After excluding the candidates that cannot be
induced from subgroups whose intersection with $N/Z$ has index four in $N/Z$, we get four solutions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@poss:= [];;|
  !gapprompt@gap>| !gapinput@for v in cand do|
  !gapprompt@>| !gapinput@     phibar:= [];|
  !gapprompt@>| !gapinput@     upperphibar:= [];|
  !gapprompt@>| !gapinput@     for i in [ 1 .. NrConjugacyClasses( gmodz ) ] do|
  !gapprompt@>| !gapinput@       if factorders[i] mod 2 = 1 then|
  !gapprompt@>| !gapinput@         phibar[i]:= 2 * v[i];|
  !gapprompt@>| !gapinput@       elif v[i] = 0 then|
  !gapprompt@>| !gapinput@         phibar[i]:= 0;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@       upperphibar[i]:= 2 * v[i];|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     Append( poss, PermChars( gmodz, rec( torso:= phibar,|
  !gapprompt@>| !gapinput@                     upper:= upperphibar,|
  !gapprompt@>| !gapinput@                     normalsubgroup:= [ 1 .. NrConjugacyClasses( gmodz ) ],|
  !gapprompt@>| !gapinput@                     nonfaithful:= TrivialCharacter( gmodz ) ) ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  6
  !gapprompt@gap>| !gapinput@cont:= PermCharInfo( gmodz, poss ).contained;;|
  !gapprompt@gap>| !gapinput@poss:= poss{ Filtered( [ 1 .. Length( poss ) ],|
  !gapprompt@>| !gapinput@                          i -> Sum( cont[i]{ nn } ) < 2^23 ) };;|
  !gapprompt@gap>| !gapinput@Length( poss );|
  4
  !gapprompt@gap>| !gapinput@phicand:= RestrictedClassFunctions( poss, g );;|
\end{Verbatim}
  

 Since we have several candidates for $1_V^G$, we form the linear combinations for all these candidates. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@phicand:= RestrictedClassFunctions( poss, g );;|
  !gapprompt@gap>| !gapinput@phicand:= InducedClassFunctions( phicand, m );;|
  !gapprompt@gap>| !gapinput@psi:= psi^m;;|
  !gapprompt@gap>| !gapinput@pi:= pi^m;;|
  !gapprompt@gap>| !gapinput@cand:= List( phicand,|
  !gapprompt@>| !gapinput@            phi -> ShallowCopy( pi - 1/3 * psi + 1/21 * phi ) );;|
  !gapprompt@gap>| !gapinput@morders:= OrdersClassRepresentatives( m );;|
  !gapprompt@gap>| !gapinput@for x in cand do|
  !gapprompt@>| !gapinput@     for i in [ 1 .. Length( morders ) ] do|
  !gapprompt@>| !gapinput@       if morders[i] mod 7 = 0 then|
  !gapprompt@>| !gapinput@         Unbind( x[i] );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 Exactly one of the candidates has only integral values. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= Filtered( cand, x -> ForAll( x, IsInt ) );|
  [ [ 4050306254358548053604918389065234375, 148844831270071996434375, 
        2815847622206994375, 14567365753025085, 3447181417680, 
        659368198125, 3520153823175, 548464353255, 5706077895, 
        3056566695, 264515625, 0, 19572895485, 6486480, 186109245, 
        61410960, 758160, 688365,,, 172503, 1264351, 376155, 137935, 
        99127, 52731, 0, 0, 119625, 3625, 0, 0, 0, 0, 402813, 29160, 
        185301, 2781, 21069, 1932, 4212, 360, 576, 1125, 0, 0,,,, 2160, 
        810, 0, 0, 111, 179, 43, 0, 0, 0, 0, 0, 0, 0, 185, 105, 0, 65, 
        0, 0,,,,, 0, 0, 0, 0, 337, 105, 36, 157, 37, 18, 18, 16, 4, 21, 
        0, 0, 0, 0, 0,,,,, 0, 0, 60, 40, 10, 0, 0, 0, 0, 0, 1, 1, 0, 0, 
        0,,, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0,,,,, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,,,, 0, 0, 0, 6, 8, 0, 0, 2, 
        0, 0, 0, 0, 0, 0, 0, 0,,, 0, 0, 0, 0, 0,,,, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0,, 0 ] ]
\end{Verbatim}
 

 Possible constituents of $1_H^M$ are those rational irreducible characters of $M$ that are constituents of $\pi^M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@constit:= Filtered( RationalizedMat( Irr( m ) ),|
  !gapprompt@>| !gapinput@                       chi -> ScalarProduct( m, chi, pi ) <> 0 );;|
\end{Verbatim}
 

 Now we compute the possible permutation characters that have the prescribed
values and have only constituents in the given list. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= PermChars( m, rec( torso:= cand[1], chars:= constit ) );|
  [ Character( CharacterTable( "M" ),
    [ 4050306254358548053604918389065234375, 148844831270071996434375, 
        2815847622206994375, 14567365753025085, 3447181417680, 
        659368198125, 3520153823175, 548464353255, 5706077895, 
        3056566695, 264515625, 0, 19572895485, 6486480, 186109245, 
        61410960, 758160, 688365, 58310, 0, 172503, 1264351, 376155, 
        137935, 99127, 52731, 0, 0, 119625, 3625, 0, 0, 0, 0, 402813, 
        29160, 185301, 2781, 21069, 1932, 4212, 360, 576, 1125, 0, 0, 
        1302, 294, 0, 2160, 810, 0, 0, 111, 179, 43, 0, 0, 0, 0, 0, 0, 
        0, 185, 105, 0, 65, 0, 0, 224, 0, 14, 0, 0, 0, 0, 0, 337, 105, 
        36, 157, 37, 18, 18, 16, 4, 21, 0, 0, 0, 0, 0, 70, 38, 14, 0, 
        0, 0, 60, 40, 10, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 10, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 24, 0, 6, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 8, 0, 0, 2, 
        0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0 ] ) ]
\end{Verbatim}
  

 There is only one candidate, so we have found the permutation character. }

  
\subsection{\textcolor{Chapter }{The Subgroup $2^5.2^{10}.2^{20}.(S_3 \times L_5(2))$ (October{\nobreakspace}2009)}}\label{subsect:monsterperm3}
\logpage{[ 8, 16, 3 ]}
\hyperdef{L}{X7BC36C597E542DEE}{}
{
  According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 234]{CCN85}, the Monster group $M$ has a class of maximal subgroups $H$ of the type $2^5.2^{10}.2^{20}.(S_3 \times L_5(2))$. Currently the character table of $H$ and the class fusion into $M$ are not available in \textsf{GAP}. We are interested in the permutation character $1_H^G$, and we will compute it without this information. 

 The subgroup $H$ normalizes an elementary abelian group $E$ of order $32$ whose involutions lie in the class \texttt{2B}. We fix an involution $z$ in $E$, and set $G = C_M(z)$, $U = C_H(z)$, and $V = C_H(E)$. Further, let $N$ be the extraspecial normal subgroup of order $2^{25}$ in $G$. 

 So $G$ has the structure $2^{{1+24}}_+.Co_1$, and $U$ has index $31$ in $H$.   The order of $N U / N$ is a multiple of $2^{{5+10+20-25}} \cdot |L_5(2)| \cdot |S_3| / 31$, and $N U / N$ occurs as a subgroup of $G / N \cong Co_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@co1:= CharacterTable( "Co1" );;|
  !gapprompt@gap>| !gapinput@order:= 2^35*Size( CharacterTable( "L5(2)" ) )*6 / 2^25 / 31;|
  1981808640
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( co1 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, t -> Size( t ) mod order = 0 );|
  [ CharacterTable( "2^11:M24" ), CharacterTable( "2^(1+8)+.O8+(2)" ), 
    CharacterTable( "2^(2+12):(A8xS3)" ) ]
  !gapprompt@gap>| !gapinput@List( filt, t -> Size( t ) / order );|
  [ 253, 45, 1 ]
  !gapprompt@gap>| !gapinput@m24:= CharacterTable( "M24" );;|
  !gapprompt@gap>| !gapinput@cand:= PermChars( m24, rec( torso:=[ 253 ] ) );|
  [ Character( CharacterTable( "M24" ),
    [ 253, 29, 13, 10, 1, 5, 5, 1, 3, 2, 1, 1, 1, 1, 3, 0, 2, 1, 1, 1, 
        0, 0, 1, 1, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@TestPerm5( m24, cand, m24 mod 11 );|
  [  ]
  !gapprompt@gap>| !gapinput@PermChars( CharacterTable( "O8+(2)" ), rec( torso:=[ 45 ] ) );|
  [  ]
  !gapprompt@gap>| !gapinput@k:= filt[3];;|
\end{Verbatim}
 

 The list of maximal subgroups of $Co_1$ (see{\nobreakspace}\cite[p. 183]{CCN85}) tells us that $NU / N$ is a maximal subgroup $K$ of $Co_1$ and has the structure $2^{{2+12}}.(A_8 \times S_3)$. (Note that the group $M_{24}$ has no proper subgroup of index $253$, which is shown above using the $11$-modular Brauer table of $M_{24}$. Furthermore, the group $O_8^+(2)$ has no subgroup of index $45$.) In particular, $U$ contains $N$ and thus $U/N \cong K$. 

 Let ${{\cal C}}$ be the set of elements in $M$ whose order is not divisible by $31$ or $21$. We want to find an index set $I$ and subgroups $X_i$, for $i \in I$, with the property that $V \leq X_i \leq U$ and 
\[ (1_H)_{{{{\cal C}} \cap H}} = \left( \sum_{{i \in I}} c_i 1_{{X_i}}^H \right)_{{{{\cal C}} \cap H}} \]
 holds for suitable rational integers $c_i$. Let $W$ be the full preimage of the elementary normal subgroup of order $16$ in $U/V \cong 2^4.A_8$ under the natural epimorphism from $U$ to $U/V$, and set $I_1 = \{ i \in I; W \leq X_i \}$ and $I_2 = I \setminus I_1$. 

 Using the known table of marks of $U/V$, we will find a solution such that $[W:(W \cap X_i)] = 2$ for all $i \in I_2$. First we compute the permutation characters $1_S^{{U/V}}$ for all subgroups $S$ of $U/V$ that contain $W/V$, and induce them to $H/V$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@subtbl:= CharacterTable( "2^4:A8" );;|
  !gapprompt@gap>| !gapinput@subtom:= TableOfMarks( subtbl );;|
  !gapprompt@gap>| !gapinput@perms:= PermCharsTom( subtbl, subtom );;|
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( subtbl );|
  [ [ 1 ], [ 1, 2 ], [ 1 .. 25 ] ]
  !gapprompt@gap>| !gapinput@above:= Filtered( perms, x -> x[1] = x[2] );;|
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "L5(2)" );;|
  !gapprompt@gap>| !gapinput@above:= Set( Induced( subtbl, tbl, above ) );;|
\end{Verbatim}
 

 Next we compute the permutation characters $1_S^{{U/V}}$ for all subgroups $S$ of $U/V$ whose intersection with $W/V$ has index two in $W/V$. Afterwards we exclude certain subgroups that would slow down later
computations, and induce also these characters to $H/V$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@index2:= Filtered( perms,|
  !gapprompt@>| !gapinput@     x -> Sum( PermCharInfo( subtbl, [x] ).contained[1]{ [1,2] } ) = 8 );;|
  !gapprompt@gap>| !gapinput@index2:= Filtered( index2, x -> not x[1] in [ 630, 840, 1260, 1680 ] );;|
  !gapprompt@gap>| !gapinput@index2:= Set( Induced( subtbl, tbl, index2 ) );;|
\end{Verbatim}
 

 Now we induce the permutation characters to $H/V$, and compute the coefficients of a linear combination as desired. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orders:= OrdersClassRepresentatives( tbl );;|
  !gapprompt@gap>| !gapinput@goodclasses:= Filtered( [ 1 .. NrConjugacyClasses( tbl ) ],|
  !gapprompt@>| !gapinput@                           i -> not orders[i] in [ 21, 31 ] );|
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
  !gapprompt@gap>| !gapinput@matrix:= List( Concatenation( above, index2 ), x -> x{ goodclasses } );;|
  !gapprompt@gap>| !gapinput@sol:= SolutionMat( matrix,|
  !gapprompt@>| !gapinput@             ListWithIdenticalEntries( Length( goodclasses ), 1 ) );|
  [ 692/651, 57/217, -78/217, -26/217, 0, 74/651, 11/217, 0, 3/217, 
    151/651, 0, 22/651, 0, 0, 0, -11/217, 0, 0, 0, 0, 0, 0, 0, 0, 
    -115/651, 0, -3/31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34/93, 
    -11/651, 0, 2/21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/31, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
  !gapprompt@gap>| !gapinput@nonzero:= Filtered( [ 1 .. Length( sol ) ], i -> sol[i] <> 0 );|
  [ 1, 2, 3, 4, 6, 7, 9, 10, 12, 16, 25, 27, 106, 107, 109, 120 ]
  !gapprompt@gap>| !gapinput@sol:= sol{ nonzero };;|
\end{Verbatim}
 

 Now we transfer this linear combination to the character tables which are
given in our situation. 

 Those constituents that are induced from subgroups of $H$ above $W$ can be identified uniquely via their degrees and their values distribution; we
compute these characters in the character table of $U/W$ obtained as a factor table of the character table of $U/N$, lift them back to $U/N$, induce them to $G/N$, inflate them to $G$, and then induce them fo $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a8degrees:= List( above{ Filtered( nonzero,|
  !gapprompt@>| !gapinput@                                x -> x <= Length( above ) ) },|
  !gapprompt@>| !gapinput@                     x -> x[1] ) / 31;|
  [ 1, 8, 15, 28, 56, 56, 70, 105, 120, 168, 336, 336 ]
  !gapprompt@gap>| !gapinput@a8tbl:= subtbl / [ 1, 2 ];;|
  !gapprompt@gap>| !gapinput@invtoa8:= InverseMap( GetFusionMap( subtbl, a8tbl ) );;|
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( k );;|
  !gapprompt@gap>| !gapinput@nn:= First( nsg, x -> Sum( SizesConjugacyClasses( k ){ x } ) = 6*2^14 );;|
  !gapprompt@gap>| !gapinput@a8tbl_other:= k / nn;;|
  !gapprompt@gap>| !gapinput@g:= CharacterTable( "MC2B" );|
  CharacterTable( "2^1+24.Co1" )
  !gapprompt@gap>| !gapinput@constit:= [];;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( a8degrees ) ] do|
  !gapprompt@>| !gapinput@     cand:= PermChars( a8tbl_other, rec( torso:= [ a8degrees[i] ] ) );|
  !gapprompt@>| !gapinput@     filt:= Filtered( perms, x -> x^tbl = above[ nonzero[i] ] );|
  !gapprompt@>| !gapinput@     filt:= List( filt, x -> CompositionMaps( x, invtoa8 ) );|
  !gapprompt@>| !gapinput@     cand:= Filtered( cand,|
  !gapprompt@>| !gapinput@              x -> ForAny( filt, y -> Collected( x ) = Collected(y) ) );|
  !gapprompt@>| !gapinput@     Add( constit, List( Induced( Restricted( Induced(|
  !gapprompt@>| !gapinput@       Restricted( cand, k ), co1 ), g ), m ), ValuesOfClassFunction ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@List( constit, Length );|
  [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
\end{Verbatim}
 

 Dealing with the remaining constituents is more involved. For a permutation
character $1_{{X/V}}^{{U/V}}$, we compute $1_{{WX/V}}^{{U/V}}$, a character whose degree is half as large and which can be regarded as a
character of $U/W$. This character can be treated like the ones above: We lift it to $U/N$, induce it to $G/N$, and inflate it to $G/Z(G)$; let this character be $1_Y^{{G/Z(G)}}$, for some subgroup $Y$. Then we compute the possible permutation characters of $G/Z(G)$ that can be induced from a subgroup of index two inside $Y$, inflate these characters to $G$ and then induce them to $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@downdegrees:= List( index2{ Filtered( nonzero,|
  !gapprompt@>| !gapinput@                                   x -> x > Length( above ) )|
  !gapprompt@>| !gapinput@                               - Length( above ) },|
  !gapprompt@>| !gapinput@                       x -> x[1] ) / 31;|
  [ 30, 210, 210, 1920 ]
  !gapprompt@gap>| !gapinput@f:= g / ClassPositionsOfCentre( g );;|
  !gapprompt@gap>| !gapinput@forders:= OrdersClassRepresentatives( f );;|
  !gapprompt@gap>| !gapinput@inv:= InverseMap( GetFusionMap( g, f ) );;|
  !gapprompt@gap>| !gapinput@for j in [ 1 .. Length( downdegrees ) ] do|
  !gapprompt@>| !gapinput@     chars:= [];|
  !gapprompt@>| !gapinput@     cand:= PermChars( a8tbl_other, rec( torso:= [ downdegrees[j]/2 ] ) );|
  !gapprompt@>| !gapinput@     filt:= Filtered( perms, x -> x^tbl = index2[ nonzero[|
  !gapprompt@>| !gapinput@                  j + Length( a8degrees ) ] - Length( above ) ] );|
  !gapprompt@>| !gapinput@     filt:= Induced( subtbl, a8tbl, filt,|
  !gapprompt@>| !gapinput@                     GetFusionMap( subtbl, a8tbl ));|
  !gapprompt@>| !gapinput@     cand:= Filtered( cand, x -> ForAny( filt,|
  !gapprompt@>| !gapinput@                y -> Collected( x ) = Collected( y ) ) );|
  !gapprompt@>| !gapinput@     cand:= Restricted( Induced( Restricted( cand, k ), co1 ), g );|
  !gapprompt@>| !gapinput@     for chi in cand do|
  !gapprompt@>| !gapinput@       cchi:= CompositionMaps( chi, inv );|
  !gapprompt@>| !gapinput@       upper:= [];|
  !gapprompt@>| !gapinput@       pphi:= [];|
  !gapprompt@>| !gapinput@       for i in [ 1 .. NrConjugacyClasses( f ) ] do|
  !gapprompt@>| !gapinput@         if forders[i] mod 2 = 1 then|
  !gapprompt@>| !gapinput@           pphi[i]:= 2 * cchi[i];|
  !gapprompt@>| !gapinput@         elif cchi[i] = 0 then|
  !gapprompt@>| !gapinput@           pphi[i]:= 0;|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@         upper[i]:= 2* cchi[i];|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@       Append( chars, PermChars( f, rec( torso:= ShallowCopy( pphi ),|
  !gapprompt@>| !gapinput@           upper:= upper,|
  !gapprompt@>| !gapinput@           normalsubgroup:= [ 1 .. 4 ],|
  !gapprompt@>| !gapinput@           nonfaithful:= cchi ) ) );|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     Add( constit, List( Induced( Restricted( chars, g ), m ),|
  !gapprompt@>| !gapinput@                         ValuesOfClassFunction ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@List( constit, Length );|
  [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 10, 10, 2 ]
\end{Verbatim}
 

 Now we form the possible linear combinations. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= List( Cartesian( constit ), l -> sol * l );;|
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );|
  CharacterTable( "M" )
  !gapprompt@gap>| !gapinput@morders:= OrdersClassRepresentatives( m );;|
  !gapprompt@gap>| !gapinput@for x in cand do|
  !gapprompt@>| !gapinput@     for i in [ 1 .. Length( morders ) ] do|
  !gapprompt@>| !gapinput@       if morders[i] mod 31 = 0 or morders[i] mod 21 = 0 then|
  !gapprompt@>| !gapinput@         Unbind( x[i] );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 Exactly one of the candidates has only integral values. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= Filtered( cand, x -> ForAll( x, IsInt ) );|
  [ [ 391965121389536908413379198941796875, 23914487292951376996875, 
        474163138042468875, 9500455925885925, 646346515815, 
        334363486275, 954161764875, 147339103275, 1481392395, 
        1313281515, 0, 8203125, 9827885925, 1216215, 91556325, 9388791, 
        115911, 587331, 874650, 0, 79515, 581955, 336375, 104371, 
        62331, 36855, 0, 0, 0, 0, 28125, 525, 1125, 0, 188325, 16767, 
        88965, 2403, 9477, 1155, 891, 207, 351, 627, 0, 0, 4410, 1498, 
        0, 0, 0, 30, 150, 91, 151, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 
        0, 5, 5,,,,, 0, 0, 0, 0, 141, 45, 27, 61, 27, 9, 9, 7, 3, 15, 
        0, 0, 0, 0, 0, 98, 74, 42, 0, 0, 30, 0, 0, 0, 6, 6, 6,,, 1, 1, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,,,,, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 
        0, 0, 2, 2, 0, 2,,, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,,,, 0, 
        0, 0, 0, 0, 0,,, 0, 0, 0, 0, 0, 0,, 0, 0, 0 ] ]
\end{Verbatim}
 

 Now we compute the possible permutation characters that have the prescribed
values. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= PermChars( m, rec( torso:= cand[1] ) );|
  [ Character( CharacterTable( "M" ),
    [ 391965121389536908413379198941796875, 23914487292951376996875, 
        474163138042468875, 9500455925885925, 646346515815, 
        334363486275, 954161764875, 147339103275, 1481392395, 
        1313281515, 0, 8203125, 9827885925, 1216215, 91556325, 9388791, 
        115911, 587331, 874650, 0, 79515, 581955, 336375, 104371, 
        62331, 36855, 0, 0, 0, 0, 28125, 525, 1125, 0, 188325, 16767, 
        88965, 2403, 9477, 1155, 891, 207, 351, 627, 0, 0, 4410, 1498, 
        0, 0, 0, 30, 150, 91, 151, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 
        0, 5, 5, 210, 0, 42, 0, 0, 0, 0, 0, 141, 45, 27, 61, 27, 9, 9, 
        7, 3, 15, 0, 0, 0, 0, 0, 98, 74, 42, 0, 0, 30, 0, 0, 0, 6, 6, 
        6, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        1, 1, 0, 18, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
        0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 3, 3, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
  

 There is only one candidate, so we have found the permutation character. }

  
\subsection{\textcolor{Chapter }{The Subgroup $2^{{10+16}}.O_{10}^+(2)$ (November{\nobreakspace}2009)}}\label{subsect:monsterperm4}
\logpage{[ 8, 16, 4 ]}
\hyperdef{L}{X7F2ABD3E7AFF5F6E}{}
{
  According to the Atlas of Finite Groups{\nobreakspace}\cite[p. 234]{CCN85}, the Monster group $M$ has a class of maximal subgroups $H$ of the type $2^{{10+16}}.O_{10}^+(2)$. Currently the character table of $H$ and the class fusion into $M$ are not available in \textsf{GAP}. We are interested in the permutation character $1_H^M$, and we will compute it without this information. 

 The subgroup $H$ normalizes an elementary abelian group $E$ of order $2^{10}$ which contains $496$ involutions in the class \texttt{2A} and $527$ involutions in the class \texttt{2B}. Let $V$ denote the normal subgroup of order $2^{26}$ in $H$, and set $\bar{H} = H/N$. Since the smallest two indices of maximal subgroups of $\bar{H}$ are $496$ and $527$, respectively, $H$ acts transitively on both the \texttt{2A} and the \texttt{2B} involutions in $E$, and the centralizers of these involutions contain $V$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Hbar:= CharacterTable( "O10+(2)" );;|
  !gapprompt@gap>| !gapinput@U_Abar:= CharacterTable( "O10+(2)M1" );|
  CharacterTable( "S8(2)" )
  !gapprompt@gap>| !gapinput@Index( Hbar, U_Abar );|
  496
  !gapprompt@gap>| !gapinput@U_Bbar:= CharacterTable( "O10+(2)M2" );|
  CharacterTable( "2^8:O8+(2)" )
  !gapprompt@gap>| !gapinput@Index( Hbar, U_Bbar );|
  527
\end{Verbatim}
 

    We fix a \texttt{2A} involution $z_A$ in $E$, and set $G_A = C_M(z_A)$ and $U_A = C_H(z_A)$. So $G_A$ has the structure $2.B$ and $U_A$ has the structure $2^{{10+16}}.S_8(2)$. From the list of maximal subgroups of $B$ we see that the image of $G_A$ under the natural epimorphism from $G_A$ to $B$ is a maximal subgroup of $B$ and has the structure $2^{{9+16}}.S_8(2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );|
  CharacterTable( "B" )
  !gapprompt@gap>| !gapinput@Horder:= 2^26 * Size( Hbar );|
  1577011055923770163200
  !gapprompt@gap>| !gapinput@order:= Horder / ( 2 * 496 );|
  1589728887019929600
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( b ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, t -> Size( t ) mod order = 0 );|
  [ CharacterTable( "2^(9+16).S8(2)" ) ]
  !gapprompt@gap>| !gapinput@List( filt, t -> Size( t ) / order );|
  [ 1 ]
  !gapprompt@gap>| !gapinput@u1:= filt[1];|
  CharacterTable( "2^(9+16).S8(2)" )
\end{Verbatim}
 

 Analogously, we fix a \texttt{2B} involution $z_B$ in $E$, and set $G_B = C_M(z_B)$ and $U_B = C_H(z_B)$, Further, let $N$ be the extraspecial normal subgroup of order $2^{25}$ in $G_B$. So $G_B$ has the structure $2^{{1+24}}_+.Co_1$, and $U_B$ has index $527$ in $G_B$. From the list of maximal subgroups of $Co_1$ we see that the image of $U_B$ under the natural epimorphism from $G_B$ to $Co_1$ is a maximal subgroup of $Co_1$ and has the structure $2^{{1+8}}_+.O_8^+(2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@co1:= CharacterTable( "Co1" );;|
  !gapprompt@gap>| !gapinput@order:= Horder / ( 2^25 * 527 );|
  89181388800
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( co1 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, t -> Size( t ) mod order = 0 );|
  [ CharacterTable( "2^(1+8)+.O8+(2)" ) ]
  !gapprompt@gap>| !gapinput@List( filt, t -> Size( t ) / order );|
  [ 1 ]
  !gapprompt@gap>| !gapinput@u2:= filt[1];|
  CharacterTable( "2^(1+8)+.O8+(2)" )
\end{Verbatim}
 

 First we compute the permutation characters $\pi_A = 1_{{U_A}}^M$ and $\pi_B = 1_{{U_B}}^M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );|
  CharacterTable( "M" )
  !gapprompt@gap>| !gapinput@2b:= CharacterTable( "MC2A" );|
  CharacterTable( "2.B" )
  !gapprompt@gap>| !gapinput@mm:= CharacterTable( "MC2B" );|
  CharacterTable( "2^1+24.Co1" )
  !gapprompt@gap>| !gapinput@pi_A:= RestrictedClassFunction( TrivialCharacter( u1 )^b, 2b )^m;;|
  !gapprompt@gap>| !gapinput@pi_B:= RestrictedClassFunction( TrivialCharacter( u2 )^co1, mm )^m;;|
\end{Verbatim}
 

 The degree of $1_H^M$ is of course known. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@torso:= [ Size( m ) / Horder ];|
  [ 512372707698741056749515292734375 ]
\end{Verbatim}
 

 Next we compute some zero values of $1_H^M$, using the following conditions.      

 
\begin{itemize}
\item  For $g \in M$, if $|g|$ does not divide $|H|$ or if $|g|$ is not the product of an element order in $H/V$ and a $2$-power. (In fact we could use that the exponent of $V$ is $4$, but this would not improve the result.) 
\item  Let $U \leq H \leq G$, and let $p$ be a prime that does not divide $[H:U]$. Then $U$ contains a Sylow $p$ subgroup of $H$, so each element of order $p$ in $H$ is conjugate in $H$ to an element in $U$. For $g \in G$, $g = g_p h$, where the order of $g_p$ is a power of $p$ such that $1_U^G(g_p) = 0$ holds, we have $1_H^G(g) = 0$. We apply this to $U \in \{ U_A, U_B \}$.  
\end{itemize}
  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@morders:= OrdersClassRepresentatives( m );;|
  !gapprompt@gap>| !gapinput@2parts:= Union( [ 1 ], Filtered( Set( morders ),|
  !gapprompt@>| !gapinput@                         x -> IsPrimePowerInt( x ) and IsEvenInt( x ) ) );|
  [ 1, 2, 4, 8, 16, 32 ]
  !gapprompt@gap>| !gapinput@factorders:= Set( OrdersClassRepresentatives( Hbar ) );;|
  !gapprompt@gap>| !gapinput@primes_A:= Filtered( PrimeDivisors( Horder ), p -> 496 mod p <> 0 );|
  [ 3, 5, 7, 17 ]
  !gapprompt@gap>| !gapinput@primes_B:= Filtered( PrimeDivisors( Horder ), p -> 527 mod p <> 0 );|
  [ 2, 3, 5, 7 ]
  !gapprompt@gap>| !gapinput@primes:= Union( primes_A, primes_B );;|
  !gapprompt@gap>| !gapinput@n:= NrConjugacyClasses( m );;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. n ] do|
  !gapprompt@>| !gapinput@  if Horder mod morders[i] <> 0 then|
  !gapprompt@>| !gapinput@    torso[i]:= 0;|
  !gapprompt@>| !gapinput@  elif ForAll( factorders, x -> not morders[i] / x in 2parts ) then|
  !gapprompt@>| !gapinput@    torso[i]:= 0;|
  !gapprompt@>| !gapinput@  else|
  !gapprompt@>| !gapinput@    for p in primes do|
  !gapprompt@>| !gapinput@      if morders[i] mod p = 0 then|
  !gapprompt@>| !gapinput@        pprime:= morders[i];|
  !gapprompt@>| !gapinput@        while pprime mod p = 0 do pprime:= pprime / p; od;|
  !gapprompt@>| !gapinput@        pos:= PowerMap( m, pprime )[i];|
  !gapprompt@>| !gapinput@        if p in primes_A and pi_A[ pos ] = 0 then|
  !gapprompt@>| !gapinput@          torso[i]:= 0;|
  !gapprompt@>| !gapinput@        elif p in primes_B and pi_B[ pos ] = 0 then|
  !gapprompt@>| !gapinput@          torso[i]:= 0;|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@od;|
  !gapprompt@gap>| !gapinput@torso;|
  [ 512372707698741056749515292734375,,,,, 0,,,,,,,,,,,, 0,, 0,,,,,,,,,,
    ,,,, 0,,,, 0,,,,,, 0, 0, 0,,, 0,,,, 0,,,,,,,,,, 0,,,,,,,, 0, 0, 0, 
    0, 0, 0, 0,,,,, 0,,,,, 0, 0, 0, 0, 0, 0,,,, 0, 0,,,,, 0,,,,,,, 0, 0,
    , 0, 0,,,,, 0, 0, 0, 0, 0,,,,, 0,, 0, 0, 0, 0, 0,, 0, 0, 0, 0, 0, 0,
    , 0,, 0, 0, 0, 0,, 0, 0, 0, 0, 0,,,,,, 0,,, 0, 0,, 0, 0, 0, 0, 0, 
    0, 0, 0, 0,, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0 ]
\end{Verbatim}
 

 Now we want to compute as many nonzero values of $1_H^M$ as possible, using the same approach as in the previous sections. For that, we
first compute several permutation characters $1_X^M$, for subgroups $X$ with the property $V < X < U_A$ or $V < X < U_B$. Then we find several subsets ${{\cal C}}$ of $M$, each being a union of conjugacy classes of $M$ such that $(1_H)_{{{{\cal C}} \cap H}}$ is a linear combination of the characters $1_X^H$, restricted to ${{\cal C}} \cap H$. This yields the values of $1_H^M$ on the classes in ${{\cal C}}$. 

 The actual computations are performed with the characters $1_{{X/V}}^{{H/V}}$. So we build two parallel lists \texttt{cand} and \texttt{candbar} of permutation characters of $M$ and of $H/V$, respectively. For that, we write two small \textsf{GAP} functions: 

 
\begin{itemize}
\item  In the function \texttt{AddSubgroupOfS82}, we choose a subgroup $Y$ of $S_8(2) \cong U_A/V$, compute $1_Y^{{U_A/V}}$, inflate it to a character of $U_A$, induce this character to $B$, inflate the result to $G_A$, and finally induce this character to $M$. 
\item  In the function \texttt{AddSubgroupOfO8p2}, we choose a subgroup $Y$ of the factor group $F \cong O_8^+(2)$ of $U_B/N$, compute $1_Y^F$, inflate it to a character of $U_B/N$, induce this to a character of $G_B/N \cong Co_1$, inflate this to a character of $G_B$, and finally induce this character to $M$. 

 One difficulty in this case is that choosing a subgroup $X/V$ of $H/V$ involves fixing the class fusion into $H/V$, but it is not clear which is a compatible class fusion of the corresponding
subgroup $X$ into $M$; therefore, each entry of \texttt{cand} is in fact not the permutation character of $M$ in question but a list of possibilities. 
\end{itemize}
 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= [ [ pi_A ], [ pi_B ] ];;|
  !gapprompt@gap>| !gapinput@candbar:= [ TrivialCharacter( U_Abar )^Hbar,|
  !gapprompt@>| !gapinput@               TrivialCharacter( U_Bbar )^Hbar ];;|
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82:= function( subname )|
  !gapprompt@>| !gapinput@  local psis82;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  psis82:= TrivialCharacter( CharacterTable( subname ) )^U_Abar;|
  !gapprompt@>| !gapinput@  Add( cand, [ Restricted( Restricted( psis82, u1 )^b, 2b )^m ] );|
  !gapprompt@>| !gapinput@  Add( candbar, psis82 ^ Hbar );|
  !gapprompt@>| !gapinput@end;;|
  !gapprompt@gap>| !gapinput@tt1:= CharacterTable( "O8+(2)" );|
  CharacterTable( "O8+(2)" )
  !gapprompt@gap>| !gapinput@AddSubgroupOfO8p2:= function( subname )|
  !gapprompt@>| !gapinput@  local psi, list, char;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  psi:= TrivialCharacter( CharacterTable( subname ) )^tt1;|
  !gapprompt@>| !gapinput@  list:= [];|
  !gapprompt@>| !gapinput@  for char in Orbit( AutomorphismsOfTable( tt1 ), psi, Permuted ) do|
  !gapprompt@>| !gapinput@    AddSet( list, Restricted( Restricted( char, u2 ) ^ co1, mm ) ^ m );|
  !gapprompt@>| !gapinput@  od;|
  !gapprompt@>| !gapinput@  Add( cand, list );|
  !gapprompt@>| !gapinput@  Add( candbar, Restricted( psi, U_Bbar ) ^ Hbar );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Now we choose the subgroups that will turn out to be sufficient for our
computations. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82( "O8+(2).2" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfO8p2( "S6(2)" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82( "O8-(2).2" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82( "A10.2" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82( "S4(4).2" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82( "L2(17)" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfO8p2( "A9" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfO8p2( "2^6:A8" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfO8p2( "(3xU4(2)):2" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfO8p2( "(A5xA5):2^2" );|
  !gapprompt@gap>| !gapinput@AddSubgroupOfS82( "S8(2)M4" );|
\end{Verbatim}
 

 In the case of $A_5 < S_8(2)$, the function \texttt{AddSubgroupOfS82} does not work because there are several class fusions of $A_5$ into $S_8(2)$. We choose one fusion; the fact that it really describes an embedding of an $A_5$ type subgroup of $S_8(2)$ can be checked using the function \texttt{NrPolyhedralSubgroups} (\textbf{Reference: NrPolyhedralSubgroups}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a5:= CharacterTable( "A5" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( a5, U_Abar )[1];;|
  !gapprompt@gap>| !gapinput@NrPolyhedralSubgroups( U_Abar, fus[2], fus[3], fus[4] );|
  rec( number := 548352, type := "A5" )
  !gapprompt@gap>| !gapinput@psis82:= Induced( a5, U_Abar, [ TrivialCharacter( a5 ) ], fus )[1];;|
  !gapprompt@gap>| !gapinput@Add( cand, [ Restricted( Restricted( psis82, u1 )^b, 2b )^m ] );|
  !gapprompt@gap>| !gapinput@Add( candbar, psis82 ^ Hbar );|
  !gapprompt@gap>| !gapinput@List( cand, Length );|
  [ 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1 ]
\end{Verbatim}
 

 The following function takes a condition on conjugacy classes in terms of
their element orders, which gives a set ${{\cal C}}$ of elements in $M$. It forms the corresponding set of elements in $H/V$ and tries to express the restriction of $1_{{H/V}}$ as a linear combination of the characters $1_X^{{H/V}}$ that are stored in the list \texttt{candbar}. If this works and if the corresponding linear combination of the candidates
in \texttt{cand} is unique, the newly found values of $1_H^M$ are entered into the list \texttt{torso}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Hbarorders:= OrdersClassRepresentatives( Hbar );;|
  !gapprompt@gap>| !gapinput@TryCondition:= function( cond )|
  !gapprompt@>| !gapinput@  local pos, sol, lincomb, oldknown, i;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  pos:= Filtered( [ 1 .. Length( Hbarorders ) ],|
  !gapprompt@>| !gapinput@            i -> cond( Hbarorders[i] ) );|
  !gapprompt@>| !gapinput@  sol:= SolutionMat( candbar{[1..Length(candbar)]}{ pos },|
  !gapprompt@>| !gapinput@            ListWithIdenticalEntries( Length( pos ), 1 ) );|
  !gapprompt@>| !gapinput@  if sol = fail then|
  !gapprompt@>| !gapinput@    return "no solution";|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  pos:= Filtered( [ 1 .. Length( morders) ], i -> cond( morders[i] ) );|
  !gapprompt@>| !gapinput@  lincomb:= Filtered( Set( Cartesian( cand ), x -> sol * x ),|
  !gapprompt@>| !gapinput@                x -> ForAll( pos, i -> IsPosInt( x[i] ) or x[i] = 0 ) );|
  !gapprompt@>| !gapinput@  if Length( lincomb ) <> 1 then|
  !gapprompt@>| !gapinput@    return "solution is not unique";|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  lincomb:= lincomb[1];;|
  !gapprompt@>| !gapinput@  oldknown:= Number( torso );|
  !gapprompt@>| !gapinput@  for i in pos do|
  !gapprompt@>| !gapinput@    if IsBound( torso[i] ) then|
  !gapprompt@>| !gapinput@      if torso[i] <> lincomb[i] then|
  !gapprompt@>| !gapinput@        Error( "contradiction of new and known value at position ", i );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    elif not IsInt( lincomb[i] ) or lincomb[i] < 0 then|
  !gapprompt@>| !gapinput@      Error( "new value at position ", i, " is not a nonneg. integer" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    torso[i]:= lincomb[i];|
  !gapprompt@>| !gapinput@  od;|
  !gapprompt@>| !gapinput@  return Concatenation( "now ", String( Number( torso ) ), " values (",|
  !gapprompt@>| !gapinput@             String( Number( torso ) - oldknown ), " new)" );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 This procedure makes sense only if the elements of $H$ that satisfy the condition are contained in the full preimage of the classes
of $H/V$ that satisfy the condition. Note that this is in fact the case for the
conditions used below. This is clear for condition concerning only \emph{odd} element orders, because $V$ is a $2$-group. Also the set of all elements of the orders $9$, $18$, and $36$ is such a ``closed'' set, since $M$ has no elements of order $72$. Finally, the set of all elements of the orders $1$, $2$, and $4$ in $H$ is admissible because it is contained in the preimage of the set of all
elements of these orders in $H/V$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@TryCondition( x -> x mod 7 = 0 and x mod 3 <> 0 );|
  "now 99 values (7 new)"
  !gapprompt@gap>| !gapinput@TryCondition( x -> x mod 17 = 0 and x mod 3 <> 0 );|
  "now 102 values (3 new)"
  !gapprompt@gap>| !gapinput@TryCondition( x -> x mod 5 = 0 and x mod 3 <> 0 );|
  "now 119 values (17 new)"
  !gapprompt@gap>| !gapinput@TryCondition( x -> 4 mod x = 0 );|
  "now 125 values (6 new)"
  !gapprompt@gap>| !gapinput@TryCondition( x -> 9 mod x = 0 );|
  "now 129 values (4 new)"
  !gapprompt@gap>| !gapinput@TryCondition( x -> x in [ 9, 18, 36 ] );|
  "now 138 values (9 new)"
\end{Verbatim}
 

 Possible constituents of $1_H^M$ are those rational irreducible characters of $M$ that are constituents of $\pi^M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@constit:= Filtered( RationalizedMat( Irr( m ) ),|
  !gapprompt@>| !gapinput@              x -> ScalarProduct( m, x, pi_A ) <> 0|
  !gapprompt@>| !gapinput@                   and ScalarProduct( m, x, pi_B ) <> 0 );;|
\end{Verbatim}
   

 For the missing values, we can provide at least lower bounds, using that $U \leq H \leq G$ implies $1_H^G(g) \geq 1_U^G(g) / [H:U] = [G:H] \cdot 1_U^G(g) / 1_U^G(1)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@lower:= [];;|
  !gapprompt@gap>| !gapinput@Hindex:= Size( m ) / Horder;|
  512372707698741056749515292734375
  !gapprompt@gap>| !gapinput@for i in [ 1 .. NrConjugacyClasses( m ) ] do|
  !gapprompt@>| !gapinput@  lower[i]:= Maximum( pi_A[i] / ( pi_A[1] / Hindex ),|
  !gapprompt@>| !gapinput@                      pi_B[i] / ( pi_B[1] / Hindex ) );|
  !gapprompt@>| !gapinput@  if not IsInt( lower[i] ) then|
  !gapprompt@>| !gapinput@    lower[i]:= Int( lower[i] + 1 );|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@od;|
\end{Verbatim}
 

 Now we compute the possible permutation characters that have the prescribed
values, are compatible with the given lower bounds for values, and have only
constituents in the given list. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= PermChars( m, rec( torso:= torso, chars:= constit,|
  !gapprompt@>| !gapinput@     lower:= lower, normalsubgroup:= [ 1 .. NrConjugacyClasses( m ) ],|
  !gapprompt@>| !gapinput@     nonfaithful:= TrivialCharacter( m ) ) );|
  [ Character( CharacterTable( "M" ),
    [ 512372707698741056749515292734375, 405589064025344574375, 
        29628786742129575, 658201521662685, 215448838605, 0, 
        121971774375, 28098354375, 335229607, 108472455, 164587500, 
        4921875, 2487507165, 2567565, 26157789, 6593805, 398925, 0, 
        437325, 0, 44983, 234399, 90675, 21391, 41111, 12915, 6561, 
        6561, 177100, 7660, 6875, 315, 275, 0, 113373, 17901, 57213, 0, 
        4957, 1197, 909, 301, 397, 0, 0, 0, 3885, 525, 0, 2835, 90, 45, 
        0, 103, 67, 43, 28, 81, 189, 9, 9, 9, 0, 540, 300, 175, 20, 15, 
        7, 420, 0, 0, 0, 0, 0, 0, 0, 165, 61, 37, 37, 0, 9, 9, 13, 5, 
        0, 0, 0, 0, 0, 0, 77, 45, 13, 0, 0, 45, 115, 19, 10, 0, 5, 5, 
        9, 9, 1, 1, 0, 0, 4, 0, 0, 9, 9, 3, 1, 0, 0, 0, 0, 0, 0, 4, 1, 
        1, 0, 24, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 
        0, 1, 0, 0, 0, 0, 0, 3, 3, 1, 1, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ) ]
\end{Verbatim}
  

 There is only one candidate, so we have found the permutation character. }

 }

  
\section{\textcolor{Chapter }{A permutation character of the Baby Monster (June{\nobreakspace}2012)}}\label{sect:comp_B}
\logpage{[ 8, 17, 0 ]}
\hyperdef{L}{X87D11B097D95D027}{}
{
  We compute the character of the Baby Monster that is induced from the trivial
character of a Sylow $2$-subgroup. (Gabriel Navarro had asked me how \textsf{GAP} can compute this character.) We start with the computation of those transitive
permutation characters of the symmetric group on five points that have degree $15$. Note that the function \texttt{PermChars} (\textbf{Reference: PermChars}) computes in general only candidates, but here we are sure that the result
consists of permutation characters because it is unique. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S5" );|
  CharacterTable( "A5.2" )
  !gapprompt@gap>| !gapinput@pi:= PermChars( t, rec( torso:= [ 15 ] ) );|
  [ Character( CharacterTable( "A5.2" ), [ 15, 3, 0, 0, 3, 1, 0 ] ) ]
\end{Verbatim}
 

 Next, we regard this character as a character of the group $2^5:S_5$ that occurs as a maximal subgroup of index $231$ in $M_{22}:2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m222:= CharacterTable( "M22.2" );|
  CharacterTable( "M22.2" )
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( m222 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@mx:= Filtered( mx, x -> Size( m222 ) / Size( x ) = 231 );|
  [ CharacterTable( "M22.2M4" ) ]
  !gapprompt@gap>| !gapinput@pi:= pi[1]{ GetFusionMap( mx[1], t ) };|
  [ 15, 15, 3, 3, 3, 0, 0, 3, 3, 1, 1, 0, 15, 15, 3, 3, 3, 0, 0, 3, 3, 
    1, 1, 0 ]
\end{Verbatim}
 

 We induce this character to $M_{22}:2$. (Note that this is the character that is induced from the trivial character
of a Sylow $2$-subgroup of $M_{22}:2$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pi:= InducedClassFunction( mx[1], pi, m222 );|
  ClassFunction( CharacterTable( "M22.2" ),
   [ 3465, 105, 0, 9, 5, 0, 0, 0, 0, 1, 0, 189, 45, 9, 13, 0, 1, 0, 0, 
    0, 0 ] )
\end{Verbatim}
 

 Next, we regard this character as a character of the group $2^{10}:M_{22}:2$ that occurs as a maximal subgroup of index $46575$ in $Co_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@co2:= CharacterTable( "Co2" );|
  CharacterTable( "Co2" )
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( co2 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@mx:= Filtered( mx, x -> Size( co2 ) / Size( x ) = 46575 );|
  [ CharacterTable( "2^10:m22:2" ) ]
  !gapprompt@gap>| !gapinput@pi:= pi{ GetFusionMap( mx[1], m222 ) };|
  [ 3465, 3465, 3465, 3465, 105, 105, 105, 105, 105, 105, 105, 105, 0, 
    0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 1, 1, 1, 0, 189, 189, 189, 189, 189, 189, 45, 45, 45, 45, 
    9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 
    0, 0, 0, 0, 0, 0, 0 ]
\end{Verbatim}
 

 We induce this character to $Co_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pi:= InducedClassFunction( mx[1], pi, co2 );|
  ClassFunction( CharacterTable( "Co2" ),
   [ 161382375, 626535, 162855, 27495, 0, 0, 6615, 3975, 2727, 855, 
    567, 975, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 51, 19, 27, 35, 7, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0 ] )
\end{Verbatim}
 

 Next, we regard this character as a character of the group $2^{{1+22}}.Co_2$ that occurs as a maximal subgroup of index $11707448673375$ in the Baby Monster. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );|
  CharacterTable( "B" )
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( b ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@mx:= Filtered( mx, x -> Size( b ) / Size( x ) = 11707448673375 );|
  [ CharacterTable( "2^(1+22).Co2" ) ]
  !gapprompt@gap>| !gapinput@pi:= pi{ GetFusionMap( mx[1], co2 ) };;|
  !gapprompt@gap>| !gapinput@pi[1];|
  161382375
\end{Verbatim}
 

 We induce this character to the Baby Monster. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pi:= InducedClassFunction( mx[1], pi, b );|
  ClassFunction( CharacterTable( "B" ),
   [ 1889375872099856765625, 2609385408855225, 62316674429625, 
    207818526825, 268788490425, 0, 0, 13052741625, 7537207545, 
    128298681, 270580905, 46366425, 74315385, 35633385, 3937689, 
    201825, 1233225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 713097, 
    241425, 320625, 88521, 275265, 57705, 19305, 20089, 9441, 6489, 
    2577, 1825, 5345, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    273, 417, 105, 97, 185, 33, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] )
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{A permutation character of $2.B$ (October{\nobreakspace}2017)}}\label{sect:comp_2B}
\logpage{[ 8, 18, 0 ]}
\hyperdef{L}{X86827FA97D27F3A2}{}
{
  We compute the character of the double cover $2.B$ of the Baby Monster that is induced from the trivial character of a subgroup $U$ of the structure $2^{1+22}.McL$. 

 This subgroup occurs as the intersection of two conjugates of $2.B$ inside the Monster group $M$. More precisely, we consider $2.B$ as the centralizer of an involution $a$ in $M$, and we are interested in the permutation action of $M$ on the cosets of $2.B$ (or, equivalently, on the conjugacy class in $M$ of this involution). The restriction of this action to $2.B$ has nine orbits. One of them has point stabilizer $U$. 

 Background information can be found in \cite{GMS89}. The decomposition into the nine orbits appears in Definition (3.4.9) on
p{\nobreakspace}587, and our orbit is characterized in Table{\nobreakspace}VII
(on p.{\nobreakspace}582) by the facts that its points $c$ have order $4$ and the squares of $a c$ lie in the class \texttt{2B} of $M$. This implies that $a$ and $c$ do not commute, hence $a$ does not lie in $U$. 

 From this description, we know that $U$ is a subgroup of a maximal subgroup of the type $2^{2+22}.Co_2$ in $2.B$, and the group $\langle U, a \rangle$ has the type $2^{2+22}.McL$. 

 Thus we can proceed in two steps. First we induce the trivial character of $\langle U, a \rangle$ to $2.B$. Then we use the variant of the \textsf{GAP} function \texttt{PermChars} (\textbf{Reference: PermChars}) that allows us to prescribe the permutation character of the closure with a
normal subgroup, which is $\langle a \rangle$ in our case. 

 The first step can be performed by inducing the trivial character of $McL$ to $Co_2$, $\ldots$ 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@mcl:= CharacterTable( "McL" );|
  CharacterTable( "McL" )
  !gapprompt@gap>| !gapinput@co2:= CharacterTable( "Co2" );|
  CharacterTable( "Co2" )
  !gapprompt@gap>| !gapinput@ind:= Induced( mcl, co2, [ TrivialCharacter( mcl ) ] )[1];|
  Character( CharacterTable( "Co2" ),
   [ 47104, 0, 1024, 0, 16, 160, 0, 0, 0, 0, 64, 0, 0, 4, 24, 16, 0, 0, 
    0, 16, 0, 8, 0, 0, 0, 0, 0, 8, 4, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 4, 
    0, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ] )
\end{Verbatim}
 

 $\ldots$ regarding this character as a character of $2^{1+22}.Co_2$, $\ldots$ 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "BM2" );|
  CharacterTable( "2^(1+22).Co2" )
  !gapprompt@gap>| !gapinput@infl:= ind{ GetFusionMap( m, co2 ) };|
  [ 47104, 47104, 47104, 47104, 47104, 47104, 47104, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 
    1024, 1024, 1024, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 16, 16, 16, 16, 160, 160, 160, 160, 160, 160, 160, 160, 
    160, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 4, 4, 4, 24, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16, 
    16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
    16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 
    8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 
    4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 
    2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 
    4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 
    2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    1, 1, 1, 1 ]
\end{Verbatim}
 

 $\ldots$ inducing this character to $B$, $\ldots$ 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );|
  CharacterTable( "B" )
  !gapprompt@gap>| !gapinput@ind:= Induced( m, b, [ infl ] )[1];|
  ClassFunction( CharacterTable( "B" ),
   [ 551467662310656000, 186911262720, 272993634304, 0, 634521600, 
    194594400, 69984, 8495104, 17465344, 129024, 276480, 2073600, 
    16384, 798720, 46080, 0, 5120, 138600, 1000, 110880, 252000, 
    112480, 432, 12960, 0, 1312, 8352, 864, 432, 0, 2520, 0, 2880, 
    2880, 3072, 2880, 0, 0, 256, 64, 1152, 576, 640, 192, 96, 0, 108, 
    2520, 744, 0, 104, 120, 40, 30, 160, 16, 1120, 1024, 0, 0, 96, 288, 
    64, 144, 0, 96, 0, 108, 16, 48, 0, 32, 12, 0, 0, 0, 168, 0, 104, 
    48, 0, 4, 0, 0, 0, 0, 32, 16, 8, 8, 0, 24, 12, 4, 0, 0, 0, 0, 24, 
    4, 24, 24, 0, 0, 0, 0, 4, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 8, 0, 16, 8, 4, 0, 0, 0, 0, 0, 4, 2, 
    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] )
\end{Verbatim}
 

 $\ldots$ and regarding the result as a character of $2.B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2b:= CharacterTable( "2.B" );|
  CharacterTable( "2.B" )
  !gapprompt@gap>| !gapinput@infl:= ind{ GetFusionMap( 2b, b ) };|
  [ 551467662310656000, 551467662310656000, 186911262720, 272993634304, 
    272993634304, 0, 634521600, 194594400, 194594400, 69984, 69984, 
    8495104, 17465344, 129024, 276480, 2073600, 2073600, 16384, 798720, 
    46080, 0, 5120, 138600, 138600, 1000, 1000, 110880, 252000, 112480, 
    112480, 432, 12960, 0, 1312, 1312, 8352, 864, 864, 432, 0, 2520, 
    2520, 0, 2880, 2880, 3072, 2880, 0, 0, 256, 64, 1152, 576, 576, 
    640, 192, 96, 0, 0, 108, 108, 2520, 744, 744, 0, 104, 104, 120, 40, 
    40, 30, 30, 160, 16, 1120, 1024, 0, 0, 0, 96, 288, 64, 144, 144, 0, 
    96, 0, 108, 108, 16, 48, 0, 32, 12, 12, 0, 0, 0, 0, 168, 0, 104, 
    104, 48, 0, 0, 4, 4, 0, 0, 0, 0, 32, 16, 8, 8, 8, 0, 0, 24, 12, 4, 
    4, 0, 0, 0, 0, 0, 0, 24, 4, 24, 24, 0, 0, 0, 0, 0, 4, 0, 0, 0, 6, 
    6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 
    0, 0, 0, 0, 0, 0, 8, 0, 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 4, 4, 2, 2, 
    2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
\end{Verbatim}
 

 Now we have the character $\psi$ that represents the ``nonfaithful half'' of the desired permutation character. We have to ``fill it up'' with faithful characters of $2.B$ of total degree $\psi(1)$ such that the sum with $\psi$ can be a permutation character of $2.B$. 

 The \textsf{GAP} function \texttt{PermChars} (\textbf{Reference: PermChars}) is designed for this situation. We specify the normal subgroup $N = \langle a \rangle$ by listing the positions of its conjugacy classes in the character table of $2.B$, we enter the known permutation character $1_{{UN}}^{{2.B}}$, and of course we specify the degree of the possible permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@centre:= ClassPositionsOfCentre( 2b );|
  [ 1, 2 ]
  !gapprompt@gap>| !gapinput@pi:= PermChars( 2b, rec( torso:= [ 2 * infl[1], 0 ],|
  !gapprompt@>| !gapinput@                            normalsubgroup:= centre,|
  !gapprompt@>| !gapinput@                            nonfaithful:= infl ) );|
  [ Character( CharacterTable( "2.B" ),
    [ 1102935324621312000, 0, 186911262720, 541790208000, 4197060608, 
        0, 634521600, 389188800, 0, 139968, 0, 8495104, 17465344, 
        129024, 276480, 4026240, 120960, 16384, 798720, 46080, 0, 5120, 
        277200, 0, 2000, 0, 110880, 252000, 190080, 34880, 432, 12960, 
        0, 2592, 32, 8352, 1728, 0, 432, 0, 5040, 0, 0, 2880, 2880, 
        3072, 2880, 0, 0, 256, 64, 1152, 1008, 144, 640, 192, 96, 0, 0, 
        216, 0, 2520, 960, 528, 0, 200, 8, 120, 80, 0, 60, 0, 160, 16, 
        1120, 1024, 0, 0, 0, 96, 288, 64, 216, 72, 0, 96, 0, 216, 0, 
        16, 48, 0, 32, 24, 0, 0, 0, 0, 0, 168, 0, 160, 48, 48, 0, 0, 8, 
        0, 0, 0, 0, 0, 32, 16, 8, 12, 4, 0, 0, 24, 12, 0, 8, 0, 0, 0, 
        0, 0, 0, 24, 4, 24, 24, 0, 0, 0, 0, 0, 4, 0, 0, 0, 6, 6, 8, 4, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 
        0, 0, 0, 0, 8, 0, 16, 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 0, 2, 2, 2, 
        2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@MatScalarProducts( 2b, Irr( 2b ), pi );|
  [ [ 1, 1, 2, 1, 2, 0, 2, 3, 2, 0, 0, 1, 4, 1, 2, 0, 3, 2, 0, 2, 0, 0, 
        2, 2, 0, 0, 2, 3, 1, 5, 0, 4, 3, 2, 0, 0, 3, 2, 0, 6, 4, 0, 1, 
        1, 0, 0, 0, 0, 3, 0, 1, 0, 0, 5, 0, 5, 2, 0, 0, 2, 0, 0, 4, 1, 
        0, 2, 0, 4, 2, 4, 4, 3, 0, 2, 4, 2, 4, 0, 3, 0, 3, 2, 5, 0, 1, 
        0, 3, 1, 0, 1, 1, 2, 5, 3, 1, 1, 4, 5, 1, 1, 0, 3, 0, 0, 3, 2, 
        1, 1, 2, 1, 1, 4, 0, 3, 2, 3, 1, 3, 0, 1, 3, 0, 2, 2, 1, 3, 3, 
        0, 0, 2, 0, 0, 0, 0, 3, 0, 3, 3, 3, 1, 0, 3, 0, 4, 0, 1, 0, 0, 
        2, 0, 0, 2, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 2, 1, 1, 1, 0, 1, 1, 
        1, 1, 1, 1, 0, 2, 1, 1, 3, 3, 0, 0, 0, 1, 1, 1, 1, 2, 3, 2, 0, 
        0, 2, 2, 4, 3, 5, 2, 4, 0, 0, 0, 0, 5, 2, 0, 0, 0, 1, 1, 0, 0, 
        0, 0, 0, 0, 7, 0, 0, 1, 7, 7, 0, 0, 0, 1, 6, 4, 5, 0, 0, 3, 0, 
        0, 0, 0, 0, 4, 1, 1, 3, 8, 3, 2, 2, 5, 0, 1 ] ]
\end{Verbatim}
 

 We are lucky: There is a unique solution, and its computation is quite fast. }

  
\section{\textcolor{Chapter }{Generation of sporadic simple groups by $\pi$- and $\pi'$-subgroups (December{\nobreakspace}2021)}}\label{sect:comp_pi_piprime}
\logpage{[ 8, 19, 0 ]}
\hyperdef{L}{X849F0EA6807C9B19}{}
{
  This section shows the computations that are needed in order to show the
following statements from \cite{BG21}. 

 \emph{Proposition{\nobreakspace}2.2}: Let $S$ be a sporadic simple group and let $P$ be a Sylow $2$-subgroup of $S$. If $1 \neq x \in S$, then $S = \langle P, x^g \rangle$ for some $g \in S$. 

 \emph{Theorem{\nobreakspace}7.1}: Let $S$ be a sporadic simple group and let $p \leq q$ be primes each dividing $|S|$. Then $S$ can be generated by a Sylow $p$-subgroup and a Sylow $q$-subgroup. 

 A stronger version of Theorem{\nobreakspace}7.1: Let $S$ be a sporadic simple group $p$ be a prime dividing $|S|$, and $P$ be a Sylow $p$-subgroup of $G$. If $1 \neq x \in S$, then $S = \langle P, x^g \rangle$ for some $g \in S$. 

 First we show \cite[Proposition 2.2]{BG21}. Let $S$ be a sporadic simple group, fix a Sylow $2$-subgroup $P$ of $S$, and let $x$ be a nonidentity element in $S$. We use known information about maximal subgroups of $S$ to show that $x^S$ is not a subset of the union of those maximal subgroups in $S$ that contain $P$. 

 Let $M$ be a maximal subgroup of $S$ with the property $P \leq M$. The number of $S$-conjugates of $M$ that contain $P$ is equal to $|N_S(P)|/|N_M(P)| \leq [N_S(P):P]$, thus these subgroups can contain at most $[N_S(P):P] |x^S \cap M|$ elements from the class $x^S$. 

 Thus the number of elements in $x^S$ that generate a proper subgroup of $S$ together with $P$ is bounded from above by $[N_S(P):P] \sum_M |x^S \cap M|$, where the sum is taken over representatives $M$ of conjugacy classes of maximal subgroups of odd index in $S$. 

 Let $1_M^S$ denote the permutation character of the action of $S$ on the cosets of $M$. We have $|x^S \cap M| = |x^S| 1_M^S(x) / 1_M^S(1)$. Hence we are done when we show that 
\[ [N_S(P):P] \sum_M 1_M^S(x) / 1_M^S(1) < 1 \]
 holds. 

 The numbers $[N_S(P):P]$ can be read off from \cite[Table I]{Wil98}. Here we use the fact that the character tables of the Sylow $2$-normalizer of $S$ is available except if $S$ is one of $Co_1$, $J_4$, $F_{3+}$, $B$, or $M$, and that the Sylow $2$-subgroup if self-normalizing in these cases. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@           IsDuplicateTable, false : OrderedBy:= Size );|
  [ "M11", "M12", "J1", "M22", "J2", "M23", "HS", "J3", "M24", "McL", 
    "He", "Ru", "Suz", "ON", "Co3", "Co2", "Fi22", "HN", "Ly", "Th", 
    "Fi23", "Co1", "J4", "F3+", "B", "M" ]
  !gapprompt@gap>| !gapinput@normindices:= rec( Co1:= 1, J4:= 1, F3\+:= 1, B:= 1, M:= 1 );;|
  !gapprompt@gap>| !gapinput@for name in names do|
  !gapprompt@>| !gapinput@     n:= CharacterTable( Concatenation( name, "N2" ) );|
  !gapprompt@>| !gapinput@     if n = fail then|
  !gapprompt@>| !gapinput@       Print( name, "\n" );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       2part:= 2^Length( Positions( Factors( Size( n ) ), 2 ) );|
  !gapprompt@>| !gapinput@       normindices.( name ):= Size( n ) / 2part;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  Co1
  J4
  F3+
  B
  M
\end{Verbatim}
 

 For all sporadic simple groups $S$ except the Monster group, the primitive permutation characters $1_M^S$ can be computed from the data about maximal subgroups contained in \textsf{GAP}'s library of character tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxbound:= [];;|
  !gapprompt@gap>| !gapinput@for name in Filtered( names, x -> x <> "M" ) do|
  !gapprompt@>| !gapinput@     t:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     mx:= List( Maxes( t ), CharacterTable );|
  !gapprompt@>| !gapinput@     odd:= Filtered( mx, s -> ( Size( t ) / Size( s ) ) mod 2 <> 0 );|
  !gapprompt@>| !gapinput@     primperm:= List( odd, s -> TrivialCharacter( s )^t );|
  !gapprompt@>| !gapinput@     sum:= normindices.( name ) * Sum( primperm, pi -> pi / pi[1] );|
  !gapprompt@>| !gapinput@     Add( maxbound,|
  !gapprompt@>| !gapinput@          [ name, Maximum( sum{ [ 2 .. Length( sum ) ] } ) ] );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@SortBy( maxbound, x -> - x[2] );|
  !gapprompt@gap>| !gapinput@maxbound[1];|
  [ "J2", 3/5 ]
\end{Verbatim}
 

 We see that the left hand side of the above inequality is always less than or
equal to $3/5$, in particular it is less than $1$. 

 The Monster group is known to contain exactly five classes of maximal
subgroups of odd index, of the structures $2^{1+24}.Co_1$ (the normalizer of a \texttt{2B} element in the Monster), $2^{10+16}.O_{10}^+(2)$, $2^{2+11+22}.(M_{24} \times S_3)$, $2^{5+10+20}.(S_3 \times L_5(2))$, $[2^{39}].(L_3(2) \times 3S_6)$. The corresponding permutation characters are known, see Section \ref{sect:monsterperm}. First we read the information about the known primitive permutation
characters of the Monster into the \textsf{GAP} session, and extract the primitive permutation characters of odd degree. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@dir:= DirectoriesPackageLibrary( "ctbllib", "data" );;|
  !gapprompt@gap>| !gapinput@filename:= Filename( dir, "prim_perm_M.json" );;|
  !gapprompt@gap>| !gapinput@Monster_prim_data:= EvalString( StringFile( filename ) )[2];;|
  !gapprompt@gap>| !gapinput@Length( Monster_prim_data );|
  44
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@monstermaxindices:= [];;|
  !gapprompt@gap>| !gapinput@monstermaxtables:= [];;|
  !gapprompt@gap>| !gapinput@for entry in Monster_prim_data do|
  !gapprompt@>| !gapinput@     if Length( entry ) = 1 then|
  !gapprompt@>| !gapinput@       s:= CharacterTable( entry[1] );|
  !gapprompt@>| !gapinput@       Add( monstermaxtables, s );|
  !gapprompt@>| !gapinput@       Add( monstermaxindices, Size( t ) / Size( s ) );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Add( monstermaxtables, fail );|
  !gapprompt@>| !gapinput@       Add( monstermaxindices, entry[2][1] );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@odd_prim:= [];;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( Monster_prim_data ) ] do|
  !gapprompt@>| !gapinput@     if monstermaxindices[i] mod 2 <> 0 then|
  !gapprompt@>| !gapinput@       if monstermaxtables[i] <> fail then|
  !gapprompt@>| !gapinput@         Add( odd_prim, TrivialCharacter( monstermaxtables[i] )^t );|
  !gapprompt@>| !gapinput@       else|
  !gapprompt@>| !gapinput@         Add( odd_prim, Monster_prim_data[i][2] );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( odd_prim );|
  5
\end{Verbatim}
 

 Now we can use the same approach as before. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sum:= normindices.M * Sum( odd_prim, pi -> pi / pi[1] );;|
  !gapprompt@gap>| !gapinput@max:= Maximum( sum{ [ 2 .. Length( sum ) ] } );|
  12784979/103007903752128375
  !gapprompt@gap>| !gapinput@max < 10^-9;|
  true
\end{Verbatim}
 

 Next we show \cite[Theorem 7.1]{BG21} and its stronger version stated above. Let us first assume that $S$ is not the Monster. 

 As a first step, we generalize the approach from the above computations in
order to check for which prime divisors $p$ of $|S|$ and for which nontrivial conjugacy classes $x^S$ of $S$ the group $S$ is generated by a Sylow $p$-subgroup $P$ together with a conjugate of $x$. 

 The upper bound $[N_S(P):P]$ for $|N_S(P)|/|N_M(P)|$, for a maximal subgroup $M$ of $S$ that contains $P$, is not good enough in some of the cases considered here. Instead of it, we
compute the upper bound $u(S, M, p)$ which is defined as follows; we assume that we know $|N_S(P)|$. 

 
\begin{itemize}
\item  If $P$ is cyclic then we can compute $|N_M(P)|$ from the character table of $M$, and set $u(S, M, p) = |N_S(P)| / |N_M(P)|$. 
\item  Otherwise, if $P$ is normal in $M$, we set $u(S, M, p) = |N_S(P)| / |M|$. 
\item  Otherwise, if we know a subgroup $U$ of $M$ such that $P$ is a proper normal subgroup of $U$, we set $u(S, M, p) = |N_S(P)| / |U|$. 
\item  Otherwise, we set $u(S, M, p) = |N_S(P)| / |P|$. 
\end{itemize}
 

 
\begin{Verbatim}[commandchars=!@A,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>A !gapinput@upper_bound:= function( tblS, tblM, p )A
  !gapprompt@>A !gapinput@   local ppart, ppartposS, ppartposM, n, N_S, f, subname, u;A
  !gapprompt@>A !gapinput@A
  !gapprompt@>A !gapinput@   ppart:= Product( Filtered( Factors( Size( tblS ) ), x -> x = p ), 1 );A
  !gapprompt@>A !gapinput@   ppartposS:= Positions( OrdersClassRepresentatives( tblS ), ppart );A
  !gapprompt@>A !gapinput@   if 0 < Length( ppartposS ) thenA
  !gapprompt@>A !gapinput@     # P is cyclic.A
  !gapprompt@>A !gapinput@     if tblM = fail thenA
  !gapprompt@>A !gapinput@       return ( SizesCentralizers( tblS )[ ppartposS[1] ] * Phi( ppart )A
  !gapprompt@>A !gapinput@                / Length( ppartposS ) ) / ppart;A
  !gapprompt@>A !gapinput@     elseA
  !gapprompt@>A !gapinput@       ppartposM:= Positions( OrdersClassRepresentatives( tblM ), ppart );A
  !gapprompt@>A !gapinput@       return ( SizesCentralizers( tblS )[ ppartposS[1] ] * Phi( ppart )A
  !gapprompt@>A !gapinput@                / Length( ppartposS ) ) /A
  !gapprompt@>A !gapinput@              ( SizesCentralizers( tblM )[ ppartposM[1] ] * Phi( ppart )A
  !gapprompt@>A !gapinput@                / Length( ppartposM ) );A
  !gapprompt@>A !gapinput@     fi;A
  !gapprompt@>A !gapinput@   fi;A
  !gapprompt@>A !gapinput@ A
  !gapprompt@>A !gapinput@   # Compute |N_S(P)|.A
  !gapprompt@>A !gapinput@   n:= CharacterTable( Concatenation( Identifier( tblS ), "N",A
  !gapprompt@>A !gapinput@                           String( p ) ) );A
  !gapprompt@>A !gapinput@   if n <> fail thenA
  !gapprompt@>A !gapinput@     N_S:= Size( n );A
  !gapprompt@>A !gapinput@   elif p = 2 thenA
  !gapprompt@>A !gapinput@     N_S:= ppart * normindices.( Identifier( tblS ) );A
  !gapprompt@>A !gapinput@   elif Identifier( tblS ) = "M" and p = 3 thenA
  !gapprompt@>A !gapinput@     # The Sylow 3-normalizer is contained in 3^(3+2+6+6):(L3(3)xSD16)A
  !gapprompt@>A !gapinput@     N_S:= ppart * 2^6;A
  !gapprompt@>A !gapinput@   elif Identifier( tblS ) = "F3+" and p = 3 thenA
  !gapprompt@>A !gapinput@     N_S:= ppart * 8;A
  !gapprompt@>A !gapinput@   elseA
  !gapprompt@>A !gapinput@     Error( "cannot compute |N_S(P)|" );A
  !gapprompt@>A !gapinput@   fi;A
  !gapprompt@>A !gapinput@ A
  !gapprompt@>A !gapinput@   if tblM = fail thenA
  !gapprompt@>A !gapinput@     return N_S / ppart;A
  !gapprompt@>A !gapinput@   elif Sum( SizesConjugacyClasses( tblM ){A
  !gapprompt@>A !gapinput@                 ClassPositionsOfPCore( tblM, p ) } ) = ppart thenA
  !gapprompt@>A !gapinput@     # P is normal in M.A
  !gapprompt@>A !gapinput@     return N_S / Size( tblM );A
  !gapprompt@>A !gapinput@   fi;A
  !gapprompt@>A !gapinput@A
  !gapprompt@>A !gapinput@   # Inspect known character tables of subgroups of M.A
  !gapprompt@>A !gapinput@   f:= N_S / ppart;A
  !gapprompt@>A !gapinput@   for subname in NamesOfFusionSources( tblM ) doA
  !gapprompt@>A !gapinput@     u:= CharacterTable( subname );A
  !gapprompt@>A !gapinput@     if ClassPositionsOfKernel( GetFusionMap( u, tblM ) ) = [ 1 ] andA
  !gapprompt@>A !gapinput@        Sum( SizesConjugacyClasses( u ){A
  !gapprompt@>A !gapinput@                 ClassPositionsOfPCore( u, p ) } ) = ppart thenA
  !gapprompt@>A !gapinput@       f:= Minimum( f, N_S / Size( u ) );A
  !gapprompt@>A !gapinput@     fi;A
  !gapprompt@>A !gapinput@   od;A
  !gapprompt@>A !gapinput@A
  !gapprompt@>A !gapinput@   return f;A
  !gapprompt@>A !gapinput@ end;;A
\end{Verbatim}
 

 We run over the sporadic simple groups (except the Monster), and collect in
the list \texttt{badcases{\textunderscore}strong} those ``bad'' prime divisors $p$ of $|S|$ and conjugacy class representatives $x$ of nonidentity elements in $S$ for which 
\[ \sum_M u(S, M, p) 1_M^S(x) / 1_M^S(1) \geq 1 \]
 holds, where the sum is taken over representatives $M$ of conjugacy classes of maximal subgroups of $S$ whose index in $S$ is coprime to $p$. In these cases, we have to find other arguments. 

 For the proof of \cite[Theorem 7.1]{BG21}, we can discard all those entries from the list of ``bad'' $p$ and $x$ where $x$ is not a $q$-element, for some prime $q$, or where another nonidentity $q$-element exists that does not occur in the list. This is done by collecting a
second list \texttt{badcases{\textunderscore}thm} of the remaining ``bad'' cases. 

 For the proof of the stronger version, we will later explicitly compute group
elements from the classes in question that generate $S$ together with a Sylow $p$-subgroup. (The only technical complication is that the class fusion of
maximal subgroups of the type $(2^2 \times F_4(2)):2$ of the Baby Monster is currently not known, thus we cannot simply induce the
trivial character in this case. However, the permutation character is uniquely
determined by the two character tables.)  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@badcases_thm:= [];;|
  !gapprompt@gap>| !gapinput@badcases_strong:= [];;|
  !gapprompt@gap>| !gapinput@for name in Filtered( names, x -> x <> "M" ) do|
  !gapprompt@>| !gapinput@     t:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     orders:= OrdersClassRepresentatives( t );|
  !gapprompt@>| !gapinput@     n:= NrConjugacyClasses( t );|
  !gapprompt@>| !gapinput@     mx:= List( Maxes( t ), CharacterTable );|
  !gapprompt@>| !gapinput@     for p in PrimeDivisors( Size( t ) ) do|
  !gapprompt@>| !gapinput@       good:= Filtered( mx, s -> ( Size( t ) / Size( s ) ) mod p <> 0 );|
  !gapprompt@>| !gapinput@       primperm:= [];|
  !gapprompt@>| !gapinput@       for s in good do|
  !gapprompt@>| !gapinput@         if GetFusionMap( s, t ) <> fail then|
  !gapprompt@>| !gapinput@           Add( primperm, TrivialCharacter( s )^t );|
  !gapprompt@>| !gapinput@         else|
  !gapprompt@>| !gapinput@           ind:= Set( PossibleClassFusions( s, t ),|
  !gapprompt@>| !gapinput@                      map -> InducedClassFunctionsByFusionMap( s, t,|
  !gapprompt@>| !gapinput@                                 [ TrivialCharacter( s ) ], map )[1] );|
  !gapprompt@>| !gapinput@           if Length( ind ) <> 1 then|
  !gapprompt@>| !gapinput@             Error( "permutation character not uniquely determined" );|
  !gapprompt@>| !gapinput@           fi;|
  !gapprompt@>| !gapinput@           Add( primperm, ind[1] );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@       sum:= Sum( [ 1 .. Length( good ) ],|
  !gapprompt@>| !gapinput@                  i -> upper_bound( t, good[i], p )|
  !gapprompt@>| !gapinput@                       * primperm[i] / primperm[i][1] );|
  !gapprompt@>| !gapinput@       badpos:= Filtered( [ 2 .. Length( sum ) ], i -> sum[i] >= 1 );|
  !gapprompt@>| !gapinput@       if badpos <> [] then|
  !gapprompt@>| !gapinput@         Add( badcases_strong, [ name, p, ShallowCopy( badpos ) ] );|
  !gapprompt@>| !gapinput@         for i in ShallowCopy( badpos ) do|
  !gapprompt@>| !gapinput@           q:= SmallestRootInt( orders[i] );|
  !gapprompt@>| !gapinput@           if IsPrimeInt( q ) then|
  !gapprompt@>| !gapinput@             if ForAny( [ 2 .. n ],|
  !gapprompt@>| !gapinput@                        j -> SmallestRootInt( orders[j] ) = q|
  !gapprompt@>| !gapinput@                             and not j in badpos ) then|
  !gapprompt@>| !gapinput@               RemoveSet( badpos, i );|
  !gapprompt@>| !gapinput@             fi;|
  !gapprompt@>| !gapinput@           fi;|
  !gapprompt@>| !gapinput@         od;|
  !gapprompt@>| !gapinput@         if not IsEmpty( badpos ) then|
  !gapprompt@>| !gapinput@           Add( badcases_thm, [ name, p, badpos ] );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@badcases_thm;|
  [ [ "M23", 3, [ 3 ] ], [ "HS", 3, [ 4, 11 ] ] ]
  !gapprompt@gap>| !gapinput@badcases_strong;|
  [ [ "M11", 5, [ 2 ] ], [ "M12", 5, [ 3, 4 ] ], [ "M22", 3, [ 2 ] ], 
    [ "M22", 5, [ 2 ] ], [ "J2", 3, [ 2 ] ], [ "M23", 3, [ 2, 3 ] ], 
    [ "M23", 5, [ 2 ] ], [ "M23", 7, [ 2 ] ], 
    [ "HS", 3, [ 2, 3, 4, 5, 6, 7, 9, 11 ] ], [ "HS", 5, [ 2, 3, 5 ] ], 
    [ "M24", 5, [ 2, 4 ] ], [ "M24", 7, [ 2, 4 ] ], [ "He", 5, [ 2 ] ], 
    [ "Co2", 3, [ 2, 3 ] ], [ "Fi22", 5, [ 2 ] ], [ "Fi22", 7, [ 2 ] ], 
    [ "Fi23", 5, [ 2, 3, 5 ] ], [ "Fi23", 7, [ 2 ] ], [ "B", 7, [ 2 ] ]
   ]
\end{Verbatim}
 

 Most of these open cases can be ruled out by constructing the group $S$ and a Sylow $p$-subgroup $P$ in question and then finding explicit elements $x$ such that $S$ is generated by $P$ and $x$. For that, we use the data from the \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3}. 

 The following function tries to find random elements from all conjugacy
classes of nonidentity elements that have the desired property. It returns \texttt{fail} if no straight line program is available for computing class representatives,
and returns $P$ and the list of class representatives that generate together with $P$ if such elements were found. Thus the function will not return if the
generation property does not hold. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prove_generation:= function( name, p )|
  !gapprompt@>| !gapinput@   local S, prg, P, reps, good, x, g, U;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   prg:= AtlasProgram( name, "classes" );|
  !gapprompt@>| !gapinput@   if prg = fail then|
  !gapprompt@>| !gapinput@     return fail;|
  !gapprompt@>| !gapinput@   fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   S:= AtlasGroup( name );|
  !gapprompt@>| !gapinput@   P:= SylowSubgroup( S, p );|
  !gapprompt@>| !gapinput@   reps:= ResultOfStraightLineProgram( prg.program, GeneratorsOfGroup( S ) );|
  !gapprompt@>| !gapinput@   good:= [];|
  !gapprompt@>| !gapinput@   for x in Filtered( reps, x -> Order( x ) <> 1 ) do|
  !gapprompt@>| !gapinput@     repeat|
  !gapprompt@>| !gapinput@       g:= Random( S );|
  !gapprompt@>| !gapinput@       U:= ClosureGroup( P, x^g );|
  !gapprompt@>| !gapinput@     until Size( U ) = Size( S );|
  !gapprompt@>| !gapinput@     Add( good, x^g );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@   return [ P, good ];|
  !gapprompt@>| !gapinput@ end;;|
  !gapprompt@gap>| !gapinput@for entry in badcases_strong do|
  !gapprompt@>| !gapinput@     res:= prove_generation( entry[1], entry[2] );|
  !gapprompt@>| !gapinput@     if res = fail then|
  !gapprompt@>| !gapinput@       Print( "no classes script for ", entry, "\n" );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  no classes script for [ "He", 5, [ 2 ] ]
  no classes script for [ "Fi22", 5, [ 2 ] ]
  no classes script for [ "Fi22", 7, [ 2 ] ]
  no classes script for [ "Fi23", 5, [ 2, 3, 5 ] ]
  no classes script for [ "Fi23", 7, [ 2 ] ]
  no classes script for [ "B", 7, [ 2 ] ]
\end{Verbatim}
 In the remaining six cases, we show only the generation property for the class
representatives in the list. These are involutions from the class \texttt{2A}, and for the group $Fi_{23}$ and $p = 5$ additionally elements from the classes \texttt{2B} and \texttt{3A}. 

 A \texttt{2A} element in the group $He$ can be found as the fifth power of any element of order $10$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@S:= AtlasGroup( "He" );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     x:= Random( S );|
  !gapprompt@>| !gapinput@   until Order( x ) = 10;|
  !gapprompt@gap>| !gapinput@x:= x^5;;|
  !gapprompt@gap>| !gapinput@P5:= SylowSubgroup( S, 5 );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P5, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
\end{Verbatim}
 

 A \texttt{2A} element in the group $Fi_{22}$ can be found as the $15$-th power of any element of order $30$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@S:= AtlasGroup( "Fi22" );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     x:= Random( S );|
  !gapprompt@>| !gapinput@   until Order( x ) = 30;|
  !gapprompt@gap>| !gapinput@x:= x^15;;|
  !gapprompt@gap>| !gapinput@P5:= SylowSubgroup( S, 5 );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P5, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
  !gapprompt@gap>| !gapinput@P7:= SylowSubgroup( S, 7 );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P7, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
\end{Verbatim}
 

 A \texttt{2A} element in the group $Fi_{23}$ can be found as the $21$-st power of any element of order $42$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@S:= AtlasGroup( "Fi23" );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     x:= Random( S );|
  !gapprompt@>| !gapinput@   until Order( x ) = 42;|
  !gapprompt@gap>| !gapinput@x:= x^21;;|
  !gapprompt@gap>| !gapinput@P5:= SylowSubgroup( S, 5 );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P5, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
  !gapprompt@gap>| !gapinput@P7:= SylowSubgroup( S, 7 );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P7, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
\end{Verbatim}
 

 A \texttt{2B} element in the group $Fi_{23}$ can be found as the $30$-th power of any element of order $60$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     x:= Random( S );|
  !gapprompt@>| !gapinput@   until Order( x ) = 60;|
  !gapprompt@gap>| !gapinput@x:= x^30;;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P5, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
\end{Verbatim}
 

 A \texttt{3A} element in the group $Fi_{23}$ can be found as the $20$-th power of any element of order $60$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     x:= Random( S );|
  !gapprompt@>| !gapinput@   until Order( x ) = 60;|
  !gapprompt@gap>| !gapinput@x:= x^20;;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     g:= Random( S );|
  !gapprompt@>| !gapinput@     U:= ClosureGroup( P5, x^g );|
  !gapprompt@>| !gapinput@   until Size( U ) = Size( S );|
\end{Verbatim}
 

 In the open case for the Baby Monster, we have to show that the group is
generated by a \texttt{2A} element and an element of order $7$. This can be done character-theoretically, for example as follows. There are
such elements $x$ and $y$ whose product $x y$ has order $47$, and the only proper subgroups of the Baby Monster that contain elements of
order $47$ are contained in maximal subgroups of the type $47:23$. Thus $x$ and $y$ generate the Baby Monster. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@7pos:= Positions( OrdersClassRepresentatives( t ), 7 );|
  [ 31 ]
  !gapprompt@gap>| !gapinput@47pos:= Positions( OrdersClassRepresentatives( t ), 47 );|
  [ 172, 173 ]
  !gapprompt@gap>| !gapinput@ClassMultiplicationCoefficient( t, 2, 7pos[1], 47pos[1] );|
  7332
  !gapprompt@gap>| !gapinput@Filtered( Maxes( t ),|
  !gapprompt@>| !gapinput@       x -> Size( CharacterTable( x ) ) mod 47 = 0 );|
  [ "47:23" ]
\end{Verbatim}
 

 Now consider the case that $S$ is the Monster, which is special because the complete list of classes of
maximal subgroups of $S$ is currently not known. From \cite{NW12} and \cite{Mmaxes} we know $44$ classes of maximal subgroups, and that each possible additional maximal
subgroup is almost simple and has socle $L_2(13)$, $U_3(4)$, $U_3(8)$, or $Sz(8)$. This implies that we know all those maximal subgroups that contain a Sylow-$p$-subgroup of $S$ except in the case $p = 19$, where maximal subgroups with socle $U_3(8)$ may arise. 

 Thus let us first consider that at least one of $p$, $r$ is different from $19$. In this situation, we use the same approach as for the other sporadic simple
groups. The only complication is that not all permutation characters $1_M^S$, for the relevant maximal subgroups $M$ of $S$, are known; however, if this happens then the character table of $M$ is known, and we can compute the possible permutation characters, and take the
common upper bounds for these characters. In each case, we get that the
claimed property holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@orders:= OrdersClassRepresentatives( t );;|
  !gapprompt@gap>| !gapinput@for p in Difference( PrimeDivisors( Size( t ) ), [ 19 ] ) do|
  !gapprompt@>| !gapinput@  goodpos:= Filtered( [ 1 .. Length( Monster_prim_data ) ],|
  !gapprompt@>| !gapinput@                      i -> monstermaxindices[i] mod p <> 0 );|
  !gapprompt@>| !gapinput@  sum:= ListWithIdenticalEntries( NrConjugacyClasses( t ), 0 );|
  !gapprompt@>| !gapinput@  for i in goodpos do|
  !gapprompt@>| !gapinput@    if Length( Monster_prim_data[i] ) = 2 then|
  !gapprompt@>| !gapinput@      # We know the permutation character but not the subgroup table.|
  !gapprompt@>| !gapinput@      sum:= sum + upper_bound( t, fail, p )|
  !gapprompt@>| !gapinput@                  * Monster_prim_data[i][2] / monstermaxindices[i];|
  !gapprompt@>| !gapinput@    else|
  !gapprompt@>| !gapinput@      s:= monstermaxtables[i];|
  !gapprompt@>| !gapinput@      if GetFusionMap( s, t ) <> fail then|
  !gapprompt@>| !gapinput@        # We can compute the permutation character.|
  !gapprompt@>| !gapinput@        sum:= sum + upper_bound( t, s, p )|
  !gapprompt@>| !gapinput@                    * TrivialCharacter( s )^t / monstermaxindices[i];|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        # We get only candidates for the permutation character.|
  !gapprompt@>| !gapinput@        cand:= Set( PossibleClassFusions( s, t ),|
  !gapprompt@>| !gapinput@                    map -> InducedClassFunctionsByFusionMap( s, t,|
  !gapprompt@>| !gapinput@                               [ TrivialCharacter( s ) ], map )[1] );|
  !gapprompt@>| !gapinput@        # For each class, take the maximum of the possible values.|
  !gapprompt@>| !gapinput@        sum:= sum + upper_bound( t, s, p )|
  !gapprompt@>| !gapinput@                    * List( TransposedMat( cand ), Maximum )|
  !gapprompt@>| !gapinput@                    / monstermaxindices[i];|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@  od;|
  !gapprompt@>| !gapinput@  badpos:= Filtered( [ 2 .. Length( sum ) ], i -> sum[i] >= 1 );|
  !gapprompt@>| !gapinput@  if badpos <> [] then|
  !gapprompt@>| !gapinput@    Error( "check open cases in ", badpos, "\n" );|
  !gapprompt@>| !gapinput@  fi;|
  !gapprompt@>| !gapinput@od;|
\end{Verbatim}
 

 Finally, let $p = r = 19$. The group $S$ has exactly one class of elements of order $19$. Let $x$ be such an element. From the character table of $S$, we compute that there exist conjugates $y$ of $x$ such that $x y$ has order $71$. Since $\langle x, y \rangle = \langle x, x y \rangle$ holds and no maximal subgroup of $S$ has order divisible by $19 \cdot 71$, we have $\langle x, y \rangle = S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos19:= Positions( OrdersClassRepresentatives( t ), 19 );|
  [ 63 ]
  !gapprompt@gap>| !gapinput@pos71:= Positions( OrdersClassRepresentatives( t ), 71 );|
  [ 169, 170 ]
  !gapprompt@gap>| !gapinput@ClassMultiplicationCoefficient( t, pos19[1], pos19[1], pos71[1] );|
  621743152370566020417806353602387433415016198936
  !gapprompt@gap>| !gapinput@ForAny( monstermaxindices,|
  !gapprompt@>| !gapinput@           x -> ( Size( t ) / x ) mod ( 19 * 71 ) = 0 );|
  false
  !gapprompt@gap>| !gapinput@ForAny( [ "L2(13)", "U3(4)", "U3(8)", "Sz(8)" ],|
  !gapprompt@>| !gapinput@           x -> Size( CharacterTable( x ) ) mod 71 = 0 );|
  false
\end{Verbatim}
 }

 }

     
\chapter{\textcolor{Chapter }{Ambiguous Class Fusions in the \textsf{GAP} Character Table Library}}\label{chap:ambigfus}
\logpage{[ 9, 0, 0 ]}
\hyperdef{L}{X7A03A83E87FB1189}{}
{
  Date: January 11th, 2004 

 This is a collection of examples showing how class fusions between character
tables can be determined using the \textsf{GAP} system{\nobreakspace}\cite{GAP}. In each of these examples, the fusion is \emph{ambiguous} in the sense that the character tables do not determine it up to table
automorphisms. Our strategy is to compute first all possibilities with the \textsf{GAP} function \texttt{PossibleClassFusions} (\textbf{Reference: PossibleClassFusions}), and then to use either other character tables or information about the
groups for excluding some of these candidates until only one (orbit under
table automorphisms) remains. 

 The purpose of this writeup is twofold. On the one hand, the computations are
documented this way. On the other hand, the \textsf{GAP} code shown for the examples can be used as test input for automatic checking
of the data and the functions used; therefore, each example ends with a
comparison of the result with the fusion that is actually stored in the \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib}. 

 The examples use the \textsf{GAP} Character Table Library, so we first load this package. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", false );|
  true
\end{Verbatim}
  
\section{\textcolor{Chapter }{Some \textsf{GAP} Utilities}}\label{sect:GAP_Utilities}
\logpage{[ 9, 1, 0 ]}
\hyperdef{L}{X784492877DB04FE9}{}
{
  The function \texttt{SetOfComposedClassFusions} takes two list of class fusions, where the first list consists of fusions
between the character tables of the groups $H$ and $G$, say, and the second list consists of class fusions between the character
tables of the groups $U$ and $H$, say; the return value is the set of compositions of each map in the first
list with each map in the second list (via \texttt{CompositionMaps} (\textbf{Reference: CompositionMaps})). 

 Note that the returned list may be a proper subset of the set of all possible
class fusions between $U$ and $G$, which can be computed with \texttt{PossibleClassFusions} (\textbf{Reference: PossibleClassFusions}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SetOfComposedClassFusions:= function( hfusg, ufush )|
  !gapprompt@>| !gapinput@    local result, map1, map2;|
  !gapprompt@>| !gapinput@    result:= [];;|
  !gapprompt@>| !gapinput@    for map2 in hfusg do|
  !gapprompt@>| !gapinput@      for map1 in ufush do|
  !gapprompt@>| !gapinput@        AddSet( result, CompositionMaps( map2, map1 ) );|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    return result;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Fusions Determined by Factorization through Intermediate Subgroups}}\label{sect:Fusions_Determined_by_Intermediate_Subgroups}
\logpage{[ 9, 2, 0 ]}
\hyperdef{L}{X7EA839057D3AD3B4}{}
{
  

 This situation clearly occurs only for nonmaximal subgroups. Interesting
examples are Sylow normalizers.  
\subsection{\textcolor{Chapter }{$Co_3N5 \rightarrow Co_3$ (September 2002)}}\label{subsect:Co_3N5_in_Co_3}
\logpage{[ 9, 2, 1 ]}
\hyperdef{L}{X78DCEEFD85FF1EE2}{}
{
  Let $H$ be the Sylow $5$ normalizer in the sporadic simple group $Co_3$. The class fusion of $H$ into $Co_3$ is not uniquely determined by the character tables of the two groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@co3:= CharacterTable( "Co3" );|
  CharacterTable( "Co3" )
  !gapprompt@gap>| !gapinput@h:= CharacterTable( "Co3N5" );|
  CharacterTable( "5^(1+2):(24:2)" )
  !gapprompt@gap>| !gapinput@hfusco3:= PossibleClassFusions( h, co3 );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( h, hfusco3, co3 ) );|
  2
\end{Verbatim}
 

 As $H$ is not maximal in $Co_3$, we look at those maximal subgroups of $Co_3$ whose order is divisible by that of $H$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@mx:= Maxes( co3 );|
  [ "McL.2", "HS", "U4(3).(2^2)_{133}", "M23", "3^5:(2xm11)", 
    "2.S6(2)", "U3(5).3.2", "3^1+4:4s6", "2^4.a8", "L3(4).D12", 
    "2xm12", "2^2.[2^7*3^2].S3", "s3xpsl(2,8).3", "a4xs5" ]
  !gapprompt@gap>| !gapinput@maxes:= List( mx, CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 );|
  [ CharacterTable( "McL.2" ), CharacterTable( "HS" ), 
    CharacterTable( "U3(5).3.2" ) ]
\end{Verbatim}
 

 According to the \textsf{Atlas} (see{\nobreakspace}\cite[pp. 34 and 100]{CCN85}), $H$ occurs as the Sylow $5$ normalizer in $U_3(5).3.2$ and in $McL.2$; however, $H$ is not a subgroup of $HS$, since otherwise $H$ would be contained in subgroups of type $U_3(5).2$ (see{\nobreakspace}\cite[p. 80]{CCN85}), but the only possible subgroups in these groups are too small
(see{\nobreakspace}\cite[p. 34]{CCN85}). 

 We compute the possible class fusions from $H$ into $McL.2$ and from $McL.2$ to $Co_3$, and then form the compositions of these maps. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@max:= filt[1];;|
  !gapprompt@gap>| !gapinput@hfusmax:= PossibleClassFusions( h, max );;|
  !gapprompt@gap>| !gapinput@maxfusco3:= PossibleClassFusions( max, co3 );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( maxfusco3, hfusmax );;|
  !gapprompt@gap>| !gapinput@Length( comp );|
  2
  !gapprompt@gap>| !gapinput@reps:= RepresentativesFusions( h, comp, co3 );|
  [ [ 1, 2, 3, 4, 8, 8, 7, 9, 10, 11, 17, 17, 19, 19, 22, 23, 27, 27, 
        30, 33, 34, 40, 40, 40, 40, 42 ] ]
\end{Verbatim}
 

 So factoring through a maximal subgroup of type $McL.2$ determines the fusion from $H$ to $Co_3$ uniquely up to table automorphisms. 

 Alternatively, we can use the group $U_3(5).3.2$ as intermediate subgroup, which leads to the same result. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@max:= filt[3];;|
  !gapprompt@gap>| !gapinput@hfusmax:= PossibleClassFusions( h, max );;|
  !gapprompt@gap>| !gapinput@maxfusco3:= PossibleClassFusions( max, co3 );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( maxfusco3, hfusmax );;|
  !gapprompt@gap>| !gapinput@reps2:= RepresentativesFusions( h, comp, co3 );;|
  !gapprompt@gap>| !gapinput@reps2 = reps;|
  true
\end{Verbatim}
 

 Finally, we compare the result with the map that is stored on the library
table of $H$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( h, co3 ) in reps;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$31:15 \rightarrow B$ (March 2003)}}\label{subsect:31:15_in_B}
\logpage{[ 9, 2, 2 ]}
\hyperdef{L}{X86BCEA907EC4C833}{}
{
  The Sylow $31$ normalizer $H$ in the sporadic simple group $B$ has the structure $31:15$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@h:= CharacterTable( "31:15" );;|
  !gapprompt@gap>| !gapinput@hfusb:= PossibleClassFusions( h, b );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( h, hfusb, b ) );|
  2
\end{Verbatim}
 

 We determine the correct fusion using the fact that $H$ is contained in a (maximal) subgroup of type $Th$ in $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@th:= CharacterTable( "Th" );;|
  !gapprompt@gap>| !gapinput@hfusth:= PossibleClassFusions( h, th );;|
  !gapprompt@gap>| !gapinput@thfusb:= PossibleClassFusions( th, b );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( thfusb, hfusth );;|
  !gapprompt@gap>| !gapinput@Length( comp );|
  2
  !gapprompt@gap>| !gapinput@reps:= RepresentativesFusions( h, comp, b );|
  [ [ 1, 145, 146, 82, 82, 19, 82, 7, 19, 82, 82, 19, 7, 82, 19, 82, 82 
       ] ]
  !gapprompt@gap>| !gapinput@GetFusionMap( h, b ) in reps;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$SuzN3 \rightarrow Suz$ (September 2002)}}\label{subsect:SuzN3_in_Suz}
\logpage{[ 9, 2, 3 ]}
\hyperdef{L}{X7C719F527831F35A}{}
{
  The class fusion from the Sylow $3$ normalizer into the sporadic simple group $Suz$ is not uniquely determined by the character tables of these groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@h:= CharacterTable( "SuzN3" );|
  CharacterTable( "3^5:(3^2:SD16)" )
  !gapprompt@gap>| !gapinput@suz:= CharacterTable( "Suz" );|
  CharacterTable( "Suz" )
  !gapprompt@gap>| !gapinput@hfussuz:= PossibleClassFusions( h, suz );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( h, hfussuz, suz ) );|
  2
\end{Verbatim}
 

 Since $H$ is not maximal in $Suz$, we try to factorize the fusion through a suitable maximal subgroup. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( suz ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 );|
  [ CharacterTable( "3_2.U4(3).2_3'" ), CharacterTable( "3^5:M11" ), 
    CharacterTable( "3^2+4:2(2^2xa4)2" ) ]
\end{Verbatim}
 

 The group $3_2.U_4(3).2_3^{\prime}$ does not admit a fusion from $H$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleClassFusions( h, filt[1] );|
  [  ]
\end{Verbatim}
 

 Definitely $3^5:M_{11}$ contains a group isomorphic with $H$, because the Sylow $3$ normalizer in $M_{11}$ has the structure $3^2:SD_{16}$; using $3^{2+4}:2(2^2 \times A_4)2$ would lead to the same result as we get below. We compute the compositions of
possible class fusions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@max:= filt[2];;|
  !gapprompt@gap>| !gapinput@hfusmax:= PossibleClassFusions( h, max );;|
  !gapprompt@gap>| !gapinput@maxfussuz:= PossibleClassFusions( max, suz );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( maxfussuz, hfusmax );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( h, comp, suz );|
  [ [ 1, 2, 2, 4, 5, 4, 5, 5, 5, 5, 5, 6, 9, 9, 14, 15, 13, 16, 16, 14, 
        15, 13, 13, 13, 16, 15, 14, 16, 16, 16, 21, 21, 23, 22, 29, 29, 
        29, 38, 39 ] ]
\end{Verbatim}
 

 So the factorization determines the fusion map up to table automorphisms. We
check that this map is equal to the stored one. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( h, suz ) in repr;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$F_{{3+}}N5 \rightarrow F_{{3+}}$ (March 2002)}}\label{subsect:F3+N5_in_F3+}
\logpage{[ 9, 2, 4 ]}
\hyperdef{L}{X828879F481EF30DD}{}
{
  The class fusion from the table of the Sylow $5$ normalizer $H$ in the sporadic simple group $F_{{3+}}$ into $F_{{3+}}$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@f3p:= CharacterTable( "F3+" );;|
  !gapprompt@gap>| !gapinput@h:= CharacterTable( "F3+N5" );;|
  !gapprompt@gap>| !gapinput@hfusf3p:= PossibleClassFusions( h, f3p );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( h, hfusf3p, f3p ) );|
  2
\end{Verbatim}
 

 $H$ is not maximal in $F_{{3+}}$, so we look for tables of maximal subgroups that can contain $H$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxes:= List( Maxes( f3p ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 );|
  [ CharacterTable( "Fi23" ), CharacterTable( "2.Fi22.2" ), 
    CharacterTable( "(3xO8+(3):3):2" ), CharacterTable( "O10-(2)" ), 
    CharacterTable( "(A4xO8+(2).3).2" ), CharacterTable( "He.2" ), 
    CharacterTable( "F3+M14" ), CharacterTable( "(A5xA9):2" ) ]
  !gapprompt@gap>| !gapinput@possfus:= List( filt, x -> PossibleClassFusions( h, x ) );|
  [ [  ], [  ], [  ], [  ], 
    [ [ 1, 69, 110, 12, 80, 121, 4, 72, 113, 11, 11, 79, 79, 120, 120, 
            3, 71, 11, 79, 23, 91, 112, 120, 132, 29, 32, 97, 100, 37, 
            37, 105, 105, 139, 140, 145, 146, 155, 155, 156, 156, 44, 
            44, 167, 167, 48, 48, 171, 171, 57, 57, 180, 180, 66, 66, 
            189, 189 ], 
        [ 1, 69, 110, 12, 80, 121, 4, 72, 113, 11, 11, 79, 79, 120, 
            120, 3, 71, 11, 79, 23, 91, 112, 120, 132, 29, 32, 97, 100, 
            37, 37, 105, 105, 140, 139, 146, 145, 156, 156, 155, 155, 
            44, 44, 167, 167, 48, 48, 171, 171, 57, 57, 180, 180, 66, 
            66, 189, 189 ] ], [  ], [  ], [  ] ]
\end{Verbatim}
 

 We see that from the eight possible classes of maximal subgroups in $F_{{3+}}$ that might contain $H$, only the group of type $(A_4 \times O_8^+(2).3).2$ admits a class fusion from $H$. Hence we can compute the compositions of the possible fusions from $H$ into this group with the possible fusions from this group into $F_{{3+}}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@max:= filt[5];|
  CharacterTable( "(A4xO8+(2).3).2" )
  !gapprompt@gap>| !gapinput@hfusmax:= possfus[5];;|
  !gapprompt@gap>| !gapinput@maxfusf3p:= PossibleClassFusions( max, f3p );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( maxfusf3p, hfusmax );;|
  !gapprompt@gap>| !gapinput@Length( comp );|
  2
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( h, comp, f3p );|
  [ [ 1, 2, 4, 12, 35, 54, 3, 3, 16, 9, 9, 11, 11, 40, 40, 2, 3, 9, 11, 
        35, 36, 13, 40, 90, 7, 22, 19, 20, 43, 43, 50, 50, 8, 8, 23, 
        23, 46, 46, 47, 47, 10, 10, 9, 9, 10, 10, 11, 11, 26, 26, 28, 
        28, 67, 67, 68, 68 ] ]
\end{Verbatim}
 

 Finally, we check whether the map stored in the table library is correct. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( h, f3p ) in repr;|
  true
\end{Verbatim}
 

 Note that we did \emph{not} determine the class fusion from the maximal subgroup $(A_4 \times O_8^+(2).3).2$ into $F_{{3+}}$ up to table automorphisms (see Section{\nobreakspace}\ref{subsect:A4xO8p2d32fusf3p} for this problem), since also the ambiguous result was enough for computing
the fusion from $H$ into $F_{{3+}}$. }

 }

  
\section{\textcolor{Chapter }{Fusions Determined Using Commutative Diagrams Involving Smaller Subgroups}}\label{sect:Fusions_Determined_Using_Commutative_Diagrams}
\logpage{[ 9, 3, 0 ]}
\hyperdef{L}{X7981579278F81AC6}{}
{
  In each of the following examples, the class fusion of a (not necessarily
maximal) subgroup $M$ of a group $G$ into $G$ is determined by considering a proper subgroup $U$ of $M$ whose class fusion into $G$ can be computed, perhaps using another subgroup $S$ of $G$ that also contains $U$. 

   


\setlength{\unitlength}{3pt}
\begin{center}
\begin{picture}(40,30)(-10,0)
\put(10, 5){\circle*{1}}
\put(10,10){\circle{1}} \put(13,10){\makebox(0,0){$U$}}
\put(10,15){\circle{1}}
\put( 5,20){\circle{1}} \put(2,20){\makebox(0,0){$M$}}
\put(15,20){\circle{1}} \put(17,20){\makebox(0,0){$S$}}
\put(10,25){\circle*{1}} \put(10,28){\makebox(0,0){$G$}}
\put(10, 5){\line(0,1){10}}
\put(10,15){\line(-1,1){5}}
\put(10,15){\line(1,1){5}}
\put( 5,20){\line(1,1){5}}
\put(15,20){\line(-1,1){5}}
\end{picture}
\end{center}


  
\subsection{\textcolor{Chapter }{$BN7 \rightarrow B$ (March 2002)}}\label{subsect:BN7}
\logpage{[ 9, 3, 1 ]}
\hyperdef{L}{X7F5186E28201B027}{}
{
  Let $H$ be a Sylow $7$ normalizer in the sporadic simple group $B$. The class fusion of $H$ into $B$ is not uniquely determined by the character tables of the two groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );|
  CharacterTable( "B" )
  !gapprompt@gap>| !gapinput@h:= CharacterTable( "BN7" );|
  CharacterTable( "BN7" )
  !gapprompt@gap>| !gapinput@hfusb:= PossibleClassFusions( h, b );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( h, hfusb, b ) );|
  2
\end{Verbatim}
 

 Let us consider a maximal subgroup of the type $Th$ in $B$ (cf.{\nobreakspace}\cite[p. 217]{CCN85}). By{\nobreakspace}\cite[p. 177]{CCN85}, the Sylow $7$ normalizers in $Th$ are maximal subgroups of $Th$ and have the structure $7^2:(3 \times 2S_4)$. Let $U$ be such a subgroup. 

 Note that the only maximal subgroups of $Th$ whose order is divisible by the order of a Sylow $7$ subgroup of $B$ have the types ${}^3D_4(2).3$ and $7^2:(3 \times 2S_4)$, and the Sylow $7$ normalizers in the former groups have the structure $7^2:(3 \times 2A_4)$, cf.{\nobreakspace}\cite[p. 89]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Number( Factors( Size( b ) ), x -> x = 7 );|
  2
  !gapprompt@gap>| !gapinput@th:= CharacterTable( "Th" );|
  CharacterTable( "Th" )
  !gapprompt@gap>| !gapinput@Filtered( Maxes( th ), x -> Size( CharacterTable( x ) ) mod 7^2 = 0 );|
  [ "3D4(2).3", "7^2:(3x2S4)" ]
\end{Verbatim}
 

 The class fusion of $U$ into $B$ via $Th$ is uniquely determined by the character tables of these groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@thn7:= CharacterTable( "ThN7" );|
  CharacterTable( "7^2:(3x2S4)" )
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( PossibleClassFusions( th, b ),|
  !gapprompt@>| !gapinput@              PossibleClassFusions( thn7, th ) );|
  [ [ 1, 31, 7, 7, 5, 28, 28, 17, 72, 72, 6, 6, 7, 28, 27, 27, 109, 
        109, 17, 45, 45, 72, 72, 127, 127, 127, 127 ] ]
\end{Verbatim}
 

 The condition that the class fusion of $U$ into $B$ factors through $H$ determines the class fusion of $H$ into $B$ up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@thn7fush:= PossibleClassFusions( thn7, h );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( hfusb, x ->|
  !gapprompt@>| !gapinput@              ForAny( thn7fush, y -> CompositionMaps( x, y ) in comp ) );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( h, filt, b ) );|
  1
\end{Verbatim}
 

 Finally, we compare the result with the map that is stored on the library
table of $H$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( h, b ) in filt;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$(A_4 \times O_8^+(2).3).2 \rightarrow Fi_{24}^{\prime}$ (November 2002)}}\label{subsect:A4xO8p2d32fusf3p}
\logpage{[ 9, 3, 2 ]}
\hyperdef{L}{X79710B137B5BB1B8}{}
{
  The class fusion of the maximal subgroup $M \cong (A_4 \times O_8^+(2).3).2$ of $G = Fi_{24}^{\prime}$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "(A4xO8+(2).3).2" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "F3+" );;|
  !gapprompt@gap>| !gapinput@mfust:= PossibleClassFusions( m, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( m, mfust, t );;|
  !gapprompt@gap>| !gapinput@Length( repr );|
  2
\end{Verbatim}
 

 We first observe that the elements of order three in the normal subgroup of
type $A_4$ in $M$ lie in the class \texttt{3A} of $Fi_{24}^{\prime}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a4inm:= Filtered( ClassPositionsOfNormalSubgroups( m ),|
  !gapprompt@>| !gapinput@                     n -> Sum( SizesConjugacyClasses( m ){ n } ) = 12 );|
  [ [ 1, 69, 110 ] ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( m ){ a4inm[1] };|
  [ 1, 2, 3 ]
  !gapprompt@gap>| !gapinput@List( repr, map -> map[110] );|
  [ 4, 4 ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t ){ [ 1 .. 4 ] };|
  [ 1, 2, 2, 3 ]
\end{Verbatim}
 

 Let us take one such element $g$, say. Its normalizer $S$ in $G$ has the structure $(3 \times O_8^+(3).3).2$; this group is maximal in $G$, and its character table is available in \textsf{GAP}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "F3+N3A" );|
  CharacterTable( "(3xO8+(3):3):2" )
\end{Verbatim}
 

 The intersection $N_M(g) = S \cap M$ contains a subgroup $U$ of the type $3 \times O_8^+(2).3$, and in the following we compute the class fusions of $U$ into $S$ and $M$, and then utilize the fact that only those class fusions from $M$ into $G$ are possible whose composition with the class fusion from $U$ into $M$ equals a composition of class fusions from $U$ into $S$ and from $S$ into $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "Cyclic", 3 ) * CharacterTable( "O8+(2).3" );|
  CharacterTable( "C3xO8+(2).3" )
  !gapprompt@gap>| !gapinput@ufuss:= PossibleClassFusions( u, s );;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( u, m );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( sfust, ufuss );;|
  !gapprompt@gap>| !gapinput@Length( comp );|
  6
  !gapprompt@gap>| !gapinput@filt:= Filtered( mfust,|
  !gapprompt@>| !gapinput@    x -> ForAny( ufusm, map -> CompositionMaps( x, map ) in comp ) );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( m, filt, t );;|
  !gapprompt@gap>| !gapinput@Length( repr );|
  1
  !gapprompt@gap>| !gapinput@GetFusionMap( m, t ) in repr;|
  true
\end{Verbatim}
 

 So the class fusion from $M$ into $G$ is determined up to table automorphisms by the commutative diagram. }

  
\subsection{\textcolor{Chapter }{$A_6 \times L_2(8).3 \rightarrow Fi_{24}^{\prime}$ (November 2002)}}\label{subsect:A_6xL_2(8).3_in_Fi24}
\logpage{[ 9, 3, 3 ]}
\hyperdef{L}{X85822C647B29117B}{}
{
  The class fusion of the maximal subgroup $M \cong A_6 \times L_2(8).3$ of $G = Fi_{24}^{\prime}$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "A6xL2(8):3" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "F3+" );;|
  !gapprompt@gap>| !gapinput@mfust:= PossibleClassFusions( m, t );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( m, mfust, t ) );|
  2
\end{Verbatim}
 

 We will use the fact that the direct factor of the type $A_6$ in $M$ contains elements in the class \texttt{3A} of $G$. This fact can be shown as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@dppos:= ClassPositionsOfDirectProductDecompositions( m );|
  [ [ [ 1, 12 .. 67 ], [ 1 .. 11 ] ] ]
  !gapprompt@gap>| !gapinput@List( dppos[1], l -> Sum( SizesConjugacyClasses( t ){ l } ) );|
  [ 17733424133316996808705, 4545066196775803392 ]
  !gapprompt@gap>| !gapinput@List( dppos[1], l -> Sum( SizesConjugacyClasses( m ){ l } ) );|
  [ 360, 1512 ]
  !gapprompt@gap>| !gapinput@3Apos:= Position( OrdersClassRepresentatives( t ), 3 );|
  4
  !gapprompt@gap>| !gapinput@3Ainm:= List( mfust, map -> Position( map, 3Apos ) );|
  [ 23, 23, 23, 23, 34, 34, 34, 34 ]
  !gapprompt@gap>| !gapinput@ForAll( 3Ainm, x -> x in dppos[1][1] );|
  true
\end{Verbatim}
 

 Since the normalizer of an element of order three in $A_6$ has the form $3^2:2$, such a \texttt{3A} element in $M$ contains a subgroup $U$ of the structure $3^2:2 \times L_2(8).3$ which is contained in the \texttt{3A} normalizer $S$ in $G$, which has the structure $(3 \times O_8^+(3).3).2$. 

 (Note that all classes in the $3^2:2$ type group are rational, and its character table is available in the \textsf{GAP} Character Table Library with the identifier \texttt{"3\texttt{\symbol{94}}2:2"}.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "3^2:2" ) * CharacterTable( "L2(8).3" );|
  CharacterTable( "3^2:2xL2(8).3" )
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "F3+N3A" );|
  CharacterTable( "(3xO8+(3):3):2" )
  !gapprompt@gap>| !gapinput@ufuss:= PossibleClassFusions( u, s );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( sfust, ufuss );;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( u, m );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( mfust,|
  !gapprompt@>| !gapinput@              map -> ForAny( ufusm,|
  !gapprompt@>| !gapinput@                         map2 -> CompositionMaps( map, map2 ) in comp ) );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( m, filt, t );;|
  !gapprompt@gap>| !gapinput@Length( repr );|
  1
  !gapprompt@gap>| !gapinput@GetFusionMap( m, t ) in repr;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$(3^2:D_8 \times U_4(3).2^2).2 \rightarrow B$ (June 2007)}}\label{subsect:BM14}
\logpage{[ 9, 3, 4 ]}
\hyperdef{L}{X81A607758682D9A9}{}
{
  Let $G$ be a maximal subgroup of the type $(3^2:D_8 \times U_4(3).2^2).2$ in the sporadic simple group $B$, cf.{\nobreakspace}\cite[p. 217]{CCN85}. Computing the class fusion of $G$ into $B$ just from the character tables of the two groups takes extremely long. So we
use additional information. 

 According to{\nobreakspace}\cite[p. 217]{CCN85}, $G$ is the normalizer in $B$ of an elementary abelian group $\langle x, y \rangle$ of order $9$, with $x, y$ in the class \texttt{3A} of $B$, and $N = N_B(\langle x \rangle)$ has the structure $S_3 \times Fi_{22}.2$. The intersection $G \cap N$ has the structure $S_3 \times S_3 \times U_4(3).2^2$, which is the direct product of $S_3$ and the normalizer in $Fi_{22}.2$ of a \texttt{3A} element of $Fi_{22}.2$, see{\nobreakspace}\cite[p. 163]{CCN85}. Thus we may use that the class fusions from $G \cap N$ into $B$ through $G$ or $N$ coincide. 

 The class fusion from $N$ into $B$ is uniquely determined by the character tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@n:= CharacterTable( "BN3A" );|
  CharacterTable( "S3xFi22.2" )
  !gapprompt@gap>| !gapinput@nfusb:= PossibleClassFusions( n, b );;|
  !gapprompt@gap>| !gapinput@Length( nfusb );|
  1
  !gapprompt@gap>| !gapinput@nfusb:= nfusb[1];;|
\end{Verbatim}
 

 The computation of the class fusion from $G \cap N$ into $N$ is sped up by computing first the class fusion modulo the direct factor $S_3$, and then lifting these fusion maps. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fi222:= CharacterTable( "Fi22.2" );;|
  !gapprompt@gap>| !gapinput@fi222n3a:= CharacterTable( "S3xU4(3).(2^2)_{122}" );;|
  !gapprompt@gap>| !gapinput@s3:= CharacterTable( "S3" );;|
  !gapprompt@gap>| !gapinput@inter:= s3 * fi222n3a;;|
  !gapprompt@gap>| !gapinput@intermods3fusnmods3:= PossibleClassFusions( fi222n3a, fi222 );;|
  !gapprompt@gap>| !gapinput@Length( intermods3fusnmods3 );|
  2
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( fi222n3a, intermods3fusnmods3, fi222 ) );|
  1
\end{Verbatim}
 

 We get two equivalent possibilities, and need to consider only one of them.
For lifting it to a map between $G \cap N$ and $N$, the safe way is to use the fusion map between the two factors for computing
an approximation. (Additionally, we could interpret the known maps as fusions
between two subgroups, and use this for improving the approximation, but in
this case the speedup is not worth the effort.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@interfusn:= CompositionMaps( InverseMap( GetFusionMap( n, fi222 ) ),|
  !gapprompt@>| !gapinput@       CompositionMaps( intermods3fusnmods3[1],|
  !gapprompt@>| !gapinput@           GetFusionMap( inter, fi222n3a ) ) );;|
  !gapprompt@gap>| !gapinput@interfusn:= PossibleClassFusions( inter, n,|
  !gapprompt@>| !gapinput@       rec( fusionmap:= interfusn, quick:= true ) );;|
  !gapprompt@gap>| !gapinput@Length( interfusn );|
  1
\end{Verbatim}
 

 The lift is unique. Since we lift a class fusion to direct products, we could
also ``extend'' the fusion directly. But note that this would assume the ordering of classes
in character tables of direct products. This alternative would work as
follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nccl:= NrConjugacyClasses( fi222 );;|
  !gapprompt@gap>| !gapinput@interfusn[1] = Concatenation( List( [ 0 .. 2 ],|
  !gapprompt@>| !gapinput@                      i -> intermods3fusnmods3[1] + i * nccl ) );|
  true
\end{Verbatim}
 

 Next we compute the class fusions from $G \cap N$ to $G$. We get two equivalent solutions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblg:= CharacterTable( "BM14" );|
  CharacterTable( "(3^2:D8xU4(3).2^2).2" )
  !gapprompt@gap>| !gapinput@interfusg:= PossibleClassFusions( inter, tblg );;|
  !gapprompt@gap>| !gapinput@Length( interfusg );|
  2
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( inter, interfusg, tblg ) );|
  1
\end{Verbatim}
 

 The approximation of the class fusion from $G$ to $B$ is computed by composing the known maps. Because we have chosen one of the two
possible maps from $G \cap N$ to $N$, here we consider the two possibilities. From these approximations, we
compute the possible class fusions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@interfusb:= CompositionMaps( nfusb, interfusn[1] );;|
  !gapprompt@gap>| !gapinput@approx:= List( interfusg,|
  !gapprompt@>| !gapinput@       map -> CompositionMaps( interfusb, InverseMap( map ) ) );;|
  !gapprompt@gap>| !gapinput@gfusb:= Set( Concatenation( List( approx,|
  !gapprompt@>| !gapinput@                    map -> PossibleClassFusions( tblg, b,|
  !gapprompt@>| !gapinput@                               rec( fusionmap:= map ) ) ) ) );;|
  !gapprompt@gap>| !gapinput@Length( gfusb );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblg, gfusb, b ) );|
  1
\end{Verbatim}
 

 Finally, we compare the result with the class fusion that is stored on the
library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( tblg, b ) in gfusb;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$7^{1+4}:(3 \times 2.S_7) \rightarrow M$ (May 2009)}}\label{subsect:MM24}
\logpage{[ 9, 3, 5 ]}
\hyperdef{L}{X7962DD4387D63675}{}
{
  The class fusion of the maximal subgroup $U$ of type $7^{1+4}:(3 \times 2.S_7)$ of the Monster group $M$ into $M$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblu:= CharacterTable( "7^(1+4):(3x2.S7)" );;|
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( tblu, m );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblu, ufusm, m ) );|
  2
\end{Verbatim}
 

 The subgroup $U$ contains a Sylow $7$-subgroup of $M$, and the only maximal subgroups of $M$ with this property are the class of $U$ and another class of subgroups, of the type $7^{2+1+2}:GL_2(7)$.  Moreover, it turns out that the Sylow $7$ normalizers in the subgroups in both classes have the same order, hence they
are the Sylow $7$ normalizers in $M$. 

 For that, we use representations from the \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3}, and access these representations via the \textsf{GAP} package \textsf{AtlasRep} (\cite{AtlasRep}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "atlasrep", false );|
  true
  !gapprompt@gap>| !gapinput@g1:= AtlasGroup( "7^(2+1+2):GL2(7)" );;|
  !gapprompt@gap>| !gapinput@s1:= SylowSubgroup( g1, 7 );;|
  !gapprompt@gap>| !gapinput@n1:= Normalizer( g1, s1 );;|
  !gapprompt@gap>| !gapinput@g2:= AtlasGroup( "7^(1+4):(3x2.S7)" );;|
  !gapprompt@gap>| !gapinput@s2:= SylowSubgroup( g2, 7 );;|
  !gapprompt@gap>| !gapinput@n2:= Normalizer( g2, s2 );;|
  !gapprompt@gap>| !gapinput@Size( n1 ) = Size( n2 );|
  true
  !gapprompt@gap>| !gapinput@( Size( m ) / Size( s1 ) ) mod 7 <> 0;|
  true
\end{Verbatim}
 

 So let $N$ be a Sylow $7$ normalizer in $U$, and choose a subgroup $S$ of the type $7^{2+1+2}:GL_2(7)$ that contains $N$. 

 We compute the character table of $N$. Computing the possible class fusions of $N$ into $M$ directly yields two possibilities, but the class fusion of $N$ into $M$ via $S$ is uniquely determined by the character tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbln:= CharacterTable( Image( IsomorphismPcGroup( n1 ) ) );;|
  !gapprompt@gap>| !gapinput@tbls:= CharacterTable( "7^(2+1+2):GL2(7)" );;|
  !gapprompt@gap>| !gapinput@nfusm:= PossibleClassFusions( tbln, m );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tbln, nfusm, m ) );|
  2
  !gapprompt@gap>| !gapinput@nfuss:= PossibleClassFusions( tbln, tbls );;|
  !gapprompt@gap>| !gapinput@sfusm:= PossibleClassFusions( tbls, m );;|
  !gapprompt@gap>| !gapinput@nfusm:= SetOfComposedClassFusions( sfusm, nfuss );;|
  !gapprompt@gap>| !gapinput@Length( nfusm );|
  1
\end{Verbatim}
 

 Now we use the condition that the class fusions from $N$ into $M$ factors through $U$. This determines the class fusion of $U$ into $M$ up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nfusu:= PossibleClassFusions( tbln, tblu );;|
  !gapprompt@gap>| !gapinput@ufusm:= Filtered( ufusm, map2 -> ForAny( nfusu, |
  !gapprompt@>| !gapinput@       map1 -> CompositionMaps( map2, map1 ) in nfusm ) );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblu, ufusm, m ) );|
  1
\end{Verbatim}
 

 Let $C$ be the centralizer in $U$ of the normal subgroup of order $7$; note that $C$ is the \texttt{7B} centralizer on $M$. We can use the information about the class fusion of $U$ into $M$ for determining the class fusion of $C$ into $M$. The class fusion of $C$ into $M$ is not determined by the character tables, but the class fusion of $C$ into $U$ is determined up to table automorphisms, so the same holds for the class
fusion of $C$ into $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblc:= CharacterTable( "MC7B" );                             |
  CharacterTable( "7^1+4.2A7" )
  !gapprompt@gap>| !gapinput@cfusm:= PossibleClassFusions( tblc, m );;             |
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblc, cfusm, m ) );|
  2
  !gapprompt@gap>| !gapinput@cfusu:= PossibleClassFusions( tblc, tblu );;|
  !gapprompt@gap>| !gapinput@cfusm:= SetOfComposedClassFusions( ufusm, cfusu );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( tblc, cfusm, m ) );|
  1
\end{Verbatim}
  }

  
\subsection{\textcolor{Chapter }{$3^7.O_7(3):2 \rightarrow Fi_{24}$ (November 2010)}}\label{subsect:3^7.O_7(3):2_in_Fi24}
\logpage{[ 9, 3, 6 ]}
\hyperdef{L}{X860B6C30812DE3FC}{}
{
  The class fusion of the maximal subgroup $M \cong 3^7.O_7(3):2$ of $G = Fi_{24} = F_{{3+}}.2$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "3^7.O7(3):2" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "F3+.2" );;|
  !gapprompt@gap>| !gapinput@mfust:= PossibleClassFusions( m, t );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( m, mfust, t ) );|
  2
\end{Verbatim}
 

 We will use the fact that the elementary abelian normal subgroup of order $3^7$ in $M$ contains an element $x$, say, in the class \texttt{3A} of $G$. This fact can be shown as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nsg:= ClassPositionsOfNormalSubgroups( m );|
  [ [ 1 ], [ 1 .. 4 ], [ 1 .. 158 ], [ 1 .. 291 ] ]
  !gapprompt@gap>| !gapinput@Sum( SizesConjugacyClasses( m ){ nsg[2] } );|
  2187
  !gapprompt@gap>| !gapinput@3^7;|
  2187
  !gapprompt@gap>| !gapinput@rest:= Set( mfust, map -> map{ nsg[2] } );|
  [ [ 1, 4, 5, 6 ] ]
  !gapprompt@gap>| !gapinput@List( rest, l -> ClassNames( t, "Atlas" ){ l } );|
  [ [ "1A", "3A", "3B", "3C" ] ]
\end{Verbatim}
 

 The normalizer $S$ of $\langle x \rangle$ in $G$ has the form $S_3 \times O_8^+(3):S_3$, and the order of $U = S \cap M = N_M( \langle x \rangle)$ is $53059069440$, so $U$ has index $3360$ in $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "F3+.2N3A" );|
  CharacterTable( "S3xO8+(3):S3" )
  !gapprompt@gap>| !gapinput@PowerMap( m, 2 )[4];|
  4
  !gapprompt@gap>| !gapinput@size_u:= 2 * SizesCentralizers( m )[ 2 ];|
  53059069440
  !gapprompt@gap>| !gapinput@Size( s ) / size_u;|
  3360
\end{Verbatim}
 

 Using the list of maximal subgroups of $O_8^+(3)$, we see that only the maximal subgroups of the type $3^6:L_4(3)$ have index dividing $3360$ in $O_8^+(3)$. (There are three classes of such subgroups.) This implies that $U$ contains a subgroup of the type $S_3 \times 3^6:L_4(3)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o8p3:= CharacterTable( "O8+(3)" );;|
  !gapprompt@gap>| !gapinput@mx:= List( Maxes( o8p3 ), CharacterTable );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( mx, x -> 3360 mod Index( o8p3, x ) = 0 );|
  [ CharacterTable( "3^6:L4(3)" ), CharacterTable( "O8+(3)M8" ), 
    CharacterTable( "O8+(3)M9" ) ]
  !gapprompt@gap>| !gapinput@List( filt, x -> Index( o8p3, x ) );|
  [ 1120, 1120, 1120 ]
\end{Verbatim}
 

 We compute the possible class fusions from $U$ into $M$ and $S$ in two steps, because this is faster. First the possible class fusions from $U^{\prime\prime} \cong 3^6:L_4(3)$ into $M$ and $S$ are computed, and then these fusions are used to derive approximations for the
fusions from $U$ into $M$ and $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@uu:= filt[1];;|
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "Symmetric", 3 ) * uu;|
  CharacterTable( "Sym(3)x3^6:L4(3)" )
  !gapprompt@gap>| !gapinput@uufusm:= PossibleClassFusions( uu, m );;|
  !gapprompt@gap>| !gapinput@Length( uufusm );|
  8
  !gapprompt@gap>| !gapinput@approx:= List( uufusm, map -> CompositionMaps( map,|
  !gapprompt@>| !gapinput@                  InverseMap( GetFusionMap( uu, u ) ) ) );;|
  !gapprompt@gap>| !gapinput@ufusm:= Concatenation( List( approx, map ->|
  !gapprompt@>| !gapinput@       PossibleClassFusions( u, m, rec( fusionmap:= map ) ) ) );;|
  !gapprompt@gap>| !gapinput@Length( ufusm );|
  8
  !gapprompt@gap>| !gapinput@uufuss:= PossibleClassFusions( uu, s );;|
  !gapprompt@gap>| !gapinput@Length( uufuss );|
  8
  !gapprompt@gap>| !gapinput@approx:= List( uufuss, map -> CompositionMaps( map,|
  !gapprompt@>| !gapinput@             InverseMap( GetFusionMap( uu, u ) ) ) );;|
  !gapprompt@gap>| !gapinput@ufuss:= Concatenation( List( approx, map ->|
  !gapprompt@>| !gapinput@  PossibleClassFusions( u, s, rec( fusionmap:= map ) ) ) );;|
  !gapprompt@gap>| !gapinput@Length( ufuss );|
  8
\end{Verbatim}
 

 Now we compute the possible class fusions from $S$ into $G$, and the compositions of these maps with the possible class fusions from $U$ into $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( sfust, ufuss );;|
  !gapprompt@gap>| !gapinput@Length( comp );|
  8
\end{Verbatim}
 

 It turns out that only one orbit of the possible class fusions from $M$ to $G$ is compatible with these possible class fusions from $U$ to $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( mfust, map2 -> ForAny( ufusm, map1 ->|
  !gapprompt@>| !gapinput@       CompositionMaps( map2, map1 ) in comp ) );;|
  !gapprompt@gap>| !gapinput@Length( filt );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( m, filt, t ) );|
  1
\end{Verbatim}
 

 The class fusion stored in the \textsf{GAP} Character Table Library is one of them. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( m, t ) in filt;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{${}^2E_6(2)N3C \rightarrow {}^2E_6(2)$ (January 2019)}}\label{subsect:2E62N3C_in_2E62}
\logpage{[ 9, 3, 7 ]}
\hyperdef{L}{X7C3AC42F8342EE2E}{}
{
  Let $G = {}^2E_6(2)$, and $g \in G$ in the conjugacy class \texttt{3C}. Using a permutation representation of $G$, Frank L{\"u}beck has computed a representation and the character table of
the maximal subgroup $N = N_G(\langle g \rangle)$ of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2E6(2)" );;|
  !gapprompt@gap>| !gapinput@pos3CinG:= Position( ClassNames( t ), "3c" );|
  7
  !gapprompt@gap>| !gapinput@n:= CharacterTable( "2E6(2)N3C" );;|
  !gapprompt@gap>| !gapinput@nclasses:= SizesConjugacyClasses( n );;|
  !gapprompt@gap>| !gapinput@pos3CinN:= Filtered( [ 1 .. NrConjugacyClasses( n ) ],|
  !gapprompt@>| !gapinput@                        i -> nclasses[i] = 2 );|
  [ 2 ]
  !gapprompt@gap>| !gapinput@nfust:= PossibleClassFusions( n, t );;|
  !gapprompt@gap>| !gapinput@ForAll( nfust, x -> x[ pos3CinN[1] ] = pos3CinG );|
  true
  !gapprompt@gap>| !gapinput@Size( n ) = 2 * SizesCentralizers( t )[ pos3CinG ];|
  true
  !gapprompt@gap>| !gapinput@ForAll( Irr( n ), x -> IsInt( x[ pos3CinN[1] ] ) );|
  true
\end{Verbatim}
 

 The class fusion of $N$ in $G$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@rep:= RepresentativesFusions( n, nfust, t );;|
  !gapprompt@gap>| !gapinput@Length( rep );|
  4
\end{Verbatim}
 

 We use the fact that $g$ is contained in a subgroup $S \cong Fi_{22}$ of $G$, $\ldots$ 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "Fi22" );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@ForAll( sfust, x -> x[6] = pos3CinG );|
  true
  !gapprompt@gap>| !gapinput@pos3CinS:= 6;;|
\end{Verbatim}
 $\ldots$ and that $U = N_S(\langle g \rangle) \cong 3^{1+6}:2^{3+4}:3^2:2$ is a maximal subgroup of $S$ whose character table is available. Thus $U \leq N$, of index four. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( Maxes( s )[11] );|
  CharacterTable( "3^(1+6):2^(3+4):3^2:2" )
  !gapprompt@gap>| !gapinput@uclasses:= SizesConjugacyClasses( u );;|
  !gapprompt@gap>| !gapinput@pos3CinU:= Filtered( [ 1 .. NrConjugacyClasses( u ) ],|
  !gapprompt@>| !gapinput@                        i -> uclasses[i] = 2 );|
  [ 2 ]
  !gapprompt@gap>| !gapinput@ufuss:= PossibleClassFusions( u, s );;|
  !gapprompt@gap>| !gapinput@ForAll( ufuss, x -> x[ pos3CinU[1] ] = pos3CinS );|
  true
  !gapprompt@gap>| !gapinput@Size( n ) / Size( u );|
  4
\end{Verbatim}
 

 Composing the class fusions of $U$ in $N$ and $N$ in $G$ must be equal to the composition of the class fusions of $U$ in $S$ and $S$ in $G$. This reduces the number of candidates for the fusion of $N$ in $G$ from four to two. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ufusn:= PossibleClassFusions( u, n );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( sfust, ufuss );;|
  !gapprompt@gap>| !gapinput@good:= Filtered( nfust, map2 -> ForAny( ufusn,|
  !gapprompt@>| !gapinput@              map1 -> CompositionMaps( map2, map1 ) in comp ) );;|
  !gapprompt@gap>| !gapinput@Length( good );|
  1728
  !gapprompt@gap>| !gapinput@goodrep:= RepresentativesFusions( n, good, t );;|
  !gapprompt@gap>| !gapinput@Length( goodrep );|
  2
\end{Verbatim}
 

 Next we use the fact that $g$ and thus $N$ is invariant under an outer automorphism $\alpha$, say, of order three of $G$. Note that such an automorphism acts nontrivially on the conjugacy classes of $G$, for example because the class fusion of $G$ into $G.3 = \langle G, \alpha \rangle$ shows the existence of orbits of length three, and that the permutation action
of $\alpha$ on the classes of $G$ is given by the unique subgroup of order three in the group of table
automorphisms of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tfust3:= GetFusionMap( t, CharacterTable( "2E6(2).3" ) );;|
  !gapprompt@gap>| !gapinput@Number( InverseMap( tfust3 ), IsList );|
  14
  !gapprompt@gap>| !gapinput@autt:= AutomorphismsOfTable( t );;|
  !gapprompt@gap>| !gapinput@ord3:= Filtered( autt, x -> Order( x ) = 3 );;|
  !gapprompt@gap>| !gapinput@Length( ord3 );|
  2
  !gapprompt@gap>| !gapinput@alpha:= ord3[1];;|
  !gapprompt@gap>| !gapinput@pos3CinG ^ alpha = pos3CinG;|
  true
\end{Verbatim}
 

 The character table of $N$ has $26$ table automorphisms of order three. We do not know which of them (or perhaps
the identity permutation) is induced by the restriction $\alpha_N$ of $\alpha$ to $N$, but the embedding $\iota\colon N \rightarrow G$ satisfies $\alpha \circ \iota = \iota \circ \alpha_N$, and we can check each fusion candidate for the existence of a candidate for $\alpha_N$ such that this relation holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@autn:= AutomorphismsOfTable( n );;|
  !gapprompt@gap>| !gapinput@ord3:= Filtered( autn, x -> Order( x ) = 3 );;|
  !gapprompt@gap>| !gapinput@Length( ord3 );|
  26
  !gapprompt@gap>| !gapinput@Add( ord3, () );|
  !gapprompt@gap>| !gapinput@filt:= Filtered( rep, map -> ForAny( ord3, beta ->|
  !gapprompt@>| !gapinput@OnTuples( map, alpha ) = Permuted( map, beta ) ) );;|
  !gapprompt@gap>| !gapinput@Length( filt );|
  2
\end{Verbatim}
 

 Again, the number of candidates for the fusion of $N$ in $G$ is reduced from four to two. Moreover, we are lucky because only one candidate
satifies also the first criterion we have checked. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inter:= Intersection( good, filt );|
  [ [ 1, 7, 5, 6, 7, 2, 3, 4, 27, 30, 24, 32, 25, 26, 9, 11, 12, 13, 
        10, 14, 19, 19, 19, 16, 17, 18, 21, 58, 61, 62, 67, 68, 69, 57, 
        72, 59, 75, 76, 77, 78, 79, 80, 64, 65, 66, 60, 81, 82, 5, 6, 
        7, 6, 7, 7, 7, 7, 6, 7, 6, 7, 7, 24, 25, 27, 26, 28, 30, 29, 
        31, 32, 31, 32, 32, 32, 32, 31, 32, 31, 32, 51, 52, 52, 52, 52, 
        74, 76, 77, 77, 75, 74, 76, 74, 75, 99, 100, 101, 102, 4, 20, 
        29, 31, 32, 36, 36, 42, 42, 39, 40, 41, 49, 49, 49, 49, 49, 49, 
        71, 112, 112, 114, 115, 116 ] ]
\end{Verbatim}
 

 The class fusion stored in the \textsf{GAP} Character Table Library is this candidate. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( n, t ) = inter[1];|
  true
\end{Verbatim}
 

 \emph{Remark:} 

 Note that the structure of $N$ is $3^{1+6}:2^{3+6}:3^2:2$, as is stated in \cite{AtlasImpII}. The structure $3^{1+6}.2^{3+6}.(S_3 \times 3)$ claimed in the \textsf{Atlas}{\nobreakspace}\cite[p. 191]{CCN85} is wrong, as we can read off for example from the fact that $N$ has exactly two linear characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Length( LinearCharacters( n ) );|
  2
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Fusions Determined Using Commutative Diagrams Involving Factor Groups}}\label{sect:Fusions_Determined_Using_Factor_Groups}
\logpage{[ 9, 4, 0 ]}
\hyperdef{L}{X84F966E2824F5D52}{}
{
   
\subsection{\textcolor{Chapter }{$3.A_7 \rightarrow 3.Suz$ (December 2010)}}\label{subsect:3.A_7_in_3.Suz}
\logpage{[ 9, 4, 1 ]}
\hyperdef{L}{X7F2B104686509CAA}{}
{
  The maximal subgroups of type $A_7$ in the sporadic simple Suzuki group $Suz$ lift to groups of the type $3.A_7$ in $3.Suz$. This can be seen from the fact that $3.Suz$ does not admit a class fusion from $A_7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Suz" );;|
  !gapprompt@gap>| !gapinput@3t:= CharacterTable( "3.Suz" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "A7" );;|
  !gapprompt@gap>| !gapinput@3s:= CharacterTable( "3.A7" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( s, 3t );|
  [  ]
\end{Verbatim}
 

 The class fusion of $3.A_7$ into $3.Suz$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@3sfus3t:= PossibleClassFusions( 3s, 3t );;|
  !gapprompt@gap>| !gapinput@Length( 3sfus3t );|
  6
  !gapprompt@gap>| !gapinput@RepresentativesFusions( 3s, 3sfus3t, 3t );|
  [ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 
        49, 50, 48, 49, 50 ], 
    [ 1, 11, 12, 4, 36, 37, 13, 16, 23, 82, 83, 32, 100, 101, 44, 38, 
        41, 48, 112, 116, 48, 115, 113 ] ]
  !gapprompt@gap>| !gapinput@ClassPositionsOfCentre( 3t );|
  [ 1, 2, 3 ]
\end{Verbatim}
 

 We see that the possible fusions in the second orbit avoid the centre of $3.Suz$. Since the preimages in $3.Suz$ of the $A_7$ type subgroups of $Suz$ contain the centre of $3.Suz$, we know that the class fusion of these preimages belong to the first orbit.
This can be formalized by checking the commutativity of the diagram of fusions
between $3.A_7$, $3.Suz$, and their factors $A_7$ and $Suz$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@Length( sfust );|
  1
  !gapprompt@gap>| !gapinput@filt:= Filtered( 3sfus3t, map -> CompositionMaps( GetFusionMap( 3t, t ),|
  !gapprompt@>| !gapinput@                                        map )|
  !gapprompt@>| !gapinput@              = CompositionMaps( sfust[1], GetFusionMap( 3s, s ) ) );|
  [ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 
        49, 50, 48, 49, 50 ], 
    [ 1, 3, 2, 7, 9, 8, 16, 16, 26, 28, 27, 32, 34, 33, 47, 47, 47, 48, 
        50, 49, 48, 50, 49 ] ]
\end{Verbatim}
 

 So the class fusion of maximal $3.A_7$ type subgroups of $3.Suz$ is determined up to table automorphisms. One of these fusions is stored on the
table of $3.A_7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@RepresentativesFusions( 3s, filt, 3t );|
  [ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 
        49, 50, 48, 49, 50 ] ]
  !gapprompt@gap>| !gapinput@GetFusionMap( 3s, 3t ) in filt;|
  true
\end{Verbatim}
 

 Also the class fusions in the other orbit belong to subgroups of type $3.A_7$ in $3.Suz$. Note that $Suz$ contains maximal subgroups of the type $3_2.U_4(3).2_3^{\prime}$ (see{\nobreakspace}\cite[p. 131]{CCN85}), and the $A_7$ type subgroups of $U_4(3)$ (see{\nobreakspace}\cite[p. 52]{CCN85}) lift to groups of the type $3.A_7$ in $3_2.U_4(3)$ because $3_2.U_4(3)$ does not admit a class fusion from $A_7$. The preimages in $3.Suz$ of the $3.A_7$ type subgroups of $Suz$ have the structure $3 \times 3.A_7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "3_2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( s, u );|
  [  ]
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( 3s, u ) );|
  8
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$S_6 \rightarrow U_4(2)$ (September 2011)}}\label{subsect:S6_in_U4(2)}
\logpage{[ 9, 4, 2 ]}
\hyperdef{L}{X82FB71647D37F4FD}{}
{
  The simple group $G = U_4(2)$ contains a maximal subgroup $U$ of type $S_6$. The class fusion from $U$ to $G$ is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "S6" );|
  CharacterTable( "A6.2_1" )
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U4(2)" );|
  CharacterTable( "U4(2)" )
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );|
  [ [ 1, 3, 6, 7, 9, 10, 3, 2, 9, 16, 15 ], 
    [ 1, 3, 7, 6, 9, 10, 2, 3, 9, 15, 16 ] ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s, sfust, t ) );|
  1
\end{Verbatim}
 

 In the double cover $2.G$ of $G$, $U$ lifts to the double cover $2.U$ of $U$ (which is unique up to isomorphism). Also the class fusion from $2.U$ to $2.G$ is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2t:= CharacterTable( "2.U4(2)" );|
  CharacterTable( "2.U4(2)" )
  !gapprompt@gap>| !gapinput@2s:= CharacterTable( "2.A6.2_1" );|
  CharacterTable( "2.A6.2_1" )
  !gapprompt@gap>| !gapinput@2sfus2t:= PossibleClassFusions( 2s, 2t );|
  [ [ 1, 2, 4, 11, 12, 9, 10, 15, 16, 17, 3, 4, 15, 24, 25, 26, 26 ], 
    [ 1, 2, 4, 11, 12, 9, 10, 15, 16, 17, 3, 4, 15, 25, 24, 26, 26 ] ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( 2s, 2sfus2t, 2t ) );|
  1
\end{Verbatim}
 

 However, the two possible fusions from $2.U$ to $2.G$ are lifts of the same class fusion from $U$ to $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2sfuss:= GetFusionMap( 2s, s );|
  [ 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 11 ]
  !gapprompt@gap>| !gapinput@2tfust:= GetFusionMap( 2t, t );;|
  !gapprompt@gap>| !gapinput@induced:= Set( 2sfus2t, x -> CompositionMaps( 2tfust,|
  !gapprompt@>| !gapinput@     CompositionMaps( x, InverseMap( 2sfuss ) ) ) );|
  [ [ 1, 3, 7, 6, 9, 10, 2, 3, 9, 15, 16 ] ]
\end{Verbatim}
 

 The point is that the outer automorphism of $S_6$ that makes the two fusions from $U$ to $G$ equivalent does not lift to $2.U$, and that we have silently assumed a fixed factor fusion from $2.U$ to $U$. Note that composing this factor fusion with the automorphism of $U$ would also yield a factor fusion, and
w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}the commutative diagram
involving this factor fusion, the other possible class fusion from $U$ to $G$ is induced by the possible fusions from $2.U$ to $2.G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@auts:= AutomorphismsOfTable( s );|
  Group([ (3,4)(7,8)(10,11) ])
  !gapprompt@gap>| !gapinput@other:= OnTuples( 2sfuss, GeneratorsOfGroup( auts )[1] );|
  [ 1, 1, 2, 4, 4, 3, 3, 5, 6, 6, 8, 7, 9, 11, 11, 10, 10 ]
  !gapprompt@gap>| !gapinput@Set( 2sfus2t, x -> CompositionMaps( 2tfust,|
  !gapprompt@>| !gapinput@     CompositionMaps( x, InverseMap( other ) ) ) );|
  [ [ 1, 3, 6, 7, 9, 10, 3, 2, 9, 16, 15 ] ]
\end{Verbatim}
 

 The library table of $U$ stores the class fusion to $G$ that is compatible with the stored factor fusion from $2.U$ to $U$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) in induced;|
  true
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Fusions Determined Using Commutative Diagrams Involving Automorphic Extensions}}\label{sect:Fusions Determined Using Commutative Diagrams Involving
Automorphic Extensions}
\logpage{[ 9, 5, 0 ]}
\hyperdef{L}{X7CFBC41B818A318C}{}
{
   
\subsection{\textcolor{Chapter }{$U_3(8).3_1 \rightarrow {}^2E_6(2)$ (December 2010)}}\label{subsect:u383to2e62}
\logpage{[ 9, 5, 1 ]}
\hyperdef{L}{X7E91F8707BA93081}{}
{
  According to the \textsf{Atlas} (see{\nobreakspace}\cite[p. 191]{CCN85}), the group $G = {}^2E_6(2)$ contains a maximal subgroup $U$ of the type $U_3(8).3_1$. The class fusion of $U$ into $G$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "U3(8).3_1" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "2E6(2)" );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@Length( sfust );|
  24
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s, sfust, t ) );|
  2
\end{Verbatim}
 

 In the automorphic extension $G.2 = {}^2E_6(2).2$ of $G$, the subgroup $U$ extends to a group $U.2$ of the type $U_3(8).6$ (again, see {\nobreakspace}\cite[p. 191]{CCN85}). The class fusion of $U.2$ into $G.2$ is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "U3(8).6" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "2E6(2).2" );;|
  !gapprompt@gap>| !gapinput@s2fust2:= PossibleClassFusions( s2, t2 );;|
  !gapprompt@gap>| !gapinput@Length( s2fust2 );|
  2
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s2, s2fust2, t2 ) );|
  1
\end{Verbatim}
 

 Only half of the possible class fusions from $U$ into $G$ are compatible with the embeddings of $U$ into $G.2$ via $U.2$ and $G$, and the compatible maps form one orbit under table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sfuss2:= PossibleClassFusions( s, s2 );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( s2fust2, sfuss2 );;|
  !gapprompt@gap>| !gapinput@tfust2:= PossibleClassFusions( t, t2 );;|
  !gapprompt@gap>| !gapinput@filt:= Filtered( sfust, map -> ForAny( tfust2,|
  !gapprompt@>| !gapinput@              map2 -> CompositionMaps( map2, map ) in comp ) );;|
  !gapprompt@gap>| !gapinput@Length( filt );|
  12
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s, filt, t ) );|
  1
\end{Verbatim}
 

 Let us see which classes of $U$ and $G$ are involved in the disambiguation of the class fusion. The ``good'' fusion candidates differ from the excluded ones on the classes at the
positions $31$ to $36$: Under all possible class fusions, two pairs of classes are mapped to the
classes $81$ and $82$ of $G$; from these classes, the excluded maps fuse classes at odd positions with
classes at even positions, whereas the ``good'' class fusions do not have this property. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Set( filt, x -> x{ [ 31 .. 36 ] } );|
  [ [ 74, 74, 81, 82, 81, 82 ], [ 74, 74, 82, 81, 82, 81 ], 
    [ 81, 82, 74, 74, 81, 82 ], [ 81, 82, 81, 82, 74, 74 ], 
    [ 82, 81, 74, 74, 82, 81 ], [ 82, 81, 82, 81, 74, 74 ] ]
  !gapprompt@gap>| !gapinput@Set( Difference( sfust, filt ), x -> x{ [ 31 .. 36 ] } );|
  [ [ 74, 74, 81, 82, 82, 81 ], [ 74, 74, 82, 81, 81, 82 ], 
    [ 81, 82, 74, 74, 82, 81 ], [ 81, 82, 82, 81, 74, 74 ], 
    [ 82, 81, 74, 74, 81, 82 ], [ 82, 81, 81, 82, 74, 74 ] ]
\end{Verbatim}
 

 None of the possible class fusions from $U$ to $U.2$ fuses classes at odd positions in the interval from $31$ to $36$ with classes at even positions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Set( sfuss2, x -> x{ [ 31 .. 36 ] } );|
  [ [ 28, 29, 30, 31, 30, 31 ], [ 29, 28, 31, 30, 31, 30 ], 
    [ 30, 31, 28, 29, 30, 31 ], [ 30, 31, 30, 31, 28, 29 ], 
    [ 31, 30, 29, 28, 31, 30 ], [ 31, 30, 31, 30, 29, 28 ] ]
\end{Verbatim}
 

 This suffices to exclude the ``bad'' fusion candidates because no further fusion of the relevant classes of $G$ happens in $G.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( tfust2, x -> x{ [ 74, 81, 82 ] } );|
  [ [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ], 
    [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ], 
    [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ] ]
\end{Verbatim}
 

 (The same holds for the fusion of the relevant classes of $U.2$ in $G.2$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( s2fust2, x -> x{ [ 28 .. 31 ] } );|
  [ [ 65, 65, 70, 71 ], [ 65, 65, 71, 70 ] ]
\end{Verbatim}
 

 Finally, we check that a correct map is stored on the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) in filt;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_3(4).2_1 \rightarrow U_6(2)$ (December 2010)}}\label{subsect:L3421-in-U62}
\logpage{[ 9, 5, 2 ]}
\hyperdef{L}{X81B37EF378E89E00}{}
{
  According to the \textsf{Atlas} (see{\nobreakspace}\cite[p. 115]{CCN85}), the group $G = U_6(2)$ contains a maximal subgroup $U$ of the type $L_3(4).2_1$. The class fusion of $U$ into $G$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L3(4).2_1" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U6(2)" );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@Length( sfust );|
  27
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s, sfust, t ) );|
  3
\end{Verbatim}
 

 In the automorphic extension $G.3 = U_6(2).3$ of $G$, the subgroup $U$ extends to a group $U.3$ of the type $L_3(4).6$ (again, see {\nobreakspace}\cite[p. 115]{CCN85}). The class fusion of $U.3$ into $G.3$ is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s3:= CharacterTable( "L3(4).6" );;|
  !gapprompt@gap>| !gapinput@t3:= CharacterTable( "U6(2).3" );;|
  !gapprompt@gap>| !gapinput@s3fust3:= PossibleClassFusions( s3, t3 );;|
  !gapprompt@gap>| !gapinput@Length( s3fust3 );|
  2
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s3, s3fust3, t3 ) );|
  1
\end{Verbatim}
 

 Here the argument used in Section{\nobreakspace}\ref{subsect:u383to2e62} does not work, because all possible class fusions from $U$ into $G$ are compatible with the embeddings of $U$ into $G.3$ via $U.3$ and $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sfuss3:= PossibleClassFusions( s, s3 );;|
  !gapprompt@gap>| !gapinput@comp:= SetOfComposedClassFusions( s3fust3, sfuss3 );;|
  !gapprompt@gap>| !gapinput@tfust3:= PossibleClassFusions( t, t3 );;|
  !gapprompt@gap>| !gapinput@sfust = Filtered( sfust, map -> ForAny( tfust3,|
  !gapprompt@>| !gapinput@               map2 -> CompositionMaps( map2, map ) in comp ) );|
  true
\end{Verbatim}
 

 Consider the elements of order four in $U$. There are three such classes inside $U^{\prime} \cong L_3(4)$, which fuse to one class of $U.3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( s );|
  [ 1, 2, 3, 4, 4, 4, 5, 7, 2, 4, 6, 8, 8, 8 ]
  !gapprompt@gap>| !gapinput@sfuss3;|
  [ [ 1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 10, 10, 10 ] ]
\end{Verbatim}
 

 These classes of $U$ fuse into some of the classes $10$ to $12$ of $G$. In $G.3$, these three classes fuse into one class. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Set( sfust, map -> map{ [ 4 .. 6 ] } );|
  [ [ 10, 10, 10 ], [ 10, 10, 11 ], [ 10, 10, 12 ], [ 10, 11, 10 ], 
    [ 10, 11, 11 ], [ 10, 11, 12 ], [ 10, 12, 10 ], [ 10, 12, 11 ], 
    [ 10, 12, 12 ], [ 11, 10, 10 ], [ 11, 10, 11 ], [ 11, 10, 12 ], 
    [ 11, 11, 10 ], [ 11, 11, 11 ], [ 11, 11, 12 ], [ 11, 12, 10 ], 
    [ 11, 12, 11 ], [ 11, 12, 12 ], [ 12, 10, 10 ], [ 12, 10, 11 ], 
    [ 12, 10, 12 ], [ 12, 11, 10 ], [ 12, 11, 11 ], [ 12, 11, 12 ], 
    [ 12, 12, 10 ], [ 12, 12, 11 ], [ 12, 12, 12 ] ]
  !gapprompt@gap>| !gapinput@Set( tfust3, map -> map{ [ 10 .. 12 ] } );|
  [ [ 10, 10, 10 ] ]
\end{Verbatim}
 

 This means that the automorphism $\alpha$ of $G$ that is induced by the action of $G.3$ permutes the classes $10$ to $12$ of $G$ transitively. The fact that $U$ extends to $U.3$ in $G.3$ means that $U$ is invariant under $\alpha$. This implies that $U$ contains either no elements from the classes $10$ to $12$ or elements from all of these classes. The possible class fusions from $U$ to $G$ satisfying this condition form one orbit under table automprhisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Filtered( sfust, map -> Intersection( map, [ 10 .. 12 ] ) = [] );|
  [  ]
  !gapprompt@gap>| !gapinput@filt:= Filtered( sfust, map -> IsSubset( map, [ 10 .. 12 ] ) );|
  [ [ 1, 3, 7, 10, 11, 12, 15, 24, 4, 14, 23, 26, 27, 28 ], 
    [ 1, 3, 7, 10, 12, 11, 15, 24, 4, 14, 23, 26, 28, 27 ], 
    [ 1, 3, 7, 11, 10, 12, 15, 24, 4, 14, 23, 27, 26, 28 ], 
    [ 1, 3, 7, 11, 12, 10, 15, 24, 4, 14, 23, 27, 28, 26 ], 
    [ 1, 3, 7, 12, 10, 11, 15, 24, 4, 14, 23, 28, 26, 27 ], 
    [ 1, 3, 7, 12, 11, 10, 15, 24, 4, 14, 23, 28, 27, 26 ] ]
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( s, filt, t ) );|
  1
\end{Verbatim}
 

 Finally, we check that a correct map is stored on the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) in filt;|
  true
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Conditions Imposed by Brauer Tables}}\label{sect:Conditions Imposed by Brauer Tables}
\logpage{[ 9, 6, 0 ]}
\hyperdef{L}{X85E2A6F480026C95}{}
{
  The examples in this section show that symmetries can be broken as soon as the
class fusions between two ordinary tables shall be compatible with the
corresponding Brauer character tables. More precisely, we assume that the
class fusion from each Brauer table to its ordinary table is already fixed;
choosing these fusions consistently can be a nontrivial task, solving
so-called ``generality problems'' may require the construction of certain modules, similar to the arguments used
in{\nobreakspace}\ref{subsect:generality} below.  
\subsection{\textcolor{Chapter }{$L_2(16).4 \rightarrow J_3.2$ (January{\nobreakspace}2004)}}\label{subsect:L2(16).4_in_J3.2}
\logpage{[ 9, 6, 1 ]}
\hyperdef{L}{X7ACC7F588213D5D5}{}
{
  It can happen that Brauer tables decide ambiguities of class fusions between
the corresponding ordinary tables. An easy example is the class fusion of $L_2(16).4$ into $J_3.2$. The ordinary tables admit four possible class fusions, of which two are
essentially different. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(16).4" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J3.2" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, t );|
  [ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ], 
    [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ], 
    [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ], 
    [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]
  !gapprompt@gap>| !gapinput@RepresentativesFusions( s, fus, t );|
  [ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ], 
    [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]
\end{Verbatim}
 

 Using Brauer tables, we will see that just one fusion is admissible. 

 We can exclude two possible fusions by the fact that their images all lie
inside the normal subgroup $J_3$, but $J_3$ does not contain a subgroup of type $L_2(16).4$; so still one orbit of length two remains. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@j3:= CharacterTable( "J3" );;|
  !gapprompt@gap>| !gapinput@PossibleClassFusions( s, j3 );|
  [  ]
  !gapprompt@gap>| !gapinput@GetFusionMap( j3, t );|
  [ 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 14, 15, 16, 
    17, 17 ]
  !gapprompt@gap>| !gapinput@filt:= Filtered( fus,|
  !gapprompt@>| !gapinput@         x -> not IsSubset( ClassPositionsOfDerivedSubgroup( t ), x ) );|
  [ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ], 
    [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]
\end{Verbatim}
 

 Now the remaining wrong fusion is excluded by the fact that the table
automorphism of $J_3.2$ that swaps the two classes of element order $17$ {\textendash}which swaps two of the possible class fusions{\textendash} does
not live in the $2$-modular table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@smod2:= s mod 2;;|
  !gapprompt@gap>| !gapinput@tmod2:= t mod 2;;|
  !gapprompt@gap>| !gapinput@admissible:= [];;|
  !gapprompt@gap>| !gapinput@for map in filt do|
  !gapprompt@>| !gapinput@     modmap:= CompositionMaps( InverseMap( GetFusionMap( tmod2, t ) ),|
  !gapprompt@>| !gapinput@                  CompositionMaps( map, GetFusionMap( smod2, s ) ) );|
  !gapprompt@>| !gapinput@     if not fail in Decomposition( Irr( smod2 ),|
  !gapprompt@>| !gapinput@           List( Irr( tmod2 ), chi -> chi{ modmap } ), "nonnegative" ) then|
  !gapprompt@>| !gapinput@       AddSet( admissible, map );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@admissible;|
  [ [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]
\end{Verbatim}
 

 The test of all available Brauer tables is implemented in the function \texttt{CTblLib.Test.Decompositions} of the \textsf{GAP} Character Table Library (\cite{CTblLib}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CTblLib.Test.Decompositions( s, fus, t ) = admissible;|
  true
\end{Verbatim}
 

 We see that $p$-modular tables alone determine the class fusion uniquely; in fact the primes $2$ and $3$ suffice for that. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) in admissible;|
  true
\end{Verbatim}
 

 \emph{Remark:} 

 In May{\nobreakspace}2015, the $19$-modular character table of $J_3$ has been corrected, by swapping the two classes of element order $17$. Since the class fusion of $L_2(16).4$ into $J_3.2$ is uniquely determined by the $2$-modular tables of $L_2(16).4$ and $J_3.2$ and since this class fusion has been compatible with the previous version of
the $19$-modular table of $J_3$, the correction does not affect the above arguments. }

  
\subsection{\textcolor{Chapter }{$L_2(17) \rightarrow S_8(2)$ (July 2004)}}\label{subsect:L2(17)_in_S8(2)}
\logpage{[ 9, 6, 2 ]}
\hyperdef{L}{X7ACB86CB82ED49D1}{}
{
  The class fusion of the maximal subgroup $M \cong L_2(17)$ of $G = S_8(2)$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "L2(17)" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S8(2)" );;|
  !gapprompt@gap>| !gapinput@mfust:= PossibleClassFusions( m, t );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( m, mfust, t ) );|
  4
\end{Verbatim}
 

 The Brauer tables for $M$ and $G$ determine the class fusion up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= CTblLib.Test.Decompositions( m, mfust, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( m, filt, t );;|
  !gapprompt@gap>| !gapinput@Length( repr );|
  1
  !gapprompt@gap>| !gapinput@GetFusionMap( m, t ) in repr;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_2(19) \rightarrow J_3$ (April 2003)}}\label{subsect:generality}
\logpage{[ 9, 6, 3 ]}
\hyperdef{L}{X7DED4C437D479226}{}
{
  It can happen that Brauer tables impose conditions such that ambiguities arise
which are not visible if one considers only ordinary tables. 

 The class fusion between the ordinary character tables of $L_2(19)$ and $J_3$ is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(19)" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J3" );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );|
  [ [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 20, 21 ], 
    [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 21, 20 ], 
    [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ], 
    [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 21, 20 ], 
    [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ], 
    [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 21, 20 ], 
    [ 1, 2, 4, 7, 6, 10, 11, 12, 14, 13, 20, 21 ], 
    [ 1, 2, 4, 7, 6, 10, 11, 12, 14, 13, 21, 20 ], 
    [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 20, 21 ], 
    [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 21, 20 ], 
    [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 20, 21 ], 
    [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 21, 20 ] ]
  !gapprompt@gap>| !gapinput@fusreps:= RepresentativesFusions( s, sfust, t );|
  [ [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 20, 21 ] ]
\end{Verbatim}
 

 The Galois automorphism that permutes the three classes of element order $9$ in the tables of ($L_2(19)$ and) $J_3$ does not live in characteristic $19$. For example, the unique irreducible Brauer character of degree $110$ in the $19$-modular table of $J_3$ is $\varphi_3$, and the value of this character on the class \texttt{9A} is \texttt{-1+2y9+\&4}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tmod19:= t mod 19;|
  BrauerTable( "J3", 19 )
  !gapprompt@gap>| !gapinput@deg110:= Filtered( Irr( tmod19 ), phi -> phi[1] = 110 );|
  [ Character( BrauerTable( "J3", 19 ),
    [ 110, -2, 5, 2, 2, 0, 0, 1, 0, 
        -2*E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6-2*E(9)^7, 
        E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6+E(9)^7, 
        E(9)^2+E(9)^3+2*E(9)^4+2*E(9)^5+E(9)^6+E(9)^7, -2, -2, -1, 0, 
        0, E(17)^3+E(17)^5+E(17)^6+E(17)^7+E(17)^10+E(17)^11+E(17)^12
           +E(17)^14, 
        E(17)+E(17)^2+E(17)^4+E(17)^8+E(17)^9+E(17)^13+E(17)^15+E(17)^16
       ] ) ]
  !gapprompt@gap>| !gapinput@9A:= Position( OrdersClassRepresentatives( tmod19 ), 9 );|
  10
  !gapprompt@gap>| !gapinput@deg110[1][ 9A ];|
  -2*E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6-2*E(9)^7
  !gapprompt@gap>| !gapinput@AtlasIrrationality( "-1+2y9+&4" ) = deg110[1][ 9A ];|
  true
\end{Verbatim}
 

 It turns out that four of the twelve possible class fusions are not compatible
with the $19$-modular tables. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@smod19:= s mod 19;|
  BrauerTable( "L2(19)", 19 )
  !gapprompt@gap>| !gapinput@compatible:= [];;|
  !gapprompt@gap>| !gapinput@for map in sfust do|
  !gapprompt@>| !gapinput@     comp:= CompositionMaps( InverseMap( GetFusionMap( tmod19, t ) ),|
  !gapprompt@>| !gapinput@     CompositionMaps( map, GetFusionMap( smod19, s ) ) );|
  !gapprompt@>| !gapinput@     rest:= List( Irr( tmod19 ), phi -> phi{ comp } );|
  !gapprompt@>| !gapinput@     if not fail in Decomposition( Irr( smod19 ), rest, "nonnegative" ) then|
  !gapprompt@>| !gapinput@       Add( compatible, map );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@compatible;|
  [ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ], 
    [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 21, 20 ], 
    [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ], 
    [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 21, 20 ], 
    [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 20, 21 ], 
    [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 21, 20 ], 
    [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 20, 21 ], 
    [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 21, 20 ] ]
\end{Verbatim}
 

 Moreover, the subgroups of those table automorphisms of the ordinary tables
that leave the set of compatible fusions invariant make two orbits on this
set. Indeed, the two orbits belong to essentially different decompositions of
the restriction of $\varphi_3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@reps:= RepresentativesFusions( s, compatible, t );|
  [ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ], 
    [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ] ]
  !gapprompt@gap>| !gapinput@compatiblemod19:= List( reps, map -> CompositionMaps(|
  !gapprompt@>| !gapinput@       InverseMap( GetFusionMap( tmod19, t ) ),|
  !gapprompt@>| !gapinput@       CompositionMaps( map, GetFusionMap( smod19, s ) ) ) );|
  [ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14 ], 
    [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14 ] ]
  !gapprompt@gap>| !gapinput@rest:= List( compatiblemod19, map -> Irr( tmod19 )[3]{ map } );;|
  !gapprompt@gap>| !gapinput@dec:= Decomposition( Irr( smod19 ), rest, "nonnegative" );|
  [ [ 0, 0, 1, 2, 1, 2, 2, 1, 0, 1 ], [ 0, 2, 0, 2, 0, 1, 2, 0, 2, 1 ] ]
  !gapprompt@gap>| !gapinput@List( Irr( smod19 ), phi -> phi[1] );|
  [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 ]
\end{Verbatim}
 

 In order to decide which class fusion is correct, we take the matrix
representation of $J_3$ that affords $\varphi_3$, restrict it to $L_2(19)$, which is the second maximal subgroup of $J_3$, and compute the composition factors. For that, we use a representation from
the \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3}, and access it via the \textsf{GAP} package \textsf{AtlasRep} (\cite{AtlasRep}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "atlasrep", false );|
  true
  !gapprompt@gap>| !gapinput@prog:= AtlasProgram( "J3", "maxes", 2 );|
  rec( groupname := "J3", identifier := [ "J3", "J3G1-max2W1", 1 ], 
    program := <straight line program>, size := 3420, 
    standardization := 1, subgroupname := "L2(19)", version := "1" )
  !gapprompt@gap>| !gapinput@gens:= OneAtlasGeneratingSetInfo( "J3", Characteristic, 19,|
  !gapprompt@>| !gapinput@              Dimension, 110 );;|
  !gapprompt@gap>| !gapinput@gens:= AtlasGenerators( gens );|
  rec( contents := "core", dim := 110, 
    generators := [ < immutable compressed matrix 110x110 over GF(19) >,
        < immutable compressed matrix 110x110 over GF(19) > ], 
    groupname := "J3", id := "", 
    identifier := [ "J3", [ "J3G1-f19r110B0.m1", "J3G1-f19r110B0.m2" ], 
        1, 19 ], repname := "J3G1-f19r110B0", repnr := 35, 
    ring := GF(19), size := 50232960, standardization := 1, 
    type := "matff" )
  !gapprompt@gap>| !gapinput@restgens:= ResultOfStraightLineProgram( prog.program, gens.generators );|
  [ < immutable compressed matrix 110x110 over GF(19) >, 
    < immutable compressed matrix 110x110 over GF(19) > ]
  !gapprompt@gap>| !gapinput@module:= GModuleByMats( restgens, GF( 19 ) );;|
  !gapprompt@gap>| !gapinput@facts:= SMTX.CollectedFactors( module );;|
  !gapprompt@gap>| !gapinput@Length( facts );|
  7
  !gapprompt@gap>| !gapinput@List( facts, x -> x[1].dimension );|
  [ 5, 7, 9, 11, 13, 15, 19 ]
  !gapprompt@gap>| !gapinput@List( facts, x -> x[2] );|
  [ 1, 2, 1, 2, 2, 1, 1 ]
\end{Verbatim}
 

 This means that there are seven pairwise nonisomorphic composition factors,
the smallest one of dimension five. In other words, the first of the two maps
is the correct one. Let us check whether this map equals the one that is
stored on the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) = reps[1];|
  true
\end{Verbatim}
 

 \emph{Remark:} 

 In May{\nobreakspace}2015, the $19$-modular character table of $J_3$ has been corrected, by swapping the two classes of element order $17$. This affects the above computations only in one place, where the values of
the character \texttt{deg110} are shown. }

 }

  
\section{\textcolor{Chapter }{Fusions Determined by Information about the Groups}}\label{sect:Fusions Determined by Information about the Groups}
\logpage{[ 9, 7, 0 ]}
\hyperdef{L}{X8225D9FA80A7D20F}{}
{
  In the examples in this section, character theoretic arguments do not suffice
for determining the class fusions. So we use computations with the groups in
question or information about these groups beyond the character table, and
perhaps additionally character theoretic arguments. 

 The group representations are taken from the \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3} and are accessed via the \textsf{GAP} package \textsf{AtlasRep} (\cite{AtlasRep}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "atlasrep", false );|
  true
\end{Verbatim}
    
\subsection{\textcolor{Chapter }{$U_3(3).2 \rightarrow Fi_{24}^{\prime}$ (November 2002)}}\label{subsect:U3(3).2_in_Fi24'}
\logpage{[ 9, 7, 1 ]}
\hyperdef{L}{X7AE2962E82B4C814}{}
{
  

 The group $G = Fi_{24}^{\prime}$ contains a maximal subgroup $H$ of type $U_3(3).2$. From the character tables of $G$ and $H$, one gets a lot of essentially different possibilities (and additionally this
takes quite some time). We use the description of $H$ as the normalizer in $G$ of a $U_3(3)$ type subgroup containing elements in the classes \texttt{2B}, \texttt{3D}, \texttt{3E}, \texttt{4C}, \texttt{4C}, \texttt{6J}, \texttt{7B}, \texttt{8C}, and \texttt{12M} (see{\nobreakspace}\cite{BN95}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "F3+" );|
  CharacterTable( "F3+" )
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "U3(3).2" );|
  CharacterTable( "U3(3).2" )
  !gapprompt@gap>| !gapinput@tnames:= ClassNames( t, "ATLAS" );|
  [ "1A", "2A", "2B", "3A", "3B", "3C", "3D", "3E", "4A", "4B", "4C", 
    "5A", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", 
    "6K", "7A", "7B", "8A", "8B", "8C", "9A", "9B", "9C", "9D", "9E", 
    "9F", "10A", "10B", "11A", "12A", "12B", "12C", "12D", "12E", 
    "12F", "12G", "12H", "12I", "12J", "12K", "12L", "12M", "13A", 
    "14A", "14B", "15A", "15B", "15C", "16A", "17A", "18A", "18B", 
    "18C", "18D", "18E", "18F", "18G", "18H", "20A", "20B", "21A", 
    "21B", "21C", "21D", "22A", "23A", "23B", "24A", "24B", "24C", 
    "24D", "24E", "24F", "24G", "26A", "27A", "27B", "27C", "28A", 
    "29A", "29B", "30A", "30B", "33A", "33B", "35A", "36A", "36B", 
    "36C", "36D", "39A", "39B", "39C", "39D", "42A", "42B", "42C", 
    "45A", "45B", "60A" ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( s );|
  [ 1, 2, 3, 3, 4, 4, 6, 7, 8, 12, 2, 4, 6, 8, 12, 12 ]
  !gapprompt@gap>| !gapinput@sfust:= List( [ "1A", "2B", "3D", "3E", "4C", "4C", "6J", "7B", "8C",|
  !gapprompt@>| !gapinput@                   "12M" ], x -> Position( tnames, x ) );|
  [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50 ]
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t, rec( fusionmap:= sfust ) );|
  [ [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50, 3, 9, 23, 28, 43, 43 ], 
    [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50, 3, 11, 23, 28, 50, 50 ] ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( s );|
  [ 1, 2, 3, 3, 4, 4, 6, 7, 8, 12, 2, 4, 6, 8, 12, 12 ]
\end{Verbatim}
 

 So we still have two possibilities, which differ on the outer classes of
element order $4$ and $12$. 

 Our idea is to take a subgroup $U$ of $H$ that contains such elements, and to compute the possible class fusions of $U$ into $G$, via the factorization through a suitable maximal subgroup $M$ of $G$. 

 We take $U = N_H(\langle g \rangle)$ where $g$ is an element in the first class of order three elements of $H$; this is a maximal subgroup of $H$, of order $216$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maxes( s );|
  [ "U3(3)", "3^(1+2):SD16", "L3(2).2", "2^(1+4).S3", "4^2:D12" ]
  !gapprompt@gap>| !gapinput@SizesCentralizers( s );|
  [ 12096, 192, 216, 18, 96, 32, 24, 7, 8, 12, 48, 48, 6, 8, 12, 12 ]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( Maxes( s )[2] );;|
  !gapprompt@gap>| !gapinput@ufuss:= GetFusionMap( u, s );|
  [ 1, 2, 11, 3, 4, 5, 12, 7, 13, 9, 9, 15, 16, 10 ]
\end{Verbatim}
 

 Candidates for $M$ are those subgroups of $G$ that contain elements in the class \texttt{3D} of $G$ whose centralizer is the full \texttt{3D} centralizer in $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@3Dcentralizer:= SizesCentralizers( t )[7];|
  153055008
  !gapprompt@gap>| !gapinput@cand:= [];;                                                               |
  !gapprompt@gap>| !gapinput@for name in Maxes( t ) do|
  !gapprompt@>| !gapinput@     m:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     mfust:= GetFusionMap( m, t );        |
  !gapprompt@>| !gapinput@     if ForAny( [ 1 .. Length( mfust ) ],                    |
  !gapprompt@>| !gapinput@         i -> mfust[i] = 7 and SizesCentralizers( m )[i] = 3Dcentralizer )   |
  !gapprompt@>| !gapinput@     then|
  !gapprompt@>| !gapinput@       Add( cand, m );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@cand;|
  [ CharacterTable( "3^7.O7(3)" ), 
    CharacterTable( "3^2.3^4.3^8.(A5x2A4).2" ) ]
\end{Verbatim}
 

 For these two groups $M$, we show that the possible class fusions from $U$ to $G$ via $M$ factorize through $H$ only if the second possible class fusion from $H$ to $G$ is chosen. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@possufust:= List( sfust, x -> CompositionMaps( x, ufuss ) );|
  [ [ 1, 3, 3, 7, 8, 11, 9, 22, 23, 28, 28, 43, 43, 50 ], 
    [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ]
  !gapprompt@gap>| !gapinput@m:= cand[1];;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( u, m );;|
  !gapprompt@gap>| !gapinput@Length( ufusm );|
  242
  !gapprompt@gap>| !gapinput@comp:= List( ufusm, x -> CompositionMaps( GetFusionMap( m, t ), x ) );;|
  !gapprompt@gap>| !gapinput@Intersection( possufust, comp );|
  [ [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ]
  !gapprompt@gap>| !gapinput@m:= cand[2];;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( u, m );;|
  !gapprompt@gap>| !gapinput@Length( ufusm );                        |
  256
  !gapprompt@gap>| !gapinput@comp:= List( ufusm, x -> CompositionMaps( GetFusionMap( m, t ), x ) );;   |
  !gapprompt@gap>| !gapinput@Intersection( possufust, comp );|
  [ [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ]
\end{Verbatim}
 

 Finally, we check that the correct fusion is stored in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) = sfust[2];|
  true
\end{Verbatim}
     }

  
\subsection{\textcolor{Chapter }{$L_2(13).2 \rightarrow Fi_{24}^{\prime}$ (September 2002)}}\label{subsect:L2(13).2_in_Fi24'}
\logpage{[ 9, 7, 2 ]}
\hyperdef{L}{X83061094871EE241}{}
{
  The class fusion of maximal subgroups $U$ of type $L_2(13).2$ in $G = Fi_{24}^{\prime}$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "F3+" );;|
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "L2(13).2" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( u, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( u, fus, t );;|
  !gapprompt@gap>| !gapinput@Length( repr );|
  3
\end{Verbatim}
 

 In{\nobreakspace}\cite[p. 155]{LW91}, it is stated that $U^{\prime}$ contains elements in the classes \texttt{2B}, \texttt{3D}, and \texttt{7B} of $G$. (Note that the two conjugacy classes of groups isomorphic to $U$ have the same class fusion because the outer automorphism of $G$ fixes the relevant classes.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( repr, x -> t.2b in x and t.3d in x and t.7b in x );|
  [ [ 1, 3, 7, 22, 25, 25, 25, 51, 3, 9, 43, 43, 53, 53, 53 ], 
    [ 1, 3, 7, 22, 25, 25, 25, 51, 3, 11, 50, 50, 53, 53, 53 ] ]
  !gapprompt@gap>| !gapinput@ClassNames( t ){ [ 43, 50 ] };|
  [ "12f", "12m" ]
\end{Verbatim}
 

 So we have to decide whether $U$ contains elements in the class \texttt{12F} or in \texttt{12M} of $G$. 

 The order $12$ elements in question lie inside subgroups of type $13 : 12$ in $U$. These subgroups are clearly contained in the Sylow $13$ normalizers of $G$, which are contained in maximal subgroups of type $(3^2:2 \times G_2(3)).2$ in $G$; the class fusion of the latter groups is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos:= Position( OrdersClassRepresentatives( t ), 13 );|
  51
  !gapprompt@gap>| !gapinput@SizesCentralizers( t )[ pos ];|
  234
  !gapprompt@gap>| !gapinput@ClassOrbit( t, pos );|
  [ 51 ]
  !gapprompt@gap>| !gapinput@cand:= [];;                                                         |
  !gapprompt@gap>| !gapinput@for name in Maxes( t ) do|
  !gapprompt@>| !gapinput@     m:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     pos:= Position( OrdersClassRepresentatives( m ), 13 );|
  !gapprompt@>| !gapinput@     if pos <> fail and                                             |
  !gapprompt@>| !gapinput@        SizesCentralizers( m )[ pos ] = 234                         |
  !gapprompt@>| !gapinput@        and ClassOrbit( m, pos ) = [ pos ] then|
  !gapprompt@>| !gapinput@       Add( cand, m );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@cand;|
  [ CharacterTable( "(3^2:2xG2(3)).2" ) ]
  !gapprompt@gap>| !gapinput@s:= cand[1];;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
\end{Verbatim}
 

 As no $13:12$ type subgroup is contained in the derived subgroup of $(3^2:2 \times G_2(3)).2$, we look at the elements of order $12$ in the outer half. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@der:= ClassPositionsOfDerivedSubgroup( s );;|
  !gapprompt@gap>| !gapinput@outer:= Difference( [ 1 .. NrConjugacyClasses( s ) ], der );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@imgs:= Set( Flat( List( sfust, x -> x{ outer } ) ) );|
  [ 2, 3, 10, 11, 15, 17, 18, 19, 21, 22, 26, 44, 45, 49, 50, 52, 62, 
    83, 87, 98 ]
  !gapprompt@gap>| !gapinput@t.12f in imgs;|
  false
  !gapprompt@gap>| !gapinput@t.12m in imgs;|
  true
\end{Verbatim}
 

 So $L_2(13).2 \setminus L_2(13)$ does not contain \texttt{12F} elements of $G$, i.{\nobreakspace}e., we have determined the class fusion of $U$ in $G$. 

 Finally, we check whether the correct fusion is stored in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( u, t ) = filt[2];|
  true
\end{Verbatim}
 }

        
\subsection{\textcolor{Chapter }{$M_{11} \rightarrow B$ (April 2009)}}\label{subsect:M11fusB}
\logpage{[ 9, 7, 3 ]}
\hyperdef{L}{X7E9C203C7C4D709D}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $M$ of the type $M_{11}$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@m11:= CharacterTable( "M11" );;|
  !gapprompt@gap>| !gapinput@m11fusb:= PossibleClassFusions( m11, b );;|
  !gapprompt@gap>| !gapinput@Length( m11fusb );|
  31
  !gapprompt@gap>| !gapinput@CompositionMaps( ClassNames( b, "ATLAS" ), Parametrized( m11fusb ) );|
  [ "1A", [ "2B", "2D" ], [ "3A", "3B" ], 
    [ "4B", "4E", "4G", "4H", "4J" ], [ "5A", "5B" ], 
    [ "6C", "6E", "6H", "6I", "6J" ], 
    [ "8B", "8E", "8G", "8J", "8K", "8L", "8M", "8N" ], 
    [ "8B", "8E", "8G", "8J", "8K", "8L", "8M", "8N" ], "11A", "11A" ]
\end{Verbatim}
 

 According to{\nobreakspace}\cite[Thm. 12.1]{Wil93a}, $M$ contains no \texttt{5A} elements of $B$. By the proof of{\nobreakspace}\cite[Prop. 4.1]{Wil99}, the involutions in any $S_5$ type subgroup $U$ of $M$ lie in the class \texttt{2C} or \texttt{2D} of $B$, and since the possible class fusions of $M$ computed above admit only involutions in the class \texttt{2B} or \texttt{2D}, all involutions of $U$ lie in the class \texttt{2D}. Again by the proof of{\nobreakspace}\cite[Prop. 4.1]{Wil99}, $U$ is contained in a maximal subgroup of type $Th$ in $B$. 

 Now we use the embedding of $U$ into $B$ via $M$ and $Th$ for determining the class fusion of $M$ into $B$. The class fusion of the embedding of $U$ via $Th$ is uniquely determined. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@th:= CharacterTable( "Th" );;|
  !gapprompt@gap>| !gapinput@s5:= CharacterTable( "S5" );;|
  !gapprompt@gap>| !gapinput@s5fusth:= PossibleClassFusions( s5, th );|
  [ [ 1, 2, 4, 8, 2, 7, 11 ] ]
  !gapprompt@gap>| !gapinput@thfusb:= PossibleClassFusions( th, b );;|
  !gapprompt@gap>| !gapinput@s5fusb:= Set( thfusb, x -> CompositionMaps( x, s5fusth[1] ) );|
  [ [ 1, 5, 7, 19, 5, 17, 29 ] ]
\end{Verbatim}
 

 Also the class fusion of $U$ into $M$ is unique, and this determines the class fusion of $M$ into $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s5fusm11:= PossibleClassFusions( s5, m11 );|
  [ [ 1, 2, 3, 5, 2, 4, 6 ] ]
  !gapprompt@gap>| !gapinput@m11fusb:= Filtered( m11fusb,|
  !gapprompt@>| !gapinput@                 map -> CompositionMaps( map, s5fusm11[1] ) = s5fusb[1] );|
  [ [ 1, 5, 7, 17, 19, 29, 45, 45, 54, 54 ] ]
  !gapprompt@gap>| !gapinput@CompositionMaps( ClassNames( b, "ATLAS" ), m11fusb[1] );|
  [ "1A", "2D", "3B", "4J", "5B", "6J", "8N", "8N", "11A", "11A" ]
\end{Verbatim}
 

 (Using the information that the $M_{10}$ type subgroups of $M$ are also contained in $Th$ type subgroups would not have helped us, since these subgroups do not contain
elements of order $6$, and two possibilities would have remained.) }

  
\subsection{\textcolor{Chapter }{$L_2(11):2 \rightarrow B$ (April 2009)}}\label{subsect:L2(11):2_in_B}
\logpage{[ 9, 7, 4 ]}
\hyperdef{L}{X85821D748716DC7E}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $L$ of the type $L_2(11):2$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@l:= CharacterTable( "L2(11).2" );;|
  !gapprompt@gap>| !gapinput@lfusb:= PossibleClassFusions( l, b );;|
  !gapprompt@gap>| !gapinput@Length( lfusb );|
  16
  !gapprompt@gap>| !gapinput@CompositionMaps( ClassNames( b, "ATLAS" ), Parametrized( lfusb ) );|
  [ "1A", [ "2B", "2D" ], [ "3A", "3B" ], [ "5A", "5B" ], 
    [ "5A", "5B" ], [ "6C", "6H", "6I", "6J" ], "11A", [ "2C", "2D" ], 
    [ "4D", "4E", "4F", "4G", "4H", "4J" ], [ "10C", "10E", "10F" ], 
    [ "10C", "10E", "10F" ], 
    [ "12E", "12F", "12H", "12I", "12J", "12L", "12N", "12P", "12Q", 
        "12R", "12S" ], 
    [ "12E", "12F", "12H", "12I", "12J", "12L", "12N", "12P", "12Q", 
        "12R", "12S" ] ]
\end{Verbatim}
 

 According to{\nobreakspace}\cite[Thm. 12.1]{Wil93a}, $L$ contains no \texttt{5A} elements of $B$. By the proof of{\nobreakspace}\cite[Prop. 4.1]{Wil99}, $B$ contains exactly one class of $L_2(11)$ type subgroups with this property. Hence the subgroup $U$ of index two in $L$ is contained in a maximal subgroup $M$ of type $M_{11}$ in $B$, whose class fusion was determined in Section{\nobreakspace}\ref{subsect:M11fusB}. 

 In the same way as we proceeded in Section{\nobreakspace}\ref{subsect:M11fusB}, we use the embedding of $U$ into $B$ via $L$ and $M$ for determining the class fusion of $L$ into $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "M11" );;|
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "L2(11)" );;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( u, m );;|
  !gapprompt@gap>| !gapinput@mfusb:= GetFusionMap( m, b );;|
  !gapprompt@gap>| !gapinput@ufusb:= Set( ufusm, x -> CompositionMaps( mfusb, x ) );|
  [ [ 1, 5, 7, 19, 19, 29, 54, 54 ] ]
  !gapprompt@gap>| !gapinput@ufusl:= PossibleClassFusions( u, l );|
  [ [ 1, 2, 3, 4, 5, 6, 7, 7 ], [ 1, 2, 3, 5, 4, 6, 7, 7 ] ]
  !gapprompt@gap>| !gapinput@lfusb:= Filtered( lfusb, |
  !gapprompt@>| !gapinput@             map2 -> ForAny( ufusl, |
  !gapprompt@>| !gapinput@                       map1 -> CompositionMaps( map2, map1 ) in ufusb ) );|
  [ [ 1, 5, 7, 19, 19, 29, 54, 5, 15, 53, 53, 73, 73 ] ]
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_3(3) \rightarrow B$ (April 2009)}}\label{subsect:L3(3)_in_B}
\logpage{[ 9, 7, 5 ]}
\hyperdef{L}{X828D81487F57D612}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $T$ of the type $L_3(3)$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "L3(3)" );;|
  !gapprompt@gap>| !gapinput@tfusb:= PossibleClassFusions( t, b );;|
  !gapprompt@gap>| !gapinput@Length( tfusb );|
  36
\end{Verbatim}
 

 According to{\nobreakspace}\cite[Section 9]{Wil99}, $T$ contains a subgroup $U$ of the type $3^2:2S_4$ that is contained also in a maximal subgroup $M$ of the type $3^2.3^3.3^6.(S_4 \times 2S_4)$. So we throw away the possible fusions from $T$ to $B$ that are not compatible with the compositions of the embeddings of $U$ into $B$ via $T$ and $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "3^2.3^3.3^6.(S4x2S4)" );;|
  !gapprompt@gap>| !gapinput@g:= PSL(3,3);;|
  !gapprompt@gap>| !gapinput@mx:= MaximalSubgroupClassReps( g );;|
  !gapprompt@gap>| !gapinput@u:= First( mx, x -> Size( x ) = 432 );;|
  !gapprompt@gap>| !gapinput@u:= CharacterTable( u );;|
  !gapprompt@gap>| !gapinput@ufusm:= PossibleClassFusions( u, m );;|
  !gapprompt@gap>| !gapinput@ufust:= PossibleClassFusions( u, t );;|
  !gapprompt@gap>| !gapinput@mfusb:= GetFusionMap( m, b );;|
  !gapprompt@gap>| !gapinput@ufusb:= Set( ufusm, map -> CompositionMaps( mfusb, map ) );;|
  !gapprompt@gap>| !gapinput@tfusb:= Filtered( tfusb, map -> ForAny( ufust,|
  !gapprompt@>| !gapinput@       map2 -> CompositionMaps( map, map2 ) in ufusb ) );;|
  !gapprompt@gap>| !gapinput@tfusb;|
  [ [ 1, 5, 6, 7, 12, 27, 41, 41, 75, 75, 75, 75 ], 
    [ 1, 5, 7, 6, 12, 28, 41, 41, 75, 75, 75, 75 ], 
    [ 1, 5, 7, 7, 12, 28, 41, 41, 75, 75, 75, 75 ], 
    [ 1, 5, 7, 7, 12, 29, 41, 41, 75, 75, 75, 75 ], 
    [ 1, 5, 7, 7, 17, 29, 45, 45, 75, 75, 75, 75 ] ]
\end{Verbatim}
 

 Now we use that $T$ does not contain \texttt{4E} elements of $B$ (again see{\nobreakspace}\cite[Section 9]{Wil99}). Thus the last of the five candidates is the correct class fusion. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ClassNames( b, "ATLAS" ){ [ 12, 17 ] };|
  [ "4E", "4J" ]
\end{Verbatim}
 

 We check that this map is stored on the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( t, b ) = tfusb[5];|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_2(17).2 \rightarrow B$ (March 2004)}}\label{subsect:L2(17).2_in_B}
\logpage{[ 9, 7, 6 ]}
\hyperdef{L}{X7B4E13337D66020F}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $U$ of the type $L_2(17).2$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "L2(17).2" );;|
  !gapprompt@gap>| !gapinput@ufusb:= PossibleClassFusions( u, b );|
  [ [ 1, 5, 7, 15, 42, 42, 47, 47, 47, 91, 4, 30, 89, 89, 89, 89, 97, 
        97, 97 ], 
    [ 1, 5, 7, 15, 44, 44, 46, 46, 46, 91, 5, 29, 90, 90, 90, 90, 96, 
        96, 96 ], 
    [ 1, 5, 7, 15, 44, 44, 47, 47, 47, 91, 5, 29, 90, 90, 90, 90, 95, 
        95, 95 ] ]
\end{Verbatim}
 

 According to{\nobreakspace}\cite[Prop. 11.1]{Wil99}, $U$ contains elements in the classes \texttt{8M} and \texttt{9A} of $B$. This determines the fusion map. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= ClassNames( b, "ATLAS" );;|
  !gapprompt@gap>| !gapinput@pos:= List( [ "8M", "9A" ], x -> Position( names, x ) );|
  [ 44, 46 ]
  !gapprompt@gap>| !gapinput@ufusb:= Filtered( ufusb, map -> IsSubset( map, pos ) );|
  [ [ 1, 5, 7, 15, 44, 44, 46, 46, 46, 91, 5, 29, 90, 90, 90, 90, 96, 
        96, 96 ] ]
\end{Verbatim}
 

 We check that this map is stored on the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( u, b ) = ufusb[1];|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_2(49).2_3 \rightarrow B$ (June 2006)}}\label{subsect:L2(49).2_3_in_B}
\logpage{[ 9, 7, 7 ]}
\hyperdef{L}{X8528432A84851F7B}{}
{
  The sporadic simple group $B$ contains a class of maximal subgroups of the type $L_2(49).2_3$ (a non-split extension of $L_2(49)$, see{\nobreakspace}\cite[Theorem 2]{Wilson93}). Let $U$ be such a subgroup. The class fusion of $U$ in $B$ is not determined by the character tables of $U$ and $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "L2(49).2_3" );;|
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@ufusb:= PossibleClassFusions( u, b );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( u, ufusb, b ) );|
  2
  !gapprompt@gap>| !gapinput@ufusb;|
  [ [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 
        128, 128, 15, 71, 71, 89, 89, 89, 89 ], 
    [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 
        128, 128, 17, 72, 72, 89, 89, 89, 89 ] ]
\end{Verbatim}
 

 We show that the fusion is determined by the embeddings of the Sylow $7$ normalizer $N$, say, of $U$ into $U$ and into the Sylow $7$ normalizer of $B$. (Note that the fusion of the latter group into $B$ has been determined in Section{\nobreakspace}\ref{subsect:BN7}.) 

 For that, we compute the character table of $N$ from a representation of $U$. Note that $U$ is a non-split extension of the simple group $L_2(49)$ by the product of a diagonal automorphism and a field automorphism.
In{\nobreakspace}\cite{Wilson93}, the structure of $N$ is described as $7^2:(3 \times Q_{16})$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= SL( 2, 49 );;|
  !gapprompt@gap>| !gapinput@gens:= GeneratorsOfGroup( g );;|
  !gapprompt@gap>| !gapinput@f:= GF(49);;|
  !gapprompt@gap>| !gapinput@mats:= List( gens, x -> IdentityMat( 4, f ) );;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( gens ) ] do|
  !gapprompt@>| !gapinput@     mats[i]{ [ 1, 2 ] }{ [ 1, 2 ] }:= gens[i];|
  !gapprompt@>| !gapinput@     mats[i]{ [ 3, 4 ] }{ [ 3, 4 ] }:= List( gens[i],|
  !gapprompt@>| !gapinput@                                             x -> List( x, y -> y^7 ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@fieldaut:= PermutationMat( (1,3)(2,4), 4, f );;|
  !gapprompt@gap>| !gapinput@diagaut:= IdentityMat( 4, f );;|
  !gapprompt@gap>| !gapinput@diagaut[1][1]:= Z(49);;|
  !gapprompt@gap>| !gapinput@diagaut[3][3]:= Z(49)^7;;|
  !gapprompt@gap>| !gapinput@g:= Group( Concatenation( mats, [ fieldaut * diagaut ] ) );;|
  !gapprompt@gap>| !gapinput@v:= [ 1, 0, 0, 0 ] * Z(7)^0;;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, v, OnLines );;|
  !gapprompt@gap>| !gapinput@act:= Action( g, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@n:= Normalizer( act, SylowSubgroup( act, 7 ) );;|
  !gapprompt@gap>| !gapinput@ntbl:= CharacterTable( n );;|
\end{Verbatim}
 

 Now we compute the possible class fusions of $N$ into $B$, via the Sylow $7$ normalizer in $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@bn7:= CharacterTable( "BN7" );;|
  !gapprompt@gap>| !gapinput@nfusbn7:= PossibleClassFusions( ntbl, bn7 );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( ntbl, nfusbn7, bn7 ) );|
  3
  !gapprompt@gap>| !gapinput@nfusb:= SetOfComposedClassFusions( PossibleClassFusions( bn7, b ),|
  !gapprompt@>| !gapinput@                                      nfusbn7 );;|
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( ntbl, nfusb, b ) );|
  5
\end{Verbatim}
 

 Although there are several possibilities, this information is enough to
exclude one of the possible fusions of $U$ into $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nfusu:= PossibleClassFusions( ntbl, u );;|
  !gapprompt@gap>| !gapinput@Length( nfusu );|
  4
  !gapprompt@gap>| !gapinput@filt:= Filtered( ufusb,|
  !gapprompt@>| !gapinput@             x -> ForAny( nfusu, y -> CompositionMaps( x, y ) in nfusb ) );|
  [ [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 
        128, 128, 17, 72, 72, 89, 89, 89, 89 ] ]
  !gapprompt@gap>| !gapinput@ClassNames( b, "ATLAS" ){ filt[1] };|
  [ "1A", "2D", "3B", "4H", "5B", "6I", "7A", "8K", "8K", "12Q", "24L", 
    "24L", "25A", "25A", "25A", "25A", "25A", "4J", "12R", "12R", 
    "16G", "16G", "16G", "16G" ]
\end{Verbatim}
 

 So the class fusion of $U$ into $B$ can be described by the property that the elements of order four inside and
outside the simple subgroup $L_2(49)$ are not conjugate in $B$. 

 We check that the correct map is stored on the library table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( u, b ) in filt;|
  true
\end{Verbatim}
   

 Let us confirm that the two groups of the types $L_2(49).2_1$ and $L_2(49).2_2$ cannot occur as subgroups of $B$. First we show that $L_2(49).2_1$ is isomorphic with PGL$(2,49)$, an extension of $L_2(49)$ by a diagonal automorphism, and $L_2(49).2_2$ is an extension by a field automorphism. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( u );  NrConjugacyClasses( act );|
  24
  24
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "L2(49).2_1" );;|
  !gapprompt@gap>| !gapinput@g:= Group( Concatenation( mats, [ diagaut ] ) );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, v, OnLines );;|
  !gapprompt@gap>| !gapinput@act:= Action( g, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@Size(act );|
  117600
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( u );  NrConjugacyClasses( act );|
  51
  51
  !gapprompt@gap>| !gapinput@u:= CharacterTable( "L2(49).2_2" );;|
  !gapprompt@gap>| !gapinput@g:= Group( Concatenation( mats, [ fieldaut ] ) );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, v, OnLines );;|
  !gapprompt@gap>| !gapinput@act:= Action( g, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( u );  NrConjugacyClasses( act );|
  27
  27
\end{Verbatim}
 

 The group $L_2(49).2_1$ can be excluded because no class fusion into $B$ is possible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleClassFusions( CharacterTable( "L2(49).2_1" ), b );|
  [  ]
\end{Verbatim}
 

 For $L_2(49).2_2$, it is not that easy. We would get several possible class fusions into $B$.   However, the Sylow $7$ normalizer of $L_2(49).2_2$ does not admit a class fusion into the Sylow $7$ normalizer of $B$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@n:= Normalizer( act, SylowSubgroup( act, 7 ) );;|
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( n ), bn7 ) );|
  0
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$2^3.L_3(2) \rightarrow G_2(5)$ (January{\nobreakspace}2004)}}\label{subsect:2^3.L3(2)_in_G2(5)}
\logpage{[ 9, 7, 8 ]}
\hyperdef{L}{X7EAD52AA7A28D956}{}
{
  The Chevalley group $G = G_2(5)$ contains a maximal subgroup $U$ of the type $2^3.L_3(2)$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "G2(5)" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "2^3.L3(2)" );;|
  !gapprompt@gap>| !gapinput@sfust:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@RepresentativesFusions( s, sfust, t );|
  [ [ 1, 2, 2, 5, 6, 4, 13, 16, 17, 15, 15 ], 
    [ 1, 2, 2, 5, 6, 4, 14, 16, 17, 15, 15 ] ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( s );|
  [ 1, 2, 2, 4, 4, 3, 6, 8, 8, 7, 7 ]
\end{Verbatim}
 

 So the question is whether $U$ contains elements in the class \texttt{6B} or \texttt{6C} of $G$ (position $13$ or $14$ in the \textsf{Atlas} table). We use a permutation representation of $G$, restrict it to $U$, and compute the centralizer in $G$ of a suitable element of order $6$ in $U$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AtlasGroup( "G2(5)" );;|
  !gapprompt@gap>| !gapinput@u:= AtlasSubgroup( "G2(5)", 7 );;|
  !gapprompt@gap>| !gapinput@Size( u );|
  1344
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     x:= Random( u );|
  !gapprompt@>| !gapinput@   until Order( x ) = 6;|
  !gapprompt@gap>| !gapinput@siz:= Size( Centralizer( g, x ) );|
  36
  !gapprompt@gap>| !gapinput@Filtered( [ 1 .. NrConjugacyClasses( t ) ],|
  !gapprompt@>| !gapinput@             i -> SizesCentralizers( t )[i] = siz );|
  [ 14 ]
\end{Verbatim}
 

 So $U$ contains \texttt{6C} elements in $G_2(5)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) in Filtered( sfust, map -> 14 in map );  |
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$5^{{1+4}}.2^{{1+4}}.A_5.4 \rightarrow B$ (April 2009)}}\label{subsect:5^{1+4}.2^{1+4}.A_5.4_in_B}
\logpage{[ 9, 7, 9 ]}
\hyperdef{L}{X79617107849A6CEA}{}
{
  The sporadic simple group $B$ contains a maximal subgroup $M$ of the type $5^{{1+4}}.2^{{1+4}}.A_5.4$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@b:= CharacterTable( "B" );;|
  !gapprompt@gap>| !gapinput@m:= CharacterTable( "5^(1+4).2^(1+4).A5.4" );;|
  !gapprompt@gap>| !gapinput@mfusb:= PossibleClassFusions( m, b );;|
  !gapprompt@gap>| !gapinput@Length( mfusb );|
  4
  !gapprompt@gap>| !gapinput@repres:= RepresentativesFusions( m, mfusb, b );; |
  !gapprompt@gap>| !gapinput@Length( repres );|
  2
\end{Verbatim}
 

 The restriction of the unique irreducible character of degree $4\,371$ distinguishes the two possibilities, 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@char:= Filtered( Irr( b ), x -> x[1] = 4371 );;|
  !gapprompt@gap>| !gapinput@Length( char );|
  1
  !gapprompt@gap>| !gapinput@rest:= List( repres, map -> char[1]{ map } );;|
  !gapprompt@gap>| !gapinput@scprs:= MatScalarProducts( m, Irr( m ), rest );;|
  !gapprompt@gap>| !gapinput@constit:= List( scprs,|
  !gapprompt@>| !gapinput@               x -> Filtered( [1 .. Length(x) ], i -> x[i] <> 0 ) );|
  [ [ 2, 27, 60, 63, 73, 74, 75, 79, 82 ], 
    [ 2, 27, 60, 63, 70, 72, 75, 79, 84 ] ]
  !gapprompt@gap>| !gapinput@List( constit, x -> List( Irr( m ){ x }, Degree ) );|
  [ [ 1, 6, 384, 480, 400, 400, 500, 1000, 1200 ], 
    [ 1, 6, 384, 480, 100, 300, 500, 1000, 1600 ] ]
\end{Verbatim}
 

 The database{\nobreakspace}\cite{AGRv3} contains the $3$-modular reduction of the irreducible representation of degree $4\,371$ and also a straight line program for restricting this representation to $M$. We access these data via the \textsf{GAP} package \textsf{AtlasRep} (see{\nobreakspace}\cite{AtlasRep}), and compute the composition factors of the natural module of this
restriction. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AtlasSubgroup( "B", Dimension, 4371, Ring, GF(3), 21 );;|
  !gapprompt@gap>| !gapinput@module:= GModuleByMats( GeneratorsOfGroup( g ), GF(3) );;|
  !gapprompt@gap>| !gapinput@dec:= MTX.CompositionFactors( module );;|
  !gapprompt@gap>| !gapinput@SortedList( List( dec, x -> x.dimension ) );|
  [ 1, 6, 100, 384, 400, 400, 400, 480, 1000, 1200 ]
\end{Verbatim}
 

  We see that exactly one ordinary constituent does not stay irreducible upon
restriction to characteristic $3$. Thus the first of the two possible class fusions is the correct one.  }

  
\subsection{\textcolor{Chapter }{The fusion from the character table of $7^2:2L_2(7).2$ into the table of marks (January{\nobreakspace}2004)}}\label{subsect:7^2:2L_2(7).2_tom}
\logpage{[ 9, 7, 10 ]}
\hyperdef{L}{X85C48EEB7B711C09}{}
{
  It can happen that the class fusion from the ordinary character table of a
group $G$ into the table of marks of $G$ is not unique up to table automorphisms of the character table of $G$. 

 As an example, consider $G = 7^2:2L_2(7).2$, a maximal subgroup in the sporadic simple group $He$. 

 $G$ contains four classes of cyclic subgroups of order $7$. One contains the elements in the normal subgroup of type $7^2$, and the other three are preimages of the order $7$ elements in the factor group $L_2(7)$. The conjugacy classes of nonidentity elements in the latter three classes
split into two Galois conjugates each, which are permuted cyclicly by the
table automorphisms of the character table of $G$, but on which the stabilizer of one class acts trivially. This means that
determining one of the three classes determines also the other two.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tbl:= CharacterTable( "7^2:2psl(2,7)" );|
  CharacterTable( "7^2:2psl(2,7)" )
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( tbl );|
  TableOfMarks( "7^2:2L2(7)" )
  !gapprompt@gap>| !gapinput@fus:= PossibleFusionsCharTableTom( tbl, tom );|
  [ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 10, 9, 16, 7, 10, 9, 8, 16 ], 
    [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 9, 8, 10, 16, 7, 8, 10, 9, 16 ], 
    [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 10, 9, 8, 16, 7, 9, 8, 10, 16 ], 
    [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ], 
    [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 10, 8, 9, 16, 7, 8, 9, 10, 16 ], 
    [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 9, 10, 8, 16, 7, 10, 8, 9, 16 ] ]
  !gapprompt@gap>| !gapinput@reps:= RepresentativesFusions( tbl, fus, Group(()) );        |
  [ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ], 
    [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 10, 9, 16, 7, 10, 9, 8, 16 ] ]
  !gapprompt@gap>| !gapinput@AutomorphismsOfTable( tbl );|
  Group([ (9,14)(10,17)(11,15)(12,16)(13,18), (7,8), (10,11,12)
    (15,16,17) ])
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( tbl );|
  [ 1, 7, 2, 4, 3, 6, 8, 8, 7, 7, 7, 7, 14, 7, 7, 7, 7, 14 ]
  !gapprompt@gap>| !gapinput@perms1:= PermCharsTom( reps[1], tom );;|
  !gapprompt@gap>| !gapinput@perms2:= PermCharsTom( reps[2], tom );;|
  !gapprompt@gap>| !gapinput@perms1 = perms2;      |
  false
  !gapprompt@gap>| !gapinput@Set( perms1 ) = Set( perms2 );|
  true
\end{Verbatim}
 

 The table of marks of $G$ does not distinguish the three classes of cyclic subgroups, there are
permutations of rows and columns that act as an $S_3$ on them. 

 Note that an $S_3$ acts on the classes in question in the \emph{rational} character table. So it is due to the irrationalities in the character table
that it contains more information. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Display( tbl );|
  7^2:2psl(2,7)
  
        2  4  .  4  3  1  1  3  3   1   .   .   .   1   1   .   .   .
        3  1  .  1  .  1  1  .  .   .   .   .   .   .   .   .   .   .
        7  3  3  1  .  .  .  .  .   2   2   2   2   1   2   2   2   2
  
          1a 7a 2a 4a 3a 6a 8a 8b  7b  7c  7d  7e 14a  7f  7g  7h  7i
       2P 1a 7a 1a 2a 3a 3a 4a 4a  7b  7c  7d  7e  7b  7f  7g  7h  7i
       3P 1a 7a 2a 4a 1a 2a 8b 8a  7f  7i  7g  7h 14b  7b  7d  7e  7c
       5P 1a 7a 2a 4a 3a 6a 8b 8a  7f  7i  7g  7h 14b  7b  7d  7e  7c
       7P 1a 1a 2a 4a 3a 6a 8a 8b  1a  1a  1a  1a  2a  1a  1a  1a  1a
      11P 1a 7a 2a 4a 3a 6a 8b 8a  7b  7c  7d  7e 14a  7f  7g  7h  7i
      13P 1a 7a 2a 4a 3a 6a 8b 8a  7f  7i  7g  7h 14b  7b  7d  7e  7c
  
  X.1      1  1  1  1  1  1  1  1   1   1   1   1   1   1   1   1   1
  X.2      3  3  3 -1  .  .  1  1   B   B   B   B   B  /B  /B  /B  /B
  X.3      3  3  3 -1  .  .  1  1  /B  /B  /B  /B  /B   B   B   B   B
  X.4      6  6  6  2  .  .  .  .  -1  -1  -1  -1  -1  -1  -1  -1  -1
  X.5      7  7  7 -1  1  1 -1 -1   .   .   .   .   .   .   .   .   .
  X.6      8  8  8  . -1 -1  .  .   1   1   1   1   1   1   1   1   1
  X.7      4  4 -4  .  1 -1  .  .  -B  -B  -B  -B   B -/B -/B -/B -/B
  X.8      4  4 -4  .  1 -1  .  . -/B -/B -/B -/B  /B  -B  -B  -B  -B
  X.9      6  6 -6  .  .  .  A -A  -1  -1  -1  -1   1  -1  -1  -1  -1
  X.10     6  6 -6  .  .  . -A  A  -1  -1  -1  -1   1  -1  -1  -1  -1
  X.11     8  8 -8  . -1  1  .  .   1   1   1   1  -1   1   1   1   1
  X.12    48 -1  .  .  .  .  .  .   6  -1  -1  -1   .   6  -1  -1  -1
  X.13    48 -1  .  .  .  .  .  .   C  -1  /C  /D   .  /C   C   D  -1
  X.14    48 -1  .  .  .  .  .  .   C  /C  /D  -1   .  /C   D  -1   C
  X.15    48 -1  .  .  .  .  .  .  /C   D  -1   C   .   C  -1  /C  /D
  X.16    48 -1  .  .  .  .  .  .   C  /D  -1  /C   .  /C  -1   C   D
  X.17    48 -1  .  .  .  .  .  .  /C   C   D  -1   .   C  /D  -1  /C
  X.18    48 -1  .  .  .  .  .  .  /C  -1   C   D   .   C  /C  /D  -1
  
        2   1
        3   .
        7   1
  
          14b
       2P  7f
       3P 14a
       5P 14a
       7P  2a
      11P 14b
      13P 14a
  
  X.1       1
  X.2      /B
  X.3       B
  X.4      -1
  X.5       .
  X.6       1
  X.7      /B
  X.8       B
  X.9       1
  X.10      1
  X.11     -1
  X.12      .
  X.13      .
  X.14      .
  X.15      .
  X.16      .
  X.17      .
  X.18      .
  
  A = E(8)-E(8)^3
    = Sqrt(2) = r2
  B = E(7)+E(7)^2+E(7)^4
    = (-1+Sqrt(-7))/2 = b7
  C = 2*E(7)+2*E(7)^2+2*E(7)^4
    = -1+Sqrt(-7) = 2b7
  D = -3*E(7)-3*E(7)^2-2*E(7)^3-3*E(7)^4-2*E(7)^5-2*E(7)^6
    = (5-Sqrt(-7))/2 = 2-b7
  !gapprompt@gap>| !gapinput@mat:= MatTom( tom );;|
  !gapprompt@gap>| !gapinput@mataut:= MatrixAutomorphisms( mat );;|
  !gapprompt@gap>| !gapinput@Print( mataut, "\n" );|
  Group( [ (11,12)(23,24)(27,28)(46,47)(53,54)(56,57), 
    ( 9,10)(20,21)(31,32)(38,39), ( 8, 9)(20,22)(31,33)(38,40) ] )
  !gapprompt@gap>| !gapinput@RepresentativesFusions( Group( () ), reps, mataut );|
  [ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ] ]
\end{Verbatim}
 

 We could say that thus the fusion is unique up to table automorphisms and
automorphisms of the table of marks. But since a group is associated with the
table of marks, we compute the character table from the group, and decide
which class fusion is correct. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= UnderlyingGroup( tom );;|
  !gapprompt@gap>| !gapinput@tg:= CharacterTable( g );;|
  !gapprompt@gap>| !gapinput@tgfustom:= FusionCharTableTom( tg, tom );;|
  !gapprompt@gap>| !gapinput@trans:= TransformingPermutationsCharacterTables( tg, tbl );;|
  !gapprompt@gap>| !gapinput@tblfustom:= Permuted( tgfustom, trans.columns );;|
  !gapprompt@gap>| !gapinput@orbits:= List( reps, map -> OrbitFusions( AutomorphismsOfTable( tbl ),|
  !gapprompt@>| !gapinput@                                             map, Group( () ) ) );;|
  !gapprompt@gap>| !gapinput@PositionProperty( orbits, orb -> tblfustom in orb );|
  2
  !gapprompt@gap>| !gapinput@PositionProperty( orbits, orb -> FusionToTom( tbl ).map in orb );|
  2
\end{Verbatim}
 

 So we see that the second one of the possibilities above is the right one. }

  
\subsection{\textcolor{Chapter }{$3 \times U_4(2) \rightarrow 3_1.U_4(3)$ (March 2010)}}\label{subsect:3xU_4(2)_in_3_1.U_4(3)}
\logpage{[ 9, 7, 11 ]}
\hyperdef{L}{X7B1C689C7EFD07CB}{}
{
  According to the \textsf{Atlas} (see{\nobreakspace}\cite[p. 52]{CCN85}), the simple group $U_4(3)$ contains two classes of maximal subgroups of the type $U_4(2)$. The class fusion of $U_4(2)$ into $U_4(3)$ is unique up to table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u42:= CharacterTable( "U4(2)" );;|
  !gapprompt@gap>| !gapinput@u43:= CharacterTable( "U4(3)" );;|
  !gapprompt@gap>| !gapinput@u42fusu43:= PossibleClassFusions( u42, u43 );;|
  !gapprompt@gap>| !gapinput@Length( u42fusu43 );|
  4
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( u42, u42fusu43, u43 ) );|
  1
\end{Verbatim}
 

 More precisely, take the outer automorphism group of $U_4(3)$, which is a dihedral group of order eight, and consider the subgroup
generated by its central involution (this automorphism is denoted by $2_1$ in the \textsf{Atlas}) and another involution called $2_3$ in the \textsf{Atlas}. This subgroup is a Klein four group that induces a permutation group on the
classes of $U_4(3)$ and thus acts on the four possible class fusions of $U_4(2)$ into $U_4(3)$. In fact, this action is transitive. 

 The automorphism $2_1$ swaps each pair of mutually inverse classes of order nine, that is, \texttt{9A} is swapped with \texttt{9B} and \texttt{9C} is swapped with \texttt{9D}. All $U_4(2)$ type subgroups of $U_4(3)$ are invariant under this automorphism, they extend to subgroups of the type $U_4(2).2$ in $U_4(3).2_1$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u43_21:= CharacterTable( "U4(3).2_1" );;|
  !gapprompt@gap>| !gapinput@fus1:= GetFusionMap( u43, u43_21 );|
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 17, 
    18 ]
  !gapprompt@gap>| !gapinput@act1:= Filtered( InverseMap( fus1 ), IsList );|
  [ [ 16, 17 ], [ 18, 19 ] ]
  !gapprompt@gap>| !gapinput@CompositionMaps( ClassNames( u43, "Atlas" ), act1 );|
  [ [ "9A", "9B" ], [ "9C", "9D" ] ]
\end{Verbatim}
 

 The automorphism $2_3$ swaps \texttt{6B} with \texttt{6C}, \texttt{9A} with \texttt{9C}, and \texttt{9B} with \texttt{9D}. The two classes of $U_4(2)$ type subgroups of $U_4(3)$ are swapped by this automorphism. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u43_23:= CharacterTable( "U4(3).2_3" );;|
  !gapprompt@gap>| !gapinput@fus3:= GetFusionMap( u43, u43_23 );|
  [ 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 10, 11, 11, 12, 13, 14, 13, 14, 
    15 ]
  !gapprompt@gap>| !gapinput@act3:= Filtered( InverseMap( fus3 ), IsList );|
  [ [ 4, 5 ], [ 11, 12 ], [ 13, 14 ], [ 16, 18 ], [ 17, 19 ] ]
  !gapprompt@gap>| !gapinput@CompositionMaps( ClassNames( u43, "Atlas" ), act3 );|
  [ [ "3B", "3C" ], [ "6B", "6C" ], [ "7A", "7B" ], [ "9A", "9C" ], 
    [ "9B", "9D" ] ]
\end{Verbatim}
 

 The \textsf{Atlas} states that the permutation character induced by the first class of $U_4(2)$ type subgroups is \texttt{1a+35a+90a}, which means that the subgroups in this class contain \texttt{9A} and \texttt{9B} elements. Then the permutation character induced by the second class of $U_4(2)$ type subgroups is \texttt{1a+35b+90a}, and the subgroups in this class contain \texttt{9C} and \texttt{9D} elements. 

 So we choose appropriate fusions for the two classes of maximal $U_4(2)$ type subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@firstfus:= First( u42fusu43, x -> IsSubset( x, [ 16, 17 ] ) );|
  [ 1, 2, 2, 3, 3, 5, 4, 7, 8, 9, 10, 10, 12, 12, 11, 12, 16, 17, 20, 
    20 ]
  !gapprompt@gap>| !gapinput@secondfus:= First( u42fusu43, x -> IsSubset( x, [ 18, 19 ] ) );|
  [ 1, 2, 2, 3, 3, 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 11, 18, 19, 20, 
    20 ]
\end{Verbatim}
 

 Let us now consider the central extension $3_1.U_4(3)$. Since the Schur multiplier of $U_4(2)$ has order two, the $U_4(2)$ type subgroups of $U_4(3)$ lift to groups of the structure $3 \times U_4(2)$ in $3_1.U_4(3)$. There are eight possible class fusions from $3 \times U_4(2)$ to $3_1.U_4(3)$, in two orbits of length four under the action of table automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@3u42:= CharacterTable( "Cyclic", 3 ) * u42;|
  CharacterTable( "C3xU4(2)" )
  !gapprompt@gap>| !gapinput@3u43:= CharacterTable( "3_1.U4(3)" );|
  CharacterTable( "3_1.U4(3)" )
  !gapprompt@gap>| !gapinput@3u42fus3u43:= PossibleClassFusions( 3u42, 3u43 );;|
  !gapprompt@gap>| !gapinput@Length( 3u42fus3u43 );|
  8
  !gapprompt@gap>| !gapinput@Length( RepresentativesFusions( 3u42, 3u42fus3u43, 3u43 ) );|
  2
\end{Verbatim}
 

 More precisely, each of the four fusions from $U_4(2)$ to $U_4(3)$ has exactly two lifts. The four lifts of those fusions from $U_4(2)$ to $U_4(3)$ with \texttt{9A} and \texttt{9B} in their image form one orbit under the action of table automorphisms. The
other orbit consists of the lifts of those fusions with \texttt{9C} and \texttt{9D} in their image. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inducedmaps:= List( 3u42fus3u43, map -> CompositionMaps(|
  !gapprompt@>| !gapinput@       GetFusionMap( 3u43, u43 ), CompositionMaps( map,|
  !gapprompt@>| !gapinput@       InverseMap( GetFusionMap( 3u42, u42 ) ) ) ) );;|
  !gapprompt@gap>| !gapinput@List( inducedmaps, map -> Position( u42fusu43, map ) );|
  [ 1, 1, 2, 2, 4, 4, 3, 3 ]
\end{Verbatim}
 

 This solves the ambiguity: Fusions from each of the two orbits occur, and we
can assign them to the two classes of subgroups by the choice of the fusions
from $U_4(2)$ to $U_4(3)$. 

 The reason for the asymmetry is that the automorphism $2_3$ of $U_4(3)$ does not lift to $3_1.U_4(3)$. Note that each of the classes \texttt{9A}, \texttt{9B} of $U_4(3)$ has three preimages in $3_1.U_4(3)$, whereas each of the classes \texttt{9C}, \texttt{9D} has only one preimage. 

 In fact the two classes of $3 \times U_4(2)$ type subgroups of $3_1.U_4(3)$ behave differently. For example, inducing the irreducible characters of a $3 \times U_4(2)$ type subgroup in the first class of maximal subgroups of $3_1.U_4(3)$ yields no irreducible character, whereas the two irreducible characters of
degree $630$ are obtained by inducing the irreducible characters of a subgroup in the
second class. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@rep:= RepresentativesFusions( 3u42, 3u42fus3u43, 3u43 );|
  [ [ 1, 4, 4, 7, 7, 10, 13, 15, 18, 21, 24, 24, 27, 27, 30, 27, 48, 
        49, 50, 50, 2, 5, 5, 8, 8, 11, 13, 16, 19, 22, 25, 25, 28, 28, 
        31, 28, 48, 49, 51, 51, 3, 6, 6, 9, 9, 12, 13, 17, 20, 23, 26, 
        26, 29, 29, 32, 29, 48, 49, 52, 52 ], 
    [ 1, 4, 4, 8, 9, 13, 10, 15, 18, 21, 25, 26, 31, 32, 27, 30, 46, 
        44, 51, 52, 2, 5, 5, 9, 7, 13, 11, 16, 19, 22, 26, 24, 32, 30, 
        28, 31, 47, 42, 52, 50, 3, 6, 6, 7, 8, 13, 12, 17, 20, 23, 24, 
        25, 30, 31, 29, 32, 45, 43, 50, 51 ] ]
  !gapprompt@gap>| !gapinput@irr:= Irr( 3u42 );;|
  !gapprompt@gap>| !gapinput@ind:= InducedClassFunctionsByFusionMap( 3u42, 3u43, irr, rep[1] );;|
  !gapprompt@gap>| !gapinput@Intersection( ind, Irr( 3u43 ) );|
  [ Character( CharacterTable( "3_1.U4(3)" ),
    [ 630, 630*E(3)^2, 630*E(3), 6, 6*E(3)^2, 6*E(3), 9, 9*E(3)^2, 
        9*E(3), -9, -9*E(3)^2, -9*E(3), 0, 0, 2, 2*E(3)^2, 2*E(3), -2, 
        -2*E(3)^2, -2*E(3), 0, 0, 0, -3, -3*E(3)^2, -3*E(3), 3, 
        3*E(3)^2, 3*E(3), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, -1, -E(3)^2, -E(3) ] ), 
    Character( CharacterTable( "3_1.U4(3)" ),
    [ 630, 630*E(3), 630*E(3)^2, 6, 6*E(3), 6*E(3)^2, 9, 9*E(3), 
        9*E(3)^2, -9, -9*E(3), -9*E(3)^2, 0, 0, 2, 2*E(3), 2*E(3)^2, 
        -2, -2*E(3), -2*E(3)^2, 0, 0, 0, -3, -3*E(3), -3*E(3)^2, 3, 
        3*E(3), 3*E(3)^2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, -1, -E(3), -E(3)^2 ] ) ]
  !gapprompt@gap>| !gapinput@ind:= InducedClassFunctionsByFusionMap( 3u42, 3u43, irr, rep[2] );;|
  !gapprompt@gap>| !gapinput@Intersection( ind, Irr( 3u43 ) );|
  [  ]
\end{Verbatim}
 

 For $6_1.U_4(3)$ and $12_1.U_4(3)$, one gets the same phenomenon: We have two orbits of class fusions, one
corresponding to each of the two classes of subgroups of the type $3 \times 4 Y 2.U_4(2)$. We get $10$ irreducible induced characters from a subgroup in the second class (four
faithful ones, four with kernel of order two, and the two abovementioned
degree $630$ characters with kernel of order four) and no irreducible character from a
subgroup in the first class.   }

  
\subsection{\textcolor{Chapter }{$2.3^4.2^3.S_4 \rightarrow 2.A12$ (September 2011)}}\label{subsect:2.3^4.2^3.S_4_in_2.A12}
\logpage{[ 9, 7, 12 ]}
\hyperdef{L}{X7A94F78C792122D5}{}
{
  The double cover $G$ of the alternating group $A_{12}$ contains a maximal subgroup $M$ of the type $2.3^4.2^3.S_4$ whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2a12:= CharacterTable( "2.A12" );;|
  !gapprompt@gap>| !gapinput@mtbl:= CharacterTable( "2.3^4.2^3.S4" );;|
  !gapprompt@gap>| !gapinput@mtblfus2a12:= PossibleClassFusions( mtbl, 2a12 );;|
  !gapprompt@gap>| !gapinput@Length( mtblfus2a12 );|
  32
  !gapprompt@gap>| !gapinput@repres:= RepresentativesFusions( mtbl, mtblfus2a12, 2a12 );; |
  !gapprompt@gap>| !gapinput@Length( repres );|
  2
\end{Verbatim}
 

 We decide the question which of the essentially different two possible class
fusion is the right one, by explicitly constructing $M$ as a subgroup of $G$. 

 For that, let $\pi$ denote the natural epimorphism from $G$ to $A_{12}$, and note that $\pi(M)$ can be described as the intersection of a $S_3 \wp S_4$ type subgroup of $S_{12}$ with $A_{12}$. Further note that the generators for $G$ and $A_{12}$ provided by{\nobreakspace}\cite{AGRv3} are compatible in the sense that $\pi$ can be defined by mapping the generators of $G$ to those of $A_{12}$. 

 We need $\pi$ only for computing one preimage of each given element. Therefore, we represent $\pi$ implicitly by two epimorphisms from a free group to $G$ and $A_{12}$, respectively, in order to avoid that \textsf{GAP}precomputes a lot of unnecessary information for $G$. This way, computing a preimage of an element of $A_{12}$ under $\pi$ is cheap. However, computing the preimage of a subgroup of $A_{12}$ would be very expensive. So we construct the subgroup of $G$ that is generated by preimages of a set of generators of $\pi(M)$; later we see that this subgroup is in fact equal to $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AtlasGroup( "A12" );|
  Group([ (1,2,3), (2,3,4,5,6,7,8,9,10,11,12) ])
  !gapprompt@gap>| !gapinput@2g:= AtlasGroup( "2.A12" );|
  <matrix group of size 479001600 with 2 generators>
  !gapprompt@gap>| !gapinput@f:= FreeGroup( 2 );;|
  !gapprompt@gap>| !gapinput@pi1:= GroupHomomorphismByImagesNC( f, 2g, GeneratorsOfGroup( f ),|
  !gapprompt@>| !gapinput@             GeneratorsOfGroup( 2g ) );;|
  !gapprompt@gap>| !gapinput@pi2:= GroupHomomorphismByImagesNC( f, g, GeneratorsOfGroup( f ),|
  !gapprompt@>| !gapinput@             GeneratorsOfGroup( g ) );;|
  !gapprompt@gap>| !gapinput@w:= WreathProduct( SymmetricGroup( 3 ), SymmetricGroup(4) );|
  <permutation group of size 31104 with 10 generators>
  !gapprompt@gap>| !gapinput@NrMovedPoints( w );|
  12
  !gapprompt@gap>| !gapinput@s:= Intersection( w, g );  Size( s );|
  <permutation group with 8 generators>
  15552
  !gapprompt@gap>| !gapinput@m:= SubgroupNC( 2g, List( SmallGeneratingSet( s ),|
  !gapprompt@>| !gapinput@           x -> ImagesRepresentative( pi1,|
  !gapprompt@>| !gapinput@                  PreImagesRepresentative( pi2, x ) ) ) );;|
\end{Verbatim}
 

 Now we compute the character table of $M$, using a faithful permutation representation of $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@iso:= IsomorphismPermGroup( m );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( Image( iso ) );;|
  !gapprompt@gap>| !gapinput@Size( t );|
  31104
  !gapprompt@gap>| !gapinput@trans:= TransformingPermutationsCharacterTables( mtbl, t );;|
  !gapprompt@gap>| !gapinput@IsRecord( trans );|
  true
\end{Verbatim}
 

 Now let us see where the two fusion candidates differ. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@para:= Parametrized( repres );|
  [ 1, 2, 6, 10, 8, 12, 7, 11, 9, 13, 5, 5, 17, 17, 17, 17, 3, 4, 24, 
    22, 27, 25, 12, 10, 13, 11, 28, 29, 35, 37, 39, 36, 38, 40, 5, 23, 
    28, 29, 26, 14, 14, 16, 16, 33, 34, [ 33, 34 ], [ 33, 34 ], 49, 49, 
    48, 48 ]
  !gapprompt@gap>| !gapinput@PositionsProperty( para, IsList );|
  [ 46, 47 ]
  !gapprompt@gap>| !gapinput@List( repres, map -> map{ [ 44 .. 47 ] } );|
  [ [ 33, 34, 33, 34 ], [ 33, 34, 34, 33 ] ]
\end{Verbatim}
 

 So the question is whether the elements in class 44 are conjugate in $G$ to the elements in class 46 or in class 47. In order to answer this question,
we compute preimages of the relevant class representatives in the matrix group $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@positions:= OnTuples( [ 44 .. 47 ], trans.columns );;|
  !gapprompt@gap>| !gapinput@classreps:= List( ConjugacyClasses( t ){ positions },|
  !gapprompt@>| !gapinput@       c -> PreImagesRepresentative( iso, Representative( c ) ) );;|
  !gapprompt@gap>| !gapinput@traces:= List( classreps, TraceMat );|
  !gapprompt@gap>| !gapinput@List( traces, x -> Position( traces, x ) );|
  [ 1, 2, 2, 1 ]
\end{Verbatim}
 

 We are lucky, already the traces of the elements allow us to decide which
pairs of elements are $G$-conjugate; there is no need for an explicit (and expensive) conjugacy test in
the matrix group $G$. 

 Finally, we check whether the stored fusion is correct. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@good:= First( repres,|
  !gapprompt@>| !gapinput@                 map -> map{ [ 44 .. 47 ] } = [ 33, 34, 34, 33 ] );;|
  !gapprompt@gap>| !gapinput@GetFusionMap( mtbl, 2a12 ) = good;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$127:7 \rightarrow L_7(2)$ (January 2012)}}\label{subsect:127:7_in_L_7(2)}
\logpage{[ 9, 7, 13 ]}
\hyperdef{L}{X7E2AF30C7E8F89F9}{}
{
  The simple group $G = L_7(2)$ contains a maximal subgroup $M$ of the type $127:7$ (the normalizer of an extension field type subgroup GL$(1,2^7)$) whose class fusion is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "L7(2)" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "127:7" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( s, fus, t );|
  [ [ 1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
        112, 113, 114, 115, 117, 116, 76, 76, 77, 76, 77, 77 ], 
    [ 1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
        112, 113, 114, 115, 117, 116, 83, 83, 83, 83, 83, 83 ] ]
\end{Verbatim}
 

 The two fusion candidates differ only for elements of order $7$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@diff:= Filtered( [ 1 .. Length( repr[1] ) ],|
  !gapprompt@>| !gapinput@                    i -> repr[1][i] <> repr[2][i] );|
  [ 20, 21, 22, 23, 24, 25 ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( s ){ diff };|
  [ 7, 7, 7, 7, 7, 7 ]
  !gapprompt@gap>| !gapinput@List( repr, l -> l{ diff } );|
  [ [ 76, 76, 77, 76, 77, 77 ], [ 83, 83, 83, 83, 83, 83 ] ]
  !gapprompt@gap>| !gapinput@SizesCentralizers( t ){ [ 76, 77, 83 ] };|
  [ 3528, 3528, 49 ]
\end{Verbatim}
 

 We can decide which candidate is the correct one if we know the centralizer
order in G of the elements of order $7$ in $M$. So we compute this centralizer order. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= Image( IsomorphismPermGroup( GL(7,2) ) );;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g ); until Order(x) = 127;|
  !gapprompt@gap>| !gapinput@n:= Normalizer( g, SubgroupNC( g, [ x ] ) );;|
  !gapprompt@gap>| !gapinput@Size( n ) / 127;|
  7
  !gapprompt@gap>| !gapinput@repeat x:= Random( n ); until Order( x ) = 7;|
  !gapprompt@gap>| !gapinput@c:= Centralizer( g, x );;|
  !gapprompt@gap>| !gapinput@Size( c );|
  49
\end{Verbatim}
 

 We see that the second candidate is the fusion from $M$ into $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) = repr[2];|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_2(59) \rightarrow M$ (May 2009)}}\label{subsect:L_2(59)_in_M}
\logpage{[ 9, 7, 14 ]}
\hyperdef{L}{X7E7B2AD67ACD27AE}{}
{
  The sporadic simple Monster group $M$ contains a maximal subgroup $G$ of the type $L_2(59)$, see{\nobreakspace}\cite{HW04}. The class fusion of $G$ into $M$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(59)" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( s, fus, t );|
  [ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 98, 52, 32, 52, 14, 12, 98, 52, 32, 5, 98, 12, 98, 52, 3 ], 
    [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 100, 50, 30, 50, 15, 11, 100, 50, 30, 4, 100, 11, 100, 50, 
        3 ], 
    [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 101, 51, 30, 51, 14, 11, 101, 51, 30, 5, 101, 11, 101, 51, 
        3 ], 
    [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 102, 53, 32, 53, 18, 12, 102, 53, 32, 6, 102, 12, 102, 53, 
        3 ], 
    [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 104, 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 
        3 ] ]
\end{Verbatim}
 

 The candidates differ on the classes of element order $30$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord:= OrdersClassRepresentatives( s );;|
  !gapprompt@gap>| !gapinput@ord30:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 30 );|
  [ 18, 24, 28, 30 ]
  !gapprompt@gap>| !gapinput@List( repr, x -> x{ ord30 } );|
  [ [ 98, 98, 98, 98 ], [ 100, 100, 100, 100 ], [ 101, 101, 101, 101 ], 
    [ 102, 102, 102, 102 ], [ 104, 104, 104, 104 ] ]
\end{Verbatim}
 

 According to{\nobreakspace}\cite{HW04}, $G$ contains elements in the class \texttt{30G} of $M$. This determines the class fusion up to Galois automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos:= Position( ClassNames( t, "Atlas" ), "30G" );;|
  !gapprompt@gap>| !gapinput@good:= Filtered( fus, map -> pos in map );|
  [ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 104, 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 
        3 ], 
    [ 1, 153, 152, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 104, 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 
        3 ] ]
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( s, good, t );|
  [ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
        97, 104, 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 
        3 ] ]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) = repr[1];|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_2(71) \rightarrow M$ (May 2009)}}\label{subsect:L2(71)_in_M}
\logpage{[ 9, 7, 15 ]}
\hyperdef{L}{X8409DA2E83A41ABE}{}
{
  The sporadic simple Monster group $M$ contains a maximal subgroup $G$ of the type $L_2(71)$, see{\nobreakspace}\cite{HW08}. The class fusion of $G$ into $M$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(71)" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( s, fus, t );|
  [ [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 
        112, 112, 11, 19, 112, 112, 114, 60, 36, 27, 114, 17, 114, 27, 
        7, 60, 114, 5, 114, 60, 36, 27, 114, 3 ], 
    [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 
        112, 112, 11, 19, 112, 112, 115, 61, 36, 28, 115, 17, 115, 28, 
        7, 61, 115, 5, 115, 61, 36, 28, 115, 3 ], 
    [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 
        112, 112, 11, 19, 112, 112, 117, 61, 43, 28, 117, 17, 117, 28, 
        9, 61, 117, 5, 117, 61, 43, 28, 117, 3 ], 
    [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 
        113, 113, 12, 20, 113, 113, 114, 60, 36, 27, 114, 17, 114, 27, 
        7, 60, 114, 5, 114, 60, 36, 27, 114, 3 ], 
    [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 
        113, 113, 12, 20, 113, 113, 115, 61, 36, 28, 115, 17, 115, 28, 
        7, 61, 115, 5, 115, 61, 36, 28, 115, 3 ], 
    [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 
        113, 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 
        9, 61, 117, 5, 117, 61, 43, 28, 117, 3 ] ]
\end{Verbatim}
 

 The candidates differ on the classes of the element orders $7$ and $36$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord:= OrdersClassRepresentatives( s );;|
  !gapprompt@gap>| !gapinput@ord36:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 36 );|
  [ 21, 25, 27, 31, 33, 37 ]
  !gapprompt@gap>| !gapinput@List( repr, x -> x{ ord36 } );|
  [ [ 114, 114, 114, 114, 114, 114 ], [ 115, 115, 115, 115, 115, 115 ], 
    [ 117, 117, 117, 117, 117, 117 ], [ 114, 114, 114, 114, 114, 114 ], 
    [ 115, 115, 115, 115, 115, 115 ], [ 117, 117, 117, 117, 117, 117 ] ]
\end{Verbatim}
 

 According to{\nobreakspace}\cite[Table 3]{NW02}, $G$ contains elements in the classes \texttt{7B} and \texttt{36D} of $M$. This determines the class fusion up to Galois automorphisms. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos1:= Position( ClassNames( t, "Atlas" ), "7B" );;|
  !gapprompt@gap>| !gapinput@pos2:= Position( ClassNames( t, "Atlas" ), "36D" );;|
  !gapprompt@gap>| !gapinput@pos:= [ pos1, pos2 ];;|
  !gapprompt@gap>| !gapinput@good:= Filtered( fus, map -> IsSubset( map, pos ) );|
  [ [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 
        113, 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 
        9, 61, 117, 5, 117, 61, 43, 28, 117, 3 ], 
    [ 1, 170, 169, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 
        113, 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 
        9, 61, 117, 5, 117, 61, 43, 28, 117, 3 ] ]
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( s, good, t );|
  [ [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 
        113, 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 
        9, 61, 117, 5, 117, 61, 43, 28, 117, 3 ] ]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) = repr[1];|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$L_2(41) \rightarrow M$ (April 2012)}}\label{subsect:L_2(41)_in_M}
\logpage{[ 9, 7, 16 ]}
\hyperdef{L}{X78B3B1BE7A2CA4D1}{}
{
  The sporadic simple Monster group $M$ contains a maximal subgroup $G$ of the type $L_2(41)$, see{\nobreakspace}\cite{NW12}. The class fusion of $G$ into $M$ is ambiguous. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(41)" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( s, t );;|
  !gapprompt@gap>| !gapinput@repr:= RepresentativesFusions( s, fus, t );|
  [ [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 70, 70, 19, 
        70, 70, 19, 4, 70, 19, 70 ], 
    [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 72, 72, 19, 
        72, 72, 19, 6, 72, 19, 72 ], 
    [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 73, 73, 20, 
        73, 73, 20, 5, 73, 20, 73 ], 
    [ 1, 127, 127, 66, 33, 66, 12, 7, 33, 66, 12, 66, 3, 72, 72, 19, 
        72, 72, 19, 6, 72, 19, 72 ], 
    [ 1, 127, 127, 66, 33, 66, 12, 7, 33, 66, 12, 66, 3, 73, 73, 20, 
        73, 73, 20, 5, 73, 20, 73 ], 
    [ 1, 127, 127, 67, 30, 67, 11, 10, 30, 67, 11, 67, 3, 72, 72, 19, 
        72, 72, 19, 6, 72, 19, 72 ], 
    [ 1, 127, 127, 67, 30, 67, 11, 10, 30, 67, 11, 67, 3, 73, 73, 20, 
        73, 73, 20, 5, 73, 20, 73 ], 
    [ 1, 127, 127, 68, 32, 68, 12, 10, 32, 68, 12, 68, 3, 72, 72, 19, 
        72, 72, 19, 6, 72, 19, 72 ], 
    [ 1, 127, 127, 68, 32, 68, 12, 10, 32, 68, 12, 68, 3, 73, 73, 20, 
        73, 73, 20, 5, 73, 20, 73 ], 
    [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 72, 72, 19, 
        72, 72, 19, 6, 72, 19, 72 ], 
    [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 73, 73, 20, 
        73, 73, 20, 5, 73, 20, 73 ] ]
\end{Verbatim}
 

 The candidates differ on the classes of the element orders $3${\textendash}$8$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ambig:= Parametrized( repr );;|
  !gapprompt@gap>| !gapinput@ambigpos:= PositionsProperty( ambig, IsList );|
  [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 
    23 ]
  !gapprompt@gap>| !gapinput@Set( OrdersClassRepresentatives( t ){ ambigpos } );|
  [ 3, 4, 5, 6, 7, 8 ]
\end{Verbatim}
 

 According to{\nobreakspace}\cite[Theorem 3]{NW12}, $G$ contains elements in the classes \texttt{3B} and \texttt{4C} of $M$. This determines the class fusion uniquely. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos1:= Position( ClassNames( t, "Atlas" ), "3B" );;|
  !gapprompt@gap>| !gapinput@pos2:= Position( ClassNames( t, "Atlas" ), "4C" );;|
  !gapprompt@gap>| !gapinput@pos:= [ pos1, pos2 ];;|
  !gapprompt@gap>| !gapinput@good:= Filtered( fus, map -> IsSubset( map, pos ) );|
  [ [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 73, 73, 20, 
        73, 73, 20, 5, 73, 20, 73 ] ]
  !gapprompt@gap>| !gapinput@GetFusionMap( s, t ) = good[1];|
  true
\end{Verbatim}
 }

 }

 }

    
\chapter{\textcolor{Chapter }{\textsf{GAP} computations needed in the proof of \cite[Theorem 6.1 (ii)]{DNT}}}\label{chap:dntgap}
\logpage{[ 10, 0, 0 ]}
\hyperdef{L}{X831E9D0A7A2DBC72}{}
{
  Date: September 19th, 2011 

 (This is joint work with Klaus Lux.) 

 This is a collection of example computations that are cited in the Appendix
of{\nobreakspace}\cite{DNT}. In each case, the aim is to show that the extension of a given finite simple
group by an elementary abelian group of given rank has the property that not
all complex irreducible characters of the same degree are Galois conjugate. 

 The purpose of this writeup is twofold. On the one hand, the details of the
computations are documented this way. On the other hand, the \textsf{GAP} code shown for the examples can be used as test input for automatic checking
of the data and the functions used.\texttt{\symbol{125}} For the computations,
we need some Brauer character tables from{\nobreakspace}\cite{JLPW95}, some generating matrices from{\nobreakspace}\cite{AGRv3}, and some functions from the \textsf{GAP} system{\nobreakspace}\cite{GAP} and its packages \texttt{AtlasRep}{\nobreakspace}\cite{AtlasRep}, \texttt{cohomolo}{\nobreakspace}\cite{cohomolo}, \texttt{CTblLib}{\nobreakspace}\cite{CTblLib}, and \texttt{TomLib}{\nobreakspace}\cite{TomLib}. 

 First we load the necessary \textsf{GAP} packages. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "AtlasRep", "1.5", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "cohomolo", "1.6", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "CTblLib", "1.2", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "TomLib", "1.2.1", false );|
  true
\end{Verbatim}
  
\section{\textcolor{Chapter }{$G/N \cong Sz(8)$ and $|N| = 2^{12}$}}\label{sect:Sz8,2^12}
\logpage{[ 10, 1, 0 ]}
\hyperdef{L}{X82BDD020860C6E95}{}
{
  The group $S = Sz(8)$ has exactly one irreducible $12$-dimensional module over the field with two elements, up to isomorphism. This
module can be obtained from any of the three absolutely irreducible $4$-dimensional $S$-modules in characteristic two, by regarding it as a module over the prime
field $GF(2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 2;;  d:= 12;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Sz(8)" ) mod p;|
  BrauerTable( "Sz(8)", 2 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  Sz(8)mod2
  
         1a 5a 7a 7b 7c 13a 13b 13c
  
  Y.1     1  1  1  1  1   1   1   1
  Y.2     4 -1  A  C  B   D   F   E
  Y.3     4 -1  B  A  C   E   D   F
  Y.4     4 -1  C  B  A   F   E   D
  
  A = E(7)^2+E(7)^3+E(7)^4+E(7)^5
  B = E(7)+E(7)^2+E(7)^5+E(7)^6
  C = E(7)+E(7)^3+E(7)^4+E(7)^6
  D = E(13)+E(13)^5+E(13)^8+E(13)^12
  E = E(13)^4+E(13)^6+E(13)^7+E(13)^9
  F = E(13)^2+E(13)^3+E(13)^10+E(13)^11
  !gapprompt@gap>| !gapinput@List( irr, x -> SizeOfFieldOfDefinition( x, p ) );|
  [ 2, 8, 8, 8 ]
\end{Verbatim}
 

 First we construct the $12$-dimensional irreducible representation of $S$ over $GF(2)$, using that the \textsf{Atlas} of Group Representations provides matrix generators for $S$ in the $4$-dimensional representation over $GF(8)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@info:= OneAtlasGeneratingSetInfo( "Sz(8)", Dimension, 4,|
  !gapprompt@>| !gapinput@              Characteristic, p );|
  rec( charactername := "4a", constituents := [ 2 ], contents := "core",
    dim := 4, groupname := "Sz(8)", id := "a", 
    identifier := [ "Sz(8)", [ "Sz8G1-f8r4aB0.m1", "Sz8G1-f8r4aB0.m2" ],
        1, 8 ], repname := "Sz8G1-f8r4aB0", repnr := 17, 
    ring := GF(2^3), size := 29120, standardization := 1, 
    type := "matff" )
  !gapprompt@gap>| !gapinput@gens_dim4:= AtlasGenerators( info ).generators;;|
  !gapprompt@gap>| !gapinput@b:= Basis( GF(8) );; |
  !gapprompt@gap>| !gapinput@gens_dim12:= List( gens_dim4, x -> BlownUpMatrix( b, x ) );;|
\end{Verbatim}
 

 We claim that any extension of $S$ with the given module splits. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= AtlasGroup( "Sz(8)", IsPermGroup, true );;|
  !gapprompt@gap>| !gapinput@chr:= CHR( s, p, 0, gens_dim12 );;|
  !gapprompt@gap>| !gapinput@SizeScreen( [ 100 ] );;|
  !gapprompt@gap>| !gapinput@SecondCohomologyDimension( chr );|
  0
  !gapprompt@gap>| !gapinput@SizeScreen( [ 72 ] );;|
\end{Verbatim}
 

 (The function \texttt{CHR} takes as its arguments a permutation group, the characteristic of the module,
a finitely presented group (or zero), and a list of matrices that define the
module in the sense that they correspond to the generators of the given
permutation group. Note that this condition is satisfied because the
generators provided by the \textsf{Atlas} of Group Representations are compatible.) So it is enough to consider the
semidirect product $G = 2^{12}\!:\!Sz(8)$. If we would like then we could represent this group as a group of $13 \times 13$ matrices over $GF(2)$, as follows. For each element of $G$, the submatrix consisting of the first $12$ rows and columns describes the part from the complement $Sz(8)$, in its action on the module in question, and the last row describes the part
from the elementary abelian normal group $N$; the last column is zero, except for an identity entry in the last row. In
order to write down generators of this group, it suffices to take the two
generators of the complement plus one nonidentity element from $N$. (Note that $N$ is irreducible.) 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@mats:= List( [1 .. 3 ], x -> IdentityMat( d+1, GF(p) ) );;|
  !gapprompt@gap>| !gapinput@v:= mats[1][ d+1 ];;|
  !gapprompt@gap>| !gapinput@mats[1]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_dim12[1];;|
  !gapprompt@gap>| !gapinput@mats[2]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_dim12[2];;|
  !gapprompt@gap>| !gapinput@mats[3][ d+1 ][1]:= Z(p)^0;;|
  !gapprompt@gap>| !gapinput@grp:= Group( mats );;|
  !gapprompt@gap>| !gapinput@g:= Image( IsomorphismPermGroup( grp ) );;|
  !gapprompt@gap>| !gapinput@Size( g );|
  119275520
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( g );|
  41
\end{Verbatim}
 

 The \textsf{GAP} Character Table Library contains the ordinary character table of $G$. We check this as follows. By the above cohomology result, the group $G$ is uniquely determined, up to isomorphism, by the group order and the property
that $G$ has a minimal normal subgroup $N$ such that $G/N$ is a simple group isomorphic with $S$. 

 (Since $|G|/|S|$ is a power of two, $N$ is a $2$-group. By the minimality condition, $N$ is elementary abelian and the action of $S$ on $N$ affords the desired $S$-module. Note that the isomorphism type of a finite simple group is determined
by its character table.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@iso:= IsomorphismTypeInfoFiniteSimpleGroup( s );|
  rec( name := "2B(2,8) = 2C(2,8) = Sz(8)", parameter := 8, 
    series := "2B", shortname := "Sz(8)" )
  !gapprompt@gap>| !gapinput@names:= AllCharacterTableNames( Size, 2^12 * Size( s ) );;|
  !gapprompt@gap>| !gapinput@cand:= List( names, CharacterTable );;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( cand,|
  !gapprompt@>| !gapinput@     t -> ForAny( ClassPositionsOfMinimalNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@            n -> IsomorphismTypeInfoFiniteSimpleGroup( t / n ) = iso ) );|
  [ CharacterTable( "2^12:Sz(8)" ) ]
\end{Verbatim}
 

 So we can easily check that $G$ has eight rational valued irreducibles of the degree $455$ (or of the degree $3\,640$). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= cand[1];;|
  !gapprompt@gap>| !gapinput@rationals:= Filtered( Irr( t ), x -> IsSubset( Integers, x ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( rationals, x -> x[1] ) );|
  [ [ 1, 1 ], [ 64, 1 ], [ 91, 1 ], [ 455, 8 ], [ 3640, 8 ] ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{$G/N \cong M_{22}$ and $|N| = 2^{10}$}}\label{sect:M22,2^10}
\logpage{[ 10, 2, 0 ]}
\hyperdef{L}{X7C01350E8217B0B1}{}
{
  The group $S = M_{22}$ has exactly two irreducible $10$-dimensional modules over the field with two elements, up to isomorphism.
These modules are in fact absolutely irreducible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 2;;  d:= 10;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M22" ) mod p;|
  BrauerTable( "M22", 2 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  M22mod2
  
         1a 3a 5a 7a 7b 11a 11b
  
  Y.1     1  1  1  1  1   1   1
  Y.2    10  1  .  A /A  -1  -1
  Y.3    10  1  . /A  A  -1  -1
  
  A = E(7)+E(7)^2+E(7)^4
    = (-1+Sqrt(-7))/2 = b7
  !gapprompt@gap>| !gapinput@List( irr, x -> SizeOfFieldOfDefinition( x, p ) );|
  [ 2, 2, 2 ]
\end{Verbatim}
 

 First we construct the two irreducible $10$-dimensional representations of $S$ over $GF(2)$, again using that the \textsf{Atlas} of Group Representations provides the matrix generators in question. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@info:= AllAtlasGeneratingSetInfos( "M22", Dimension, d,|
  !gapprompt@>| !gapinput@              Characteristic, p );|
  [ rec( charactername := "10a", constituents := [ 2 ], 
        contents := "core", dim := 10, groupname := "M22", id := "a", 
        identifier := 
          [ "M22", [ "M22G1-f2r10aB0.m1", "M22G1-f2r10aB0.m2" ], 1, 2 ],
        repname := "M22G1-f2r10aB0", repnr := 13, ring := GF(2), 
        size := 443520, standardization := 1, type := "matff" ), 
    rec( charactername := "10b", constituents := [ 3 ], 
        contents := "core", dim := 10, groupname := "M22", id := "b", 
        identifier := 
          [ "M22", [ "M22G1-f2r10bB0.m1", "M22G1-f2r10bB0.m2" ], 1, 2 ],
        repname := "M22G1-f2r10bB0", repnr := 14, ring := GF(2), 
        size := 443520, standardization := 1, type := "matff" ) ]
  !gapprompt@gap>| !gapinput@gens:= List( info, r -> AtlasGenerators( r ).generators );;|
\end{Verbatim}
 

 We claim that any extension of $S$ with any of the two given modules splits. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= AtlasGroup( "M22", IsPermGroup, true );;|
  !gapprompt@gap>| !gapinput@chr:= CHR( s, p, 0, gens[1] );;|
  !gapprompt@gap>| !gapinput@SizeScreen( [ 100 ] );;|
  !gapprompt@gap>| !gapinput@SecondCohomologyDimension( chr );|
  0
  !gapprompt@gap>| !gapinput@chr:= CHR( s, p, 0, gens[2] );;|
  !gapprompt@gap>| !gapinput@SecondCohomologyDimension( chr );|
  0
  !gapprompt@gap>| !gapinput@SizeScreen( [ 72 ] );;|
\end{Verbatim}
 

 Again we see that it is enough to consider semidirect products $G = 2^{10}\!:\!M_{22}$, but this time for the two nonisomorphic modules. 

 We could use the same method as in the first case for constructing the two
groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@gens_1:= gens[1];;|
  !gapprompt@gap>| !gapinput@mats:= List( [1 .. 3 ], x -> IdentityMat( d+1, GF(p) ) );;|
  !gapprompt@gap>| !gapinput@v:= mats[1][ d+1 ];;|
  !gapprompt@gap>| !gapinput@mats[1]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_1[1];;|
  !gapprompt@gap>| !gapinput@mats[2]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_1[2];;|
  !gapprompt@gap>| !gapinput@mats[3][ d+1 ][1]:= Z(p)^0;;|
  !gapprompt@gap>| !gapinput@grp_1:= Group( mats );;|
  !gapprompt@gap>| !gapinput@Size( grp_1 );|
  454164480
  !gapprompt@gap>| !gapinput@gens_2:= gens[1];;|
  !gapprompt@gap>| !gapinput@mats:= List( [1 .. 3 ], x -> IdentityMat( d+1, GF(p) ) );;|
  !gapprompt@gap>| !gapinput@v:= mats[1][ d+1 ];;|
  !gapprompt@gap>| !gapinput@mats[1]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_2[1];;|
  !gapprompt@gap>| !gapinput@mats[2]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_2[2];;|
  !gapprompt@gap>| !gapinput@mats[3][ d+1 ][1]:= Z(p)^0;;|
  !gapprompt@gap>| !gapinput@grp_2:= Group( mats );;|
  !gapprompt@gap>| !gapinput@Size( grp_2 );|
  454164480
\end{Verbatim}
 

 The \textsf{GAP} Character Table Library contains the ordinary character tables of the two
groups in question. We check this with the same approach as in the previous
examples. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@iso:= IsomorphismTypeInfoFiniteSimpleGroup( s );|
  rec( name := "M(22)", series := "Spor", shortname := "M22" )
  !gapprompt@gap>| !gapinput@names:= AllCharacterTableNames( Size, 2^10 * Size( s ) );;|
  !gapprompt@gap>| !gapinput@cand:= List( names, CharacterTable );;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( cand,|
  !gapprompt@>| !gapinput@     t -> ForAny( ClassPositionsOfMinimalNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@            n -> IsomorphismTypeInfoFiniteSimpleGroup( t / n ) = iso ) );|
  [ CharacterTable( "2^10:M22'" ), CharacterTable( "2^10:m22" ) ]
  !gapprompt@gap>| !gapinput@List( cand, NrConjugacyClasses );|
  [ 47, 43 ]
\end{Verbatim}
 

 So we can easily check that in both cases, $G$ has two rational valued irreducibles of the degree $1\,155$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= cand[1];;|
  !gapprompt@gap>| !gapinput@rationals:= Filtered( Irr( t ), x -> IsSubset( Integers, x ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( rationals, x -> x[1] ) );|
  [ [ 1, 1 ], [ 21, 1 ], [ 22, 1 ], [ 55, 1 ], [ 99, 1 ], [ 154, 1 ], 
    [ 210, 1 ], [ 231, 3 ], [ 385, 1 ], [ 440, 1 ], [ 770, 5 ], 
    [ 924, 2 ], [ 1155, 2 ], [ 1386, 1 ], [ 1408, 1 ], [ 3080, 2 ], 
    [ 3465, 4 ], [ 4620, 2 ], [ 6930, 3 ], [ 9240, 1 ] ]
  !gapprompt@gap>| !gapinput@t:= cand[2];;|
  !gapprompt@gap>| !gapinput@rationals:= Filtered( Irr( t ), x -> IsSubset( Integers, x ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( rationals, x -> x[1] ) );|
  [ [ 1, 1 ], [ 21, 1 ], [ 55, 1 ], [ 77, 1 ], [ 99, 1 ], [ 154, 1 ], 
    [ 210, 1 ], [ 231, 1 ], [ 330, 1 ], [ 385, 3 ], [ 616, 2 ], 
    [ 693, 1 ], [ 770, 1 ], [ 1155, 2 ], [ 1980, 1 ], [ 2310, 4 ], 
    [ 2640, 1 ], [ 3465, 2 ], [ 4620, 1 ], [ 5544, 2 ], [ 6160, 1 ], 
    [ 6930, 2 ], [ 9856, 1 ] ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{$G/N \cong J_2$ and $|N| = 2^{12}$}}\label{sect:J2,2^12}
\logpage{[ 10, 3, 0 ]}
\hyperdef{L}{X7E356703856DF22E}{}
{
  The group $S = J_2$ has exactly one irreducible $12$-dimensional module over the field with two elements, up to isomorphism. This
module can be obtained from any of the two absolutely irreducible $6$-dimensional $S$-modules in characteristic two, by regarding it as a module over the prime
field $GF(2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 2;;  d:= 12;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J2" ) mod p;|
  BrauerTable( "J2", 2 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  J2mod2
  
         1a 3a 3b 5a 5b 5c 5d 7a 15a 15b
  
  Y.1     1  1  1  1  1  1  1  1   1   1
  Y.2     6 -3  .  A *A  B *B -1   C  *C
  Y.3     6 -3  . *A  A *B  B -1  *C   C
  
  A = -2*E(5)-2*E(5)^4
    = 1-Sqrt(5) = 1-r5
  B = E(5)+2*E(5)^2+2*E(5)^3+E(5)^4
    = (-3-Sqrt(5))/2 = -2-b5
  C = E(5)+E(5)^4
    = (-1+Sqrt(5))/2 = b5
  !gapprompt@gap>| !gapinput@List( irr, x -> SizeOfFieldOfDefinition( x, p ) );|
  [ 2, 4, 4 ]
\end{Verbatim}
 

 First we construct the irreducible $12$-dimensional representation of $S$ over $GF(2)$, using that the \textsf{Atlas} of Group Representations provides matrix generators for $S$ in the $6$-dimensional representation over $GF(4)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@info:= OneAtlasGeneratingSetInfo( "J2", Dimension, 6,|
  !gapprompt@>| !gapinput@              Characteristic, p );|
  rec( charactername := "6a", constituents := [ 2 ], contents := "core",
    dim := 6, groupname := "J2", id := "a", 
    identifier := [ "J2", [ "J2G1-f4r6aB0.m1", "J2G1-f4r6aB0.m2" ], 1, 
        4 ], repname := "J2G1-f4r6aB0", repnr := 16, ring := GF(2^2), 
    size := 604800, standardization := 1, type := "matff" )
  !gapprompt@gap>| !gapinput@gens_dim6:= AtlasGenerators( info ).generators;;|
  !gapprompt@gap>| !gapinput@b:= Basis( GF(4) );;|
  !gapprompt@gap>| !gapinput@gens_dim12:= List( gens_dim6, x -> BlownUpMatrix( b, x ) );;|
\end{Verbatim}
 

 We claim that any extension of $S$ with the given module splits. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@s:= AtlasGroup( "J2", IsPermGroup, true );;|
  !gapprompt@gap>| !gapinput@chr:= CHR( s, p, 0, gens_dim12 );;|
  !gapprompt@gap>| !gapinput@SizeScreen( [ 100 ] );;|
  !gapprompt@gap>| !gapinput@SecondCohomologyDimension( chr );|
  0
  !gapprompt@gap>| !gapinput@SizeScreen( [ 72 ] );;|
\end{Verbatim}
 

 Again we see that it is enough to consider a semidirect product $G = 2^{12}\!:\!J_2$. 

 Here is a description how we could construct the group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@mats:= List( [ 1 .. 3 ], x -> IdentityMat( d+1, GF(p) ) );;|
  !gapprompt@gap>| !gapinput@v:= mats[1][ d+1 ];;|
  !gapprompt@gap>| !gapinput@mats[1]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_dim12[1];;|
  !gapprompt@gap>| !gapinput@mats[2]{ [ 1 .. d ] }{ [ 1 .. d ] }:= gens_dim12[2];;|
  !gapprompt@gap>| !gapinput@mats[3][ d+1 ][1]:= Z(p)^0;;|
  !gapprompt@gap>| !gapinput@grp:= Group( mats );;|
  !gapprompt@gap>| !gapinput@g:= Image( IsomorphismPermGroup( grp ) );;|
  !gapprompt@gap>| !gapinput@Size( g );|
  2477260800
\end{Verbatim}
 

 The \textsf{GAP} Character Table Library contains the ordinary character table of $G$. We check this with the same approach as in the previous examples. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@iso:= IsomorphismTypeInfoFiniteSimpleGroup( s );|
  rec( name := "HJ = J(2) = F(5-)", series := "Spor", shortname := "J2" 
   )
  !gapprompt@gap>| !gapinput@names:= AllCharacterTableNames( Size, 2^12 * Size( s ) );;|
  !gapprompt@gap>| !gapinput@cand:= List( names, CharacterTable );;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( cand,|
  !gapprompt@>| !gapinput@     t -> ForAny( ClassPositionsOfMinimalNormalSubgroups( t ),|
  !gapprompt@>| !gapinput@            n -> IsomorphismTypeInfoFiniteSimpleGroup( t / n ) = iso ) );|
  [ CharacterTable( "2^12:J2" ) ]
\end{Verbatim}
 

 So we can easily check that $G$ has two rational valued irreducibles of the degree $1\,575$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= cand[1];;|
  !gapprompt@gap>| !gapinput@rationals:= Filtered( Irr( t ), x -> IsSubset( Integers, x ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( rationals, x -> x[1] ) );|
  [ [ 1, 1 ], [ 36, 1 ], [ 63, 1 ], [ 90, 1 ], [ 126, 1 ], [ 160, 1 ], 
    [ 175, 1 ], [ 225, 1 ], [ 288, 1 ], [ 300, 1 ], [ 336, 1 ], 
    [ 1575, 2 ], [ 2520, 4 ], [ 3150, 1 ], [ 4725, 6 ], [ 9450, 1 ], 
    [ 10080, 4 ], [ 12600, 4 ], [ 18900, 2 ] ]
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{$G/N \cong J_2$ and $|N| = 5^{14}$}}\label{sect:J2,5^14}
\logpage{[ 10, 4, 0 ]}
\hyperdef{L}{X797E2EDB78F05F6E}{}
{
  The group $S = J_2$ has exactly one irreducible $14$-dimensional module over the field with $5$ elements, up to isomorphism. This module is in fact absolutely irreducible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 5;;  d:= 14;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J2" ) mod p;|
  BrauerTable( "J2", 5 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  J2mod5
  
         1a 2a 2b 3a 3b 4a 6a 6b 7a 8a 12a
  
  Y.1     1  1  1  1  1  1  1  1  1  1   1
  Y.2    14 -2  2  5 -1  2  1 -1  .  .  -1
\end{Verbatim}
 

 In this case, we do not attempt to compute the complete character table of $G$. Instead, we show that $G/N$ has at least five regular orbits on the dual space of $N$, and
apply{\nobreakspace}\texttt{\symbol{92}}cite[Lemma{\nobreakspace}5.1{\nobreakspace}(i)]\texttt{\symbol{123}}DNT\texttt{\symbol{125}}.
(Note that $N$ is in fact self-dual.) 

 For that, we use \textsf{GAP}'s table of marks of $S$. The information stored for this table of marks allows us to compute, for
each class of subgroups $U$ of $S$, the numbers of orbits in the dual space of $N$ for which contain the point stabilizers in $S$ are exactly the conjugates of $U$. The following \textsf{GAP} function takes the table of marks \texttt{tom} of $S$, a list \texttt{matgens} of matrices that describe the action of the generators of $S$ on the vector space in question, and the size \texttt{q} of its field of scalars. The return value is a record with the components \texttt{fixed} (the vector of numbers of fixed points of the subgroups of $S$ on the dual of $N$), \texttt{decomp} (the numbers of orbits with the corresponding point stabilizers), \texttt{nonzeropos} (the positions of subgroups that occur as point stabilizers), and \texttt{staborders} (the list of orders of the subgroups that occur as point stabilizers). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbits_from_tom:= function( tom, matgens, q )|
  !gapprompt@>| !gapinput@    local slp, fixed, idmat, i, rest, decomp, nonzeropos;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    slp:= StraightLineProgramsTom( tom );|
  !gapprompt@>| !gapinput@    fixed:= [];|
  !gapprompt@>| !gapinput@    idmat:= matgens[1]^0;|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( slp ) ] do|
  !gapprompt@>| !gapinput@      if IsList( slp[i] ) then|
  !gapprompt@>| !gapinput@        # Each subgroup generator has a program of its own.|
  !gapprompt@>| !gapinput@        rest:= List( slp[i],|
  !gapprompt@>| !gapinput@                     prg -> ResultOfStraightLineProgram( prg, gens ) );|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        # The subgroup generators are computed with one common program.|
  !gapprompt@>| !gapinput@        rest:= ResultOfStraightLineProgram( slp[i], gens );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@      if IsEmpty( rest ) then|
  !gapprompt@>| !gapinput@        # The subgroup is trivial.|
  !gapprompt@>| !gapinput@        fixed[i]:= q^Length( idmat );|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        # Compute the intersection of fixed spaces of the transposed|
  !gapprompt@>| !gapinput@        # matrices, since we act on Irr(N) not on N.|
  !gapprompt@>| !gapinput@        fixed[i]:= q^Length( NullspaceMat( TransposedMat( Concatenation(|
  !gapprompt@>| !gapinput@                       List( rest, x -> x - idmat ) ) ) ) );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    decomp:= DecomposedFixedPointVector( tom, fixed );|
  !gapprompt@>| !gapinput@    nonzeropos:= Filtered( [ 1 .. Length( decomp ) ],|
  !gapprompt@>| !gapinput@                           i -> decomp[i] <> 0 );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return rec( fixed:= fixed,|
  !gapprompt@>| !gapinput@                decomp:= decomp,|
  !gapprompt@>| !gapinput@                nonzeropos:= nonzeropos,|
  !gapprompt@>| !gapinput@                staborders:= OrdersTom( tom ){ nonzeropos },|
  !gapprompt@>| !gapinput@              );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Note that this function assumes that the generators of $S$ obtained from the \textsf{Atlas} of Group Representations are compatible with the generators from \textsf{GAP}'s table of marks of $S$. This fact can be read off from the \texttt{true} value of the \texttt{ATLAS} component in the \texttt{StandardGeneratorsInfo} (\textbf{TomLib: StandardGeneratorsInfo for groups}) value of the table of marks. 

 
\begin{Verbatim}[commandchars=!@B,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>B !gapinput@tom:= TableOfMarks( "J2" );B
  TableOfMarks( "J2" )
  !gapprompt@gap>B !gapinput@StandardGeneratorsInfo( tom );B
  [ rec( ATLAS := true, 
        description := "|z|=10, z^5=a, |b|=3, |C(b)|=36, |ab|=7", 
        generators := "a, b", 
        script := 
          [ [ 1, 10, 5 ], [ 2, 3 ], [ [ 2, 1 ], [ "|C(",, ")|" ], 36 ], 
            [ 1, 1, 2, 1, 7 ] ], standardization := 1 ) ]
\end{Verbatim}
 

 Alternatively, we can compute whether the generators are compatible, as
follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@info:= OneAtlasGeneratingSetInfo( "J2", Dimension, d, Ring, GF(p) );|
  rec( charactername := "14a", constituents := [ 2 ], 
    contents := "core", dim := 14, groupname := "J2", id := "", 
    identifier := [ "J2", [ "J2G1-f5r14B0.m1", "J2G1-f5r14B0.m2" ], 1, 
        5 ], repname := "J2G1-f5r14B0", repnr := 19, ring := GF(5), 
    size := 604800, standardization := 1, type := "matff" )
  !gapprompt@gap>| !gapinput@gens:= AtlasGenerators( info ).generators;;|
  !gapprompt@gap>| !gapinput@map:= GroupGeneralMappingByImages( UnderlyingGroup( tom ),|
  !gapprompt@>| !gapinput@     Group( gens ), GeneratorsOfGroup( UnderlyingGroup( tom ) ), gens );;|
  !gapprompt@gap>| !gapinput@IsGroupHomomorphism( map );|
  true
\end{Verbatim}
 

 Now we are sure that we may apply the function \texttt{orbits{\textunderscore}from{\textunderscore}tom}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbits_from_tom( tom, gens, p );|
  rec( 
    decomp := [ 8600, 0, 2512, 359, 10, 0, 0, 212, 5, 0, 0, 4, 0, 240, 
        16, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 36, 0, 0, 0, 26, 
        0, 0, 0, 0, 0, 0, 0, 20, 0, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 10, 0, 0, 5, 0, 0, 0, 26, 0, 10, 0, 0, 0, 0, 10, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 2, 0, 
        0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 4, 0, 0, 0, 4, 0, 0, 1 ], 
    fixed := [ 6103515625, 15625, 390625, 390625, 625, 25, 3125, 3125, 
        625, 625, 625, 625, 5, 3125, 125, 625, 25, 25, 125, 5, 125, 25, 
        125, 25, 25, 25, 5, 125, 125, 125, 25, 25, 3125, 1, 1, 5, 5, 
        25, 5, 25, 125, 5, 25, 25, 25, 25, 25, 25, 5, 25, 25, 5, 25, 5, 
        5, 5, 5, 25, 25, 1, 125, 1, 5, 5, 125, 1, 25, 5, 25, 1, 5, 25, 
        5, 5, 25, 25, 5, 5, 5, 1, 5, 5, 1, 1, 1, 5, 1, 25, 25, 25, 1, 
        5, 25, 5, 5, 1, 1, 125, 5, 5, 5, 25, 5, 5, 5, 1, 1, 5, 5, 1, 5, 
        1, 5, 1, 1, 25, 5, 5, 1, 1, 1, 1, 5, 1, 1, 25, 1, 1, 5, 1, 1, 
        5, 1, 5, 1, 1, 5, 1, 5, 1, 1, 1, 5, 1, 1, 1 ], 
    nonzeropos := [ 1, 3, 4, 5, 8, 9, 12, 14, 15, 16, 21, 26, 29, 33, 
        41, 43, 44, 58, 61, 65, 67, 72, 89, 93, 98, 99, 105, 116, 126, 
        139, 143, 146 ], 
    staborders := [ 1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 8, 9, 10, 12, 12, 12, 
        14, 20, 24, 24, 24, 30, 48, 50, 60, 60, 72, 120, 192, 600, 
        1920, 604800 ] )
\end{Verbatim}
 

 We see that $S$ has $8\,600$ regular orbits on (the dual space of) $N$. }

  
\section{\textcolor{Chapter }{$G/N \cong J_2$ and $|N| = 2^{28}$}}\label{sect:J2,2^28}
\logpage{[ 10, 5, 0 ]}
\hyperdef{L}{X828AECAE82B0CEB6}{}
{
  The group $S = J_2$ has exactly one irreducible $28$-dimensional module over the field with two elements, up to isomorphism. This
module can be obtained from any of the two absolutely irreducible $14$-dimensional $S$-modules in characteristic two, by regarding it as a module over the prime
field $GF(2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 2;;  d:= 28;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "J2" ) mod p;|
  BrauerTable( "J2", 2 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  J2mod2
  
         1a 3a 3b 5a 5b  5c  5d 7a 15a 15b
  
  Y.1     1  1  1  1  1   1   1  1   1   1
  Y.2     6 -3  .  A *A   C  *C -1   D  *D
  Y.3     6 -3  . *A  A  *C   C -1  *D   D
  Y.4    14  5 -1  B *B  -C -*C  .   .   .
  Y.5    14  5 -1 *B  B -*C  -C  .   .   .
  
  A = -2*E(5)-2*E(5)^4
    = 1-Sqrt(5) = 1-r5
  B = -3*E(5)-3*E(5)^4
    = (3-3*Sqrt(5))/2 = -3b5
  C = E(5)+2*E(5)^2+2*E(5)^3+E(5)^4
    = (-3-Sqrt(5))/2 = -2-b5
  D = E(5)+E(5)^4
    = (-1+Sqrt(5))/2 = b5
  !gapprompt@gap>| !gapinput@List( irr, x -> SizeOfFieldOfDefinition( x, p ) );|
  [ 2, 4, 4, 4, 4 ]
\end{Verbatim}
 

 We use the same approach as in the previous example. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "J2" );;|
  !gapprompt@gap>| !gapinput@info:= OneAtlasGeneratingSetInfo( "J2", Dimension, 14, Ring, GF(4) );;|
  !gapprompt@gap>| !gapinput@gens:= List( AtlasGenerators( info ).generators,|
  !gapprompt@>| !gapinput@                x -> BlownUpMat( Basis(GF(4)), x ) );;|
  !gapprompt@gap>| !gapinput@orbits_from_tom( tom, gens, p );|
  rec( 
    decomp := [ 235, 33, 282, 38, 0, 0, 6, 31, 36, 0, 0, 0, 3, 66, 9, 
        0, 0, 0, 0, 0, 0, 2, 18, 0, 0, 1, 0, 0, 15, 0, 0, 0, 6, 0, 0, 
        0, 0, 0, 0, 0, 12, 0, 0, 5, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 3, 1, 3, 0, 9, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
        3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 
        0, 0, 3, 0, 0, 1 ], 
    fixed := [ 268435456, 65536, 65536, 65536, 256, 1024, 4096, 1024, 
        1024, 256, 256, 256, 64, 1024, 64, 256, 16, 16, 64, 64, 64, 
        256, 256, 64, 16, 16, 64, 64, 64, 64, 16, 16, 1024, 4, 4, 4, 4, 
        16, 16, 16, 64, 16, 16, 16, 16, 64, 16, 16, 16, 64, 16, 16, 16, 
        16, 4, 16, 16, 16, 16, 1, 64, 4, 16, 4, 64, 4, 16, 4, 16, 1, 4, 
        16, 4, 4, 16, 16, 4, 4, 16, 1, 4, 16, 1, 1, 1, 16, 4, 16, 16, 
        16, 1, 4, 16, 4, 4, 1, 4, 64, 4, 4, 4, 16, 4, 4, 4, 1, 1, 4, 
        16, 1, 4, 1, 4, 1, 4, 16, 4, 4, 1, 1, 1, 1, 4, 1, 1, 16, 1, 1, 
        4, 1, 4, 4, 1, 4, 1, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1 ], 
    nonzeropos := [ 1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 22, 23, 26, 29, 
        33, 41, 44, 46, 50, 61, 62, 63, 65, 72, 82, 93, 99, 105, 109, 
        116, 126, 131, 139, 143, 146 ], 
    staborders := [ 1, 2, 2, 3, 4, 4, 4, 6, 6, 6, 8, 8, 9, 10, 12, 12, 
        14, 16, 16, 24, 24, 24, 24, 30, 40, 50, 60, 72, 96, 120, 192, 
        240, 600, 1920, 604800 ] )
\end{Verbatim}
 

 We see that $S$ has $235$ regular orbits on (the dual space of) $N$. }

  
\section{\textcolor{Chapter }{$G/N \cong {}^3D_4(2)$ and $|N| = 2^{26}$}}\label{sect:cong}
\logpage{[ 10, 6, 0 ]}
\hyperdef{L}{X81AB173981E3EED7}{}
{
  The group $S = {}^3D_4(2)$ has exactly one irreducible $26$-dimensional module over the field with two elements, up to isomorphism. This
module is in fact absolutely irreducible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 2;;  d:= 26;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "3D4(2)" ) mod p;|
  BrauerTable( "3D4(2)", 2 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  3D4(2)mod2
  
         1a 3a 3b 7a 7b 7c 7d 9a 9b 9c 13a 13b 13c 21a 21b 21c
  
  Y.1     1  1  1  1  1  1  1  1  1  1   1   1   1   1   1   1
  Y.2     8  2 -1  A  C  B  1  D  F  E   G   I   H   J   L   K
  Y.3     8  2 -1  B  A  C  1  E  D  F   H   G   I   K   J   L
  Y.4     8  2 -1  C  B  A  1  F  E  D   I   H   G   L   K   J
  Y.5    26 -1 -1  5  5  5 -2  2  2  2   .   .   .  -1  -1  -1
  
  A = 3*E(7)^2+E(7)^3+E(7)^4+3*E(7)^5
  B = 3*E(7)+E(7)^2+E(7)^5+3*E(7)^6
  C = E(7)+3*E(7)^3+3*E(7)^4+E(7)^6
  D = -E(9)^2+E(9)^3-2*E(9)^4-2*E(9)^5+E(9)^6-E(9)^7
  E = -E(9)^2+E(9)^3+E(9)^4+E(9)^5+E(9)^6-E(9)^7
  F = 2*E(9)^2+E(9)^3+E(9)^4+E(9)^5+E(9)^6+2*E(9)^7
  G = E(13)+E(13)^2+E(13)^3+E(13)^5+E(13)^8+E(13)^10+E(13)^11+E(13)^12
  H = E(13)+E(13)^4+E(13)^5+E(13)^6+E(13)^7+E(13)^8+E(13)^9+E(13)^12
  I = E(13)^2+E(13)^3+E(13)^4+E(13)^6+E(13)^7+E(13)^9+E(13)^10+E(13)^11
  J = E(7)^3+E(7)^4
  K = E(7)^2+E(7)^5
  L = E(7)+E(7)^6
\end{Verbatim}
 

 We try the same approach as in the examples about the group $J_2$. 

 
\begin{Verbatim}[commandchars=!@C,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>C !gapinput@tom:= TableOfMarks( "3D4(2)" );C
  TableOfMarks( "3D4(2)" )
  !gapprompt@gap>C !gapinput@StandardGeneratorsInfo( tom );C
  [ rec( ATLAS := true, 
        description := "|z|=8, z^4=a, |b|=9, |ab|=13, |abb|=8", 
        generators := "a, b", 
        script := [ [ 1, 8, 4 ], [ 2, 9 ], [ 1, 1, 2, 1, 13 ], 
            [ 1, 1, 2, 1, 2, 1, 8 ] ], standardization := 1 ) ]
  !gapprompt@gap>C !gapinput@info:= OneAtlasGeneratingSetInfo( "3D4(2)", Dimension, 26, Ring, GF(2) );;C
  !gapprompt@gap>C !gapinput@gens:= AtlasGenerators( info ).generators;;C
  !gapprompt@gap>C !gapinput@map:= GroupGeneralMappingByImages( UnderlyingGroup( tom ),C
  !gapprompt@>C !gapinput@     Group( gens ), GeneratorsOfGroup( UnderlyingGroup( tom ) ), gens );;C
  !gapprompt@gap>C !gapinput@IsGroupHomomorphism( map );C
  true
\end{Verbatim}
 

 Now we apply the function \texttt{orbits{\textunderscore}from{\textunderscore}tom}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbsinfo:= orbits_from_tom( tom, gens, p );;|
  !gapprompt@gap>| !gapinput@orbsinfo.fixed[1];|
  67108864
  !gapprompt@gap>| !gapinput@orbsinfo.decomp[1];|
  0
\end{Verbatim}
 

 Unfortunately, $S$ has no regular orbit on (the dual of) $N$. However, there is one orbit whose point stabilizer in $S$ is a dihedral group $D_{18}$ of order $18$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbsinfo.staborders;|
  [ 16, 16, 18, 42, 48, 52, 64, 72, 392, 1008, 1536, 3024, 3072, 3584, 
    258048, 211341312 ]
  !gapprompt@gap>| !gapinput@orbsinfo.nonzeropos[3];|
  446
  !gapprompt@gap>| !gapinput@orbsinfo.decomp[446];|
  1
  !gapprompt@gap>| !gapinput@u:= RepresentativeTom( tom, 446 );|
  <permutation group of size 18 with 2 generators>
  !gapprompt@gap>| !gapinput@IsDihedralGroup( u );|
  true
\end{Verbatim}
 

 Thus there ia a linear character $\lambda$ of $N$ whose inertia subgroup $T = I_G(\lambda)$ has the structure $N.D_{18}$. Now ${{\rm Irr}}( T | \lambda )$ can be identified with those irreducibles of $T/\ker(\lambda)$ that restrict nontrivially to $N/\ker(\lambda)$, and there are only two groups, up to isomorphism, that can occur as $T/\ker(\lambda)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= Filtered( AllSmallGroups( 36 ),|
  !gapprompt@>| !gapinput@            x -> Size( Centre( x ) ) = 2 and|
  !gapprompt@>| !gapinput@                 IsDihedralGroup( x / Centre( x ) ) );|
  [ <pc group of size 36 with 4 generators>, 
    <pc group of size 36 with 4 generators> ]
  !gapprompt@gap>| !gapinput@List( cand, StructureDescription );|
  [ "C9 : C4", "D36" ]
\end{Verbatim}
 

 These two groups are a split and a nonsplit extension of the cyclic group of
order $18$ with a group of order two that acts by inverting. In other words, these two
groups are the direct product of $D_{18}$ with a cyclic group of order two and the subdirect product of $D_{18}$ with a cyclic group of order four. 

 Both groups possess irreducible characters of degree two, one rational valued
and the other not, which restrict nontrivially to the centre. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Display( CharacterTable( "Dihedral", 18 ) );|
  Dihedral(18)
  
       2  1  .  .  .  .  1
       3  2  2  2  2  2  .
  
         1a 9a 9b 3a 9c 2a
      2P 1a 9b 9c 3a 9a 1a
      3P 1a 3a 3a 1a 3a 2a
  
  X.1     1  1  1  1  1  1
  X.2     1  1  1  1  1 -1
  X.3     2  A  B -1  C  .
  X.4     2  B  C -1  A  .
  X.5     2 -1 -1  2 -1  .
  X.6     2  C  A -1  B  .
  
  A = -E(9)^2-E(9)^4-E(9)^5-E(9)^7
  B = E(9)^2+E(9)^7
  C = E(9)^4+E(9)^5
\end{Verbatim}
 

 By
\texttt{\symbol{92}}cite[Lemma{\nobreakspace}5.1{\nobreakspace}(ii)]\texttt{\symbol{123}}DNT\texttt{\symbol{125}},
we are done. }

  
\section{\textcolor{Chapter }{$G/N \cong {}^3D_4(2)$ and $|N| = 3^{25}$}}\label{sect:}
\logpage{[ 10, 7, 0 ]}
\hyperdef{L}{X83B044547B96B7A5}{}
{
  The group $S = {}^3D_4(2)$ has exactly one irreducible $25$-dimensional module over the field with three elements, up to isomorphism.
This module is in fact absolutely irreducible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@p:= 3;;  d:= 25;;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "3D4(2)" ) mod p;|
  BrauerTable( "3D4(2)", 3 )
  !gapprompt@gap>| !gapinput@irr:= Filtered( Irr( t ), x -> x[1] <= d );;|
  !gapprompt@gap>| !gapinput@Display( t, rec( chars:= irr, powermap:= false,|
  !gapprompt@>| !gapinput@                    centralizers:= false ) );|
  3D4(2)mod3
  
         1a 2a 2b 4a 4b 4c 7a 7b 7c 7d 8a 8b 13a 13b 13c 14a 14b 14c 28a
  
  Y.1     1  1  1  1  1  1  1  1  1  1  1  1   1   1   1   1   1   1   1
  Y.2    25 -7  1  5 -3  1  4  4  4 -3 -1 -1  -1  -1  -1   .   .   .  -2
  
         28b 28c
  
  Y.1      1   1
  Y.2     -2  -2
\end{Verbatim}
 

 We use the same approach as in the examples about the group $J_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "3D4(2)" );;|
  !gapprompt@gap>| !gapinput@info:= OneAtlasGeneratingSetInfo( "3D4(2)", Dimension, d, Ring, GF(p) );;|
  !gapprompt@gap>| !gapinput@gens:= AtlasGenerators( info ).generators;;|
  !gapprompt@gap>| !gapinput@orbsinfo:= orbits_from_tom( tom, gens, p );;|
  !gapprompt@gap>| !gapinput@orbsinfo.fixed[1];|
  847288609443
  !gapprompt@gap>| !gapinput@orbsinfo.decomp[1];|
  3551
\end{Verbatim}
 

 We see that $S$ has $3\,551$ regular orbits on (the dual space of) $N$. }

 }

     
\chapter{\textcolor{Chapter }{\textsf{GAP} Computations Concerning Probabilistic Generation of Finite Simple Groups}}\label{chap:probgen}
\logpage{[ 11, 0, 0 ]}
\hyperdef{L}{X7BE9906583D0FCEC}{}
{
  Date: March 28th, 2012 

 This is a collection of examples showing how the \textsf{GAP} system{\nobreakspace}\cite{GAP} can be used to compute information about the probabilistic generation of
finite almost simple groups. It includes all examples that were needed for the
computational results in{\nobreakspace}\cite{BGK}. 

 The purpose of this writeup is twofold. On the one hand, the computations are
documented this way. On the other hand, the \textsf{GAP} code shown for the examples can be used as test input for automatic checking
of the data and the functions used. 

 A first version of this document, which was based on \textsf{GAP}{\nobreakspace}4.4.10, had been accessible in the web since
April{\nobreakspace}2006 and is available in the arXiv (no. 0710.3267) since
October{\nobreakspace}2007.  The differences between that document and the current version are as follows. 
\begin{itemize}
\item  The format of the \textsf{GAP} output was adjusted to the changed behaviour of \textsf{GAP} until version{\nobreakspace}4.10. This affects mainly the way how \textsf{GAP} records are printed. 
\item  Several computations are now easier because more character tables of almost
simple groups and maximal subgroups of such groups are available in the \textsf{GAP} Character Table Library. (The more involved computations from the original
version have been kept in the file.) 
\item  The computation of all conjugacy classes of a subgroup of ${{\rm P\hbox{$\Omega$}}}^+(12,3)$ has been replaced by the computation of the conjugacy classes of elements of
prime order in this subgroup. 
\item  The irreducible element chosen in the simple group ${{\rm P\hbox{$\Omega$}}}^-(10,3)$ has order $61$ not $122$. 
\end{itemize}
   
\section{\textcolor{Chapter }{Overview}}\label{sect:probgen_overview}
\logpage{[ 11, 1, 0 ]}
\hyperdef{L}{X8389AD927B74BA4A}{}
{
  The main purpose of this note is to document the \textsf{GAP} computations that were carried out in order to obtain the computational
results in{\nobreakspace}\cite{BGK}. Table{\nobreakspace}I lists the simple groups among these examples. The
first column gives the group names, the second and third columns contain a
plus sign $+$ or a minus sign $-$, depending on whether the quantities ${{\sigma}}(G,s)$ and $P(G,s)$, respectively, are less than $1/3$. The fourth column lists the orders of elements $s$ which either prove the $+$ signs or cover most of the cases for proving these signs. The fifth column
lists the sections in this note where the example is treated. The rows of the
table are ordered alphabetically w.r.t.{\nobreakspace}the group names. 

 In order to keep this note self-contained, we first describe the theory
needed, in Section{\nobreakspace}\ref{sect:probgen-background}. The translation of the relevant formulae into \textsf{GAP} functions can be found in Section{\nobreakspace}\ref{sect:probgen-functions}. Then Section{\nobreakspace}\ref{sect:chartheor} describes the computations that only require (ordinary) character tables in
the \textsf{GAP} Character Table Library{\nobreakspace}\cite{CTblLib}. Computations using also the groups are shown in Section{\nobreakspace}\ref{sect:hard}. In each of the last two sections, the examples are ordered alphabetically
w.r.t.{\nobreakspace}the names of the simple groups. 

 \begin{center}
\begin{tabular}{|l|c|c|r|r|}\hline
$G$&
${{\sigma}} < \frac{1}{3}$&
$P < \frac{1}{3}$&
$|s|$&
see\\
\hline
\hline
$A_5$&
$-$&
$-$&
$5$&
\ref{A5}\\
$A_6$&
$-$&
$-$&
$4$&
\ref{A6}\\
$A_7$&
$-$&
$-$&
$7$&
\ref{A7}\\
$A_8$&
$+$&
{\nobreakspace}&
$15$&
\ref{easyloop}, \ref{SL}\\
$A_9$&
$+$&
{\nobreakspace}&
$9$&
\ref{easyloop}, \ref{Aodd}\\
$A_{11}$&
$+$&
{\nobreakspace}&
$11$&
\ref{easyloop}, \ref{Aodd}\\
$A_{13}$&
$+$&
{\nobreakspace}&
$13$&
\ref{easyloop}, \ref{Aodd}\\
$A_{15}$&
$+$&
{\nobreakspace}&
$15$&
\ref{Aodd}\\
$A_{17}$&
$+$&
{\nobreakspace}&
$17$&
\ref{Aodd}\\
$A_{19}$&
$+$&
{\nobreakspace}&
$19$&
\ref{Aodd}\\
$A_{21}$&
$+$&
{\nobreakspace}&
$21$&
\ref{Aodd}\\
$A_{23}$&
$+$&
{\nobreakspace}&
$23$&
\ref{Aodd}\\
$L_3(2)$&
$+$&
{\nobreakspace}&
$7$&
\ref{easyloop}, \ref{easyloopaut},\\
{\nobreakspace}&
{\nobreakspace}&
{\nobreakspace}&
{\nobreakspace}&
\ref{SL}, \ref{L32}\\
$L_3(3)$&
$+$&
{\nobreakspace}&
$13$&
\ref{easyloop}, \ref{easyloopaut},\\
{\nobreakspace}&
{\nobreakspace}&
{\nobreakspace}&
{\nobreakspace}&
\ref{SL}\\
$L_3(4)$&
$+$&
{\nobreakspace}&
$7$&
\ref{easyloop}, \ref{easyloopaut}\\
$L_4(3)$&
$+$&
{\nobreakspace}&
$20$&
\ref{easyloop}, \ref{SL}\\
$L_4(4)$&
$+$&
{\nobreakspace}&
$85$&
\ref{SL}\\
$L_6(2)$&
$+$&
{\nobreakspace}&
$63$&
\ref{SL}\\
$L_6(3)$&
$+$&
{\nobreakspace}&
$182$&
\ref{SL}\\
$L_6(4)$&
$+$&
{\nobreakspace}&
$455$&
\ref{SL}\\
$L_6(5)$&
$+$&
{\nobreakspace}&
$1953$&
\ref{SL}\\
$L_8(2)$&
$+$&
{\nobreakspace}&
$255$&
\ref{SL}\\
$L_{10}(2)$&
$+$&
{\nobreakspace}&
$1023$&
\ref{SL}\\
\hline
$M_{11}$&
$-$&
$-$&
$11$&
\ref{spreadM11}\\
$M_{12}$&
$-$&
$+$&
$10$&
\ref{probgen:sporaut}, \ref{spreadM12}\\
\hline
$O^+_8(2)$&
$-$&
$-$&
$15$&
\ref{O8p2}\\
$O^+_8(3)$&
$-$&
$-$&
$20$&
\ref{O8p3}\\
$O^+_8(4)$&
$+$&
{\nobreakspace}&
$65$&
\ref{O8p4}\\
$O^+_{10}(2)$&
$+$&
{\nobreakspace}&
$45$&
\ref{O10p2}\\
$O^+_{12}(2)$&
$+$&
{\nobreakspace}&
$85$&
\ref{O12p2}\\
$O^+_{12}(3)$&
$+$&
{\nobreakspace}&
$205$&
\ref{O12p3}\\
$O^-_8(2)$&
$+$&
{\nobreakspace}&
$17$&
\ref{easyloop}\\
$O^-_8(3)$&
$+$&
{\nobreakspace}&
$41$&
\ref{O8m3}\\
$O^-_{10}(2)$&
$+$&
{\nobreakspace}&
$33$&
\ref{O10m2}\\
$O^-_{10}(3)$&
$+$&
{\nobreakspace}&
$122$&
\ref{O10m3}\\
$O^-_{12}(2)$&
$+$&
{\nobreakspace}&
$65$&
\ref{O12m2}\\
$O^-_{14}(2)$&
$+$&
{\nobreakspace}&
$129$&
\ref{O14m2}\\
$O_7(3)$&
$-$&
$-$&
$14$&
\ref{O73}\\
\hline
$S_4(4)$&
$+$&
{\nobreakspace}&
$17$&
\ref{easyloop}, \ref{easyloopaut}\\
$S_6(2)$&
$-$&
$-$&
$9$&
\ref{S62}\\
$S_6(3)$&
$+$&
{\nobreakspace}&
$14$&
\ref{easyloop}, \ref{easyloopaut}\\
$S_6(4)$&
$+$&
{\nobreakspace}&
$65$&
\ref{S64}\\
$S_8(2)$&
$-$&
$-$&
$17$&
\ref{S82}\\
$S_8(3)$&
$+$&
{\nobreakspace}&
$41$&
\ref{S83}\\
\hline
$U_3(3)$&
$+$&
{\nobreakspace}&
$6$&
\ref{easyloop}, \ref{easyloopaut}\\
$U_3(5)$&
$+$&
{\nobreakspace}&
$10$&
\ref{easyloop}, \ref{easyloopaut}\\
$U_4(2)$&
$-$&
$-$&
$9$&
\ref{U42}\\
$U_4(3)$&
$-$&
$+$&
$7$&
\ref{U43}\\
$U_4(4)$&
$+$&
{\nobreakspace}&
$65$&
\ref{U44}\\
$U_5(2)$&
$+$&
{\nobreakspace}&
$11$&
\ref{easyloop}\\
$U_6(2)$&
$+$&
{\nobreakspace}&
$11$&
\ref{U62}\\
$U_6(3)$&
$+$&
{\nobreakspace}&
$122$&
\ref{U63}\\
$U_8(2)$&
$+$&
{\nobreakspace}&
$129$&
\ref{U82}\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Table I: Computations needed in{\nobreakspace}\cite{BGK}\end{center}

 

 Contrary to{\nobreakspace}\cite{BGK}, \textsf{Atlas} notation is used throughout this note, because the identifiers used for
character tables in the \textsf{GAP} Character Table Library follow mainly the \textsf{Atlas}{\nobreakspace}\cite{CCN85}. For example, we write $L_d(q)$ for ${{\rm PSL}}(d,q)$, $S_d(q)$ for ${{\rm PSp}}(d,q)$, $U_d(q)$ for ${{\rm PSU}}(d,q)$, and $O^+_{2d}(q)$, $O^-_{2d}(q)$, $O_{2d+1}(q)$ for ${{\rm P\hbox{$\Omega$}}}^+(2d,q)$, ${{\rm P\hbox{$\Omega$}}}^-(2d,q)$, ${{\rm P\hbox{$\Omega$}}}(2d+1,q)$, respectively. 

 Furthermore, in the case of classical groups, the character tables of the
(almost) \emph{simple} groups are considered not the tables of the matrix groups (which are in fact
often not available in the \textsf{GAP} Character Table Library). Consequently, also element orders and the
description of maximal subgroups refer to the (almost) simple groups not to
the matrix groups. 

 This note contains also several examples that are not needed for the proofs
in{\nobreakspace}\cite{BGK}. Besides several small simple groups $G$ whose character table is contained in the \textsf{GAP} Character Table Library and for which enough information is available for
computing ${{\sigma}}(G)$, in Section{\nobreakspace}\ref{easyloop}, a few such examples appear in individual sections. In the table of contents,
the section headers of the latter kind of examples are marked with an asterisk $(\ast)$. 

 The examples use the \textsf{GAP} Character Table Library, the \textsf{GAP} Library of Tables of Marks,  and the \textsf{GAP} interface{\nobreakspace}\cite{AtlasRep} to the \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3}, so we first load these three packages in the required versions. The \textsf{GAP} output was adjusted to the versions shown below; in older versions, features
necessary for the computations may be missing, and it may happen that with
newer versions, the behaviour is different. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CompareVersionNumbers( GAPInfo.Version, "4.5.0" );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "ctbllib", "1.2", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "tomlib", "1.2", false );|
  true
  !gapprompt@gap>| !gapinput@LoadPackage( "atlasrep", "1.5", false );|
  true
\end{Verbatim}
 

 Some of the computations in Section{\nobreakspace}\ref{sect:hard} require about $800$ MB of space (on $32$ bit machines). Therefore we check whether \textsf{GAP} was started with sufficient maximal memory; the command line option for this
is \texttt{-o 800m}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@max:= GAPInfo.CommandLineOptions.o;;|
  !gapprompt@gap>| !gapinput@if not ( ( IsSubset( max, "m" ) and|
  !gapprompt@>| !gapinput@              Int( Filtered( max, IsDigitChar ) ) >= 800 ) or|
  !gapprompt@>| !gapinput@            ( IsSubset( max, "g" ) and|
  !gapprompt@>| !gapinput@              Int( Filtered( max, IsDigitChar ) ) >= 1 ) ) then|
  !gapprompt@>| !gapinput@     Print( "the maximal allowed memory might be too small\n" );|
  !gapprompt@>| !gapinput@   fi;|
\end{Verbatim}
 

 Several computations involve calls to the \textsf{GAP} function \texttt{Random} (\textbf{Reference: Random}). In order to make the results of individual examples reproducible,
independent of the rest of the computations, we reset the relevant random
number generators whenever this is appropriate. For that, we store the initial
states in the variable \texttt{staterandom}, and provide a function for resetting the random number generators. (The \texttt{Random} (\textbf{Reference: Random}) calls in the \textsf{GAP} library use the two random number generators \texttt{GlobalRandomSource} (\textbf{Reference: GlobalRandomSource}) and \texttt{GlobalMersenneTwister} (\textbf{Reference: GlobalMersenneTwister}).) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@staterandom:= [ State( GlobalRandomSource ),|
  !gapprompt@>| !gapinput@                   State( GlobalMersenneTwister ) ];;|
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators:= function()|
  !gapprompt@>| !gapinput@    Reset( GlobalRandomSource, staterandom[1] );|
  !gapprompt@>| !gapinput@    Reset( GlobalMersenneTwister, staterandom[2] );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Prerequisites}}\label{sect:probgen-background}
\logpage{[ 11, 2, 0 ]}
\hyperdef{L}{X7B4649CF7B7CFAA1}{}
{
   
\subsection{\textcolor{Chapter }{Theoretical Background}}\label{sect:Theoretical Background}
\logpage{[ 11, 2, 1 ]}
\hyperdef{L}{X7B6AEBDF7B857E2E}{}
{
  Let $G$ be a finite group, $S$ the socle of $G$, and denote by $G^{\times}$ the set of nonidentity elements in $G$. For $s, g \in G^{\times}$, let $P( g, s ):= |\{ h \in G; S \nsubseteq \langle s^h, g \rangle \}| / |G|$, the proportion of elements in the class $s^G$ which fail to generate at least $S$ with $g$; we set $P( G, s ):= \max\{ P( g, s ); g \in G^{\times} \}$. We are interested in finding a class $s^G$ of elements in $S$ such that $P( G, s ) < 1/3$ holds. 

 First consider $g \in S$, and let ${{\mathbb M}}(S,s)$ denote the set of those maximal subgroups of $S$ that contain $s$. We have 
\[ |\{ h \in S; S \nsubseteq \langle s^h, g \rangle \}| = |\{ h \in S; \langle s,
h g h^{-1} \rangle {{\not=}} S \}| \\ \leq \sum_{M \in {{\mathbb M}}(S,s)} |\{ h \in S; h g h^{-1} \in M \}| \]
 Since $h g h^{-1} \in M$ holds if and only if the coset $M h$ is fixed by $g$ under the permutation action of $S$ on the right cosets of $M$ in $S$, we get that $|\{ h \in S; h g h^{-1} \in M \}| = |C_S(g)| \cdot |g^S \cap M| = |M| \cdot
1_M^S(g)$, where $1_M^S$ is the permutation character of this action, of degree $|S|/|M|$. Thus 
\[ |\{ h \in S; \langle s, h g h^{-1} \rangle {{\not=}} S \}| / |S| \leq \sum_{M \in {{\mathbb M}}(S,s)} 1_M^S(g) / 1_M^S(1) . \]
 We abbreviate the right hand side of this inequality by ${{\sigma}}( g, s )$, set ${{\sigma}}( S, s ):= \max\{ {{\sigma}}( g, s ); g \in S^{\times} \}$, and choose a transversal $T$ of $S$ in $G$. Then $P( g, s ) \leq |T|^{-1} \cdot \sum_{t \in T} {{\sigma}}( g^t, s )$ and thus $P( G, s ) \leq {{\sigma}}( S, s )$ holds. 

 If $S = G$ and if ${{\mathbb M}}(G,s)$ consists of a single maximal subgroup $M$ of $G$ then equality holds, i.e., $P( g, s ) = {{\sigma}}( g, s ) = 1_M^S(g) / 1_M^S(1)$. 

 The quantity $1_M^S(g) / 1_M^S(1) = |g^S \cap M| / |g^S|$ is the proportion of fixed points of $g$ in the permutation action of $S$ on the right cosets of its subgroup $M$. This is called the \emph{fixed point ratio} of $g$ w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}$S/M$, and is denoted as ${{\mu}}(g,S/M)$. 

 For a subgroup $M$ of $S$, the number $n$ of $S$-conjugates of $M$ containing $s$ is equal to $|M^S| \cdot |s^S \cap M| / |s^S|$. To see this, consider the set $\{ (s^h, M^k); h, k \in S, s^h \in M^k \}$, the cardinality of which can be counted either as $|M^S| \cdot |s^S \cap M|$ or as $|s^S| \cdot n$. So we get $n = |M| \cdot 1_M^S(s) / |N_S(M)|$. 

 If $S$ is a finite \emph{nonabelian simple} group then each maximal subgroup in $S$ is self-normalizing, and we have $n = 1_M^S(s)$ if $M$ is maximal. So we can replace the summation over ${{\mathbb M}}(S,s)$ by one over a set ${{\tilde{\mathbb M}}}(S,s)$ of representatives of conjugacy classes of maximal subgroups of $S$, and get that 
\[ {{\sigma}}( g, s ) = \sum_{M \in {{\tilde{\mathbb M}}}(S,s)} \frac{1_M^S(s) \cdot 1_M^S(g)}{1_M^S(1)}. \]
 Furthermore, we have $|{{\mathbb M}}(S,s)| = \sum_{M \in {{\tilde{\mathbb M}}}(S,s)} 1_M^S(s)$. 

 In the following, we will often deal with the quantities ${{\sigma}}(S):= \min\{ {{\sigma}}( S, s ); s \in S^{\times} \}$ and ${{\cal S}}(S):= \lceil 1 / {{\sigma}}(S) - 1 \rceil$. These values can be computed easily from the primitive permutation
characters of $S$. 

 Analogously, we set $P(S):= \min \{ P( S, s ); s \in S^{\times} \}$ and ${{\cal P}}(S):= \lceil 1 / P(S) - 1 \rceil$. Clearly we have $P(S) \leq {{\sigma}}(S)$ and ${{\cal P}}(S) \geq {{\cal S}}(S)$. 

 One interpretation of ${{\cal P}}(S)$ is that if this value is at least $k$ then it follows that for any $g_1, g_2, \ldots, g_k \in S^{\times}$, there is some $s \in S$ such that $S = \langle g_i, s \rangle$, for $1 \leq i \leq k$. In this case, $S$ is said to have \emph{spread} at least $k$. (Note that the lower bound ${{\cal S}}(S)$ for ${{\cal P}}(S)$ can be computed from the list of primitive permutation characters of $S$.) 

 Moreover, ${{\cal P}}(S) \geq k$ implies that the element $s$ can be chosen uniformly from a fixed conjugacy class of $S$. This is called \emph{uniform spread} at least $k$ in{\nobreakspace}\cite{BGK}. 

 It is proved in{\nobreakspace}\cite{GK} that all finite simple groups have uniform spread at least $1$, that is, for any element $x \in S^{\times}$, there is an element $y$ in a prescribed class of $S$ such that $G = \langle x, y \rangle$ holds. In{\nobreakspace}\cite[Corollary{\nobreakspace}1.3]{BGK}, it is shown that all finite simple groups have uniform spread at least $2$, and the finite simple groups with (uniform) spread exactly $2$ are listed. 

 Concerning the spread, it should be mentioned that the methods used here and
in{\nobreakspace}\cite{BGK} are nonconstructive in the sense that they cannot be used for finding an
element $s$ that generates $G$ together with each of the $k$ prescribed elements $g_1, g_2, \ldots, g_k$. 

 Now consider $g \in G \setminus S$. Since $P( g^k, s ) \geq P( g, s )$ for any positive integer $k$, we can assume that $g$ has prime order $p$, say. We set $H = \langle S, g \rangle \leq G$, with $[H:S] = p$, choose a transversal $T$ of $H$ in $G$, let ${{\mathbb M}}^{\prime}(H,s):= {{\mathbb M}}(H,s) \setminus \{ S \}$, and let ${{\tilde{\mathbb M}}}^{\prime}(H,s)$ denote a set of representatives of $H$-conjugacy classes of these groups. As above,  \begin{center}
\begin{tabular}{rcl}$|\{ h \in H; S \nsubseteq \langle s^h, g \rangle \}| / |H|$&
$=$&
$|\{ h \in H; \langle s^h, g \rangle {{\not=}} H \}| / |H|$\\
{\nobreakspace}&
$\leq$&
$\sum_{M \in {{\mathbb M}}^{\prime}(H,s)} |\{ h \in H; h g h^{-1} \in M \}| / |H|$\\
{\nobreakspace}&
$=$&
$\sum_{M \in {{\mathbb M}}^{\prime}(H,s)} 1_M^H(g) / 1_M^H(1)$\\
{\nobreakspace}&
$=$&
$\sum_{M \in {{\tilde{\mathbb M}}}^{\prime}(H,s)} 1_M^H(g) \cdot 1_M^H(s) / 1_M^H(1)$\\
\end{tabular}\\[2mm]
\end{center}

 (Note that no summand for $M = S$ occurs, so each group in ${{\tilde{\mathbb M}}}^{\prime}(H,s)$ is self-normalizing.) We abbreviate the right hand side by ${{\sigma}}(H,g,s)$, and set ${{\sigma}}^{\prime}( H, s ) = \max\{ {{\sigma}}(H,g,s); g \in H \setminus S, |g| = [H:S] \}$. Then we get $P( g, s ) \leq |T|^{-1} \cdot \sum_{t \in T} {{\sigma}}(H^t,g^t,s)$ and thus 
\[ P( G, s ) \leq \max\{ P( S, s ), \max\{ {{\sigma}}^{\prime}( H, s ); S \leq H \leq G, [H:S] \textrm{\ prime} \} \} . \]
 For convenience, we set $P^{\prime}(G,s) = \max\{ P(g,s); g \in G \setminus S \}$. }

  
\subsection{\textcolor{Chapter }{Computational Criteria}}\label{sect:probgen-criteria}
\logpage{[ 11, 2, 2 ]}
\hyperdef{L}{X79D7312484E78274}{}
{
  The following criteria will be used when we have to show the existence or
nonexistence of $x_1, x_2, \ldots, x_k$, and $s \in G$ with the property $\langle x_i, s \rangle = G$ for $1 \leq i \leq k$. Note that manipulating lists of integers (representing fixed or moved
points) is much more efficient than testing whether certain permutations
generate a given group. 

 Lemma: 

 Let $G$ be a finite group, $s \in G^{\times}$, and $X = \bigcup_{M \in {{\mathbb M}}(G,s)} G/M$. For $x_1, x_2, \ldots, x_k \in G$, the conjugate $s^{\prime}$ of $s$ satisfies $\langle x_i, s^{\prime} \rangle = G$ for $1 \leq i \leq k$ if and only if ${{\rm Fix}}_{X}(s^{\prime}) \cap \bigcup_{i=1}^k {{\rm Fix}}_{X}(x_i) = \emptyset$ holds. 

 \emph{Proof.} If $s^g \in U \leq G$ for some $g \in G$ then ${{\rm Fix}}_{X}(U) = \emptyset$ if and only if $U = G$ holds; note that ${{\rm Fix}}_{X}(G) = \emptyset$, and ${{\rm Fix}}_{X}(U) = \emptyset$ implies that $U \nsubseteq h^{-1} M h$ holds for all $h \in G$ and $M \in {{\mathbb M}}(G,s)$, thus $U = G$. Applied to $U = \langle x_i, s^{\prime} \rangle$, we get $\langle x_i, s^{\prime} \rangle = G$ if and only if ${{\rm Fix}}_{X}(s^{\prime}) \cap {{\rm Fix}}_{X}(x_i) = {{\rm Fix}}_{X}(U) = \emptyset$.   

 Corollary{\nobreakspace}1: 

 If ${{\mathbb M}}(G,s) = \{ M \}$ in the situation of the above Lemma then there is a conjugate $s^{\prime}$ of $s$ that satisfies $\langle x_i, s^{\prime} \rangle = G$ for $1 \leq i \leq k$ if and only if $\bigcup_{i=1}^k {{\rm Fix}}_{X}(x_i) {{\not=}} X$. 

 Corollary{\nobreakspace}2: 

 Let $G$ be a finite simple group and let $X$ be a $G$-set such that each $g \in G$ fixes at least one point in $X$ but that ${{\rm Fix}}_{X}(G) = \emptyset$ holds. If $x_1, x_2, \ldots x_k$ are elements in $G$ such that $\bigcup_{i=1}^k {{\rm Fix}}_{X}(x_i) = X$ holds then for each $s \in G$ there is at least one $i$ with $\langle x_i, s \rangle {{\not=}} G$. }

 }

  
\section{\textcolor{Chapter }{\textsf{GAP} Functions for the Computations}}\label{sect:probgen-functions}
\logpage{[ 11, 3, 0 ]}
\hyperdef{L}{X7B56BE5384BAD54E}{}
{
  After the introduction of general utilities in Section{\nobreakspace}\ref{subsect:utils}, we distinguish two different tasks. Section{\nobreakspace}\ref{subsect:probgen-ctfun} introduces functions that will be used in the following to compute ${{\sigma}}(g,s)$ with character-theoretic methods. Functions for computing $P(g,s)$ or an upper bound for this value will be introduced in Section{\nobreakspace}\ref{subsect:groups}. 

 The \textsf{GAP} functions shown in this section are collected in the file \texttt{tst/probgen.g} that is distributed with the \textsf{GAP} Character Table Library, see{\nobreakspace}\href{http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib} {\texttt{http://www.math.rwth-aachen.de/\texttt{\symbol{126}}Thomas.Breuer/ctbllib}}. 

 The functions have been designed for the examples in the later sections, they
could be generalized and optimized for other examples. It is not our aim to
provide a package for this functionality.  
\subsection{\textcolor{Chapter }{General Utilities}}\label{subsect:utils}
\logpage{[ 11, 3, 1 ]}
\hyperdef{L}{X806328747D1D4ECC}{}
{
  Let \texttt{list} be a dense list and \texttt{prop} be a unary function that returns \texttt{true} or \texttt{false} when applied to the entries of \texttt{list}. \texttt{PositionsProperty} returns the set of positions in \texttt{list} for which \texttt{true} is returned. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@if not IsBound( PositionsProperty ) then|
  !gapprompt@>| !gapinput@     PositionsProperty:= function( list, prop )|
  !gapprompt@>| !gapinput@       return Filtered( [ 1 .. Length( list ) ], i -> prop( list[i] ) );|
  !gapprompt@>| !gapinput@     end;|
  !gapprompt@>| !gapinput@   fi;|
\end{Verbatim}
 

  The following two functions implement loops over ordered triples (and
quadruples, respectively) in a Cartesian product. A prescribed function \texttt{prop} is subsequently applied to the triples (quadruples), and if the result of this
call is \texttt{true} then this triple (quadruple) is returned immediately; if none of the calls to \texttt{prop} yields \texttt{true} then \texttt{fail} is returned. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "TripleWithProperty", function( threelists, prop )|
  !gapprompt@>| !gapinput@    local i, j, k, test;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    for i in threelists[1] do|
  !gapprompt@>| !gapinput@      for j in threelists[2] do|
  !gapprompt@>| !gapinput@        for k in threelists[3] do|
  !gapprompt@>| !gapinput@          test:= [ i, j, k ];|
  !gapprompt@>| !gapinput@          if prop( test ) then|
  !gapprompt@>| !gapinput@              return test;|
  !gapprompt@>| !gapinput@          fi;|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return fail;|
  !gapprompt@>| !gapinput@end );|
  !gapprompt@gap>| !gapinput@BindGlobal( "QuadrupleWithProperty", function( fourlists, prop )|
  !gapprompt@>| !gapinput@    local i, j, k, l, test;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    for i in fourlists[1] do|
  !gapprompt@>| !gapinput@      for j in fourlists[2] do|
  !gapprompt@>| !gapinput@        for k in fourlists[3] do|
  !gapprompt@>| !gapinput@          for l in fourlists[4] do|
  !gapprompt@>| !gapinput@            test:= [ i, j, k, l ];|
  !gapprompt@>| !gapinput@            if prop( test ) then|
  !gapprompt@>| !gapinput@              return test;|
  !gapprompt@>| !gapinput@            fi;|
  !gapprompt@>| !gapinput@          od;|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return fail;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 Of course one could do better by considering \emph{un}ordered $n$-tuples when several of the argument lists are equal, and in practice,
backtrack searches would often allow one to prune parts of the search tree in
early stages. However, the above loops are not time critical in the examples
presented here, so the possible improvements are not worth the effort for our
purposes. 

 The function \texttt{PrintFormattedArray} prints the matrix \texttt{array} in a columnwise formatted way. (The only diference to the \textsf{GAP} library function \texttt{PrintArray} (\textbf{Reference: PrintArray}) is that \texttt{PrintFormattedArray} chooses each column width according to the entries only in this column not
w.r.t.{\nobreakspace}the whole matrix.) 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "PrintFormattedArray", function( array )|
  !gapprompt@>| !gapinput@     local colwidths, n, row;|
  !gapprompt@>| !gapinput@     array:= List( array, row -> List( row, String ) );|
  !gapprompt@>| !gapinput@     colwidths:= List( TransposedMat( array ),|
  !gapprompt@>| !gapinput@                       col -> Maximum( List( col, Length ) ) );|
  !gapprompt@>| !gapinput@     n:= Length( array[1] );|
  !gapprompt@>| !gapinput@     for row in List( array, row -> List( [ 1 .. n ],|
  !gapprompt@>| !gapinput@                  i -> String( row[i], colwidths[i] ) ) ) do|
  !gapprompt@>| !gapinput@       Print( "  ", JoinStringsWithSeparator( row, " " ), "\n" );|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 Finally, \texttt{CleanWorkspace} is a utility for reducing the space needed. This is achieved by unbinding
those user variables that are not write protected and are not mentioned in the
list \texttt{NeededVariables} of variable names that are bound now, and by flushing the caches of tables of
marks and character tables.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "NeededVariables", NamesUserGVars() );|
  !gapprompt@gap>| !gapinput@BindGlobal( "CleanWorkspace", function()|
  !gapprompt@>| !gapinput@      local name, record;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@      for name in Difference( NamesUserGVars(), NeededVariables ) do|
  !gapprompt@>| !gapinput@       if not IsReadOnlyGlobal( name ) then|
  !gapprompt@>| !gapinput@         UnbindGlobal( name );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@     for record in [ LIBTOMKNOWN, LIBTABLE ] do|
  !gapprompt@>| !gapinput@       for name in RecNames( record.LOADSTATUS ) do|
  !gapprompt@>| !gapinput@         Unbind( record.LOADSTATUS.( name ) );|
  !gapprompt@>| !gapinput@         Unbind( record.( name ) );|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The function \texttt{PossiblePermutationCharacters} takes two ordinary character tables \texttt{sub} and \texttt{tbl}, computes the possible class fusions from \texttt{sub} to \texttt{tbl}, then induces the trivial character of \texttt{sub} to \texttt{tbl}, w.r.t.{\nobreakspace}these fusions, and returns the set of these class
functions. (So if \texttt{sub} and \texttt{tbl} are the character tables of groups $H$ and $G$, respectively, where $H$ is a subgroup of $G$, then the result contains the permutation character $1_H^G$.) 

 Note that the columns of the character tables in the \textsf{GAP} Character Table Library are not explicitly associated with particular
conjugacy classes of the corresponding groups, so from the character tables,
we can compute only \emph{possible} class fusions, i.e., maps between the columns of two tables that satisfy
certain necessary conditions, see the section about the function \texttt{PossibleClassFusions} in the \textsf{GAP} Reference Manual for details. There is no problem if the permutation character
is uniquely determined by the character tables, in all other cases we give ad
hoc arguments for resolving the ambiguities. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@if not IsBound( PossiblePermutationCharacters ) then|
  !gapprompt@>| !gapinput@     BindGlobal( "PossiblePermutationCharacters", function( sub, tbl )|
  !gapprompt@>| !gapinput@       local fus, triv;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@       fus:= PossibleClassFusions( sub, tbl );|
  !gapprompt@>| !gapinput@       if fus = fail then|
  !gapprompt@>| !gapinput@         return fail;|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@       triv:= [ TrivialCharacter( sub ) ];|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@       return Set(|
  !gapprompt@>| !gapinput@           List( fus, map -> Induced( sub, tbl, triv, map )[1] ) );|
  !gapprompt@>| !gapinput@     end );|
  !gapprompt@>| !gapinput@   fi;|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Character-Theoretic Computations}}\label{subsect:probgen-ctfun}
\logpage{[ 11, 3, 2 ]}
\hyperdef{L}{X7A221012861440E2}{}
{
  We want to use the \textsf{GAP} libraries of character tables and of tables of marks, and proceed in three
steps. 

 First we extract the primitive permutation characters from the library
information if this is available; for that, we write the function \texttt{PrimitivePermutationCharacters}. Then the result can be used as the input for the function \texttt{ApproxP}, which computes the values ${{\sigma}}( g, s )$. Finally, the functions \texttt{ProbGenInfoSimple} and \texttt{ProbGenInfoAlmostSimple} compute ${{\cal S}}( G )$. 

 For a group $G$ whose character table $T$ is contained in the \textsf{GAP} character table library, the complete set of primitive permutation characters
can be easily computed if the character tables of all maximal subgroups and
their class fusions into $T$ are known (in this case, we check whether the attribute \texttt{Maxes} (\textbf{CTblLib: Maxes}) of $T$ is bound) or if the table of marks of $G$ and the class fusion from $T$ into this table of marks are known (in this case, we check whether the
attribute \texttt{FusionToTom} (\textbf{CTblLib: FusionToTom}) of $T$ is bound). If the attribute \texttt{UnderlyingGroup} (\textbf{Reference: UnderlyingGroup for tables of marks}) of $T$ is bound then this group can be used to compute the primitive permutation
characters. The latter happens if $T$ was computed from the group object in \textsf{GAP}; for tables in the \textsf{GAP} character table library, this is not the case by default. 

 The \textsf{GAP} function \texttt{PrimitivePermutationCharacters} tries to compute the primitive permutation characters of a group using this
information; it returns the required list of characters if this can be
computed this way, otherwise \texttt{fail} is returned. (For convenience, we use the \textsf{GAP} mechanism of \emph{attributes} in order to store the permutation characters in the character table object
once they have been computed.) 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@DeclareAttribute( "PrimitivePermutationCharacters", IsCharacterTable );|
  !gapprompt@gap>| !gapinput@InstallOtherMethod( PrimitivePermutationCharacters,|
  !gapprompt@>| !gapinput@    [ IsCharacterTable ],|
  !gapprompt@>| !gapinput@    function( tbl )|
  !gapprompt@>| !gapinput@    local maxes, tom, G;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if HasMaxes( tbl ) then|
  !gapprompt@>| !gapinput@      maxes:= List( Maxes( tbl ), CharacterTable );|
  !gapprompt@>| !gapinput@      if ForAll( maxes, s -> GetFusionMap( s, tbl ) <> fail ) then|
  !gapprompt@>| !gapinput@        return List( maxes, subtbl -> TrivialCharacter( subtbl )^tbl );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    elif HasFusionToTom( tbl ) then|
  !gapprompt@>| !gapinput@      tom:= TableOfMarks( tbl );|
  !gapprompt@>| !gapinput@      maxes:= MaximalSubgroupsTom( tom );|
  !gapprompt@>| !gapinput@      return PermCharsTom( tbl, tom ){ maxes[1] };|
  !gapprompt@>| !gapinput@    elif HasUnderlyingGroup( tbl ) then|
  !gapprompt@>| !gapinput@      G:= UnderlyingGroup( tbl );|
  !gapprompt@>| !gapinput@      return List( MaximalSubgroupClassReps( G ),|
  !gapprompt@>| !gapinput@                   M -> TrivialCharacter( M )^tbl );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return fail;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The function \texttt{ApproxP} takes a list \texttt{primitives} of primitive permutation characters of a group $G$, say, and the position \texttt{spos} of the class $s^G$ in the character table of $G$. 

 Assume that the elements in \texttt{primitives} have the form $1_M^G$, for suitable maximal subgroups $M$ of $G$, and let ${{\tilde{\mathbb M}}}$ be the set of these groups $M$. \texttt{ApproxP} returns the class function $\psi$ of $G$ that is defined by $\psi(1) = 0$ and 
\[ \psi(g) = \sum_{M \in {{\tilde{\mathbb M}}}} \frac{1_M^G(s) \cdot 1_M^G(g)}{1_M^G(1)} \]
 otherwise. 

 If \texttt{primitives} contains all those primitive permutation characters $1_M^G$ of $G$ (with multiplicity according to the number of conjugacy classes of these
maximal subgroups) that do not vanish at $s$, and if all these $M$ are self-normalizing in $G$ {\textendash}this holds for example if $G$ is a finite simple group{\textendash} then $\psi(g) = {{\sigma}}( g, s )$ holds. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "ApproxP", function( primitives, spos )|
  !gapprompt@>| !gapinput@    local sum;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    sum:= ShallowCopy( Sum( List( primitives,|
  !gapprompt@>| !gapinput@                                  pi -> pi[ spos ] * pi / pi[1] ) ) );|
  !gapprompt@>| !gapinput@    sum[1]:= 0;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return sum;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 Note that for computations with permutation characters, it would make the
functions more complicated (and not more efficient) if we would consider only
elements $g$ of prime order, and only one representative of Galois conjugate classes. 

 The next functions needed in this context compute ${{\sigma}}(S)$ and ${{\cal S}}( S )$, for a simple group $S$, and ${{\sigma}}^{\prime}(G,s)$ for an almost simple group $G$ with socle $S$, respectively. 

 \texttt{ProbGenInfoSimple} takes the character table \texttt{tbl} of $S$ as its argument. If the full list of primitive permutation characters of $S$ cannot be computed with \texttt{PrimitivePermutationCharacters} then the function returns \texttt{fail}. Otherwise \texttt{ProbGenInfoSimple} returns a list containing the identifier of the table, the value ${{\sigma}}(S)$, the integer ${{\cal S}}( S )$, a list of \textsf{Atlas} names of representatives of Galois families of those classes of elements $s$ for which ${{\sigma}}(S) = {{\sigma}}( S, s )$ holds, and the list of the corresponding cardinalities $|{{\mathbb M}}(S,s)|$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "ProbGenInfoSimple", function( tbl )|
  !gapprompt@>| !gapinput@    local prim, max, min, bound, s;|
  !gapprompt@>| !gapinput@    prim:= PrimitivePermutationCharacters( tbl );|
  !gapprompt@>| !gapinput@    if prim = fail then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    max:= List( [ 1 .. NrConjugacyClasses( tbl ) ],|
  !gapprompt@>| !gapinput@                i -> Maximum( ApproxP( prim, i ) ) );|
  !gapprompt@>| !gapinput@    min:= Minimum( max );|
  !gapprompt@>| !gapinput@    bound:= Inverse( min );|
  !gapprompt@>| !gapinput@    if IsInt( bound ) then|
  !gapprompt@>| !gapinput@      bound:= bound - 1;|
  !gapprompt@>| !gapinput@    else|
  !gapprompt@>| !gapinput@      bound:= Int( bound );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    s:= PositionsProperty( max, x -> x = min );|
  !gapprompt@>| !gapinput@    s:= List( Set( s, i -> ClassOrbit( tbl, i ) ), i -> i[1] );|
  !gapprompt@>| !gapinput@    return [ Identifier( tbl ),|
  !gapprompt@>| !gapinput@             min,|
  !gapprompt@>| !gapinput@             bound,|
  !gapprompt@>| !gapinput@             AtlasClassNames( tbl ){ s },|
  !gapprompt@>| !gapinput@             Sum( List( prim, pi -> pi{ s } ) ) ];|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 \texttt{ProbGenInfoAlmostSimple} takes the character tables \texttt{tblS} and \texttt{tblG} of $S$ and $G$, and a list \texttt{sposS} of class positions (w.r.t.{\nobreakspace}\texttt{tblS}) as its arguments. It is assumed that $S$ is simple and has prime index in $G$. If \texttt{PrimitivePermutationCharacters} can compute the full list of primitive permutation characters of $G$ then the function returns a list containing the identifier of \texttt{tblG}, the maximum $m$ of ${{\sigma}}^{\prime}( G, s )$, for $s$ in the classes described by \texttt{sposS}, a list of \textsf{Atlas} names (in $G$) of the classes of elements $s$ for which this maximum is attained, and the list of the corresponding
cardinalities $|{{\mathbb M}}^{\prime}(G,s)|$. When \texttt{PrimitivePermutationCharacters} returns \texttt{fail}, also \texttt{ProbGenInfoAlmostSimple} returns \texttt{fail}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "ProbGenInfoAlmostSimple", function( tblS, tblG, sposS )|
  !gapprompt@>| !gapinput@    local p, fus, inv, prim, sposG, outer, approx, l, max, min,|
  !gapprompt@>| !gapinput@          s, cards, i, names;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    p:= Size( tblG ) / Size( tblS );|
  !gapprompt@>| !gapinput@    if not IsPrimeInt( p )|
  !gapprompt@>| !gapinput@       or Length( ClassPositionsOfNormalSubgroups( tblG ) ) <> 3 then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    fus:= GetFusionMap( tblS, tblG );|
  !gapprompt@>| !gapinput@    if fus = fail then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    inv:= InverseMap( fus );|
  !gapprompt@>| !gapinput@    prim:= PrimitivePermutationCharacters( tblG );|
  !gapprompt@>| !gapinput@    if prim = fail then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    sposG:= Set( fus{ sposS } );|
  !gapprompt@>| !gapinput@    outer:= Difference( PositionsProperty(|
  !gapprompt@>| !gapinput@                OrdersClassRepresentatives( tblG ), IsPrimeInt ), fus );|
  !gapprompt@>| !gapinput@    approx:= List( sposG, i -> ApproxP( prim, i ){ outer } );|
  !gapprompt@>| !gapinput@    if IsEmpty( outer ) then|
  !gapprompt@>| !gapinput@      max:= List( approx, x -> 0 );|
  !gapprompt@>| !gapinput@    else|
  !gapprompt@>| !gapinput@      max:= List( approx, Maximum );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    min:= Minimum( max);|
  !gapprompt@>| !gapinput@    s:= sposG{ PositionsProperty( max, x -> x = min ) };|
  !gapprompt@>| !gapinput@    cards:= List( prim, pi -> pi{ s } );|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( prim ) ] do|
  !gapprompt@>| !gapinput@      # Omit the character that is induced from the simple group.|
  !gapprompt@>| !gapinput@      if ForAll( prim[i], x -> x = 0 or x = prim[i][1] ) then|
  !gapprompt@>| !gapinput@        cards[i]:= 0;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    names:= AtlasClassNames( tblG ){ s };|
  !gapprompt@>| !gapinput@    Perform( names, ConvertToStringRep );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return [ Identifier( tblG ),|
  !gapprompt@>| !gapinput@             min,|
  !gapprompt@>| !gapinput@             names,|
  !gapprompt@>| !gapinput@             Sum( cards ) ];|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The next function computes ${{\sigma}}(G,s)$ from the character table \texttt{tbl} of a simple or almost simple group $G$, the name \texttt{sname} of the class of $s$ in this table, the list \texttt{maxes} of the character tables of all subgroups $M$ with $M \in {{\mathbb M}}(G,s)$, and the list \texttt{numpermchars} of the numbers of possible permutation characters induced from \texttt{maxes}. If the string \texttt{"outer"} is given as an optional argument then $G$ is assumed to be an automorphic extension of a simple group $S$, with $[G:S]$ a prime, and ${{\sigma}}^{\prime}(G,s)$ is returned. In both situations, the result is \texttt{fail} if the numbers of possible permutation characters induced from \texttt{maxes} do not coincide with the numbers prescribed in \texttt{numpermchars}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "SigmaFromMaxes", function( arg )|
  !gapprompt@>| !gapinput@    local t, sname, maxes, numpermchars, prim, spos, outer;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    t:= arg[1];|
  !gapprompt@>| !gapinput@    sname:= arg[2];|
  !gapprompt@>| !gapinput@    maxes:= arg[3];|
  !gapprompt@>| !gapinput@    numpermchars:= arg[4];|
  !gapprompt@>| !gapinput@    prim:= List( maxes, s -> PossiblePermutationCharacters( s, t ) );|
  !gapprompt@>| !gapinput@    spos:= Position( AtlasClassNames( t ), sname );|
  !gapprompt@>| !gapinput@    if ForAny( [ 1 .. Length( maxes ) ],|
  !gapprompt@>| !gapinput@               i -> Length( prim[i] ) <> numpermchars[i] ) then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    elif Length( arg ) = 5 and arg[5] = "outer" then|
  !gapprompt@>| !gapinput@      outer:= Difference(|
  !gapprompt@>| !gapinput@          PositionsProperty( OrdersClassRepresentatives( t ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@          ClassPositionsOfDerivedSubgroup( t ) );|
  !gapprompt@>| !gapinput@      return Maximum( ApproxP( Concatenation( prim ), spos ){ outer } );|
  !gapprompt@>| !gapinput@    else|
  !gapprompt@>| !gapinput@      return Maximum( ApproxP( Concatenation( prim ), spos ) );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The following function allows us to extract information about ${{\mathbb M}}(G,s)$ from the character table \texttt{tbl} of $G$ and a list \texttt{snames} of class positions of $s$. If \texttt{Maxes( tbl )} is stored then the names of the character tables of the subgroups in ${{\mathbb M}}(G,s)$ and the number of conjugates are printed, otherwise \texttt{fail} is printed. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "DisplayProbGenMaxesInfo", function( tbl, snames )|
  !gapprompt@>| !gapinput@    local mx, prim, i, spos, nonz, indent, j;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not HasMaxes( tbl ) then|
  !gapprompt@>| !gapinput@      Print( Identifier( tbl ), ": fail\n" );|
  !gapprompt@>| !gapinput@      return;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    mx:= List( Maxes( tbl ), CharacterTable );|
  !gapprompt@>| !gapinput@    prim:= List( mx, s -> TrivialCharacter( s )^tbl );|
  !gapprompt@>| !gapinput@    Assert( 1, SortedList( prim ) =|
  !gapprompt@>| !gapinput@               SortedList( PrimitivePermutationCharacters( tbl ) ) );|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( prim ) ] do|
  !gapprompt@>| !gapinput@      # Deal with the case that the subgroup is normal.|
  !gapprompt@>| !gapinput@      if ForAll( prim[i], x -> x = 0 or x = prim[i][1] ) then|
  !gapprompt@>| !gapinput@        prim[i]:= prim[i] / prim[i][1];|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    spos:= List( snames,|
  !gapprompt@>| !gapinput@                 nam -> Position( AtlasClassNames( tbl ), nam ) );|
  !gapprompt@>| !gapinput@    nonz:= List( spos, x -> PositionsProperty( prim, pi -> pi[x] <> 0 ) );|
  !gapprompt@>| !gapinput@    for i in [ 1 .. Length( spos ) ] do|
  !gapprompt@>| !gapinput@      Print( Identifier( tbl ), ", ", snames[i], ": " );|
  !gapprompt@>| !gapinput@      indent:= ListWithIdenticalEntries(|
  !gapprompt@>| !gapinput@          Length( Identifier( tbl ) ) + Length( snames[i] ) + 4, ' ' );|
  !gapprompt@>| !gapinput@      if not IsEmpty( nonz[i] ) then|
  !gapprompt@>| !gapinput@        Print( Identifier( mx[ nonz[i][1] ] ), "  (",|
  !gapprompt@>| !gapinput@               prim[ nonz[i][1] ][ spos[i] ], ")\n" );|
  !gapprompt@>| !gapinput@        for j in [ 2 .. Length( nonz[i] ) ] do|
  !gapprompt@>| !gapinput@          Print( indent, Identifier( mx[ nonz[i][j] ] ), "  (",|
  !gapprompt@>| !gapinput@               prim[ nonz[i][j] ][ spos[i] ], ")\n" );|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@      else|
  !gapprompt@>| !gapinput@        Print( "\n" );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Computations with Groups}}\label{subsect:groups}
\logpage{[ 11, 3, 3 ]}
\hyperdef{L}{X83DACCF07EF62FAE}{}
{
  Here, the task is to compute $P(g,s)$ or $P(G,s)$ using explicit computations with $G$, where the character-theoretic bounds are not sufficient. 

 We start with small utilities that make the examples shorter. 

 For a finite solvable group \texttt{G}, the function \texttt{PcConjugacyClassReps} returns a list of representatives of the conjugacy classes of \texttt{G}, which are computed using a polycyclic presentation for \texttt{G}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "PcConjugacyClassReps", function( G )|
  !gapprompt@>| !gapinput@     local iso;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     iso:= IsomorphismPcGroup( G );|
  !gapprompt@>| !gapinput@     return List( ConjugacyClasses( Image( iso ) ),|
  !gapprompt@>| !gapinput@              c -> PreImagesRepresentative( iso, Representative( c ) ) );|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 For a finite group \texttt{G}, a list \texttt{primes} of prime integers, and a normal subgroup \texttt{N} of \texttt{G}, the function \texttt{ClassesOfPrimeOrder} returns a list of those conjugacy classes of \texttt{G} that are not contained in \texttt{N} and whose elements' orders occur in \texttt{primes}. 

 For each prime $p$ in \texttt{primes}, first class representatives of order $p$ in a Sylow $p$ subgroup of \texttt{G} are computed, then the representatives in \texttt{N} are discarded, and then representatives
w.{\nobreakspace}r.{\nobreakspace}t.{\nobreakspace}conjugacy in \texttt{G} are computed. 

  (Note that this approach may be inappropriate for example if a large
elementary abelian Sylow $p$ subgroup occurs, and if the conjugacy tests in \texttt{G} are expensive, see Section{\nobreakspace}\ref{O8p4}.) 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "ClassesOfPrimeOrder", function( G, primes, N )|
  !gapprompt@>| !gapinput@     local ccl, p, syl, Greps, reps, r, cr;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     ccl:= [];|
  !gapprompt@>| !gapinput@     for p in primes do|
  !gapprompt@>| !gapinput@       syl:= SylowSubgroup( G, p );|
  !gapprompt@>| !gapinput@       Greps:= [];|
  !gapprompt@>| !gapinput@       reps:= Filtered( PcConjugacyClassReps( syl ),|
  !gapprompt@>| !gapinput@                  r -> Order( r ) = p and not r in N );|
  !gapprompt@>| !gapinput@       for r in reps do|
  !gapprompt@>| !gapinput@         cr:= ConjugacyClass( G, r );|
  !gapprompt@>| !gapinput@         if ForAll( Greps, c -> c <> cr ) then|
  !gapprompt@>| !gapinput@           Add( Greps, cr );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@       Append( ccl, Greps );|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@     return ccl;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The function \texttt{IsGeneratorsOfTransPermGroup} takes a \emph{transitive} permutation group \texttt{G} and a list \texttt{list} of elements in \texttt{G}, and returns \texttt{true} if the elements in \texttt{list} generate \texttt{G}, and \texttt{false} otherwise. The main point is that the return value \texttt{true} requires the group generated by \texttt{list} to be transitive, and the check for transitivity is much cheaper than the test
whether this group is equal to \texttt{G}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@if not IsBound( IsGeneratorsOfTransPermGroup) then|
  !gapprompt@>| !gapinput@     BindGlobal( "IsGeneratorsOfTransPermGroup", function( G, list )|
  !gapprompt@>| !gapinput@       local S;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@       if not IsTransitive( G ) then|
  !gapprompt@>| !gapinput@         Error( "<G> must be transitive on its moved points" );|
  !gapprompt@>| !gapinput@       fi;|
  !gapprompt@>| !gapinput@       S:= SubgroupNC( G, list );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@       return IsTransitive( S, MovedPoints( G ) ) and|
  !gapprompt@>| !gapinput@              Size( S ) = Size( G );|
  !gapprompt@>| !gapinput@     end );|
  !gapprompt@>| !gapinput@   fi;|
\end{Verbatim}
 

 \texttt{RatioOfNongenerationTransPermGroup} takes a \emph{transitive} permutation group \texttt{G} and two elements \texttt{g} and \texttt{s} of \texttt{G}, and returns the proportion $P(g,s)$. (The function tests the (non)generation only for representatives of $C_G(g)$-$C_G(s)$-double cosets. Note that for $c_1 \in C_G(g)$, $c_2 \in C_G(s)$, and a representative $r \in G$, we have $\langle g^{c_1 r c_2}, s \rangle = \langle g^r, s \rangle^{c_2}$.) 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "RatioOfNongenerationTransPermGroup", function( G, g, s )|
  !gapprompt@>| !gapinput@    local nongen, pair;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not IsTransitive( G ) then|
  !gapprompt@>| !gapinput@      Error( "<G> must be transitive on its moved points" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@    nongen:= 0;|
  !gapprompt@>| !gapinput@    for pair in DoubleCosetRepsAndSizes( G, Centralizer( G, g ),|
  !gapprompt@>| !gapinput@                    Centralizer( G, s ) ) do|
  !gapprompt@>| !gapinput@      if not IsGeneratorsOfTransPermGroup( G, [ s, g^pair[1] ] ) then|
  !gapprompt@>| !gapinput@        nongen:= nongen + pair[2];|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return nongen / Size( G );|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 Let $G$ be a group, and let \texttt{groups} be a list $[ G_1, G_2, \ldots, G_n ]$ of permutation groups such that $G_i$ describes the action of $G$ on a set $\Omega_i$, say. Moreover, we require that for $1 \leq i, j \leq n$, mapping the \texttt{GeneratorsOfGroup} list of $G_i$ to that of $G_j$ defines an isomorphism. \texttt{DiagonalProductOfPermGroups} takes \texttt{groups} as its argument, and returns the action of $G$ on the disjoint union of $\Omega_1, \Omega_2, \ldots, \Omega_n$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "DiagonalProductOfPermGroups", function( groups )|
  !gapprompt@>| !gapinput@    local prodgens, deg, i, gens, D, pi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    prodgens:= GeneratorsOfGroup( groups[1] );|
  !gapprompt@>| !gapinput@    deg:= NrMovedPoints( prodgens );|
  !gapprompt@>| !gapinput@    for i in [ 2 .. Length( groups ) ] do|
  !gapprompt@>| !gapinput@      gens:= GeneratorsOfGroup( groups[i] );|
  !gapprompt@>| !gapinput@      D:= MovedPoints( gens );|
  !gapprompt@>| !gapinput@      pi:= MappingPermListList( D, [ deg+1 .. deg+Length( D ) ] );|
  !gapprompt@>| !gapinput@      deg:= deg + Length( D );|
  !gapprompt@>| !gapinput@      prodgens:= List( [ 1 .. Length( prodgens ) ],|
  !gapprompt@>| !gapinput@                       i -> prodgens[i] * gens[i]^pi );|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return Group( prodgens );|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

  The following two functions are used to reduce checks of generation to class
representatives of maximal order. Note that if $\langle s, g \rangle$ is a proper subgroup of $G$ then also $\langle s^k, g \rangle$ is a proper subgroup of $G$, so we need not check powers $s^k$ different from $s$ in this situation. 

 For an ordinary character table \texttt{tbl}, the function \texttt{RepresentativesMaximallyCyclicSubgroups} returns a list of class positions, containing one class of generators for each
class of maximally cyclic subgroups. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "RepresentativesMaximallyCyclicSubgroups", function( tbl )|
  !gapprompt@>| !gapinput@    local n, result, orders, p, pmap, i, j;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Initialize.|
  !gapprompt@>| !gapinput@    n:= NrConjugacyClasses( tbl );|
  !gapprompt@>| !gapinput@    result:= BlistList( [ 1 .. n ], [ 1 .. n ] );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Omit powers of smaller order.|
  !gapprompt@>| !gapinput@    orders:= OrdersClassRepresentatives( tbl );|
  !gapprompt@>| !gapinput@    for p in PrimeDivisors( Size( tbl ) ) do|
  !gapprompt@>| !gapinput@      pmap:= PowerMap( tbl, p );|
  !gapprompt@>| !gapinput@      for i in [ 1 .. n ] do|
  !gapprompt@>| !gapinput@        if orders[ pmap[i] ] < orders[i] then|
  !gapprompt@>| !gapinput@          result[ pmap[i] ]:= false;|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Omit Galois conjugates.|
  !gapprompt@>| !gapinput@    for i in [ 1 .. n ] do|
  !gapprompt@>| !gapinput@      if result[i] then|
  !gapprompt@>| !gapinput@        for j in ClassOrbit( tbl, i ) do|
  !gapprompt@>| !gapinput@          if i <> j then|
  !gapprompt@>| !gapinput@            result[j]:= false;|
  !gapprompt@>| !gapinput@          fi;|
  !gapprompt@>| !gapinput@        od;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Return the result.|
  !gapprompt@>| !gapinput@    return ListBlist( [ 1 .. n ], result );|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 Let \texttt{G} be a finite group, \texttt{tbl} be the ordinary character table of \texttt{G}, and \texttt{cols} be a list of class positions in \texttt{tbl}, for example the list returned by \texttt{RepresentativesMaximallyCyclicSubgroups}. The function \texttt{ClassesPerhapsCorrespondingToTableColumns} returns the sublist of those conjugacy classes of \texttt{G} for which the corresponding column in \texttt{tbl} can be contained in \texttt{cols}, according to element order and class size. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "ClassesPerhapsCorrespondingToTableColumns",|
  !gapprompt@>| !gapinput@   function( G, tbl, cols )|
  !gapprompt@>| !gapinput@    local orders, classes, invariants;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    orders:= OrdersClassRepresentatives( tbl );|
  !gapprompt@>| !gapinput@    classes:= SizesConjugacyClasses( tbl );|
  !gapprompt@>| !gapinput@    invariants:= List( cols, i -> [ orders[i], classes[i] ] );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return Filtered( ConjugacyClasses( G ),|
  !gapprompt@>| !gapinput@        c -> [ Order( Representative( c ) ), Size(c) ] in invariants );|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The next function computes, for a finite group $G$ and subgroups $M_1, M_2, \ldots, M_n$ of $G$, an upper bound for $\max \{ \sum_{i=1}^n {{\mu}}(g,G/M_i); g \in G \setminus Z(G) \}$. So if the $M_i$ are the groups in ${{\mathbb M}}(G,s)$, for some $s \in G^{\times}$, then we get an upper bound for ${{\sigma}}(G,s)$. 

 The idea is that for $M \leq G$ and $g \in G$ of order $p$, we have 
\[ {{\mu}}(g,G/M) = |g^G \cap M| / |g^G| \leq \sum_{h \in C} |h^M| / |g^G| = \sum_{h \in
C} |h^M| \cdot |C_G(g)| / |G| , \]
 where $C$ is a set of class representatives $h \in M$ of all those classes that satisfy $|h| = p$ and $|C_G(h)| = |C_G(g)|$, and in the case that $G$ is a permutation group additionally that $h$ and $g$ move the same number of points. (Note that it is enough to consider elements
of \emph{prime} order.) 

 For computing the maximum of the rightmost term in this inequality, for $g \in G \setminus Z(G)$, we need not determine the $G$-conjugacy of class representatives in $M$. Of course we pay the price that the result may be larger than the leftmost
term. However, if the maximal sum is in fact taken only over a single class
representative, we are sure that equality holds. Thus we return a list of
length two, containing the maximum of the right hand side of the above
inequality and a Boolean value indicating whether this is equal to $\max \{ {{\mu}}(g,G/M); g \in G \setminus Z(G) \}$ or just an upper bound. 

 The arguments for \texttt{UpperBoundFixedPointRatios} are the group \texttt{G}, a list \texttt{maxesclasses} such that the $i$-th entry is a list of conjugacy classes of $M_i$, which covers all classes of prime element order in $M_i$, and either \texttt{true} or \texttt{false}, where \texttt{true} means that the \emph{exact} value of ${{\sigma}}(G,s)$ is computed, not just an upper bound; this can be much more expensive because
of the conjugacy tests in $G$ that may be necessary. (We try to reduce the number of conjugacy tests in this
case, the second half of the code is not completely straightforward. The
special treatment of conjugacy checks for elements with the same sets of fixed
points is essential in the computation of ${{\sigma}}^{\prime}(G,s)$ for $G = {{\rm PGL}}(6,4)$; the critical input line is \texttt{ApproxPForOuterClassesInGL( 6, 4 )}, see Section{\nobreakspace}\ref{SLaut}. Currently the standard \textsf{GAP} conjugacy test for an element of order three and its inverse in $G \setminus G^{\prime}$ requires hours of CPU time, whereas the check for existence of a conjugating
element in the stabilizer of the common set of fixed points of the two
elements is almost free of charge.) 

 \texttt{UpperBoundFixedPointRatios} can be used to compute ${{\sigma}}^{\prime}(G,s)$ in the case that $G$ is an automorphic extension of a simple group $S$, with $[G:S] = p$ a prime; if ${{\mathbb M}}^{\prime}(G,s) = \{ M_1, M_2, \ldots, M_n \}$ then the $i$-th entry of \texttt{maxesclasses} must contain only the classes of element order $p$ in $M_i \setminus (M_i \cap S)$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "UpperBoundFixedPointRatios",|
  !gapprompt@>| !gapinput@   function( G, maxesclasses, truetest )|
  !gapprompt@>| !gapinput@    local myIsConjugate, invs, info, c, r, o, inv, pos, sums, max, maxpos,|
  !gapprompt@>| !gapinput@          maxlen, reps, split, i, found, j;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    myIsConjugate:= function( G, x, y )|
  !gapprompt@>| !gapinput@      local movx, movy;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@      movx:= MovedPoints( x );|
  !gapprompt@>| !gapinput@      movy:= MovedPoints( y );|
  !gapprompt@>| !gapinput@      if movx = movy then|
  !gapprompt@>| !gapinput@        G:= Stabilizer( G, movx, OnSets );|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@      return IsConjugate( G, x, y );|
  !gapprompt@>| !gapinput@    end;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    invs:= [];|
  !gapprompt@>| !gapinput@    info:= [];|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # First distribute the classes according to invariants.|
  !gapprompt@>| !gapinput@    for c in Concatenation( maxesclasses ) do|
  !gapprompt@>| !gapinput@      r:= Representative( c );|
  !gapprompt@>| !gapinput@      o:= Order( r );|
  !gapprompt@>| !gapinput@      # Take only prime order representatives.|
  !gapprompt@>| !gapinput@      if IsPrimeInt( o ) then|
  !gapprompt@>| !gapinput@        inv:= [ o, Size( Centralizer( G, r ) ) ];|
  !gapprompt@>| !gapinput@        # Omit classes that are central in `G'.|
  !gapprompt@>| !gapinput@        if inv[2] <> Size( G ) then|
  !gapprompt@>| !gapinput@          if IsPerm( r ) then|
  !gapprompt@>| !gapinput@            Add( inv, NrMovedPoints( r ) );|
  !gapprompt@>| !gapinput@          fi;|
  !gapprompt@>| !gapinput@          pos:= First( [ 1 .. Length( invs ) ], i -> inv = invs[i] );|
  !gapprompt@>| !gapinput@          if pos = fail then|
  !gapprompt@>| !gapinput@            # This class is not `G'-conjugate to any of the previous ones.|
  !gapprompt@>| !gapinput@            Add( invs, inv );|
  !gapprompt@>| !gapinput@            Add( info, [ [ r, Size( c ) * inv[2] ] ] );|
  !gapprompt@>| !gapinput@          else|
  !gapprompt@>| !gapinput@            # This class may be conjugate to an earlier one.|
  !gapprompt@>| !gapinput@            Add( info[ pos ], [ r, Size( c ) * inv[2] ] );|
  !gapprompt@>| !gapinput@          fi;|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if info = [] then|
  !gapprompt@>| !gapinput@      return [ 0, true ];|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    repeat|
  !gapprompt@>| !gapinput@      # Compute the contributions of the classes with the same invariants.|
  !gapprompt@>| !gapinput@      sums:= List( info, x -> Sum( List( x, y -> y[2] ) ) );|
  !gapprompt@>| !gapinput@      max:= Maximum( sums );|
  !gapprompt@>| !gapinput@      maxpos:= Filtered( [ 1 .. Length( info ) ], i -> sums[i] = max );|
  !gapprompt@>| !gapinput@      maxlen:= List( maxpos, i -> Length( info[i] ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@      # Split the sets with the same invariants if necessary|
  !gapprompt@>| !gapinput@      # and if we want to compute the exact value.|
  !gapprompt@>| !gapinput@      if truetest and not 1 in maxlen then|
  !gapprompt@>| !gapinput@        # Make one conjugacy test.|
  !gapprompt@>| !gapinput@        pos:= Position( maxlen, Minimum( maxlen ) );|
  !gapprompt@>| !gapinput@        reps:= info[ maxpos[ pos ] ];|
  !gapprompt@>| !gapinput@        if myIsConjugate( G, reps[1][1], reps[2][1] ) then|
  !gapprompt@>| !gapinput@          # Fuse the two classes.|
  !gapprompt@>| !gapinput@          reps[1][2]:= reps[1][2] + reps[2][2];|
  !gapprompt@>| !gapinput@          reps[2]:= reps[ Length( reps ) ];|
  !gapprompt@>| !gapinput@          Unbind( reps[ Length( reps ) ] );|
  !gapprompt@>| !gapinput@        else|
  !gapprompt@>| !gapinput@          # Split the list. This may require additional conjugacy tests.|
  !gapprompt@>| !gapinput@          Unbind( info[ maxpos[ pos ] ] );|
  !gapprompt@>| !gapinput@          split:= [ reps[1], reps[2] ];|
  !gapprompt@>| !gapinput@          for i in [ 3 .. Length( reps ) ] do|
  !gapprompt@>| !gapinput@            found:= false;|
  !gapprompt@>| !gapinput@            for j in split do|
  !gapprompt@>| !gapinput@              if myIsConjugate( G, reps[i][1], j[1] ) then|
  !gapprompt@>| !gapinput@                j[2]:= reps[i][2] + j[2];|
  !gapprompt@>| !gapinput@                found:= true;|
  !gapprompt@>| !gapinput@                break;|
  !gapprompt@>| !gapinput@              fi;|
  !gapprompt@>| !gapinput@            od;|
  !gapprompt@>| !gapinput@            if not found then|
  !gapprompt@>| !gapinput@              Add( split, reps[i] );|
  !gapprompt@>| !gapinput@            fi;|
  !gapprompt@>| !gapinput@          od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@          info:= Compacted( Concatenation( info,|
  !gapprompt@>| !gapinput@                                           List( split, x -> [ x ] ) ) );|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    until 1 in maxlen or not truetest;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return [ max / Size( G ), 1 in maxlen ];|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

    Suppose that $C_1, C_2, C_3$ are conjugacy classes in $G$, and that we have to prove, for each $(x_1, x_2, x_3) \in C_1 \times C_2 \times C_3$, the existence of an element $s$ in a prescribed class $C$ of $G$ such that $\langle x_1, s \rangle = \langle x_2, s \rangle = \langle x_2, s \rangle = G$ holds. 

 We have to check only representatives under the conjugation action of $G$ on $C_1 \times C_2 \times C_3$. For each representative, we try a prescribed number of random elements in $C$. If this is successful then we are done. The following two functions
implement this idea. 

 For a group $G$ and a list $[ g_1, g_2, \ldots, g_n ]$ of elements in $G$, \texttt{OrbitRepresentativesProductOfClasses} returns a list $R(G, g_1, g_2, \ldots, g_n)$ of representatives of $G$-orbits on the Cartesian product $g_1^G \times g_2^G \times \cdots \times g_n^G$. 

 The idea behind this function is to choose $R(G, g_1) = \{ ( g_1 ) \}$ in the case $n = 1$, and, for $n > 1$, 
\[ R(G, g_1, g_2, \ldots, g_n) = \{ (h_1, h_2, \ldots, h_n) \mid (h_1, h_2,
\ldots, h_{n-1}) \in R(G, g_1, g_2, \ldots, g_{n-1}), \\ h_n = g_n^d,
\textrm{\ for\ } d \in D \} , \]
 where $D$ is a set of representatives of double cosets $C_G(g_n) \setminus G / \cap_{i=1}^{n-1} C_G(h_i)$. 

      
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "OrbitRepresentativesProductOfClasses",|
  !gapprompt@>| !gapinput@   function( G, classreps )|
  !gapprompt@>| !gapinput@    local cents, n, orbreps;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    cents:= List( classreps, x -> Centralizer( G, x ) );|
  !gapprompt@>| !gapinput@    n:= Length( classreps );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    orbreps:= function( reps, intersect, pos )|
  !gapprompt@>| !gapinput@      if pos > n then|
  !gapprompt@>| !gapinput@        return [ reps ];|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@      return Concatenation( List(|
  !gapprompt@>| !gapinput@          DoubleCosetRepsAndSizes( G, cents[ pos ], intersect ),|
  !gapprompt@>| !gapinput@            r -> orbreps( Concatenation( reps, [ classreps[ pos ]^r[1] ] ),|
  !gapprompt@>| !gapinput@                 Intersection( intersect, cents[ pos ]^r[1] ), pos+1 ) ) );|
  !gapprompt@>| !gapinput@    end;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return orbreps( [ classreps[1] ], cents[1], 2 );|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

  The function \texttt{RandomCheckUniformSpread} takes a transitive permutation group $G$, a list of class representatives $g_i \in G$, an element $s \in G$, and a positive integer $N$. The return value is \texttt{true} if for each representative of $G$-orbits on the product of the classes $g_i^G$, a good conjugate of $s$ is found in at most $N$ random tests. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "RandomCheckUniformSpread", function( G, classreps, s, try )|
  !gapprompt@>| !gapinput@    local elms, found, i, conj;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not IsTransitive( G, MovedPoints( G ) ) then|
  !gapprompt@>| !gapinput@      Error( "<G> must be transitive on its moved points" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Compute orbit representatives of G on the direct product,|
  !gapprompt@>| !gapinput@    # and try to find a good conjugate of s for each representative.|
  !gapprompt@>| !gapinput@    for elms in OrbitRepresentativesProductOfClasses( G, classreps ) do|
  !gapprompt@>| !gapinput@      found:= false;|
  !gapprompt@>| !gapinput@      for i in [ 1 .. try ] do|
  !gapprompt@>| !gapinput@        conj:= s^Random( G );|
  !gapprompt@>| !gapinput@        if ForAll( elms,|
  !gapprompt@>| !gapinput@              x -> IsGeneratorsOfTransPermGroup( G, [ x, conj ] ) ) then|
  !gapprompt@>| !gapinput@          found:= true;|
  !gapprompt@>| !gapinput@          break;|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@      if not found then|
  !gapprompt@>| !gapinput@        return elms;|
  !gapprompt@>| !gapinput@      fi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return true;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 Of course this approach is not suitable for \emph{dis}proving the existence of $s$, but it is much cheaper than an exhaustive search in the class $C$. (Typically, $|C|$ is large whereas the $|C_i|$ are small.) 

    

                                

 The following function can be used to verify that a given $n$-tuple $(x_1, x_2, \ldots, x_n)$ of elements in a group $G$ has the property that for all elements $g \in G$, at least one $x_i$ satisfies $\langle x_i, g \rangle$. The arguments are a transitive permutation group $G$, a list of class representatives in $G$, and the $n$-tuple in question. The return value is a conjugate $g$ of the given representatives that has the property if such an element exists,
and \texttt{fail} otherwise. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "CommonGeneratorWithGivenElements",|
  !gapprompt@>| !gapinput@   function( G, classreps, tuple )|
  !gapprompt@>| !gapinput@    local inter, rep, repcen, pair;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not IsTransitive( G, MovedPoints( G ) ) then|
  !gapprompt@>| !gapinput@      Error( "<G> must be transitive on its moved points" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    inter:= Intersection( List( tuple, x -> Centralizer( G, x ) ) );|
  !gapprompt@>| !gapinput@    for rep in classreps do|
  !gapprompt@>| !gapinput@      repcen:= Centralizer( G, rep );|
  !gapprompt@>| !gapinput@      for pair in DoubleCosetRepsAndSizes( G, repcen, inter ) do|
  !gapprompt@>| !gapinput@        if ForAll( tuple,|
  !gapprompt@>| !gapinput@           x -> IsGeneratorsOfTransPermGroup( G, [ x, rep^pair[1] ] ) ) then|
  !gapprompt@>| !gapinput@          return rep;|
  !gapprompt@>| !gapinput@        fi;|
  !gapprompt@>| !gapinput@      od;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return fail;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Character-Theoretic Computations}}\label{sect:chartheor}
\logpage{[ 11, 4, 0 ]}
\hyperdef{L}{X7A221012861440E2}{}
{
  In this section, we apply the functions introduced in Section{\nobreakspace}\ref{subsect:probgen-ctfun} to the character tables of simple groups that are available in the \textsf{GAP} Character Table Library. 

 Our first examples are the sporadic simple groups, in Section{\nobreakspace}\ref{subsect:spor}, then their automorphism groups are considered in Section{\nobreakspace}\ref{probgen:sporaut}. 

 Then we consider those other simple groups for which \textsf{GAP} provides enough information for automatically computing an upper bound on ${{\sigma}}(G,s)$ {\textendash}see Section{\nobreakspace}\ref{easyloop}{\textendash} and their automorphic extensions {\textendash}see
Section{\nobreakspace}\ref{easyloopaut}. 

 After that, individual groups are considered.  
\subsection{\textcolor{Chapter }{Sporadic Simple Groups}}\label{subsect:spor}
\logpage{[ 11, 4, 1 ]}
\hyperdef{L}{X86CE51E180A3D4ED}{}
{
  The \textsf{GAP} Character Table Library contains the tables of maximal subgroups of all
sporadic simple groups except $B$ and $M$, so all primitive permutation characters can be computed via the function \texttt{PrimitivePermutationCharacters} for $24$ of the $26$ sporadic simple groups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sporinfo:= [];;|
  !gapprompt@gap>| !gapinput@spornames:= AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                                       IsDuplicateTable, false );;|
  !gapprompt@gap>| !gapinput@for tbl in List( spornames, CharacterTable ) do|
  !gapprompt@>| !gapinput@     info:= ProbGenInfoSimple( tbl );|
  !gapprompt@>| !gapinput@     if info <> fail then|
  !gapprompt@>| !gapinput@       Add( sporinfo, info );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 We show the result as a formatted table. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PrintFormattedArray( sporinfo );|
     Co1    421/1545600         3671        [ "35A" ]    [ 4 ]
     Co2          1/270          269        [ "23A" ]    [ 1 ]
     Co3        64/6325           98        [ "21A" ]    [ 4 ]
     F3+ 1/269631216855 269631216854        [ "29A" ]    [ 1 ]
    Fi22         43/585           13        [ "16A" ]    [ 7 ]
    Fi23   2651/2416635          911        [ "23A" ]    [ 2 ]
      HN        4/34375         8593        [ "19A" ]    [ 1 ]
      HS        64/1155           18        [ "15A" ]    [ 2 ]
      He          3/595          198        [ "14C" ]    [ 3 ]
      J1           1/77           76        [ "19A" ]    [ 1 ]
      J2           5/28            5        [ "10C" ]    [ 3 ]
      J3          2/153           76        [ "19A" ]    [ 2 ]
      J4   1/1647124116   1647124115        [ "29A" ]    [ 1 ]
      Ly     1/35049375     35049374        [ "37A" ]    [ 1 ]
     M11            1/3            2        [ "11A" ]    [ 1 ]
     M12            1/3            2        [ "10A" ]    [ 3 ]
     M22           1/21           20        [ "11A" ]    [ 1 ]
     M23         1/8064         8063        [ "23A" ]    [ 1 ]
     M24       108/1265           11        [ "21A" ]    [ 2 ]
     McL      317/22275           70 [ "15A", "30A" ] [ 3, 3 ]
      ON       10/30723         3072        [ "31A" ]    [ 2 ]
      Ru         1/2880         2879        [ "29A" ]    [ 1 ]
     Suz       141/5720           40        [ "14A" ]    [ 3 ]
      Th       2/267995       133997 [ "27A", "27B" ] [ 2, 2 ]
\end{Verbatim}
 

 We see that in all these cases, ${{\sigma}}(G) < 1/2$ and thus ${{\cal P}}( G ) \geq 2$, and all sporadic simple groups $G$ except $G = M_{11}$ and $G = M_{12}$ satisfy ${{\sigma}}(G) < 1/3$. See{\nobreakspace}\ref{spreadM11} and{\nobreakspace}\ref{spreadM12} for a proof that also these two groups have uniform spread at least three. 

 The structures and multiplicities of the maximal subgroups containing $s$ are as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for entry in sporinfo do|
  !gapprompt@>| !gapinput@     DisplayProbGenMaxesInfo( CharacterTable( entry[1] ), entry[4] );|
  !gapprompt@>| !gapinput@od;|
  Co1, 35A: (A5xJ2):2  (1)
            (A6xU3(3)):2  (2)
            (A7xL2(7)):2  (1)
  Co2, 23A: M23  (1)
  Co3, 21A: U3(5).3.2  (2)
            L3(4).D12  (1)
            s3xpsl(2,8).3  (1)
  F3+, 29A: 29:14  (1)
  Fi22, 16A: 2^10:m22  (1)
             (2x2^(1+8)):U4(2):2  (1)
             2F4(2)'  (4)
             2^(5+8):(S3xA6)  (1)
  Fi23, 23A: 2..11.m23  (1)
             L2(23)  (1)
  HN, 19A: U3(8).3_1  (1)
  HS, 15A: A8.2  (1)
           5:4xa5  (1)
  He, 14C: 2^1+6.psl(3,2)  (1)
           7^2:2psl(2,7)  (1)
           7^(1+2):(S3x3)  (1)
  J1, 19A: 19:6  (1)
  J2, 10C: 2^1+4b:a5  (1)
           a5xd10  (1)
           5^2:D12  (1)
  J3, 19A: L2(19)  (1)
           J3M3  (1)
  J4, 29A: frob  (1)
  Ly, 37A: 37:18  (1)
  M11, 11A: L2(11)  (1)
  M12, 10A: A6.2^2  (1)
            M12M4  (1)
            2xS5  (1)
  M22, 11A: L2(11)  (1)
  M23, 23A: 23:11  (1)
  M24, 21A: L3(4).3.2_2  (1)
            2^6:(psl(3,2)xs3)  (1)
  McL, 15A: 3^(1+4):2S5  (1)
            2.A8  (1)
            5^(1+2):3:8  (1)
  McL, 30A: 3^(1+4):2S5  (1)
            2.A8  (1)
            5^(1+2):3:8  (1)
  ON, 31A: L2(31)  (1)
           ONM8  (1)
  Ru, 29A: L2(29)  (1)
  Suz, 14A: J2.2  (2)
            (a4xpsl(3,4)):2  (1)
  Th, 27A: ThN3B  (1)
           ThM7  (1)
  Th, 27B: ThN3B  (1)
           ThM7  (1)
\end{Verbatim}
 

 For the remaining two sporadic simple groups, $B$ and $M$, we choose suitable elements $s$. If $G = B$ and $s \in G$ is of order $47$ then, by{\nobreakspace}\cite{Wil99}, ${{\mathbb M}}(G,s) = \{ 47:23 \}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "B" ), "47A",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "47:23" ) ], [ 1 ] );|
  1/174702778623598780219392000000
\end{Verbatim}
 

 If $G = M$ and $s \in G$ is of order $59$ then, by{\nobreakspace}\cite{HW04}, ${{\mathbb M}}(G,s) = \{ L_2(59) \}$. In this case, the permutation character is not uniquely determined by the
character tables, but all possibilities lead to the same value for ${{\sigma}}(G)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(59)" );;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s, t );;|
  !gapprompt@gap>| !gapinput@Length( pi );|
  5
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 59 );|
  152
  !gapprompt@gap>| !gapinput@Set( pi, x -> Maximum( ApproxP( [ x ], spos ) ) );|
  [ 1/3385007637938037777290625 ]
\end{Verbatim}
 

 Essentially the same approach is taken in{\nobreakspace}\cite{GM01}. However, there $s$ is restricted to classes of prime order. Thus the results in the above table
are better for $J_2$, $HS$, $M_{24}$, $McL$, $He$, $Suz$, $Co_3$, $Fi_{22}$, $Ly$, $Th$, $Co_1$, and $J_4$. Besides that, the value $10\,999$ claimed in{\nobreakspace}\cite{GM01} for ${{\cal S}}( HN )$ is not correct. 

     }

  
\subsection{\textcolor{Chapter }{Automorphism Groups of Sporadic Simple Groups}}\label{probgen:sporaut}
\logpage{[ 11, 4, 2 ]}
\hyperdef{L}{X84E9D10F80A74A53}{}
{
  Next we consider the automorphism groups of the sporadic simple groups. There
are exactly $12$ cases where nontrivial outer automorphisms exist, and then the simple group $S$ has index $2$ in its automorphism group $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sporautnames:= AllCharacterTableNames( IsSporadicSimple, true,|
  !gapprompt@>| !gapinput@                      IsDuplicateTable, false,|
  !gapprompt@>| !gapinput@                      OfThose, AutomorphismGroup );;|
  !gapprompt@gap>| !gapinput@sporautnames:= Difference( sporautnames, spornames );|
  [ "F3+.2", "Fi22.2", "HN.2", "HS.2", "He.2", "J2.2", "J3.2", "M12.2", 
    "M22.2", "McL.2", "ON.2", "Suz.2" ]
\end{Verbatim}
 

 First we compute the values ${{\sigma}}^{\prime}(G,s)$, for the same $s \in S$ that were chosen for the simple group $S$ in Section{\nobreakspace}\ref{subsect:spor}. 

 For six of the groups $G$ in question, the character tables of all maximal subgroups are available in
the \textsf{GAP} Character Table Library. In these cases, the values ${{\sigma}}^{\prime}( G, s )$ can be computed using \texttt{ProbGenInfoAlmostSimple}. 

 \emph{(The above statement can meanwhile be replaced by the statement that the
character tables of all maximal subgroups are available for all twelve groups.
We show the table results for all these groups but keep the individual
computations from the original computations.)} 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sporautinfo:= [];;|
  !gapprompt@gap>| !gapinput@fails:= [];;|
  !gapprompt@gap>| !gapinput@for name in sporautnames do|
  !gapprompt@>| !gapinput@     tbl:= CharacterTable( name{ [ 1 .. Position( name, '.' ) - 1 ] } );|
  !gapprompt@>| !gapinput@     tblG:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     info:= ProbGenInfoSimple( tbl );|
  !gapprompt@>| !gapinput@     info:= ProbGenInfoAlmostSimple( tbl, tblG,|
  !gapprompt@>| !gapinput@         List( info[4], x -> Position( AtlasClassNames( tbl ), x ) ) );|
  !gapprompt@>| !gapinput@     if info = fail then|
  !gapprompt@>| !gapinput@       Add( fails, name );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Add( sporautinfo, info );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@PrintFormattedArray( sporautinfo );|
     F3+.2         0         [ "29AB" ]    [ 1 ]
    Fi22.2  251/3861         [ "16AB" ]    [ 7 ]
      HN.2    1/6875         [ "19AB" ]    [ 1 ]
      HS.2    36/275          [ "15A" ]    [ 2 ]
      He.2   37/9520         [ "14CD" ]    [ 3 ]
      J2.2      1/15         [ "10CD" ]    [ 3 ]
      J3.2    1/1080         [ "19AB" ]    [ 1 ]
     M12.2      4/99          [ "10A" ]    [ 1 ]
     M22.2      1/21         [ "11AB" ]    [ 1 ]
     McL.2      1/63 [ "15AB", "30AB" ] [ 3, 3 ]
      ON.2   1/84672         [ "31AB" ]    [ 1 ]
     Suz.2 661/46332          [ "14A" ]    [ 3 ]
\end{Verbatim}
 

 Note that for $S = McL$, the bound ${{\sigma}}^{\prime}(G,s)$ for $G = S.2$ (in the second column) is worse than the bound for the simple group $S$. 

 The structures and multiplicities of the maximal subgroups containing $s$ are as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for entry in sporautinfo do|
  !gapprompt@>| !gapinput@     DisplayProbGenMaxesInfo( CharacterTable( entry[1] ), entry[3] );|
  !gapprompt@>| !gapinput@od;|
  F3+.2, 29AB: F3+  (1)
               frob  (1)
  Fi22.2, 16AB: Fi22  (1)
                Fi22.2M4  (1)
                (2x2^(1+8)):(U4(2):2x2)  (1)
                2F4(2)'.2  (4)
                2^(5+8):(S3xS6)  (1)
  HN.2, 19AB: HN  (1)
              U3(8).6  (1)
  HS.2, 15A: HS  (1)
             S8x2  (1)
             5:4xS5  (1)
  He.2, 14CD: He  (1)
              2^(1+6)_+.L3(2).2  (1)
              7^2:2.L2(7).2  (1)
              7^(1+2):(S3x6)  (1)
  J2.2, 10CD: J2  (1)
              2^(1+4).S5  (1)
              (A5xD10).2  (1)
              5^2:(4xS3)  (1)
  J3.2, 19AB: J3  (1)
              19:18  (1)
  M12.2, 10A: M12  (1)
              (2^2xA5):2  (1)
  M22.2, 11AB: M22  (1)
               L2(11).2  (1)
  McL.2, 15AB: McL  (1)
               3^(1+4):4S5  (1)
               Isoclinic(2.A8.2)  (1)
               5^(1+2):(24:2)  (1)
  McL.2, 30AB: McL  (1)
               3^(1+4):4S5  (1)
               Isoclinic(2.A8.2)  (1)
               5^(1+2):(24:2)  (1)
  ON.2, 31AB: ON  (1)
              31:30  (1)
  Suz.2, 14A: Suz  (1)
              J2.2x2  (2)
              (A4xL3(4):2_3):2  (1)
\end{Verbatim}
 

 Note that the maximal subgroups $L_2(19)$ of $J_3$ do not extend to $J_3.2$ and that a class of maximal subgroups of the type $19:18$ appears in $J_3.2$ whose intersection with $J_3$ is not maximal in $J_3$. Similarly, the maximal subgroups $A_6.2^2$ of $M_{12}$ do not extend to $M_{12}.2$. 

 For the other six groups, we use individual computations. 

 In the case $S = Fi_{24}^{\prime}$, the unique maximal subgroup $29:14$ that contains an element $s$ of order $29$ extends to a group of the type $29:28$ in $Fi_{24}$, which is a nonsplit extension of $29:14$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "Fi24'.2" ), "29AB",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "29:28" ) ], [ 1 ], "outer" );|
  0
\end{Verbatim}
 

 In the case $S = Fi_{22}$, there are four classes of maximal subgroups that contain $s$ of order $16$. They extend to $G = Fi_{22}.2$, and none of the \emph{novelties} in $G$ (i.{\nobreakspace}e., subgroups of $G$ that are maximal in $G$ but whose intersections with $S$ are not maximal in $S$) contains $s$, cf.{\nobreakspace}\cite[p.{\nobreakspace}163]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@16 in OrdersClassRepresentatives( CharacterTable( "U4(2).2" ) );|
  false
  !gapprompt@gap>| !gapinput@16 in OrdersClassRepresentatives( CharacterTable( "G2(3).2" ) );|
  false
\end{Verbatim}
 

 The character tables of three of the four extensions are available in the \textsf{GAP} Character Table Library. The permutation character on the cosets of the fourth
extension can be obtained as the extension of the permutation character of $S$ on the cosets of its maximal subgroup of the type $2^{5+8}:(S_3 \times A_6)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "Fi22.2" );;|
  !gapprompt@gap>| !gapinput@prim:= List( [ "Fi22.2M4", "(2x2^(1+8)):(U4(2):2x2)", "2F4(2)" ],|
  !gapprompt@>| !gapinput@       n -> PossiblePermutationCharacters( CharacterTable( n ), t2 ) );;|
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "Fi22" );;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters(|
  !gapprompt@>| !gapinput@            CharacterTable( "2^(5+8):(S3xA6)" ), t );|
  [ Character( CharacterTable( "Fi22" ),
    [ 3648645, 56133, 10629, 2245, 567, 729, 405, 81, 549, 165, 133, 
        37, 69, 20, 27, 81, 9, 39, 81, 19, 1, 13, 33, 13, 1, 0, 13, 13, 
        5, 1, 0, 0, 0, 8, 4, 0, 0, 9, 3, 15, 3, 1, 1, 1, 1, 3, 3, 1, 0, 
        0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2 ] ) ]
  !gapprompt@gap>| !gapinput@torso:= CompositionMaps( pi[1], InverseMap( GetFusionMap( t, t2 ) ) );|
  [ 3648645, 56133, 10629, 2245, 567, 729, 405, 81, 549, 165, 133, 37, 
    69, 20, 27, 81, 9, 39, 81, 19, 1, 13, 33, 13, 1, 0, 13, 13, 5, 1, 
    0, 0, 0, 8, 4, 0, 9, 3, 15, 3, 1, 1, 1, 3, 3, 1, 0, 0, 2, 1, 0, 0, 
    0, 0, 0, 0, 1, 1, 2 ]
  !gapprompt@gap>| !gapinput@ext:= PermChars( t2, rec( torso:= torso ) );;|
  !gapprompt@gap>| !gapinput@Add( prim, ext );|
  !gapprompt@gap>| !gapinput@prim:= Concatenation( prim );;  Length( prim );|
  4
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t2 ), 16 );;|
  !gapprompt@gap>| !gapinput@List( prim, x -> x[ spos ] );|
  [ 1, 1, 4, 1 ]
  !gapprompt@gap>| !gapinput@sigma:= ApproxP( prim, spos );;|
  !gapprompt@gap>| !gapinput@Maximum( sigma{ Difference( PositionsProperty(|
  !gapprompt@>| !gapinput@                       OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@                       ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  251/3861
\end{Verbatim}
 

 In the case $S = HN$, the unique maximal subgroup $U_3(8).3$ that contains the fixed element $s$ of order $19$ extends to a group of the type $U_3(8).6$ in $HN.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "HN.2" ), "19AB",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "U3(8).6" ) ], [ 1 ], "outer" );|
  1/6875
\end{Verbatim}
 

 In the case $S = HS$, there are two classes of maximal subgroups that contain $s$ of order $15$. They extend to $G = HS.2$, and none of the novelties in $G$ contains $s$ (cf.{\nobreakspace}\cite[p.{\nobreakspace}80]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "HS.2" ), "15A",|
  !gapprompt@>| !gapinput@     [ CharacterTable( "S8x2" ),|
  !gapprompt@>| !gapinput@       CharacterTable( "5:4" ) * CharacterTable( "A5.2" ) ], [ 1, 1 ],|
  !gapprompt@>| !gapinput@     "outer" );|
  36/275
\end{Verbatim}
 

 In the case $S = He$, there are three classes of maximal subgroups that contain $s$ in the class \texttt{14C}. They extend to $G = He.2$, and none of the novelties in $G$ contains $s$ (cf.{\nobreakspace}\cite[p.{\nobreakspace}104]{CCN85}). We compute the extensions of the corresponding primitive permutation
characters of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "He" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "He.2" );;|
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( AtlasClassNames( t ), "14C" );;|
  !gapprompt@gap>| !gapinput@prim:= Filtered( prim, x -> x[ spos ] <> 0 );;|
  !gapprompt@gap>| !gapinput@map:= InverseMap( GetFusionMap( t, t2 ) );;|
  !gapprompt@gap>| !gapinput@torso:= List( prim, pi -> CompositionMaps( pi, map ) );|
  [ [ 187425, 945, 449, 0, 21, 21, 25, 25, 0, 0, 5, 0, 0, 7, 1, 0, 0, 
        1, 0, 1, 0, 0, 0, 0, 0, 0 ], 
    [ 244800, 0, 64, 0, 84, 0, 0, 16, 0, 0, 4, 24, 45, 3, 4, 0, 0, 0, 
        0, 1, 0, 0, 0, 0, 0, 0 ], 
    [ 652800, 0, 512, 120, 72, 0, 0, 0, 0, 0, 8, 8, 22, 1, 0, 0, 0, 0, 
        0, 1, 0, 0, 1, 1, 2, 0 ] ]
  !gapprompt@gap>| !gapinput@ext:= List( torso, x -> PermChars( t2, rec( torso:= x ) ) );|
  [ [ Character( CharacterTable( "He.2" ),
        [ 187425, 945, 449, 0, 21, 21, 25, 25, 0, 0, 5, 0, 0, 7, 1, 0, 
            0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 315, 15, 0, 0, 3, 7, 7, 3, 0, 
            0, 0, 1, 1, 0, 1, 1, 0, 0, 0 ] ) ], 
    [ Character( CharacterTable( "He.2" ),
        [ 244800, 0, 64, 0, 84, 0, 0, 16, 0, 0, 4, 24, 45, 3, 4, 0, 0, 
            0, 0, 1, 0, 0, 0, 0, 0, 0, 360, 0, 0, 0, 6, 0, 0, 0, 0, 0, 
            3, 2, 2, 0, 0, 0, 0, 0, 0 ] ) ], 
    [ Character( CharacterTable( "He.2" ),
        [ 652800, 0, 512, 120, 72, 0, 0, 0, 0, 0, 8, 8, 22, 1, 0, 0, 0, 
            0, 0, 1, 0, 0, 1, 1, 2, 0, 480, 0, 120, 0, 12, 0, 0, 0, 0, 
            0, 4, 0, 0, 0, 0, 0, 0, 1, 1 ] ) ] ]
  !gapprompt@gap>| !gapinput@spos:= Position( AtlasClassNames( t2 ), "14CD" );;|
  !gapprompt@gap>| !gapinput@sigma:= ApproxP( Concatenation( ext ), spos );;|
  !gapprompt@gap>| !gapinput@Maximum( sigma{ Difference( PositionsProperty(|
  !gapprompt@>| !gapinput@                       OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@                       ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  37/9520
\end{Verbatim}
 

 In the case $S = O'N$, the two classes of maximal subgroups of the type $L_2(31)$ do not extend to $G = O'N.2$, and a class of novelties of the structure $31:30$ appears (see{\nobreakspace}\cite[p.{\nobreakspace}132]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "ON.2" ), "31AB",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "P:Q", [ 31, 30 ] ) ], [ 1 ], "outer" );|
  1/84672
\end{Verbatim}
 

 Now we consider also ${{\sigma}}(G,\hat{s})$, for suitable $\hat{s} \in G \setminus S$; this yields lower bounds for the spread of the nonsimple groups $G$. (These results are shown in the last two columns of{\nobreakspace}\cite[Table{\nobreakspace}9]{BGK}.) 

 As above, we use the known character tables of the maximal subgroups in order
to compute the optimal choice for $\hat{s} \in G \setminus S$. (We may use the function \texttt{ProbGenInfoSimple} although the groups are not simple; all we need is that the relevant maximal
subgroups are self-normalizing.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sporautinfo2:= [];;|
  !gapprompt@gap>| !gapinput@for name in List( sporautinfo, x -> x[1] ) do|
  !gapprompt@>| !gapinput@     Add( sporautinfo2, ProbGenInfoSimple( CharacterTable( name ) ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@PrintFormattedArray( sporautinfo2 );|
     F3+.2    19/5684  299        [ "42E" ]   [ 10 ]
    Fi22.2 1165/20592   17        [ "24G" ]    [ 3 ]
      HN.2     1/1425 1424        [ "24B" ]    [ 4 ]
      HS.2     21/550   26        [ "20C" ]    [ 4 ]
      He.2    33/4165  126        [ "24A" ]    [ 2 ]
      J2.2       1/15   14        [ "14A" ]    [ 1 ]
      J3.2   77/10260  133        [ "34A" ]    [ 1 ]
     M12.2    113/495    4        [ "12B" ]    [ 3 ]
     M22.2       8/33    4        [ "10A" ]    [ 4 ]
     McL.2      1/135  134        [ "22A" ]    [ 1 ]
      ON.2  61/109368 1792 [ "22A", "38A" ] [ 1, 1 ]
     Suz.2      1/351  350        [ "28A" ]    [ 1 ]
  !gapprompt@gap>| !gapinput@for entry in sporautinfo2 do|
  !gapprompt@>| !gapinput@     DisplayProbGenMaxesInfo( CharacterTable( entry[1] ), entry[4] );|
  !gapprompt@>| !gapinput@od;|
  F3+.2, 42E: 2^12.M24  (2)
              2^2.U6(2):S3x2  (1)
              2^(3+12).(L3(2)xS6)  (2)
              (S3xS3xG2(3)):2  (1)
              S6xL2(8):3  (1)
              7:6xS7  (1)
              7^(1+2)_+:(6xS3).2  (2)
  Fi22.2, 24G: Fi22.2M4  (1)
               2^(5+8):(S3xS6)  (1)
               3^5:(2xU4(2).2)  (1)
  HN.2, 24B: 2^(1+8)_+.(A5xA5).2^2  (1)
             5^2.5.5^2.4S5  (2)
             HN.2M13  (1)
  HS.2, 20C: (2xA6.2^2).2  (1)
             HS.2N5  (2)
             5:4xS5  (1)
  He.2, 24A: 2^(1+6)_+.L3(2).2  (1)
             S4xL3(2).2  (1)
  J2.2, 14A: L3(2).2x2  (1)
  J3.2, 34A: L2(17)x2  (1)
  M12.2, 12B: L2(11).2  (1)
              D8.(S4x2)  (1)
              3^(1+2):D8  (1)
  M22.2, 10A: M22.2M4  (1)
              A6.2^2  (1)
              L2(11).2  (2)
  McL.2, 22A: 2xM11  (1)
  ON.2, 22A: J1x2  (1)
  ON.2, 38A: J1x2  (1)
  Suz.2, 28A: (A4xL3(4):2_3):2  (1)
\end{Verbatim}
 

 In the other six cases, we do not have the complete lists of primitive
permutation characters, so we choose a suitable element $\hat{s}$ for each group. It is sufficient to prescribe $|\hat{s}|$, as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sporautchoices:= [|
  !gapprompt@>| !gapinput@       [ "Fi22",  "Fi22.2",  42 ],|
  !gapprompt@>| !gapinput@       [ "Fi24'", "Fi24'.2", 46 ],|
  !gapprompt@>| !gapinput@       [ "He",    "He.2",    42 ],|
  !gapprompt@>| !gapinput@       [ "HN",    "HN.2",    44 ],|
  !gapprompt@>| !gapinput@       [ "HS",    "HS.2",    30 ],|
  !gapprompt@>| !gapinput@       [ "ON",    "ON.2",    38 ], ];;|
\end{Verbatim}
 

 First we list the maximal subgroups of the corresponding simple groups that
contain the square of $\hat{s}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for triple in sporautchoices do|
  !gapprompt@>| !gapinput@     tbl:= CharacterTable( triple[1] );|
  !gapprompt@>| !gapinput@     tbl2:= CharacterTable( triple[2] );|
  !gapprompt@>| !gapinput@     spos2:= PowerMap( tbl2, 2,|
  !gapprompt@>| !gapinput@         Position( OrdersClassRepresentatives( tbl2 ), triple[3] ) );|
  !gapprompt@>| !gapinput@     spos:= Position( GetFusionMap( tbl, tbl2 ), spos2 );|
  !gapprompt@>| !gapinput@     DisplayProbGenMaxesInfo( tbl, AtlasClassNames( tbl ){ [ spos ] } );|
  !gapprompt@>| !gapinput@   od;|
  Fi22, 21A: O8+(2).3.2  (1)
             S3xU4(3).2_2  (1)
             A10.2  (1)
             A10.2  (1)
  F3+, 23A: Fi23  (1)
            F3+M7  (1)
  He, 21B: 3.A7.2  (1)
           7^(1+2):(S3x3)  (1)
           7:3xpsl(3,2)  (2)
  HN, 22A: 2.HS.2  (1)
  HS, 15A: A8.2  (1)
           5:4xa5  (1)
  ON, 19B: L3(7).2  (1)
           ONM2  (1)
           J1  (1)
\end{Verbatim}
 

 According to{\nobreakspace}\cite{CCN85}, exactly the following maximal subgroups of the simple group $S$ in the above list do \emph{not} extend to ${{\rm Aut}}(S)$: The two $S_{10}$ type subgroups of $Fi_{22}$ and the two $L_3(7).2$ type subgroups of $O'N$. 

 Furthermore, the following maximal subgroups of ${{\rm Aut}}(S)$ with the property that the intersection with $S$ is not maximal in $S$ have to be considered whether they contain $s^{\prime}$: $G_2(3).2$ and $3^5:(2 \times U_4(2).2)$ in $Fi_{22}.2$. (Note that the order of the $7^{1+2}_+:(3 \times D_{16})$ type subgroup in $O'N.2$ is obviously not divisible by $19$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@42 in OrdersClassRepresentatives( CharacterTable( "G2(3).2" ) );|
  false
  !gapprompt@gap>| !gapinput@Size( CharacterTable( "U4(2)" ) ) mod 7 = 0;|
  false
\end{Verbatim}
 

 So we take the extensions of the above maximal subgroups, as described
in{\nobreakspace}\cite{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "Fi22.2" ), "42A",|
  !gapprompt@>| !gapinput@    [ CharacterTable( "O8+(2).3.2" ) * CharacterTable( "Cyclic", 2 ),|
  !gapprompt@>| !gapinput@      CharacterTable( "S3" ) * CharacterTable( "U4(3).(2^2)_{122}" ) ],|
  !gapprompt@>| !gapinput@    [ 1, 1 ] );|
  163/1170
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "Fi24'.2" ), "46A",|
  !gapprompt@>| !gapinput@     [ CharacterTable( "Fi23" ) * CharacterTable( "Cyclic", 2 ),|
  !gapprompt@>| !gapinput@       CharacterTable( "2^12.M24" ) ],|
  !gapprompt@>| !gapinput@     [ 1, 1 ] );|
  566/5481
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "He.2" ), "42A",|
  !gapprompt@>| !gapinput@     [ CharacterTable( "3.A7.2" ) * CharacterTable( "Cyclic", 2 ),|
  !gapprompt@>| !gapinput@       CharacterTable( "7^(1+2):(S3x6)" ),|
  !gapprompt@>| !gapinput@       CharacterTable( "7:6" ) * CharacterTable( "L3(2)" ) ],|
  !gapprompt@>| !gapinput@     [ 1, 1, 1 ] );|
  1/119
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "HN.2" ), "44A",|
  !gapprompt@>| !gapinput@     [ CharacterTable( "4.HS.2" ) ],|
  !gapprompt@>| !gapinput@     [ 1 ] );|
  997/192375
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "HS.2" ), "30A",|
  !gapprompt@>| !gapinput@     [ CharacterTable( "S8" ) * CharacterTable( "C2" ),|
  !gapprompt@>| !gapinput@       CharacterTable( "5:4" ) * CharacterTable( "S5" ) ],|
  !gapprompt@>| !gapinput@     [ 1, 1 ] );|
  36/275
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "ON.2" ), "38A",|
  !gapprompt@>| !gapinput@     [ CharacterTable( "J1" ) * CharacterTable( "C2" ) ],|
  !gapprompt@>| !gapinput@     [ 1 ] );|
  61/109368
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{Other Simple Groups {\textendash} Easy Cases}}\label{easyloop}
\logpage{[ 11, 4, 3 ]}
\hyperdef{L}{X80DA58F187CDCF5F}{}
{
  We are interested in simple groups $G$ for which \texttt{ProbGenInfoSimple} does not guarantee ${{\cal S}}(G) \geq 3$. So we examine the remaining tables of simple groups in the \textsf{GAP} Character Table Library, and distinguish the following three cases: Either \texttt{ProbGenInfoSimple} yields the lower bound at least three, or a smaller bound, or the computation
of a lower bound fails because not enough information is available to compute
the primitive permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@names:= AllCharacterTableNames( IsSimple, true, IsAbelian, false,|
  !gapprompt@>| !gapinput@                                   IsDuplicateTable, false );;|
  !gapprompt@gap>| !gapinput@names:= Difference( names, spornames );;|
  !gapprompt@gap>| !gapinput@fails:= [];;|
  !gapprompt@gap>| !gapinput@lessthan3:= [];;|
  !gapprompt@gap>| !gapinput@atleast3:= [];;|
  !gapprompt@gap>| !gapinput@for name in names do|
  !gapprompt@>| !gapinput@     tbl:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     info:= ProbGenInfoSimple( tbl );|
  !gapprompt@>| !gapinput@     if info = fail then|
  !gapprompt@>| !gapinput@       Add( fails, name );|
  !gapprompt@>| !gapinput@     elif info[3] < 3 then|
  !gapprompt@>| !gapinput@       Add( lessthan3, info );|
  !gapprompt@>| !gapinput@     else|
  !gapprompt@>| !gapinput@       Add( atleast3, info );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 For the following simple groups, (currently) not enough information is
available in the \textsf{GAP} Character Table Library and in the \textsf{GAP} Library of Tables of Marks, for computing a lower bound for ${{\sigma}}(G)$. Some of these groups will be dealt with in later sections, and for the other
groups, the bounds derived with theoretical arguments in{\nobreakspace}\cite{BGK} are sufficient, so we need no \textsf{GAP} computations for them. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fails;|
  [ "2E6(2)", "2F4(8)", "3D4(3)", "3D4(4)", "A14", "A15", "A16", "A17", 
    "A18", "A19", "E6(2)", "L4(4)", "L4(5)", "L4(9)", "L5(3)", "L8(2)", 
    "O10+(2)", "O10+(3)", "O10-(2)", "O10-(3)", "O12+(2)", "O12+(3)", 
    "O12-(2)", "O12-(3)", "O7(5)", "O8+(7)", "O8-(3)", "O9(3)", 
    "R(27)", "S10(2)", "S12(2)", "S4(7)", "S4(8)", "S4(9)", "S6(4)", 
    "S6(5)", "S8(3)", "U4(4)", "U4(5)", "U5(3)", "U5(4)", "U6(4)", 
    "U7(2)" ]
\end{Verbatim}
 

 The following simple groups appear in{\nobreakspace}\cite[Table{\nobreakspace}1{\textendash}6]{BGK}. More detailed computations can be found in the sections{\nobreakspace}\ref{A5}, \ref{A6}, \ref{A7}, \ref{O8p2}, \ref{O8p3}, \ref{S62}, \ref{U42}, \ref{U43}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PrintFormattedArray( lessthan3 );|
        A5      1/3 2                [ "5A" ]       [ 1 ]
        A6      2/3 1                [ "5A" ]       [ 2 ]
        A7      2/5 2                [ "7A" ]       [ 2 ]
     O7(3)  199/351 1               [ "14A" ]       [ 3 ]
    O8+(2)  334/315 0 [ "15A", "15B", "15C" ] [ 7, 7, 7 ]
    O8+(3) 863/1820 2 [ "20A", "20B", "20C" ] [ 8, 8, 8 ]
     S6(2)      4/7 1                [ "9A" ]       [ 4 ]
     S8(2)     8/15 1               [ "17A" ]       [ 3 ]
     U4(2)    21/40 1               [ "12A" ]       [ 2 ]
     U4(3)   53/135 2                [ "7A" ]       [ 7 ]
\end{Verbatim}
 

 For the following simple groups $G$, the inequality ${{\sigma}}(G) < 1/3$ follows from the loop above. The columns show the name of $G$, the values ${{\sigma}}(G)$ and ${{\cal S}}(G)$, the class names of $s$ for which these values are attained, and $|{{\mathbb M}}(G,s)|$. 

 (We increase the line length for this table. Even with this width, the entry
for the group $L_7(2)$ would not fit on one screen line, we show it separately below.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@oldsize:= SizeScreen();;|
  !gapprompt@gap>| !gapinput@SizeScreen( [ 80 ] );;|
  !gapprompt@gap>| !gapinput@PrintFormattedArray( Filtered( atleast3, l -> l[1] <> "L7(2)" ) );|
    2F4(2)'  118/1755   14                           [ "16A" ]             [ 2 ]
     3D4(2)    1/5292 5291                           [ "13A" ]             [ 1 ]
        A10      3/10    3                           [ "21A" ]             [ 1 ]
        A11     2/105   52                           [ "11A" ]             [ 2 ]
        A12       2/9    4                           [ "35A" ]             [ 1 ]
        A13    4/1155  288                           [ "13A" ]             [ 5 ]
         A8      3/14    4                           [ "15A" ]             [ 1 ]
         A9      9/35    3                      [ "9A", "9B" ]          [ 4, 4 ]
      F4(2)     9/595   66                           [ "13A" ]             [ 5 ]
      G2(3)       1/7    6                           [ "13A" ]             [ 3 ]
      G2(4)      1/21   20                           [ "13A" ]             [ 2 ]
      G2(5)      1/31   30                     [ "7A", "21A" ]         [ 10, 1 ]
    L2(101)     1/101  100                    [ "51A", "17A" ]          [ 1, 1 ]
    L2(103)   53/5253   99             [ "52A", "26A", "13A" ]       [ 1, 1, 1 ]
    L2(107)   55/5671  103 [ "54A", "27A", "18A", "9A", "6A" ] [ 1, 1, 1, 1, 1 ]
    L2(109)     1/109  108                    [ "55A", "11A" ]          [ 1, 1 ]
     L2(11)      7/55    7                            [ "6A" ]             [ 1 ]
    L2(113)     1/113  112                    [ "57A", "19A" ]          [ 1, 1 ]
    L2(121)     1/121  120                           [ "61A" ]             [ 1 ]
    L2(125)     1/125  124        [ "63A", "21A", "9A", "7A" ]    [ 1, 1, 1, 1 ]
     L2(13)      1/13   12                            [ "7A" ]             [ 1 ]
     L2(16)      1/15   14                           [ "17A" ]             [ 1 ]
     L2(17)      1/17   16                            [ "9A" ]             [ 1 ]
     L2(19)    11/171   15                           [ "10A" ]             [ 1 ]
     L2(23)    13/253   19                     [ "6A", "12A" ]          [ 1, 1 ]
     L2(25)      1/25   24                           [ "13A" ]             [ 1 ]
     L2(27)     5/117   23                     [ "7A", "14A" ]          [ 1, 1 ]
     L2(29)      1/29   28                           [ "15A" ]             [ 1 ]
     L2(31)    17/465   27                     [ "8A", "16A" ]          [ 1, 1 ]
     L2(32)      1/31   30              [ "3A", "11A", "33A" ]       [ 1, 1, 1 ]
     L2(37)      1/37   36                           [ "19A" ]             [ 1 ]
     L2(41)      1/41   40                     [ "21A", "7A" ]          [ 1, 1 ]
     L2(43)    23/903   39                    [ "22A", "11A" ]          [ 1, 1 ]
     L2(47)   25/1081   43        [ "24A", "12A", "8A", "6A" ]    [ 1, 1, 1, 1 ]
     L2(49)      1/49   48                           [ "25A" ]             [ 1 ]
     L2(53)      1/53   52                     [ "27A", "9A" ]          [ 1, 1 ]
     L2(59)   31/1711   55       [ "30A", "15A", "10A", "6A" ]    [ 1, 1, 1, 1 ]
     L2(61)      1/61   60                           [ "31A" ]             [ 1 ]
     L2(64)      1/63   62                    [ "65A", "13A" ]          [ 1, 1 ]
     L2(67)   35/2211   63                    [ "34A", "17A" ]          [ 1, 1 ]
     L2(71)   37/2485   67 [ "36A", "18A", "12A", "9A", "6A" ] [ 1, 1, 1, 1, 1 ]
     L2(73)      1/73   72                           [ "37A" ]             [ 1 ]
     L2(79)   41/3081   75       [ "40A", "20A", "10A", "8A" ]    [ 1, 1, 1, 1 ]
      L2(8)       1/7    6                      [ "3A", "9A" ]          [ 1, 1 ]
     L2(81)      1/81   80                           [ "41A" ]             [ 1 ]
     L2(83)   43/3403   79 [ "42A", "21A", "14A", "7A", "6A" ] [ 1, 1, 1, 1, 1 ]
     L2(89)      1/89   88              [ "45A", "15A", "9A" ]       [ 1, 1, 1 ]
     L2(97)      1/97   96                     [ "49A", "7A" ]          [ 1, 1 ]
     L3(11)    1/6655 6654                   [ "19A", "133A" ]          [ 1, 1 ]
      L3(2)       1/4    3                            [ "7A" ]             [ 1 ]
      L3(3)      1/24   23                           [ "13A" ]             [ 1 ]
      L3(4)       1/5    4                            [ "7A" ]             [ 3 ]
      L3(5)     1/250  249                           [ "31A" ]             [ 1 ]
      L3(7)    1/1372 1371                           [ "19A" ]             [ 1 ]
      L3(8)    1/1792 1791                           [ "73A" ]             [ 1 ]
      L3(9)    1/2880 2879                           [ "91A" ]             [ 1 ]
      L4(3)   53/1053   19                           [ "20A" ]             [ 1 ]
      L5(2)    1/5376 5375                           [ "31A" ]             [ 1 ]
      L6(2) 365/55552  152                    [ "21A", "63A" ]          [ 2, 2 ]
     O8-(2)      1/63   62                           [ "17A" ]             [ 1 ]
      S4(4)      4/15    3                           [ "17A" ]             [ 2 ]
      S4(5)       1/5    4                           [ "13A" ]             [ 1 ]
      S6(3)     1/117  116                           [ "14A" ]             [ 2 ]
     Sz(32)    1/1271 1270                     [ "5A", "25A" ]          [ 1, 1 ]
      Sz(8)      1/91   90                            [ "5A" ]             [ 1 ]
     U3(11)    1/6655 6654                           [ "37A" ]             [ 1 ]
      U3(3)     16/63    3                     [ "6A", "12A" ]          [ 2, 2 ]
      U3(4)     1/160  159                           [ "13A" ]             [ 1 ]
      U3(5)    46/525   11                           [ "10A" ]             [ 2 ]
      U3(7)    1/1372 1371                           [ "43A" ]             [ 1 ]
      U3(8)    1/1792 1791                           [ "19A" ]             [ 1 ]
      U3(9)    1/3600 3599                           [ "73A" ]             [ 1 ]
      U5(2)      1/54   53                           [ "11A" ]             [ 1 ]
      U6(2)      5/21    4                           [ "11A" ]             [ 4 ]
  !gapprompt@gap>| !gapinput@SizeScreen( oldsize );;|
  !gapprompt@gap>| !gapinput@First( atleast3, l -> l[1] = "L7(2)" );|
  [ "L7(2)", 1/4388290560, 4388290559, [ "127A" ], [ 1 ] ]
\end{Verbatim}
 

 It should be mentioned that{\nobreakspace}\cite{BW1} states the following lower bounds for the uniform spread of the groups $L_2(q)$. 

 \begin{center}
\begin{tabular}{|l|l|}$q-2$&
if $4 \leq q$ is even,\\
$q-1$&
if $11 \leq q \equiv 1 \pmod{4}$,\\
$q-4$&
if $11 \leq q \equiv -1 \pmod{4}$.\\
\end{tabular}\\[2mm]
\end{center}

 

 These bounds appear in the third column of the above table. Furthermore, \cite{BW1} states that the (uniform) spread of alternating groups of even degree at least $8$ is exactly $4$. 

 For the sake of completeness, Table{\nobreakspace}II gives an overview of the
sets ${{\mathbb M}}(G,s)$ for those cases in the above list that are needed in{\nobreakspace}\cite{BGK} but that do not require a further discussion here. The structure of the
maximal subgroups and the order of $s$ in the table refer to the matrix groups not to the simple groups. The number
of the subgroups has been shown above, the structure follows
from{\nobreakspace}\cite{CCN85}. 

 \begin{center}
\begin{tabular}{|l|l|r|r|}\hline
$G$&
${{\mathbb M}}(G,s)$&
$|s|$&
see{\nobreakspace}\cite{CCN85}\\
\hline
\hline
${{\rm SL}}(3,4) = 3.L_3(4)$&
$3 \times L_3(2), 3 \times L_3(2), 3 \times L_3(2)$&
$21$&
p.{\nobreakspace}23\\
\hline
$\Omega^-(8,2) = O^-_8(2)$&
$\Omega^-(4,4).2 = L_2(16).2$&
$17$&
p.{\nobreakspace}89\\
\hline
${{\rm Sp}}(4,4) = S_4(4)$&
$\Omega^-(4,4).2 = L_2(16).2, {{\rm Sp}}(2,16).2 = L_2(16).2$&
$17$&
p.{\nobreakspace}44\\
${{\rm Sp}}(6,3) = 2.S_6(3)$&
$(4 \times U_3(3)).2, {{\rm Sp}}(2,17).3 = 2.L_2(27).3$&
$28$&
p.{\nobreakspace}113\\
\hline
${{\rm SU}}(3,3) = U_3(3)$&
$3^{1+2}_+:8, {{\rm GU}}(2,3) = 4.S_4$&
$6$&
p.{\nobreakspace}14\\
${{\rm SU}}(3,5) = 3.U_3(5)$&
$3 \times 5^{1+2}_+:8, {{\rm GU}}(2,5) = 3 \times 2S_5$&
$30$&
p.{\nobreakspace}34\\
${{\rm SU}}(5,2) = U_5(2)$&
$L_2(11)$&
$11$&
p.{\nobreakspace}73\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Table II: Maximal subgroups/{\textgreater}\end{center}

 }

  
\subsection{\textcolor{Chapter }{Automorphism Groups of other Simple Groups {\textendash} Easy Cases}}\label{easyloopaut}
\logpage{[ 11, 4, 4 ]}
\hyperdef{L}{X7B1E26D586337487}{}
{
  We deal with automorphic extensions of those simple groups that are listed in
Table{\nobreakspace}I and that have been treated successfully in
Section{\nobreakspace}\ref{easyloop}. 

 For the following groups, \texttt{ProbGenInfoAlmostSimple} can be used because \textsf{GAP} can compute their primitive permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@list:= [|
  !gapprompt@>| !gapinput@  [ "A5", "A5.2" ],|
  !gapprompt@>| !gapinput@  [ "A6", "A6.2_1" ],|
  !gapprompt@>| !gapinput@  [ "A6", "A6.2_2" ],|
  !gapprompt@>| !gapinput@  [ "A6", "A6.2_3" ],|
  !gapprompt@>| !gapinput@  [ "A7", "A7.2" ],|
  !gapprompt@>| !gapinput@  [ "A8", "A8.2" ],|
  !gapprompt@>| !gapinput@  [ "A9", "A9.2" ],|
  !gapprompt@>| !gapinput@  [ "A11", "A11.2" ],|
  !gapprompt@>| !gapinput@  [ "L3(2)", "L3(2).2" ],|
  !gapprompt@>| !gapinput@  [ "L3(3)", "L3(3).2" ],|
  !gapprompt@>| !gapinput@  [ "L3(4)", "L3(4).2_1" ],|
  !gapprompt@>| !gapinput@  [ "L3(4)", "L3(4).2_2" ],|
  !gapprompt@>| !gapinput@  [ "L3(4)", "L3(4).2_3" ],|
  !gapprompt@>| !gapinput@  [ "L3(4)", "L3(4).3" ],|
  !gapprompt@>| !gapinput@  [ "S4(4)", "S4(4).2" ],|
  !gapprompt@>| !gapinput@  [ "U3(3)", "U3(3).2" ],|
  !gapprompt@>| !gapinput@  [ "U3(5)", "U3(5).2" ],|
  !gapprompt@>| !gapinput@  [ "U3(5)", "U3(5).3" ],|
  !gapprompt@>| !gapinput@  [ "U4(2)", "U4(2).2" ],|
  !gapprompt@>| !gapinput@  [ "U4(3)", "U4(3).2_1" ],|
  !gapprompt@>| !gapinput@  [ "U4(3)", "U4(3).2_3" ],|
  !gapprompt@>| !gapinput@];;|
  !gapprompt@gap>| !gapinput@autinfo:= [];;|
  !gapprompt@gap>| !gapinput@fails:= [];;|
  !gapprompt@gap>| !gapinput@for pair in list do|
  !gapprompt@>| !gapinput@     tbl:= CharacterTable( pair[1] );|
  !gapprompt@>| !gapinput@     tblG:= CharacterTable( pair[2] );|
  !gapprompt@>| !gapinput@     info:= ProbGenInfoSimple( tbl );|
  !gapprompt@>| !gapinput@     spos:= List( info[4], x -> Position( AtlasClassNames( tbl ), x ) );|
  !gapprompt@>| !gapinput@     Add( autinfo, ProbGenInfoAlmostSimple( tbl, tblG, spos ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@PrintFormattedArray( autinfo );|
         A5.2      0        [ "5AB" ]    [ 1 ]
       A6.2_1    2/3        [ "5AB" ]    [ 2 ]
       A6.2_2    1/6         [ "5A" ]    [ 1 ]
       A6.2_3      0        [ "5AB" ]    [ 1 ]
         A7.2   1/15        [ "7AB" ]    [ 1 ]
         A8.2  13/28       [ "15AB" ]    [ 1 ]
         A9.2    1/4        [ "9AB" ]    [ 1 ]
        A11.2  1/945       [ "11AB" ]    [ 1 ]
      L3(2).2    1/4        [ "7AB" ]    [ 1 ]
      L3(3).2   1/18       [ "13AB" ]    [ 1 ]
    L3(4).2_1   3/10        [ "7AB" ]    [ 3 ]
    L3(4).2_2  11/60         [ "7A" ]    [ 1 ]
    L3(4).2_3   1/12        [ "7AB" ]    [ 1 ]
      L3(4).3   1/64         [ "7A" ]    [ 1 ]
      S4(4).2      0       [ "17AB" ]    [ 2 ]
      U3(3).2    2/7 [ "6A", "12AB" ] [ 2, 2 ]
      U3(5).2   2/21        [ "10A" ]    [ 2 ]
      U3(5).3 46/525        [ "10A" ]    [ 2 ]
      U4(2).2  16/45       [ "12AB" ]    [ 2 ]
    U4(3).2_1 76/135         [ "7A" ]    [ 3 ]
    U4(3).2_3 31/162        [ "7AB" ]    [ 3 ]
\end{Verbatim}
 

 We see that from this list, the two groups $A_6.2_1 = S_6$ and $U_4(3).2_1$ require further computations (see Sections{\nobreakspace}\ref{A6} and{\nobreakspace}\ref{U43}, respectively) because the bound in the second column is larger than $1/2$. 

 Also $U_4(2)$ is not done by the above, because in{\nobreakspace}\cite[Table{\nobreakspace}4]{BGK}, an element $s$ of order $9$ is chosen for the simple group, see Section{\nobreakspace}\ref{U42}. 

 Finally, we deal with automorphic extensions of the groups $L_4(3)$, $O_8^-(2)$, $S_6(3)$, and $U_5(2)$. 

 For $S = L_4(3)$ and $s \in S$ of order $20$, we have ${{\mathbb M}}(S,s) = \{ (4 \times A_6):2 \}$, the subgroup has index $2\,106$, see{\nobreakspace}\cite[p.{\nobreakspace}69]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "L4(3)" );;|
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( AtlasClassNames( t ), "20A" );;|
  !gapprompt@gap>| !gapinput@prim:= Filtered( prim, x -> x[ spos ] <> 0 );|
  [ Character( CharacterTable( "L4(3)" ),
    [ 2106, 106, 42, 0, 27, 27, 0, 46, 6, 6, 1, 7, 7, 0, 3, 3, 0, 0, 0, 
        1, 1, 1, 0, 0, 0, 0, 0, 1, 1 ] ) ]
\end{Verbatim}
 

 For the three automorphic extensions of the structure $G = S.2$, we compute the extensions of the permutation character, and the bounds ${{\sigma}}^{\prime}(G,s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for name in [ "L4(3).2_1", "L4(3).2_2", "L4(3).2_3" ] do|
  !gapprompt@>| !gapinput@     t2:= CharacterTable( name );|
  !gapprompt@>| !gapinput@     map:= InverseMap( GetFusionMap( t, t2 ) );|
  !gapprompt@>| !gapinput@     torso:= List( prim, pi -> CompositionMaps( pi, map ) );|
  !gapprompt@>| !gapinput@     ext:= Concatenation( List( torso,|
  !gapprompt@>| !gapinput@                             x -> PermChars( t2, rec( torso:= x ) ) ) );|
  !gapprompt@>| !gapinput@     sigma:= ApproxP( ext, Position( OrdersClassRepresentatives( t2 ), 20 ) );|
  !gapprompt@>| !gapinput@     max:= Maximum( sigma{ Difference( PositionsProperty(|
  !gapprompt@>| !gapinput@                          OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@                          ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  !gapprompt@>| !gapinput@     Print( name, ":\n", ext, "\n", max, "\n" );|
  !gapprompt@>| !gapinput@od;|
  L4(3).2_1:
  [ Character( CharacterTable( "L4(3).2_1" ), 
      [ 2106, 106, 42, 0, 27, 0, 46, 6, 6, 1, 7, 0, 3, 0, 0, 1, 1, 0, 
        0, 0, 0, 0, 1, 1, 0, 4, 0, 0, 6, 6, 6, 6, 2, 0, 0, 0, 0, 0, 0, 
        1, 1, 1, 1 ] ) ]
  0
  L4(3).2_2:
  [ Character( CharacterTable( "L4(3).2_2" ), 
      [ 2106, 106, 42, 0, 27, 27, 0, 46, 6, 6, 1, 7, 7, 0, 3, 3, 0, 0, 
        0, 1, 1, 1, 0, 0, 0, 1, 306, 306, 42, 6, 10, 10, 0, 0, 15, 15, 
        3, 3, 3, 3, 0, 0, 1, 1, 0, 1, 1, 0, 0 ] ) ]
  17/117
  L4(3).2_3:
  [ Character( CharacterTable( "L4(3).2_3" ), 
      [ 2106, 106, 42, 0, 27, 0, 46, 6, 6, 1, 7, 0, 3, 0, 0, 1, 1, 0, 
        0, 0, 1, 36, 0, 0, 6, 6, 2, 2, 2, 1, 1, 0, 0, 0 ] ) ]
  2/117
\end{Verbatim}
 

 For $S = O_8^-(2)$ and $s \in S$ of order $17$, we have ${{\mathbb M}}(S,s) = \{ L_2(16).2 \}$, the subgroup extends to $L_2(16).4$ in $S.2$, see{\nobreakspace}\cite[p.{\nobreakspace}89]{CCN85}. This is a non-split extension, so ${{\sigma}}^{\prime}(S.2,s) = 0$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "O8-(2).2" ), "17AB",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "L2(16).4" ) ], [ 1 ], "outer" );|
  0
\end{Verbatim}
 

 For $S = S_6(3)$ and $s \in S$ irreducible of order $14$, we have ${{\mathbb M}}(S,s) = \{ (2 \times U_3(3)).2, L_2(27).3 \}$. In $G = S.2$, the subgroups extend to $(4 \times U_3(3)).2$ and $L_2(27).6$, respectively, see{\nobreakspace}\cite[p.{\nobreakspace}113]{CCN85}. In order to show that ${{\sigma}}^{\prime}(G,s) = 7/3240$ holds, we compute the primitive permutation characters of $S$ (cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}) and the unique extensions to $G$ of those which are nonzero on $s$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S6(3)" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "S6(3).2" );;|
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( AtlasClassNames( t ), "14A" );;|
  !gapprompt@gap>| !gapinput@prim:= Filtered( prim, x -> x[ spos ] <> 0 );;|
  !gapprompt@gap>| !gapinput@map:= InverseMap( GetFusionMap( t, t2 ) );;|
  !gapprompt@gap>| !gapinput@torso:= List( prim, pi -> CompositionMaps( pi, map ) );;|
  !gapprompt@gap>| !gapinput@ext:= List( torso, pi -> PermChars( t2, rec( torso:= pi ) ) );|
  [ [ Character( CharacterTable( "S6(3).2" ),
        [ 155520, 0, 288, 0, 0, 0, 216, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
            0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 
            0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 144, 288, 0, 0, 0, 
            6, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 
            0 ] ) ], 
    [ Character( CharacterTable( "S6(3).2" ),
        [ 189540, 1620, 568, 0, 486, 0, 0, 27, 540, 84, 24, 0, 0, 0, 0, 
            0, 54, 0, 0, 10, 0, 7, 1, 6, 6, 0, 0, 0, 0, 0, 0, 18, 0, 0, 
            0, 6, 12, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 234, 64, 
            30, 8, 0, 3, 90, 6, 0, 4, 10, 6, 0, 2, 1, 0, 0, 0, 0, 0, 0, 
            0, 1, 1, 0, 0 ] ) ] ]
  !gapprompt@gap>| !gapinput@spos:= Position( AtlasClassNames( t2 ), "14A" );;|
  !gapprompt@gap>| !gapinput@sigma:= ApproxP( Concatenation( ext ), spos );;|
  !gapprompt@gap>| !gapinput@Maximum( sigma{ Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  7/3240
\end{Verbatim}
 

 For $S = U_5(2)$ and $s \in S$ of order $11$, we have ${{\mathbb M}}(S,s) = \{ L_2(11) \}$, the subgroup extends to $L_2(11).2$ in $S.2$, see{\nobreakspace}\cite[p.{\nobreakspace}73]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "U5(2).2" ), "11AB",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "L2(11).2" ) ], [ 1 ], "outer" );|
  1/288
\end{Verbatim}
 

 Here we clean the workspace for the first time. This may save more than $100$ megabytes, due to the fact that the caches for tables of marks and character
tables are flushed. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_8^-(3)$}}\label{O8m3}
\logpage{[ 11, 4, 5 ]}
\hyperdef{L}{X78B856907ED13545}{}
{
  We show that $S = O_8^-(3) = \Omega^-(8,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of order $41$, ${{\mathbb M}}(S,s)$ consists of one group of the type $L_2(81).2_1 = \Omega^-(4,9).2$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/567$. 
\end{description}
 

 The only maximal subgroups of $S$ containing elements of order $41$ have the type $L_2(81).2_1$, and there is one class of these subgroups, see{\nobreakspace}\cite[p.{\nobreakspace}141]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "O8-(3)" ), "41A",|
  !gapprompt@>| !gapinput@   [ CharacterTable( "L2(81).2_1" ) ], [ 1 ] );|
  1/567
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_{10}^+(2)$}}\label{O10p2}
\logpage{[ 11, 4, 6 ]}
\hyperdef{L}{X84AB334886DCA746}{}
{
  We show that $S = O_{10}^+(2) = \Omega^+(10,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  Ford$s \in S$ of order $45$, ${{\mathbb M}}(S,s)$ consists of one group of the type $(A_5 \times U_4(2)).2 = (\Omega^-(4,2) \times \Omega^-(6,2)).2$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 43/4\,216$. 
\item[{(c)}]  For $s$ as in (a), the maximal subgroup in (a) extends to $S_5 \times U_4(2).2$ in $G = {{\rm Aut}}(S) = S.2$, and ${{\sigma}}^{\prime}(G,s) = 23/248$. 
\end{description}
 

 The only maximal subgroups of $S$ containing elements of order $45$ are one class of groups $H = (A_5 \times U_4(2)):2$, see{\nobreakspace}\cite[p.{\nobreakspace}146]{CCN85}. (Note that none of the groups $S_8(2)$, $O_8^+(2)$, $L_5(2)$, $O_8^-(2)$, and $A_8$ contains elements of order $45$.) $H$ extends to subgroups of the type $H.2 = S_5 \times U_4(2):2$ in $G$, so we can compute $1_H^S = (1_{H.2}^G)_S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ForAny( [ "S8(2)", "O8+(2)", "L5(2)", "O8-(2)", "A8" ],|
  !gapprompt@>| !gapinput@           x -> 45 in OrdersClassRepresentatives( CharacterTable( x ) ) );|
  false
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O10+(2)" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "O10+(2).2" );;|
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "A5.2" ) * CharacterTable( "U4(2).2" );|
  CharacterTable( "A5.2xU4(2).2" )
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s2, t2 );;|
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t2 ), 45 );;|
  !gapprompt@gap>| !gapinput@approx:= ApproxP( pi, spos );;|
  !gapprompt@gap>| !gapinput@Maximum( approx{ ClassPositionsOfDerivedSubgroup( t2 ) } );|
  43/4216
\end{Verbatim}
 

 Statement{\nobreakspace}(c) follows from considering the outer classes of
prime element order. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( approx{ Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  23/248
\end{Verbatim}
 

 Alternatively, we can use \texttt{SigmaFromMaxes}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( t2, "45AB", [ s2 ], [ 1 ], "outer" );|
  23/248
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_{10}^-(2)$}}\label{O10m2}
\logpage{[ 11, 4, 7 ]}
\hyperdef{L}{X84E3E4837BB93977}{}
{
  We show that $S = O_{10}^-(2) = \Omega^-(10,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of order $33$, ${{\mathbb M}}(S,s)$ consists of one group of the type $3 \times U_5(2) = {{\rm GU}}(5,2)$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/119$. 
\item[{(c)}]  For $s$ as in (a), the maximal subgroup in (a) extends to $(3 \times U_5(2)).2$ in $G$, and ${{\sigma}}^{\prime}(G,s) = 1/595$. 
\end{description}
 

 The only maximal subgroups of $S$ containing elements of order $11$ have the types $A_{12}$ and $3 \times U_5(2)$, see{\nobreakspace}\cite[p.{\nobreakspace}147]{CCN85}. So $3 \times U_5(2)$ is the unique class of subgroups containing elements of order $33$. This shows statement{\nobreakspace}(a), and statement{\nobreakspace}(b)
follows using \texttt{SigmaFromMaxes}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "O10-(2)" ), "33A",|
  !gapprompt@>| !gapinput@   [ CharacterTable( "Cyclic", 3 ) * CharacterTable( "U5(2)" ) ], [ 1 ] );|
  1/119
\end{Verbatim}
 

 The structure of the maximal subgroup of $G$ follows from{\nobreakspace}\cite[p.{\nobreakspace}147]{CCN85}. We create its character table with a generic construction that is based on
the fact that the outer automorphism acts nontrivially on the two direct
factors; this determines the character table uniquely. (See{\nobreakspace}\cite{Auto} for details.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tblG:= CharacterTable( "U5(2)" );;|
  !gapprompt@gap>| !gapinput@tblMG:= CharacterTable( "Cyclic", 3 ) * tblG;;|
  !gapprompt@gap>| !gapinput@tblGA:= CharacterTable( "U5(2).2" );;|
  !gapprompt@gap>| !gapinput@acts:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );;|
  !gapprompt@gap>| !gapinput@poss:= Concatenation( List( acts, pi ->|
  !gapprompt@>| !gapinput@           PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, pi,|
  !gapprompt@>| !gapinput@               "(3xU5(2)).2" ) ) );|
  [ rec( 
        MGfusMGA := [ 1, 2, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12, 
            13, 13, 14, 14, 15, 15, 16, 17, 17, 18, 18, 19, 20, 21, 21, 
            22, 22, 23, 23, 24, 24, 25, 25, 26, 27, 27, 28, 28, 29, 29, 
            30, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
            44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 
            59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
            74, 75, 76, 77, 31, 32, 33, 35, 34, 37, 36, 38, 39, 40, 41, 
            42, 43, 45, 44, 47, 46, 49, 48, 51, 50, 52, 54, 53, 56, 55, 
            57, 58, 60, 59, 62, 61, 64, 63, 66, 65, 68, 67, 69, 71, 70, 
            73, 72, 75, 74, 77, 76 ], 
        table := CharacterTable( "(3xU5(2)).2" ) ) ]
\end{Verbatim}
 

 Now statement{\nobreakspace}(c) follows using \texttt{SigmaFromMaxes}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "O10-(2).2" ), "33AB",|
  !gapprompt@>| !gapinput@       [ poss[1].table ], [ 1 ], "outer" );|
  1/595
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_{12}^+(2)$}}\label{O12p2}
\logpage{[ 11, 4, 8 ]}
\hyperdef{L}{X8307367E7C7C3BCE}{}
{
  We show that $S = O_{12}^+(2) = \Omega^+(12,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of the type $4^- \perp 8^-$ (i.{\nobreakspace}e., $s$ decomposes the natural $12$-dimensional module for ${{\rm GO}}^+_{12}(2) = S.2$ into an orthogonal sum of two irreducible modules of the dimensions $4$ and $8$, respectively) and of order $85$, ${{\mathbb M}}(S,s)$ consists of one group of the type $G_8 = (\Omega^-(4,2) \times \Omega^-(8,2)).2$ and two groups of the type $L_4(4).2^2 = \Omega^+(6,4).2^2$ that are conjugate in $G = {{\rm Aut}}(S) = S.2 = {{\rm SO}}^+(12,2)$ but \emph{not} conjugate in $S$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 7\,675/1\,031\,184$. 
\item[{(c)}]  ${{\sigma}}^{\prime}(G,s) = 73/1\,008$. 
\end{description}
 

 The element $s$ is a ppd$(12,2;8)$-element in the sense of{\nobreakspace}\cite{GPPS}, so the maximal subgroups of $S$ that contain $s$ are among the nine cases (2.1){\textendash}(2.9) listed in this paper; in the
notation of this paper, we have $q = 2$, $d = 12$, $e = 8$, and $r = 17$. Case{\nobreakspace}(2.1) does not occur for orthogonal groups and $q = 2$, according to{\nobreakspace}\cite{KlL90}; case{\nobreakspace}(2.2) contributes a unique maximal subgroup, the
stabilizer $G_8$ of the orthogonal decomposition; the cases{\nobreakspace}(2.3),
(2.4){\nobreakspace}(a), (2.5), and (2.6){\nobreakspace}(a) do not occur
because $r {{\not=}} e+1$ in our situation; case{\nobreakspace}(2.4){\nobreakspace}(b) describes
extension field type subgroups that are contained in ${{\rm \hbox{$\Gamma$}L}}(6,4)$, which yields the candidates ${{\rm GU}}(6,2).2 \cong 3.U_6(2).S_3$ {\textendash}but $3.U_6(2).3$ does not contain elements of order $85${\textendash} and $\Omega^+(6,4).2^2 \cong L_4(4).2^2$ (two classes by{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.14]{KlL90}); the cases{\nobreakspace}(2.6){\nobreakspace}(b){\textendash}(c)
and{\nobreakspace}(2.8) do not occur because they require $d \leq 8$; case{\nobreakspace}(2.7) does not occur because{\nobreakspace}\cite[Table{\nobreakspace}5]{GPPS} contains no entry for $r = 2e+1 = 17$; finally, case{\nobreakspace}(2.9) does not occur because it requires $e \in \{ d-1, d \}$ in the case $r = 2e+1$. 

 So we need the permutation characters of the actions on the cosets of $L_4(4).2^2$ (two classes) and $G_8$. According to{\nobreakspace}\cite[Prop.{\nobreakspace}4.1.6]{KlL90}, $G_8$ has the structure $(\Omega^-(4,2) \times \Omega^-(8,2)).2$. 

 Newer versions of the \textsf{GAP} Character Table Library contain the character table of $S$, but it is still easier to work with the table of $G$, which was already available at the times when the first version of these
examples was created. 

 The two classes of $L_4(4).2^2$ type subgroups in $S$ are fused in $G$. This can be seen from the fact that inducing the trivial character of a
subgroup $H_1 = L_4(4).2^2$ of $S$ to $G$ yields a character $\psi$ whose values are not all even; note that if $H_1$ would extend in $G$ to a subgroup of twice the size of $H_1$ then $\psi$ would be induced from a degree two character of this subgroup whose values are
all even, and induction preserves this property. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O12+(2).2" );;|
  !gapprompt@gap>| !gapinput@h1:= CharacterTable( "L4(4).2^2" );;|
  !gapprompt@gap>| !gapinput@psi:= PossiblePermutationCharacters( h1, t );;|
  !gapprompt@gap>| !gapinput@Length( psi );|
  1
  !gapprompt@gap>| !gapinput@ForAny( psi[1], IsOddInt );|
  true
\end{Verbatim}
 

 The fixed element $s$ of order $85$ is contained in a member of each of the two conjugacy classes of the type $L_4(4).2^2$ in $S$, since $S$ contains only one class of subgroups of the order $85$; note that the order of the Sylow $17$ centralizer (in both $S$ and $G$) is not divisible by $25$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SizesCentralizers( t ){ PositionsProperty(|
  !gapprompt@>| !gapinput@       OrdersClassRepresentatives( t ), x -> x = 17 ) } / 25;|
  [ 408/5, 408/5 ]
\end{Verbatim}
 

 This implies that the restriction of $\psi$ to $S$ is the sum $\psi_S = \pi_1 + \pi_2$, say, of the first two interesting permutation characters of $S$. 

 The subgroup $G_8$ of $S$ extends to a group of the structure $H_2 = \Omega^-(4,2).2 \times \Omega^-(8,2).2$ in $G$, inducing the trivial characters of $H_2$ to $G$ yields a permutation character $\varphi$ of $G$ whose restriction to $S$ is the third permutation character $\varphi_S = \pi_3$, say. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@h2:= CharacterTable( "S5" ) * CharacterTable( "O8-(2).2" );;|
  !gapprompt@gap>| !gapinput@phi:= PossiblePermutationCharacters( h2, t );;|
  !gapprompt@gap>| !gapinput@Length( phi );|
  1
\end{Verbatim}
 

 We have $\pi_1(1) = \pi_2(1)$ and $\pi_1(s) = \pi_2(s)$, the latter again because $S$ contains only one class of subgroups of order $85$. 

 Now statement{\nobreakspace}(a) follows from the fact that $\pi_i(s) = 1$ holds for $1 \leq i \leq 3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= Concatenation( psi, phi );;|
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 85 );|
  213
  !gapprompt@gap>| !gapinput@List( prim, x -> x[ spos ] );|
  [ 2, 1 ]
\end{Verbatim}
 

 For statement{\nobreakspace}(b), we compute ${{\sigma}}(S,s)$. Note that we have to consider only classes inside $S = G^{\prime}$, and that 
\[ {{\sigma}}( g, s ) = \sum_{i=1}^3 \frac{\pi_i(s) \cdot \pi_i(g)}{\pi_i(1)} =
\frac{\psi(s) \cdot \psi(g)}{\psi(1)} + \frac{\varphi(s) \cdot
\varphi(g)}{\varphi(1)} \]
 holds for $g \in S^{\times}$, so the characters $\psi$ and $\varphi$ are sufficient. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );;|
  !gapprompt@gap>| !gapinput@Maximum( approx{ ClassPositionsOfDerivedSubgroup( t ) } );|
  7675/1031184
\end{Verbatim}
 

 Statement{\nobreakspace}(c) follows from considering the outer involution
classes. Note that by{\nobreakspace}\cite[Remark after Proposition{\nobreakspace}5.14]{BGK}, only the subgroup $H_2$ need to be considered, no novelties appear. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( approx{ Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t ) ) } );|
  73/1008
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_{12}^-(2)$}}\label{O12m2}
\logpage{[ 11, 4, 9 ]}
\hyperdef{L}{X834FE1B58119A5FF}{}
{
  We show that $S = O_{12}^-(2) = \Omega^-(12,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ irreducible of order $2^6+1 = 65$,  ${{\mathbb M}}(S,s)$ consists of two groups of the types $U_4(4).2 = \Omega^-(6,4).2$ and $L_2(64).3 = \Omega^-(4,8).3$, respectively. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/1\,023$. 
\item[{(c)}]  ${{\sigma}}^{\prime}({{\rm Aut}}(S),s) = 1/347\,820$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, ${{\mathbb M}}(S,s)$ consists of extension field subgroups, which have the structures $U_4(4).2$ and $L_2(64).3$, respectively, and by{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.16]{KlL90}, there is just one class of each of these types. 

 Newer versions of the \textsf{GAP} Character Table Library contain the character table of $S$, but using this table for the computations is not easier than using the table
of $G = {{\rm Aut}}(S) = O_{12}^-(2).2$, which was already available at the times when the first version of these
examples was created. So we compute the permutation characters $\pi_1, \pi_2$ of the extensions of the groups in ${{\mathbb M}}(S,s)$ to $G$ {\textendash}these maximal subgroups have the structures $U_4(4).4$ and $L_2(64).6$, respectively{\textendash} and compute the fixed point ratios of the
restrictions to $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O12-(2).2" );;|
  !gapprompt@gap>| !gapinput@s1:= CharacterTable( "U4(4).4" );;|
  !gapprompt@gap>| !gapinput@pi1:= PossiblePermutationCharacters( s1, t );;|
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "L2(64).6" );;|
  !gapprompt@gap>| !gapinput@pi2:= PossiblePermutationCharacters( s2, t );;|
  !gapprompt@gap>| !gapinput@prim:= Concatenation( pi1, pi2 );;  Length( prim );|
  2
\end{Verbatim}
 

 Now statement{\nobreakspace}(a) follows from the fact that $\pi_1(s) = \pi_2(s) = 1$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 65 );;|
  !gapprompt@gap>| !gapinput@List( prim, x -> x[ spos ] );|
  [ 1, 1 ]
\end{Verbatim}
 

 For statement{\nobreakspace}(b), we compute ${{\sigma}}(S,s)$; note that we have to consider only classes inside $S = G^{\prime}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );;|
  !gapprompt@gap>| !gapinput@Maximum( approx{ ClassPositionsOfDerivedSubgroup( t ) } );|
  1/1023
\end{Verbatim}
 

 Statement{\nobreakspace}(c) follows from the values on the outer involution
classes. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( approx{ Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t ) ) } );|
  1/347820
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$S_6(4)$}}\label{S64}
\logpage{[ 11, 4, 10 ]}
\hyperdef{L}{X7C5980A385C088FA}{}
{
  We show that $S = S_6(4) = {{\rm Sp}}(6,4)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ irreducible of order $65$, ${{\mathbb M}}(S,s)$ consists of two groups of the types $U_4(4).2 = \Omega^-(6,4).2$ and $L_2(64).3 = {{\rm Sp}}(2,64).3$, respectively. 
\item[{(b)}]  ${{\sigma}}(S,s) = 16/63$. 
\item[{(c)}]  ${{\sigma}}^{\prime}({{\rm Aut}}(S),s) = 0$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, the element $s$ is contained in maximal subgroups of the given types, and by{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.10, 4.8.6]{KlL90}, there is exactly one class of these subgroups. 

 The character tables of these two subgroups are currently not contained in the \textsf{GAP} Character Table Library. We compute the permutation character induced from the
first subgroup as the unique character of the right degree that is
combinatorially possible (cf.{\nobreakspace}\cite{BP98copy}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S6(4)" );;|
  !gapprompt@gap>| !gapinput@degree:= Size( t ) / ( 2 * Size( CharacterTable( "U4(4)" ) ) );;|
  !gapprompt@gap>| !gapinput@pi1:= PermChars( t, rec( torso:= [ degree ] ) );;|
  !gapprompt@gap>| !gapinput@Length( pi1 );|
  1
\end{Verbatim}
 

 The index of the second subgroup is too large for this simpleminded approach;
therefore, we first restrict the set of possible irreducible constituents of
the permutation character to those of $1_H^G$, where $H$ is the derived subgroup of $L_2(64).3$, for which the character table is available. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CharacterTable( "L2(64).3" );  CharacterTable( "U4(4).2" );|
  fail
  fail
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "L2(64)" );;|
  !gapprompt@gap>| !gapinput@subpi:= PossiblePermutationCharacters( s, t );;|
  !gapprompt@gap>| !gapinput@Length( subpi );|
  1
  !gapprompt@gap>| !gapinput@scp:= MatScalarProducts( t, Irr( t ), subpi );;|
  !gapprompt@gap>| !gapinput@nonzero:= PositionsProperty( scp[1], x -> x <> 0 );|
  [ 1, 11, 13, 14, 17, 18, 32, 33, 56, 58, 59, 73, 74, 77, 78, 79, 80, 
    93, 95, 96, 103, 116, 117, 119, 120 ]
  !gapprompt@gap>| !gapinput@const:= RationalizedMat( Irr( t ){ nonzero } );;|
  !gapprompt@gap>| !gapinput@degree:= Size( t ) / ( 3 * Size( s ) );|
  5222400
  !gapprompt@gap>| !gapinput@pi2:= PermChars( t, rec( torso:= [ degree ], chars:= const ) );;|
  !gapprompt@gap>| !gapinput@Length( pi2 );|
  1
  !gapprompt@gap>| !gapinput@prim:= Concatenation( pi1, pi2 );;|
\end{Verbatim}
 

 Now statement{\nobreakspace}(a) follows from the fact that $\pi_1(s) = \pi_2(s) = 1$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 65 );;|
  !gapprompt@gap>| !gapinput@List( prim, x -> x[ spos ] );|
  [ 1, 1 ]
\end{Verbatim}
 

 For statement{\nobreakspace}(b), we compute ${{\sigma}}(G,s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( prim, spos ) );|
  16/63
\end{Verbatim}
 

 In order to prove statement{\nobreakspace}(c), we have to consider only the
extensions of the above permutation characters of $S$ to ${{\rm Aut}}(S) \cong S.2$ (cf.{\nobreakspace}\cite[Section{\nobreakspace}2.2]{BGK}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "S6(4).2" );;|
  !gapprompt@gap>| !gapinput@tfust2:= GetFusionMap( t, t2 );;|
  !gapprompt@gap>| !gapinput@cand:= List( prim, x -> CompositionMaps( x, InverseMap( tfust2 ) ) );;|
  !gapprompt@gap>| !gapinput@ext:= List( cand, pi -> PermChars( t2, rec( torso:= pi ) ) );|
  [ [ Character( CharacterTable( "S6(4).2" ),
        [ 2016, 512, 96, 128, 32, 120, 0, 6, 16, 40, 24, 0, 8, 136, 1, 
            6, 6, 1, 32, 0, 8, 6, 2, 0, 2, 0, 0, 4, 0, 16, 32, 1, 8, 2, 
            6, 2, 1, 2, 4, 0, 0, 1, 6, 0, 1, 10, 0, 1, 1, 0, 10, 10, 4, 
            0, 1, 0, 2, 0, 2, 1, 2, 2, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 
            0, 0, 0, 32, 0, 0, 8, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 8, 0, 
            0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0 ] ) ], 
    [ Character( CharacterTable( "S6(4).2" ),
        [ 5222400, 0, 0, 0, 1280, 0, 960, 120, 0, 0, 0, 0, 0, 0, 1600, 
            0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 15, 0, 0, 0, 0, 0, 
            0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 
            0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
            0, 0, 960, 0, 0, 0, 16, 0, 24, 12, 0, 0, 0, 0, 0, 0, 0, 0, 
            0, 0, 0, 0, 4, 1, 0, 0, 3, 0, 0, 0, 0, 0 ] ) ] ]
  !gapprompt@gap>| !gapinput@spos2:= Position( OrdersClassRepresentatives( t2 ), 65 );;|
  !gapprompt@gap>| !gapinput@sigma:= ApproxP( Concatenation( ext ), spos2 );;|
  !gapprompt@gap>| !gapinput@Maximum( approx{ Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  0
\end{Verbatim}
 

 For the simple group, we can \emph{alternatively} consider a reducible element $s: 2 \perp 4$ of order $85$, which is a multiple of the primitive prime divisor $r = 17$ of $4^4-1$. So we have $e = 4$, $d = 6$, and $q = 4$, in the terminology of{\nobreakspace}\cite{GPPS}. Then ${{\mathbb M}}(S,s)$ consists of two groups, of the types $\Omega^+(6,4).2 \cong L_4(4).2_2$ and ${{\rm Sp}}(2,4) \times {{\rm Sp}}(4,4)$. This can be shown by checking{\nobreakspace}\cite[Ex.{\nobreakspace}2.1{\textendash}2.9]{GPPS}. Ex.{\nobreakspace}2.1 yields the candidates $\Omega^{\pm}(6,4).2$, but only $\Omega^+(6,4).2$ contains elements of order $85$.  Ex.{\nobreakspace}2.2 yields the stabilizer of a two-dimensional subspace,
which has the structure ${{\rm Sp}}(2,4) \times {{\rm Sp}}(4,4)$, by{\nobreakspace}\cite{KlL90}. All other cases except Ex.{\nobreakspace}2.4{\nobreakspace}(b) are excluded
by the fact that $r = 4e+1$, and Ex.{\nobreakspace}2.4{\nobreakspace}(b) does not apply because $d/\gcd(d,e)$ is odd. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "S6(4)" ), "85A",|
  !gapprompt@>| !gapinput@   [ CharacterTable( "L4(4).2_2" ),|
  !gapprompt@>| !gapinput@     CharacterTable( "A5" ) * CharacterTable( "S4(4)" ) ], [ 1, 1 ] );|
  142/455
\end{Verbatim}
 

 This bound is not as good as the one obtained from the irreducible element of
order $65$ used above. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@16/63 < 142/455;|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$\ast${\nobreakspace}$S_6(5)$}}\label{S65}
\logpage{[ 11, 4, 11 ]}
\hyperdef{L}{X829EDF7F7C0BCB8E}{}
{
  We show that $S = S_6(5) = {{\rm PSp}}(6,5)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of the type $2 \perp 4$ (i.{\nobreakspace}e., the preimage of $s$ in ${{\rm Sp}}(6,5) = 2.G$ decomposes the natural $6$-dimensional module for ${{\rm Sp}}(6,5)$ into an orthogonal sum of two irreducible modules of the dimensions $2$ and $4$, respectively) and of order $78$, ${{\mathbb M}}(S,s)$ consists of one group of the type $G_2 = 2.({{\rm PSp}}(2,5) \times {{\rm PSp}}(4,5))$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 9/217$. 
\end{description}
 

 The order of $s$ is a multiple of the primitive prime divisor $r = 13$ of $5^4-1$, so we have $e = 4$, $d = 6$, and $q = 5$, in the terminology of{\nobreakspace}\cite{GPPS}. We check{\nobreakspace}\cite[Ex.{\nobreakspace}2.1{\textendash}2.9]{GPPS}. Ex.{\nobreakspace}2.1 does not apply because the classes $C_5$ and $C_8$ are empty by{\nobreakspace}\cite[Table{\nobreakspace}3.5.C]{KlL90}, Ex.{\nobreakspace}2.2 yields exactly the stabilizer $G_2$ of a $2$-dimensional subspace, Ex.{\nobreakspace}2.4{\nobreakspace}(b) does not apply
because $d/\gcd(d,e)$ is odd, and all other cases are excluded by the fact that $r = 3e+1$. 

 The group $G_2$ has the structure $2.({{\rm PSp}}(2,5) \times {{\rm PSp}}(4,5))$, which is a central product of ${{\rm Sp}}(2,5) \cong 2.A_5$ and ${{\rm Sp}}(4,5) = 2.S_4(5)$ (see{\nobreakspace}\cite[Prop.{\nobreakspace}4.1.3]{KlL90}). The character table of $G_2$ can be derived from that of the direct product of $2.A_5$ and $2.S_4(5)$, by factoring out the diagonal central subgroup of order two. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S6(5)" );;|
  !gapprompt@gap>| !gapinput@s1:= CharacterTable( "2.A5" );;|
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "2.S4(5)" );;|
  !gapprompt@gap>| !gapinput@dp:= s1 * s2;|
  CharacterTable( "2.A5x2.S4(5)" )
  !gapprompt@gap>| !gapinput@c:= Difference( ClassPositionsOfCentre( dp ), Union(|
  !gapprompt@>| !gapinput@                       GetFusionMap( s1, dp ), GetFusionMap( s2, dp ) ) );|
  [ 62 ]
  !gapprompt@gap>| !gapinput@s:= dp / c;|
  CharacterTable( "2.A5x2.S4(5)/[ 1, 62 ]" )
\end{Verbatim}
 

 Now we compute ${{\sigma}}(S,s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( t, "78A", [ s ], [ 1 ] );|
  9/217
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$S_8(3)$}}\label{S83}
\logpage{[ 11, 4, 12 ]}
\hyperdef{L}{X85162B297E4B67EB}{}
{
  We show that $S = S_8(3) = {{\rm PSp}}(8,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ irreducible of order $41$, ${{\mathbb M}}(S,s)$ consists of one group $M$ of the type $S_4(9).2 = {{\rm PSp}}(4,9).2$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/546$. 
\item[{(c)}]  The preimage of $s$ in the matrix group $2.S_8(3) = {{\rm Sp}}(8,3)$ can be chosen of order $82$, and the preimage of $M$ is $2.S_4(9).2 = {{\rm Sp}}(4,9).2$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, the only maximal subgroups of $S$ that contain irreducible elements of order $(3^4+1)/2 = 41$ are of extension field type, and by{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.10]{KlL90}, these groups have the structure $S_4(9).2$ and there is exactly one class of these groups. 

 The group $U = S_4(9)$ has three nontrivial outer automorphisms, the character table of the subgroup $U.2$ in question has the identifier \texttt{"S4(9).2{\textunderscore}1"}, which follows from the fact that the extensions of $U$ by the other two outer automorphisms do not admit a class fusion into $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S8(3)" );;|
  !gapprompt@gap>| !gapinput@pi:= List( [ "S4(9).2_1", "S4(9).2_2", "S4(9).2_3" ],|
  !gapprompt@>| !gapinput@              name -> PossiblePermutationCharacters(|
  !gapprompt@>| !gapinput@                          CharacterTable( name ), t ) );;|
  !gapprompt@gap>| !gapinput@List( pi, Length );|
  [ 1, 0, 0 ]
\end{Verbatim}
 

 Now statement{\nobreakspace}(a) follows from the fact that $(1_{U.2})^S(s) = 1$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 41 );;|
  !gapprompt@gap>| !gapinput@pi[1][1][ spos ];|
  1
\end{Verbatim}
 

 Now we compute ${{\sigma}}(S,s)$ in order to show statement{\nobreakspace}(b). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( pi[1], spos ) );|
  1/546
\end{Verbatim}
 

 Statement{\nobreakspace}(c) is clear from the description of extension field
type subgroups in{\nobreakspace}\cite{KlL90}. }

  
\subsection{\textcolor{Chapter }{$U_4(4)$}}\label{U44}
\logpage{[ 11, 4, 13 ]}
\hyperdef{L}{X8495C2BF7B6EFFEF}{}
{
  We show that $S = U_4(4) = {{\rm SU}}(4,4)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of the type $1 \perp 3$ (i.{\nobreakspace}e., $s$ decomposes the natural $4$-dimensional module for ${{\rm SU}}(4,4)$ into an orthogonal sum of two irreducible modules of the dimensions $1$ and $3$, respectively) and of order $4^3+1 = 65$, ${{\mathbb M}}(S,s)$ consists of one group of the type $G_1 = 5 \times U_3(4) = {{\rm GU}}(3,4)$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 209/3\,264$. 
\end{description}
 

 By{\nobreakspace}\cite{MSW94}, the only maximal subgroups of $S$ that contain $s$ are one class of stabilizers $H \cong 5 \times U_3(4)$ of this decomposition, and clearly there is only one such group containing $s$. 

 Note that $H$ has index $3\,264$ in $S$, since $S$ has two orbits on the $1$-dimensional subspaces, of lengths $1\,105$ and $3\,264$, respectively, and elements of order $13 = 65/5$ lie in the stabilizers of points in the latter orbit. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= SU(4,4);;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g, NormedRowVectors( GF(16)^4 ), OnLines );;|
  !gapprompt@gap>| !gapinput@orblen:= List( orbs, Length );|
  [ 1105, 3264 ]
  !gapprompt@gap>| !gapinput@List( orblen, x -> x mod 13 );|
  [ 0, 1 ]
\end{Verbatim}
 

 We compute the permutation character $1_{G_1}^S$; there is exactly one combinatorially possible permutation character of
degree $3\,264$ (cf.{\nobreakspace}\cite{BP98copy}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U4(4)" );;|
  !gapprompt@gap>| !gapinput@pi:= PermChars( t, rec( torso:= [ orblen[2] ] ) );;|
  !gapprompt@gap>| !gapinput@Length( pi );|
  1
\end{Verbatim}
 

 Now we compute ${{\sigma}}(S,s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 65 );;|
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( pi, spos ) );|
  209/3264
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$U_6(2)$}}\label{U62}
\logpage{[ 11, 4, 14 ]}
\hyperdef{L}{X7A3BB5AA83A2BDF3}{}
{
  We show that $S = U_6(2) = {{\rm PSU}}(6,2)$ satisfies the following. 
\begin{description}
\item[{(a)}]  For $s \in S$ of order $11$, ${{\mathbb M}}(S,s)$ consists of one group of the type $U_5(2) = {{\rm SU}}(5,2)$ and three groups of the type $M_{22}$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 5/21$. 
\item[{(c)}]  The preimage of $s$ in the matrix group ${{\rm SU}}(6,2) = 3.U_6(2)$ can be chosen of order $33$, and the preimages of the groups in ${{\mathbb M}}(S,s)$ have the structures $3 \times U_5(2) \cong {{\rm GU}}(5,2)$ and $3.M_{22}$, respectively. 
\item[{(d)}]  With $s$ as in{\nobreakspace}(a), the automorphic extensions $S.2$, $S.3$ of $S$ satisfy ${{\sigma}}^{\prime}(S.2,s) = 5/96$ and ${{\sigma}}^{\prime}(S.3,s) = 59/224$. 
\end{description}
 

 According to the list of maximal subgroups of $S$ in{\nobreakspace}\cite[p.{\nobreakspace}115]{CCN85}, $s$ is contained exactly in maximal subgroups of the types $U_5(2)$ (one class) and $M_{22}$ (three classes). 

 The permutation character of the action on the cosets of $U_5(2)$ type subgroups is uniquely determined by the character tables. We get three
possibilities for the permutation character on the cosets of $M_{22}$ type subgroups; they correspond to the three classes of such subgroups,
because each of these classes contains elements in exactly one of the
conjugacy classes \texttt{4C}, \texttt{4D}, and \texttt{4E} of elements in $S$, and these classes are fused under the outer automorphism of $S$ of order three. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U6(2)" );;|
  !gapprompt@gap>| !gapinput@s1:= CharacterTable( "U5(2)" );;|
  !gapprompt@gap>| !gapinput@pi1:= PossiblePermutationCharacters( s1, t );;|
  !gapprompt@gap>| !gapinput@Length( pi1 );|
  1
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "M22" );;|
  !gapprompt@gap>| !gapinput@pi2:= PossiblePermutationCharacters( s2, t );|
  [ Character( CharacterTable( "U6(2)" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, 0, 48, 0, 16, 6, 0, 0, 0, 0, 
        0, 0, 6, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "U6(2)" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 0, 48, 0, 0, 16, 6, 0, 0, 0, 0, 
        0, 0, 6, 0, 2, 0, 0, 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "U6(2)" ),
    [ 20736, 0, 384, 0, 0, 0, 54, 0, 0, 48, 0, 0, 0, 16, 6, 0, 0, 0, 0, 
        0, 0, 6, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@imgs:= Set( pi2, x -> Position( x, 48 ) );|
  [ 10, 11, 12 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ imgs };|
  [ "4C", "4D", "4E" ]
  !gapprompt@gap>| !gapinput@GetFusionMap( t, CharacterTable( "U6(2).3" ) ){ imgs };|
  [ 10, 10, 10 ]
  !gapprompt@gap>| !gapinput@prim:= Concatenation( pi1, pi2 );;|
\end{Verbatim}
 

 Now statement{\nobreakspace}(a) follows from the fact that the permutation
characters have the value $1$ on $s$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 11 );;|
  !gapprompt@gap>| !gapinput@List( prim, x -> x[ spos ] );|
  [ 1, 1, 1, 1 ]
\end{Verbatim}
 

 For statement{\nobreakspace}(b), we compute ${{\sigma}}(S,s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( prim, spos ) );|
  5/21
\end{Verbatim}
 

 Statement{\nobreakspace}(c) follows from{\nobreakspace}\cite{CCN85}, plus the information that $3.U_6(2)$ does not contain groups of the structure $3 \times M_{22}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PossibleClassFusions(|
  !gapprompt@>| !gapinput@       CharacterTable( "Cyclic", 3 ) * CharacterTable( "M22" ),|
  !gapprompt@>| !gapinput@       CharacterTable( "3.U6(2)" ) );|
  [  ]
\end{Verbatim}
 

 For statement{\nobreakspace}(d), we need that the relevant maximal subgroups
of $S.2$ are $U_5(2).2$ and one subgroup $M_{22}.2$, and that the relevant maximal subgroup of $S.3$ is $U_5(2) \times 3$, see{\nobreakspace}\cite[p.{\nobreakspace}115]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "U6(2).2" ), "11AB",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "U5(2).2" ), CharacterTable( "M22.2" ) ],|
  !gapprompt@>| !gapinput@       [ 1, 1 ], "outer" );|
  5/96
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "U6(2).3" ), "11A",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "U5(2)" ) * CharacterTable( "Cyclic", 3 ) ],|
  !gapprompt@>| !gapinput@       [ 1 ], "outer" );|
  59/224
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Computations using Groups}}\label{sect:hard}
\logpage{[ 11, 5, 0 ]}
\hyperdef{L}{X8237B8617D6F6027}{}
{
  Before we start the computations using groups, we clean the workspace. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
  
\subsection{\textcolor{Chapter }{$A_{2m+1}$, $2 \leq m \leq 11$}}\label{Aodd}
\logpage{[ 11, 5, 1 ]}
\hyperdef{L}{X815320787B601000}{}
{
  For alternating groups of odd degree $n = 2m+1$, we choose $s$ to be an $n$-cycle. The interesting cases in{\nobreakspace}\cite[Proposition{\nobreakspace}6.7]{BGK} are $5 \leq n \leq 23$. 

 In each case, we compute representatives of the maximal subgroups of $A_n$, consider only those that contain an $n$-cycle, and then compute the permutation characters. Additionally, we show
also the names that are used for the subgroups in the \textsf{GAP} Library of Transitive Groups, see{\nobreakspace}\cite{HulpkeTG} and the documentation of this library in the \textsf{GAP} Reference Manual. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PrimitivesInfoForOddDegreeAlternatingGroup:= function( n )|
  !gapprompt@>| !gapinput@    local G, max, cycle, spos, prim, nonz;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    G:= AlternatingGroup( n );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Compute representatives of the classes of maximal subgroups.|
  !gapprompt@>| !gapinput@    max:= MaximalSubgroupClassReps( G );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Omit subgroups that cannot contain an `n'-cycle.|
  !gapprompt@>| !gapinput@    max:= Filtered( max, m -> IsTransitive( m, [ 1 .. n ] ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Compute the permutation characters.|
  !gapprompt@>| !gapinput@    cycle:= [];|
  !gapprompt@>| !gapinput@    cycle[ n-1 ]:= 1;|
  !gapprompt@>| !gapinput@    spos:= PositionProperty( ConjugacyClasses( CharacterTable( G ) ),|
  !gapprompt@>| !gapinput@               c -> CycleStructurePerm( Representative( c ) ) = cycle );|
  !gapprompt@>| !gapinput@    prim:= List( max, m -> TrivialCharacter( m )^G );|
  !gapprompt@>| !gapinput@    nonz:= PositionsProperty( prim, x -> x[ spos ] <> 0 );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Compute the subgroup names and the multiplicities.|
  !gapprompt@>| !gapinput@    return rec( spos := spos,|
  !gapprompt@>| !gapinput@                prim := prim{ nonz },|
  !gapprompt@>| !gapinput@                grps := List( max{ nonz },|
  !gapprompt@>| !gapinput@                              m -> TransitiveGroup( n,|
  !gapprompt@>| !gapinput@                                       TransitiveIdentification( m ) ) ),|
  !gapprompt@>| !gapinput@                mult := List( prim{ nonz }, x -> x[ spos ] ) );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 The sets ${{\tilde{\mathbb M}}}(s)$ and the values ${{\sigma}}(A_n,s)$ are as follows. For each degree in question, the first list shows names for
representatives of the conjugacy classes of maximal subgroups containing a
fixed $n$-cycle, and the second list shows the number of conjugates in each class. 

 
\begin{Verbatim}[commandchars=!@B,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>B !gapinput@for n in [ 5, 7 .. 23 ] doB
  !gapprompt@>B !gapinput@     prim:= PrimitivesInfoForOddDegreeAlternatingGroup( n );B
  !gapprompt@>B !gapinput@     bound:= Maximum( ApproxP( prim.prim, prim.spos ) );B
  !gapprompt@>B !gapinput@     Print( n, ": ", prim.grps, ", ", prim.mult, ", ", bound, "\n" );B
  !gapprompt@>B !gapinput@od;B
  5: [ D(5) = 5:2 ], [ 1 ], 1/3
  7: [ L(7) = L(3,2), L(7) = L(3,2) ], [ 1, 1 ], 2/5
  9: [ 1/2[S(3)^3]S(3), L(9):3=P|L(2,8) ], [ 1, 3 ], 9/35
  11: [ M(11), M(11) ], [ 1, 1 ], 2/105
  13: [ F_78(13)=13:6, L(13)=PSL(3,3), L(13)=PSL(3,3) ], [ 1, 2, 2 ], 4/
  1155
  15: [ 1/2[S(3)^5]S(5), 1/2[S(5)^3]S(3), L(15)=A_8(15)=PSL(4,2), 
    L(15)=A_8(15)=PSL(4,2) ], [ 1, 1, 1, 1 ], 29/273
  17: [ L(17):4=PYL(2,16), L(17):4=PYL(2,16) ], [ 1, 1 ], 2/135135
  19: [ F_171(19)=19:9 ], [ 1 ], 1/6098892800
  21: [ t21n150, t21n161, t21n91 ], [ 1, 1, 2 ], 29/285
  23: [ M(23), M(23) ], [ 1, 1 ], 2/130945815
\end{Verbatim}
 

 In the above output, a subgroup printed as \texttt{1/2[S(}$n_1$\texttt{)\texttt{\symbol{94}}}$n_2$\texttt{]S(}$n_2$\texttt{)}, \texttt{1/2[S(}$n_1$\texttt{)\texttt{\symbol{94}}}$n_2$\texttt{]S(}$n_2$\texttt{)}, where $n = n_1 n_2$ holds, denotes the intersection of $A_n$ with the wreath product $S_{n_1} \wr S_{n_2} \leq S_n$. (Note that the \textsf{Atlas} denotes the subgroup \texttt{1/2[S(3)\texttt{\symbol{94}}3]S(3)} of $A_9$ as $3^3:S_4$.) The groups printed as \texttt{P|L(2,8)} and \texttt{PYL(2,16)} denote ${{\rm P\hbox{$\Gamma$}L}}(2,8)$ and ${{\rm P\hbox{$\Gamma$}L}}(2,16)$, respectively. And the three subgroups of $A_{21}$ have the structures $(S_3 \wr S_7) \cap A_{21}$, $(S_7 \wr S_3) \cap A_{21}$, and ${{\rm PGL}}(3,4)$, respectively. 

 Note that $A_9$ contains two conjugacy classes of maximal subgroups of the type ${{\rm P\hbox{$\Gamma$}L}}(2,8) \cong L_2(8):3$, and that each $9$-cycle in $A_9$ is contained in exactly three \emph{conjugate} subgroups of this type. For $n \in \{ 13, 15, 17 \}$, $A_n$ contains two conjugacy classes of isomorphic maximal subgroups of linear type,
and each $n$-cycle is contained in subgroups from each class. Finally, $A_{21}$ contains only one class of maximal subgroups of linear type. 

 For the two groups $A_5$ and $A_7$, the values computed above are not sufficient. See Section{\nobreakspace}\ref{A5} and{\nobreakspace}\ref{A7} for a further treatment. 

 The above computations look like a brute-force approach, but note that the
computation of the maximal subgroups of alternating and symmetric groups in \textsf{GAP} uses the classification of these subgroups, and also the conjugacy classes of
elements in alternating and symmetric groups can be computed cheaply. 

 Alternative (character-theoretic) computations for $n \in \{ 5, 7, 9, 11, 13 \}$ were shown in Section{\nobreakspace}\ref{easyloop}. (A hand calculation for the case $n = 19$ can be found in{\nobreakspace}\cite{BW1}.) }

  
\subsection{\textcolor{Chapter }{$A_5$}}\label{A5}
\logpage{[ 11, 5, 2 ]}
\hyperdef{L}{X7B5321337B28100B}{}
{
  We show that $S = A_5$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 1/3$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $5$. 
\item[{(b)}]  For $s \in S$ of order $5$, ${{\mathbb M}}(S,s)$ consists of one group of the type $D_{10}$. 
\item[{(c)}]  $P(S) = 1/3$, and this value is attained exactly for $P(S,s)$ with $s$ of order $5$. 
\item[{(d)}]  Each element in $S$ together with one of $(1,2)(3,4)$, $(1,3)(2,4)$, $(1,4)(2,3)$ generates a proper subgroup of $S$. 
\item[{(e)}]  Both the spread and the uniform spread of $S$ is exactly two (see{\nobreakspace}\cite{BW1}), with $s$ of order $5$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "A5" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "A5", 1/3, 2, [ "5A" ], [ 1 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the primitive permutation
characters, and the fact that the unique class of maximal subgroups that
contain elements of order $5$ consists of groups of the structure $D_{10}$, see{\nobreakspace}\cite[p.{\nobreakspace}2]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 3, 5, 5 ]
  !gapprompt@gap>| !gapinput@PrimitivePermutationCharacters( t );|
  [ Character( CharacterTable( "A5" ), [ 5, 1, 2, 0, 0 ] ), 
    Character( CharacterTable( "A5" ), [ 6, 2, 0, 1, 1 ] ), 
    Character( CharacterTable( "A5" ), [ 10, 2, 1, 0, 0 ] ) ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c), we compute that for all nonidentity elements $s \in S$ and involutions $g \in S$, $P(g,s) \geq 1/3$ holds, with equality if and only if $s$ has order $5$. We actually compute, for class representatives $s$, the proportion of involutions $g$ such that $\langle g, s \rangle {{\not=}} S$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AlternatingGroup( 5 );;|
  !gapprompt@gap>| !gapinput@inv:= g.1^2 * g.2;|
  (1,4)(2,5)
  !gapprompt@gap>| !gapinput@cclreps:= List( ConjugacyClasses( g ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( cclreps, Order ), cclreps );|
  !gapprompt@gap>| !gapinput@List( cclreps, Order );|
  [ 1, 2, 3, 5, 5 ]
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, inv ) );|
  15
  !gapprompt@gap>| !gapinput@prop:= List( cclreps,|
  !gapprompt@>| !gapinput@                r -> RatioOfNongenerationTransPermGroup( g, inv, r ) );|
  [ 1, 1, 3/5, 1/3, 1/3 ]
  !gapprompt@gap>| !gapinput@Minimum( prop );|
  1/3
\end{Verbatim}
 

 Statement{\nobreakspace}(d) follows by explicit computations. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@triple:= [ (1,2)(3,4), (1,3)(2,4), (1,4)(2,3) ];;|
  !gapprompt@gap>| !gapinput@CommonGeneratorWithGivenElements( g, cclreps, triple );|
  fail
\end{Verbatim}
 

 As for statement{\nobreakspace}(e), we know from{\nobreakspace}(a) that the
uniform spread of $S$ is at least two, and from{\nobreakspace}(d) that the spread is less than
three. }

  
\subsection{\textcolor{Chapter }{$A_6$}}\label{A6}
\logpage{[ 11, 5, 3 ]}
\hyperdef{L}{X82C3B4287B0C7BEE}{}
{
  We show that $S = A_6$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 2/3$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $5$. 
\item[{(b)}]  For $s$ of order $5$, ${{\mathbb M}}(S,s)$ consists of two nonconjugate groups of the type $A_5$. 
\item[{(c)}]  $P(S) = 5/9$, and this value is attained exactly for $P(S,s)$ with $s$ of order $5$. 
\item[{(d)}]  Each element in $S$ together with one of $(1,2)(3,4)$, $(1,3)(2,4)$, $(1,4)(2,3)$ generates a proper subgroup of $S$. 
\item[{(e)}]  Both the spread and the uniform spread of $S$ is exactly two (see{\nobreakspace}\cite{BW1}), with $s$ of order $4$. 
\item[{(f)}]  For $x$, $y \in S_6^{\times}$, there is $s \in S_6$ such that $S \subseteq \langle x, s \rangle \cap \langle y, s \rangle$. It is \emph{not} possible to find $s \in S$ with this property, or $s$ in a prescribed conjugacy class of $S_6$. 
\item[{(g)}]  ${{\sigma}}( {{\rm PGL}}(2,9) ) = 1/6$ and ${{\sigma}}( M_{10} ) = 1/9$, with $s$ of order $10$ and $8$, respectively. 
\end{description}
 

 (Note that in this example, the optimal choice of $s$ for $P(S)$ cannot be used to obtain the result on the exact spread.) 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "A6" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "A6", 2/3, 1, [ "5A" ], [ 2 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the two classes of maximal subgroups that contain elements
of order $5$ consist of groups of the structure $A_5$, see{\nobreakspace}\cite[p.{\nobreakspace}4]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 3, 3, 4, 5, 5 ]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );|
  [ Character( CharacterTable( "A6" ), [ 6, 2, 3, 0, 0, 1, 1 ] ), 
    Character( CharacterTable( "A6" ), [ 6, 2, 0, 3, 0, 1, 1 ] ), 
    Character( CharacterTable( "A6" ), [ 10, 2, 1, 1, 2, 0, 0 ] ), 
    Character( CharacterTable( "A6" ), [ 15, 3, 3, 0, 1, 0, 0 ] ), 
    Character( CharacterTable( "A6" ), [ 15, 3, 0, 3, 1, 0, 0 ] ) ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c), we first compute that for all nonidentity
elements $s \in S$ and involutions $g \in S$, $P(g,s) \geq 5/9$ holds, with equality if and only if $s$ has order $5$. We actually compute, for class representatives $s$, the proportion of involutions $g$ such that $\langle g, s \rangle {{\not=}} S$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@S:= AlternatingGroup( 6 );;|
  !gapprompt@gap>| !gapinput@inv:= (S.1*S.2)^2;|
  (1,3)(2,5)
  !gapprompt@gap>| !gapinput@cclreps:= List( ConjugacyClasses( S ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( cclreps, Order ), cclreps );|
  !gapprompt@gap>| !gapinput@List( cclreps, Order );|
  [ 1, 2, 3, 3, 4, 5, 5 ]
  !gapprompt@gap>| !gapinput@C:= ConjugacyClass( S, inv );;|
  !gapprompt@gap>| !gapinput@Size( C );|
  45
  !gapprompt@gap>| !gapinput@prop:= List( cclreps,|
  !gapprompt@>| !gapinput@                r -> RatioOfNongenerationTransPermGroup( S, inv, r ) );|
  [ 1, 1, 1, 1, 29/45, 5/9, 5/9 ]
  !gapprompt@gap>| !gapinput@Minimum( prop );|
  5/9
\end{Verbatim}
 

 Now statement{\nobreakspace}(c) follows from the fact that for $g \in S$ of order larger than two, ${{\sigma}}(S,g) \leq 1/2 < 5/9$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ApproxP( prim, 6 );|
  [ 0, 2/3, 1/2, 1/2, 0, 1/3, 1/3 ]
\end{Verbatim}
 

 Statement{\nobreakspace}(d) follows by explicit computations. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@triple:= [ (1,2)(3,4), (1,3)(2,4), (1,4)(2,3) ];;|
  !gapprompt@gap>| !gapinput@CommonGeneratorWithGivenElements( S, cclreps, triple );|
  fail
\end{Verbatim}
 

 An alternative triple to that in statement{\nobreakspace}(d) is the one given
in{\nobreakspace}\cite{BW1}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@triple:= [ (1,3)(2,4), (1,5)(2,6), (3,6)(4,5) ];;|
  !gapprompt@gap>| !gapinput@CommonGeneratorWithGivenElements( S, cclreps, triple );|
  fail
\end{Verbatim}
 

 Of course we can also construct such a triple, as follows. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@TripleWithProperty( [ [ inv ], C, C ],|
  !gapprompt@>| !gapinput@       l -> ForAll( S, elm ->|
  !gapprompt@>| !gapinput@  ForAny( l, x -> not IsGeneratorsOfTransPermGroup( S, [ elm, x ] ) ) ) );|
  [ (1,3)(2,5), (1,3)(2,6), (1,3)(2,4) ]
\end{Verbatim}
 

 For statement{\nobreakspace}(e), we use the random approach described in
Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=@|A,fontsize=\small,frame=single,label=Example]
  @gapprompt|gap>A @gapinput|s:= (1,2,3,4)(5,6);;A
  @gapprompt|gap>A @gapinput|reps:= Filtered( cclreps, x -> Order( x ) > 1 );;A
  @gapprompt|gap>A @gapinput|ResetGlobalRandomNumberGenerators();A
  @gapprompt|gap>A @gapinput|for pair in UnorderedTuples( reps, 2 ) doA
  @gapprompt|>A @gapinput|     if RandomCheckUniformSpread( S, pair, s, 40 ) <> true thenA
  @gapprompt|>A @gapinput|       Print( "#E  nongeneration!\n" );A
  @gapprompt|>A @gapinput|     fi;A
  @gapprompt|>A @gapinput|   od;A
\end{Verbatim}
 

 We get no output, so a suitable element of order $4$ works in all cases. Note that we cannot use an element of order $5$, because it fixes a point in the natural permutation representation, and we
may take $x_1 = (1,2,3)$ and $x_2 = (4,5,6)$. With this argument, only elements of order $4$ and double $3$-cycles are possible choices for $s$, and the latter are excluded by the fact that an outer automorphism maps the
class of double $s$-cycles in $A_6$ to the class of $3$-cycles. So no element in $A_6$ of order different from $4$ works. 

 Next we show statement{\nobreakspace}(f). Already in $A_6.2_1 = S_6$, elements $s$ of order $4$ do in general not work because they do not generate with transpositions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@G:= SymmetricGroup( 6 );;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( G, s, (1,2) );|
  1
\end{Verbatim}
 

 Also, choosing $s$ from a prescribed conjugacy class of $S_6$ (that is, also $s$ outside $A_6$ is allowed) with the property that $A_6 \subseteq \langle x, s \rangle \cap \langle y, s \rangle$ is not possible. Note that only $6$-cycles are possible for $s$ if $x$ and $y$ are commuting transpositions, and {\textendash}applying the outer
automorphism{\textendash} no $6$-cycle works for two commuting fixed-point free involutions. (The group is
small enough for a brute force test.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@goods:= Filtered( Elements( G ),|
  !gapprompt@>| !gapinput@     s -> IsGeneratorsOfTransPermGroup( G, [ s, (1,2) ] ) and|
  !gapprompt@>| !gapinput@          IsGeneratorsOfTransPermGroup( G, [ s, (3,4) ] ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( goods, CycleStructurePerm ) );|
  [ [ [ ,,,, 1 ], 24 ] ]
  !gapprompt@gap>| !gapinput@goods:= Filtered( Elements( G ),|
  !gapprompt@>| !gapinput@     s -> IsGeneratorsOfTransPermGroup( G, [ s, (1,2)(3,4)(5,6) ] ) and|
  !gapprompt@>| !gapinput@          IsGeneratorsOfTransPermGroup( G, [ s, (1,3)(2,4)(5,6) ] ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( goods, CycleStructurePerm ) );|
  [ [ [ 1, 1 ], 24 ] ]
\end{Verbatim}
 

 However, for each pair of nonidentity element $x$, $y \in S_6$, there is $s \in S_6$ such that $\langle x, s \rangle$ and $\langle y, s \rangle$ both contain $A_6$. (If $s$ works for the pair $(x,y)$ then $s^g$ works for $(x^g,y^g)$, so it is sufficient to consider only orbit representatives $(x,y)$ under the conjugation action of $G$ on pairs. Thus we check conjugacy class representatives $x$ and, for fixed $x$, representatives of orbits of $C_G(x)$ on the classes $y^G$, i.{\nobreakspace}e., representatives of $C_G(y)$-$C_G(x)$-double cosets in $G$. Moreover, clearly we can restrict the checks to elements $x$, $y$ of prime order.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Sgens:= GeneratorsOfGroup( S );;|
  !gapprompt@gap>| !gapinput@primord:= Filtered( List( ConjugacyClasses( G ), Representative ),|
  !gapprompt@>| !gapinput@                       x -> IsPrimeInt( Order( x ) ) );;|
  !gapprompt@gap>| !gapinput@for x in primord do|
  !gapprompt@>| !gapinput@     for y in primord do|
  !gapprompt@>| !gapinput@       for pair in DoubleCosetRepsAndSizes( G, Centralizer( G, y ),|
  !gapprompt@>| !gapinput@                       Centralizer( G, x ) ) do|
  !gapprompt@>| !gapinput@         if not ForAny( G, s -> IsSubset( Group( x,s ), S ) and |
  !gapprompt@>| !gapinput@                                IsSubset( Group( y^pair[1], s ), S ) ) then|
  !gapprompt@>| !gapinput@           Error( [ x, y ] );|
  !gapprompt@>| !gapinput@         fi;|
  !gapprompt@>| !gapinput@       od;|
  !gapprompt@>| !gapinput@     od;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 In other words, the spread of $S_6$ is $2$ but the uniform spread of $S_6$ is not $2$ but only $1$. 

 We cannot always find $s \in A_6$ with the required property: If $x$ is a transposition then any $s$ with $S \subseteq\langle x, s \rangle$ must be a $5$-cycle. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( S, s -> IsSubset( Group( (1,2), s ), S ) );;|
  !gapprompt@gap>| !gapinput@Collected( List( filt, Order ) );|
  [ [ 5, 48 ] ]
\end{Verbatim}
 

 Moreover, clearly such $s$ fixes one of the moved points of $x$, so we may prescribe a transposition $y {{\not=}} x$ that commutes with $x$, it satisfies $S \nsubseteq\langle y, s \rangle$. 

 For the other two automorphic extensions $A_6.2_2 = {{\rm PGL}}(2,9)$ and $A_6.2_3 = M_{10}$, we compute the character-theoretic bounds ${{\sigma}}(A_6.2_2) = 1/6$ and ${{\sigma}}(A_6.2_3) = 1/9$, which shows statement{\nobreakspace}(g). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( CharacterTable( "A6.2_2" ) );|
  [ "A6.2_2", 1/6, 5, [ "10A" ], [ 1 ] ]
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( CharacterTable( "A6.2_3" ) );|
  [ "A6.2_3", 1/9, 8, [ "8C" ], [ 1 ] ]
\end{Verbatim}
 

 Note that ${{\sigma}}^{\prime}( {{\rm PGL}}(2,9), s ) = 1/6$, with $s$ of order $5$, and ${{\sigma}}^{\prime}( M_{10}, s ) = 0$ for any $s \in A_6$ since $M_{10}$ is a non-split extension of $A_6$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "A6" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "A6.2_2" );;|
  !gapprompt@gap>| !gapinput@spos:= PositionsProperty( OrdersClassRepresentatives( t ), x -> x = 5 );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoAlmostSimple( t, t2, spos );|
  [ "A6.2_2", 1/6, [ "5A", "5B" ], [ 1, 1 ] ]
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$A_7$}}\label{A7}
\logpage{[ 11, 5, 4 ]}
\hyperdef{L}{X85B3C7217B105D4D}{}
{
  We show that $S = A_7$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 2/5$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $7$. 
\item[{(b)}]  For $s$ of order $7$, ${{\mathbb M}}(S,s)$ consists of two nonconjugate subgroups of the type $L_2(7)$. 
\item[{(c)}]  $P(S) = 2/5$, and this value is attained exactly for $P(S,s)$ with $s$ of order $7$. 
\item[{(d)}]  The uniform spread of $S$ is exactly three, with $s$ of order $7$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "A7" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "A7", 2/5, 2, [ "7A" ], [ 2 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the two classes of maximal subgroups that contain elements
of order $7$ consist of groups of the structure $L_2(7)$, see{\nobreakspace}\cite[p.{\nobreakspace}10]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 3, 3, 4, 5, 6, 7, 7 ]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );|
  [ Character( CharacterTable( "A7" ), [ 7, 3, 4, 1, 1, 2, 0, 0, 0 ] ), 
    Character( CharacterTable( "A7" ), [ 15, 3, 0, 3, 1, 0, 0, 1, 1 ] ),
    Character( CharacterTable( "A7" ), [ 15, 3, 0, 3, 1, 0, 0, 1, 1 ] ),
    Character( CharacterTable( "A7" ), [ 21, 5, 6, 0, 1, 1, 2, 0, 0 ] ),
    Character( CharacterTable( "A7" ), [ 35, 7, 5, 2, 1, 0, 1, 0, 0 ] ) 
   ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c), we compute that for all nonidentity elements $s \in S$ and involutions $g \in S$, $P(g,s) \geq 2/5$ holds, with equality if and only if $s$ has order $7$. We actually compute, for class representatives $s$, the proportion of involutions $g$ such that $\langle g, s \rangle {{\not=}} S$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= AlternatingGroup( 7 );;|
  !gapprompt@gap>| !gapinput@inv:= (g.1^3*g.2)^3;|
  (2,6)(3,7)
  !gapprompt@gap>| !gapinput@ccl:= List( ConjugacyClasses( g ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( ccl, Order ), ccl );|
  !gapprompt@gap>| !gapinput@List( ccl, Order );|
  [ 1, 2, 3, 3, 4, 5, 6, 7, 7 ]
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, inv ) );|
  105
  !gapprompt@gap>| !gapinput@prop:= List( ccl, r -> RatioOfNongenerationTransPermGroup( g, inv, r ) );|
  [ 1, 1, 1, 1, 89/105, 17/21, 19/35, 2/5, 2/5 ]
  !gapprompt@gap>| !gapinput@Minimum( prop );|
  2/5
\end{Verbatim}
 

 For statement{\nobreakspace}(d), we use the random approach described in
Section{\nobreakspace}\ref{subsect:groups}. By the character-theoretic bounds, it suffices to consider triples of
elements in the classes \texttt{2A} or \texttt{3B}. 

 
\begin{Verbatim}[commandchars=@|D,fontsize=\small,frame=single,label=Example]
  @gapprompt|gap>D @gapinput|OrdersClassRepresentatives( t );D
  [ 1, 2, 3, 3, 4, 5, 6, 7, 7 ]
  @gapprompt|gap>D @gapinput|spos:= Position( OrdersClassRepresentatives( t ), 7 );;D
  @gapprompt|gap>D @gapinput|SizesCentralizers( t );D
  [ 2520, 24, 36, 9, 4, 5, 12, 7, 7 ]
  @gapprompt|gap>D @gapinput|ApproxP( prim, spos );D
  [ 0, 2/5, 0, 2/5, 2/15, 0, 0, 2/15, 2/15 ]
  @gapprompt|gap>D @gapinput|s:= (1,2,3,4,5,6,7);;D
  @gapprompt|gap>D @gapinput|3B:= (1,2,3)(4,5,6);;D
  @gapprompt|gap>D @gapinput|C3B:= ConjugacyClass( g, 3B );;D
  @gapprompt|gap>D @gapinput|Size( C3B );D
  280
  @gapprompt|gap>D @gapinput|ResetGlobalRandomNumberGenerators();D
  @gapprompt|gap>D @gapinput|for triple in UnorderedTuples( [ inv, 3B ], 3 ) doD
  @gapprompt|>D @gapinput|     if RandomCheckUniformSpread( g, triple, s, 80 ) <> true thenD
  @gapprompt|>D @gapinput|       Print( "#E  nongeneration!\n" );D
  @gapprompt|>D @gapinput|     fi;D
  @gapprompt|>D @gapinput|   od;D
\end{Verbatim}
 

 We get no output, so the uniform spread of $S$ is at least three. 

 Alternatively, we can use the lemma from Section{\nobreakspace}\ref{sect:probgen-criteria}; this approach is technically more involved but faster. We work with the
diagonal product of the two degree $15$ representations of $S$, which is constructed from the information stored in the \textsf{GAP} Library of Tables of Marks. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "A7" );;|
  !gapprompt@gap>| !gapinput@a7:= UnderlyingGroup( tom );;|
  !gapprompt@gap>| !gapinput@tommaxes:= MaximalSubgroupsTom( tom );|
  [ [ 39, 38, 37, 36, 35 ], [ 7, 15, 15, 21, 35 ] ]
  !gapprompt@gap>| !gapinput@index15:= List( tommaxes[1]{ [ 2, 3 ] },|
  !gapprompt@>| !gapinput@                   i -> RepresentativeTom( tom, i ) );|
  [ Group([ (1,3)(2,7), (1,5,7)(3,4,6) ]), 
    Group([ (1,4)(2,3), (2,4,6)(3,5,7) ]) ]
  !gapprompt@gap>| !gapinput@deg15:= List( index15, s -> RightTransversal( a7, s ) );;|
  !gapprompt@gap>| !gapinput@reps:= List( deg15, l -> Action( a7, l, OnRight ) );|
  [ Group([ (1,5,7)(2,9,10)(3,11,4)(6,12,8)(13,14,15), (1,8,15,5,12)
        (2,13,11,3,10)(4,14,9,7,6) ]), 
    Group([ (1,2,3)(4,6,5)(7,8,9)(10,12,11)(13,15,14), (1,12,3,13,10)
        (2,9,15,4,11)(5,6,14,7,8) ]) ]
  !gapprompt@gap>| !gapinput@g:= DiagonalProductOfPermGroups( reps );;|
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 7;|
  !gapprompt@gap>| !gapinput@NrMovedPoints( s );|
  28
  !gapprompt@gap>| !gapinput@mpg:= MovedPoints( g );;|
  !gapprompt@gap>| !gapinput@fixs:= Difference( mpg, MovedPoints( s ) );;|
  !gapprompt@gap>| !gapinput@orb_s:= Orbit( g, fixs, OnSets );;|
  !gapprompt@gap>| !gapinput@Length( orb_s );|
  120
  !gapprompt@gap>| !gapinput@SizesCentralizers( t );|
  [ 2520, 24, 36, 9, 4, 5, 12, 7, 7 ]
  !gapprompt@gap>| !gapinput@repeat 2a:= Random( g ); until Order( 2a ) = 2;|
  !gapprompt@gap>| !gapinput@repeat 3b:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( 3b ) = 3 and Size( Centralizer( g, 3b ) ) = 9;|
  !gapprompt@gap>| !gapinput@orb2a:= Orbit( g, Difference( mpg, MovedPoints( 2a ) ), OnSets );;|
  !gapprompt@gap>| !gapinput@orb3b:= Orbit( g, Difference( mpg, MovedPoints( 3b ) ), OnSets );;|
  !gapprompt@gap>| !gapinput@orb2aor3b:= Union( orb2a, orb3b );;|
  !gapprompt@gap>| !gapinput@TripleWithProperty( [ [ orb2a[1], orb3b[1] ], orb2aor3b, orb2aor3b ],|
  !gapprompt@>| !gapinput@       l -> ForAll( orb_s,|
  !gapprompt@>| !gapinput@                f -> not IsEmpty( Intersection( Union( l ), f ) ) ) );|
  fail
\end{Verbatim}
 

 It remains to show that for any choice of $s \in S$, a quadruple of elements in $S^{\times}$ exists such that $s$ generates a proper subgroup of $S$ together with at least one of these elements. 

 First we observe (without using \textsf{GAP}) that there is a pair of $3$-cycles whose fixed points cover the seven points of the natural permutation
representation. This implies the statement for all elements $s \in S$ that fix a point in this representation. So it remains to consider elements $s$ of the orders six and seven. 

 For the order seven element, the above setup and the lemma from
Section{\nobreakspace}\ref{sect:probgen-criteria} can be used. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@QuadrupleWithProperty( [ [ orb2a[1] ], orb2a, orb2a, orb2a ],|
  !gapprompt@>| !gapinput@       l -> ForAll( orb_s,|
  !gapprompt@>| !gapinput@                f -> not IsEmpty( Intersection( Union( l ), f ) ) ) );|
  [ [ 2, 5, 12, 18, 19, 26 ], [ 7, 8, 9, 16, 21, 25 ], 
    [ 1, 6, 10, 17, 20, 27 ], [ 13, 14, 15, 28, 29, 30 ] ]
\end{Verbatim}
 

 For the order six element, we use the diagonal product of the primitive
permutation representations of the degrees $21$ and $35$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@has6A:= List( tommaxes[1]{ [ 4, 5 ] },|
  !gapprompt@>| !gapinput@                 i -> RepresentativeTom( tom, i ) );|
  [ Group([ (1,2)(3,7), (2,6,5,4)(3,7) ]), 
    Group([ (2,3)(5,7), (1,2)(4,5,6,7), (2,3)(5,6) ]) ]
  !gapprompt@gap>| !gapinput@trans:= List( has6A, s -> RightTransversal( a7, s ) );;|
  !gapprompt@gap>| !gapinput@reps:= List( trans, l -> Action( a7, l, OnRight ) );|
  [ Group([ (1,16,12)(2,17,13)(3,18,11)(4,19,14)(15,20,21), (1,4,7,9,10)
        (2,5,8,3,6)(11,12,15,14,13)(16,20,19,17,18) ]), 
    Group([ (2,16,6)(3,17,7)(4,18,8)(5,19,9)(10,20,26)(11,21,27)
        (12,22,28)(13,23,29)(14,24,30)(15,25,31), (1,2,3,4,5)
        (6,10,13,15,9)(7,11,14,8,12)(16,20,23,25,19)(17,21,24,18,22)
        (26,32,35,31,28)(27,33,29,34,30) ]) ]
  !gapprompt@gap>| !gapinput@g:= DiagonalProductOfPermGroups( reps );;|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 6;|
  !gapprompt@gap>| !gapinput@NrMovedPoints( s );|
  53
  !gapprompt@gap>| !gapinput@mpg:= MovedPoints( g );;|
  !gapprompt@gap>| !gapinput@fixs:= Difference( mpg, MovedPoints( s ) );;|
  !gapprompt@gap>| !gapinput@orb_s:= Orbit( g, fixs, OnSets );;|
  !gapprompt@gap>| !gapinput@Length( orb_s );|
  105
  !gapprompt@gap>| !gapinput@repeat 3a:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( 3a ) = 3 and Size( Centralizer( g, 3a ) ) = 36;|
  !gapprompt@gap>| !gapinput@orb3a:= Orbit( g, Difference( mpg, MovedPoints( 3a ) ), OnSets );;|
  !gapprompt@gap>| !gapinput@Length( orb3a );|
  35
  !gapprompt@gap>| !gapinput@TripleWithProperty( [ [ orb3a[1] ], orb3a, orb3a ],|
  !gapprompt@>| !gapinput@       l -> ForAll( orb_s,|
  !gapprompt@>| !gapinput@                f -> not IsEmpty( Intersection( Union( l ), f ) ) ) );|
  [ [ 1, 4, 6, 12, 14, 15, 34, 37, 40, 43, 49 ], 
    [ 1, 4, 6, 16, 19, 20, 27, 30, 33, 44, 49 ], 
    [ 2, 3, 4, 5, 7, 9, 26, 47, 48, 50, 53 ] ]
\end{Verbatim}
 

 So we have found not only a quadruple but even a triple of $3$-cycles that excludes candidates $s$ of order six. }

  
\subsection{\textcolor{Chapter }{$L_d(q)$}}\label{SL}
\logpage{[ 11, 5, 5 ]}
\hyperdef{L}{X84EA645A82E2BAFB}{}
{
  In the treatment of small dimensional linear groups $S = {{\rm SL}}(d,q)$, \cite{BGK} uses a Singer element $s$ of order $(q^d-1)/(q-1)$. (So the order of the corresponding element in ${{\rm PSL}}(d,q) = (q^d-1)/[(q-1) \gcd(d,q-1)]$.) By{\nobreakspace}\cite{Be00}, ${{\mathbb M}}(S,s)$ consists of extension field type subgroups, except in the cases $d = 2$, $q \in \{ 2, 5, 7, 9 \}$, and $(d,q) = (3,4)$. These subgroups have the structure ${{\rm GL}}(d/p,q^p):\alpha_q \cap S$, for prime divisors $p$ of $d$, where $\alpha_q$ denotes the Frobenius automorphism that acts on matrices by raising each entry
to the $q$-th power. (If $q$ is a prime then we have ${{\rm GL}}(d/p,q^p):\alpha_q = {{\rm \hbox{$\Gamma$}L}}(d/p,q^p)$.) Since $s$ acts irreducibly, it is contained in at most one conjugate of each class of
extension field type subgroups (cf.{\nobreakspace}\cite[Lemma{\nobreakspace}2.12]{BGK}). 

 First we write a \textsf{GAP} function \texttt{RelativeSigmaL} that takes a positive integer $d$ and a basis $B$ of the field extension of degree $n$ over the field with $q$ elements, and returns the group ${{\rm GL}}(d,q^n):\alpha_q$, as a subgroup of ${{\rm GL}}(dn,q)$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@RelativeSigmaL:= function( d, B )|
  !gapprompt@>| !gapinput@    local n, F, q, glgens, diag, pi, frob, i;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    n:= Length( B );|
  !gapprompt@>| !gapinput@    F:= LeftActingDomain( UnderlyingLeftModule( B ) );|
  !gapprompt@>| !gapinput@    q:= Size( F );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the generating matrices inside the linear subgroup.|
  !gapprompt@>| !gapinput@    glgens:= List( GeneratorsOfGroup( SL( d, q^n ) ),|
  !gapprompt@>| !gapinput@                   m -> BlownUpMat( B, m ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the matrix of a diagonal part that maps to determinant 1.|
  !gapprompt@>| !gapinput@    diag:= IdentityMat( d*n, F );|
  !gapprompt@>| !gapinput@    diag{ [ 1 .. n ] }{ [ 1 .. n ] }:= BlownUpMat( B, [ [ Z(q^n)^(q-1) ] ] );|
  !gapprompt@>| !gapinput@    Add( glgens, diag );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the matrix that realizes the Frobenius action,|
  !gapprompt@>| !gapinput@    # and adjust the determinant.|
  !gapprompt@>| !gapinput@    pi:= List( B, b -> Coefficients( B, b^q ) );|
  !gapprompt@>| !gapinput@    frob:= NullMat( d*n, d*n, F );|
  !gapprompt@>| !gapinput@    for i in [ 0 .. d-1 ] do|
  !gapprompt@>| !gapinput@      frob{ [ 1 .. n ] + i*n }{ [ 1 .. n ] + i*n }:= pi;|
  !gapprompt@>| !gapinput@    od;|
  !gapprompt@>| !gapinput@    diag:= IdentityMat( d*n, F );|
  !gapprompt@>| !gapinput@    diag{ [ 1 .. n ] }{ [ 1 .. n ] }:= BlownUpMat( B, [ [ Z(q^n) ] ] );|
  !gapprompt@>| !gapinput@    diag:= diag^LogFFE( Inverse( Determinant( frob ) ), Determinant( diag ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Return the result.|
  !gapprompt@>| !gapinput@    return Group( Concatenation( glgens, [ diag * frob ] ) );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 The next function computes ${{\sigma}}({{\rm SL}}(d,q),s)$, by computing the sum of ${{\mu}}(g,S/({{\rm GL}}(d/p,q^p):\alpha_q \cap S))$, for prime divisors $p$ of $d$, and taking the maximum over $g \in S^{\times}$. The computations take place in a permutation representation of ${{\rm PSL}}(d,q)$. 

      
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ApproxPForSL:= function( d, q )|
  !gapprompt@>| !gapinput@    local G, epi, PG, primes, maxes, names, ccl;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Check whether this is an admissible case (see [Be00]).|
  !gapprompt@>| !gapinput@    if ( d = 2 and q in [ 2, 5, 7, 9 ] ) or ( d = 3 and q = 4 ) then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the group SL(d,q), and the map to PSL(d,q).|
  !gapprompt@>| !gapinput@    G:= SL( d, q );|
  !gapprompt@>| !gapinput@    epi:= ActionHomomorphism( G, NormedRowVectors( GF(q)^d ), OnLines );|
  !gapprompt@>| !gapinput@    PG:= ImagesSource( epi );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the subgroups corresponding to the prime divisors of `d'.|
  !gapprompt@>| !gapinput@    primes:= PrimeDivisors( d );|
  !gapprompt@>| !gapinput@    maxes:= List( primes, p -> RelativeSigmaL( d/p,|
  !gapprompt@>| !gapinput@                                 Basis( AsField( GF(q), GF(q^p) ) ) ) );|
  !gapprompt@>| !gapinput@    names:= List( primes, p -> Concatenation( "GL(", String( d/p ), ",",|
  !gapprompt@>| !gapinput@                                 String( q^p ), ").", String( p ) ) );|
  !gapprompt@>| !gapinput@    if 2 < q then|
  !gapprompt@>| !gapinput@      names:= List( names, name -> Concatenation( name, " cap G" ) );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Compute the conjugacy classes of prime order elements in the maxes.|
  !gapprompt@>| !gapinput@    # (In order to avoid computing all conjugacy classes of these subgroups,|
  !gapprompt@>| !gapinput@    # we work in Sylow subgroups.)|
  !gapprompt@>| !gapinput@    ccl:= List( List( maxes, x -> ImagesSet( epi, x ) ),|
  !gapprompt@>| !gapinput@            M -> ClassesOfPrimeOrder( M, PrimeDivisors( Size( M ) ),|
  !gapprompt@>| !gapinput@                                      TrivialSubgroup( M ) ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return [ names, UpperBoundFixedPointRatios( PG, ccl, true )[1] ];|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

  We apply this function to the cases that are interesting in{\nobreakspace}\cite[Section{\nobreakspace}5.12]{BGK}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pairs:= [ [ 3, 2 ], [ 3, 3 ], [ 4, 2 ], [ 4, 3 ], [ 4, 4 ],|
  !gapprompt@>| !gapinput@           [ 6, 2 ], [ 6, 3 ], [ 6, 4 ], [ 6, 5 ], [ 8, 2 ], [ 10, 2 ] ];;|
  !gapprompt@gap>| !gapinput@array:= [];;|
  !gapprompt@gap>| !gapinput@for pair in pairs do|
  !gapprompt@>| !gapinput@     d:= pair[1];  q:= pair[2];|
  !gapprompt@>| !gapinput@     approx:= ApproxPForSL( d, q );|
  !gapprompt@>| !gapinput@     Add( array, [ Concatenation( "SL(", String(d), ",", String(q), ")" ),|
  !gapprompt@>| !gapinput@                   (q^d-1)/(q-1),|
  !gapprompt@>| !gapinput@                   approx[1], approx[2] ] );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@oldsize:= SizeScreen();;|
  !gapprompt@gap>| !gapinput@SizeScreen( [ 80 ] );;|
  !gapprompt@gap>| !gapinput@PrintFormattedArray( array );|
     SL(3,2)    7                             [ "GL(1,8).3" ]             1/4
     SL(3,3)   13                      [ "GL(1,27).3 cap G" ]            1/24
     SL(4,2)   15                             [ "GL(2,4).2" ]            3/14
     SL(4,3)   40                       [ "GL(2,9).2 cap G" ]         53/1053
     SL(4,4)   85                      [ "GL(2,16).2 cap G" ]           1/108
     SL(6,2)   63                [ "GL(3,4).2", "GL(2,8).3" ]       365/55552
     SL(6,3)  364   [ "GL(3,9).2 cap G", "GL(2,27).3 cap G" ] 22843/123845436
     SL(6,4) 1365  [ "GL(3,16).2 cap G", "GL(2,64).3 cap G" ]         1/85932
     SL(6,5) 3906 [ "GL(3,25).2 cap G", "GL(2,125).3 cap G" ]        1/484220
     SL(8,2)  255                             [ "GL(4,4).2" ]          1/7874
    SL(10,2) 1023               [ "GL(5,4).2", "GL(2,32).5" ]        1/129794
  !gapprompt@gap>| !gapinput@SizeScreen( oldsize );;|
\end{Verbatim}
   

 The only missing case for{\nobreakspace}\cite{BGK} is $S = L_3(4)$, for which ${{\mathbb M}}(S,s)$ consists of three groups of the type $L_3(2)$ (see{\nobreakspace}\cite[p.{\nobreakspace}23]{CCN85}). The group $L_3(4)$ has been considered already in Section{\nobreakspace}\ref{easyloop}, where ${{\sigma}}(S,s) = 1/5$ has been proved. Also the cases ${{\rm SL}}(3,3)$, ${{\rm SL}}(4,2) \cong A_8$, and ${{\rm SL}}(4,3)$ have been handled there. 

 An alternative character-theoretic proof for $S = L_6(2)$ looks as follows. In this case, the subgroups in ${{\mathbb M}}(S,s)$ have the types ${{\rm \hbox{$\Gamma$}L}}(3,4) \cong {{\rm GL}}(3,4).2 \cong 3.L_3(4).3.2_2$ and ${{\rm \hbox{$\Gamma$}L}}(2,8) \cong {{\rm GL}}(2,8).3 \cong (7 \times L_2(8)).3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "L6(2)" );;|
  !gapprompt@gap>| !gapinput@s1:= CharacterTable( "3.L3(4).3.2_2" );;|
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "(7xL2(8)).3" );;|
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( t, "63A", [ s1, s2 ], [ 1, 1 ] );|
  365/55552
\end{Verbatim}
     }

  
\subsection{\textcolor{Chapter }{$\ast${\nobreakspace}$L_d(q)$ with prime $d$}}\label{subsect:Ldq-with-prime-d}
\logpage{[ 11, 5, 6 ]}
\hyperdef{L}{X855460BE787188B9}{}
{
  For $S = {{\rm SL}}(d,q)$ with \emph{prime} dimension $d$, and $s \in S$ a Singer cycle, we have ${{\mathbb M}}(S,s) = \{ M \}$, where $M = N_S(\langle s \rangle) \cong {{\rm \hbox{$\Gamma$}L}}(1,q^d) \cap S$. So 
\[ {{\sigma}}(g,s) = {{\mu}}(g,S/M) = |g^S \cap M|/|g^S| < |M|/|g^S| \leq (q^d-1) \cdot d/|g^S| \]
 holds for any $g \in S \setminus Z(S)$, which implies ${{\sigma}}( S, s ) < \max\{ (q^d-1) \cdot d/|g^S|; g \in S \setminus Z(S) \}$. The right hand side of this inequality is returned by the following
function. In{\nobreakspace}\cite[Lemma{\nobreakspace}3.8]{BGK}, the global upper bound $1/q^d$ is derived for primes $d \geq 5$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@UpperBoundForSL:= function( d, q )|
  !gapprompt@>| !gapinput@    local G, Msize, ccl;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    if not IsPrimeInt( d ) then|
  !gapprompt@>| !gapinput@      Error( "<d> must be a prime" );|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    G:= SL( d, q );|
  !gapprompt@>| !gapinput@    Msize:= (q^d-1) * d;|
  !gapprompt@>| !gapinput@    ccl:= Filtered( ConjugacyClasses( G ),|
  !gapprompt@>| !gapinput@                    c ->     Msize mod Order( Representative( c ) ) = 0|
  !gapprompt@>| !gapinput@                         and Size( c ) <> 1 );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return Msize / Minimum( List( ccl, Size ) );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 The interesting values are $(d,q)$ with $d \in \{ 5, 7, 11 \}$ and $q \in \{ 2, 3, 4 \}$, and perhaps also $(d,q) \in \{ (3,2), (3,3) \}$. (Here we exclude ${{\rm SL}}(11,4)$ because writing down the conjugacy classes of this group would exceed the
permitted memory.)  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@NrConjugacyClasses( SL(11,4) );|
  1397660
  !gapprompt@gap>| !gapinput@pairs:= [ [ 3, 2 ], [ 3, 3 ], [ 5, 2 ], [ 5, 3 ], [ 5, 4 ],|
  !gapprompt@>| !gapinput@             [ 7, 2 ], [ 7, 3 ], [ 7, 4 ],|
  !gapprompt@>| !gapinput@             [ 11, 2 ], [ 11, 3 ] ];;|
  !gapprompt@gap>| !gapinput@array:= [];;|
  !gapprompt@gap>| !gapinput@for pair in pairs do|
  !gapprompt@>| !gapinput@     d:= pair[1];  q:= pair[2];|
  !gapprompt@>| !gapinput@     approx:= UpperBoundForSL( d, q );|
  !gapprompt@>| !gapinput@     Add( array, [ Concatenation( "SL(", String(d), ",", String(q), ")" ),|
  !gapprompt@>| !gapinput@                   (q^d-1)/(q-1),|
  !gapprompt@>| !gapinput@                   approx ] );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@PrintFormattedArray( array );|
     SL(3,2)     7                                   7/8
     SL(3,3)    13                                   3/4
     SL(5,2)    31                              31/64512
     SL(5,3)   121                                 10/81
     SL(5,4)   341                                15/256
     SL(7,2)   127                             7/9142272
     SL(7,3)  1093                                14/729
     SL(7,4)  5461                               21/4096
    SL(11,2)  2047 2047/34112245508649716682268134604800
    SL(11,3) 88573                              22/59049
\end{Verbatim}
 

 The exact values are clearly better than the above bounds. We compute them for $L_5(2)$ and $L_7(2)$. In the latter case, the class fusion of the $127:7$ type subgroup $M$ is not uniquely determined by the character tables; here we use the additional
information that the elements of order $7$ in $M$ have centralizer order $49$ in $L_7(2)$.  (See Section{\nobreakspace}\ref{easyloop} for the examples with $d = 3$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( CharacterTable( "L5(2)" ), "31A",|
  !gapprompt@>| !gapinput@       [ CharacterTable( "31:5" ) ], [ 1 ] );|
  1/5376
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "L7(2)" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "P:Q", [ 127, 7 ] );;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s, t );;|
  !gapprompt@gap>| !gapinput@Length( pi );|
  2
  !gapprompt@gap>| !gapinput@ord7:= PositionsProperty( OrdersClassRepresentatives( t ), x -> x = 7 );|
  [ 38, 45, 76, 77, 83 ]
  !gapprompt@gap>| !gapinput@sizes:= SizesCentralizers( t ){ ord7 };|
  [ 141120, 141120, 3528, 3528, 49 ]
  !gapprompt@gap>| !gapinput@List( pi, x -> x[83] );|
  [ 42, 0 ]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 127 );;|
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( pi{ [ 1 ] }, spos ) );|
  1/4388290560
\end{Verbatim}
   }

  
\subsection{\textcolor{Chapter }{Automorphic Extensions of $L_d(q)$}}\label{SLaut}
\logpage{[ 11, 5, 7 ]}
\hyperdef{L}{X7EA88CEF81962F3F}{}
{
  For the following values of $d$ and $q$, automorphic extensions $G$ of $L_d(q)$ had to be checked for{\nobreakspace}\cite[Section{\nobreakspace}5.12]{BGK}. 
\[ (d,q) \in \{ (3,4), (6,2), (6,3), (6,4), (6,5), (10,2) \} \]
 The first case has been treated in Section{\nobreakspace}\ref{easyloopaut}. For the other cases, we compute ${{\sigma}}^{\prime}(G,s)$ below. 

 In any case, the extension by a \emph{graph} automorphism occurs, which can be described by mapping each matrix in ${{\rm SL}}(d,q)$ to its inverse transpose. If $q > 2$, also extensions by \emph{diagonal} automorphisms occur, which are induced by conjugation with elements in ${{\rm GL}}(d,q)$. If $q$ is nonprime then also extensions by \emph{field} automorphisms occur, which can be described by powering the matrix entries by
roots of $q$. Finally, products (of prime order) of these three kinds of automorphisms
have to be considered. 

 We start with the extension $G$ of $S = {{\rm SL}}(d,q)$ by a graph automorphism. $G$ can be embedded into ${{\rm GL}}(2d,q)$ by representing the matrix $A \in S$ as a block diagonal matrix with diagonal blocks equal to $A$ and $A^{-tr}$, and representing the graph automorphism by a permutation matrix that
interchanges the two blocks. In order to construct the field extension type
subgroups of $G$, we have to choose the basis of the field extension in such a way that the
subgroup is normalized by the permutation matrix; a sufficient condition is
that the matrices of the ${{\mathbb F}}_q$-linear mappings induced by the basis elements are symmetric. 

 (We do not give a function that computes a basis with this property from the
parameters $d$ and $q$. Instead, we only write down the bases that we will need.) 

  
\begin{Verbatim}[commandchars=@|D,fontsize=\small,frame=single,label=Example]
  @gapprompt|gap>D @gapinput|SymmetricBasis:= function( q, n )D
  @gapprompt|>D @gapinput|    local vectors, B, issymmetric;D
  @gapprompt|>D @gapinput|D
  @gapprompt|>D @gapinput|    if   q = 2 and n = 2 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(2)^0, Z(2^2) ];D
  @gapprompt|>D @gapinput|    elif q = 2 and n = 3 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(2)^0, Z(2^3), Z(2^3)^5 ];D
  @gapprompt|>D @gapinput|    elif q = 2 and n = 5 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(2)^0, Z(2^5), Z(2^5)^4, Z(2^5)^25, Z(2^5)^26 ];D
  @gapprompt|>D @gapinput|    elif q = 3 and n = 2 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(3)^0, Z(3^2) ];D
  @gapprompt|>D @gapinput|    elif q = 3 and n = 3 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(3)^0, Z(3^3)^2, Z(3^3)^7 ];D
  @gapprompt|>D @gapinput|    elif q = 4 and n = 2 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(2)^0, Z(2^4)^3 ];D
  @gapprompt|>D @gapinput|    elif q = 4 and n = 3 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(2)^0, Z(2^3), Z(2^3)^5 ];D
  @gapprompt|>D @gapinput|    elif q = 5 and n = 2 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(5)^0, Z(5^2)^2 ];D
  @gapprompt|>D @gapinput|    elif q = 5 and n = 3 thenD
  @gapprompt|>D @gapinput|      vectors:= [ Z(5)^0, Z(5^3)^9, Z(5^3)^27 ];D
  @gapprompt|>D @gapinput|    elseD
  @gapprompt|>D @gapinput|      Error( "sorry, no basis for <q> and <n> stored" );D
  @gapprompt|>D @gapinput|    fi;D
  @gapprompt|>D @gapinput|D
  @gapprompt|>D @gapinput|    B:= Basis( AsField( GF(q), GF(q^n) ), vectors );D
  @gapprompt|>D @gapinput|D
  @gapprompt|>D @gapinput|    # Check that the basis really has the required property.D
  @gapprompt|>D @gapinput|    issymmetric:= M -> M = TransposedMat( M );D
  @gapprompt|>D @gapinput|    if not ForAll( B, b -> issymmetric( BlownUpMat( B, [ [ b ] ] ) ) ) thenD
  @gapprompt|>D @gapinput|      Error( "wrong basis!" );D
  @gapprompt|>D @gapinput|    fi;D
  @gapprompt|>D @gapinput|D
  @gapprompt|>D @gapinput|    # Return the result.D
  @gapprompt|>D @gapinput|    return B;D
  @gapprompt|>D @gapinput|end;;D
\end{Verbatim}
 

  In later examples, we will need similar embeddings of matrices. Therefore, we
provide a more general function \texttt{EmbeddedMatrix} that takes a field \texttt{F}, a matrix \texttt{mat}, and a function \texttt{func}, and returns a block diagonal matrix over \texttt{F} whose diagonal blocks are \texttt{mat} and \texttt{func( mat )}. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@BindGlobal( "EmbeddedMatrix", function( F, mat, func )|
  !gapprompt@>| !gapinput@  local d, result;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  d:= Length( mat );|
  !gapprompt@>| !gapinput@  result:= NullMat( 2*d, 2*d, F );|
  !gapprompt@>| !gapinput@  result{ [ 1 .. d ] }{ [ 1 .. d ] }:= mat;|
  !gapprompt@>| !gapinput@  result{ [ d+1 .. 2*d ] }{ [ d+1 .. 2*d ] }:= func( mat );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@  return result;|
  !gapprompt@>| !gapinput@end );|
\end{Verbatim}
 

 The following function is similar to \texttt{ApproxPForSL}, the differences are that the group $G$ in question is not ${{\rm SL}}(d,q)$ but the extension of this group by a graph automorphism, and that ${{\sigma}}^{\prime}(G,s)$ is computed not ${{\sigma}}(G,s)$. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut:= function( d, q )|
  !gapprompt@>| !gapinput@    local embedG, swap, G, orb, epi, PG, Gprime, primes, maxes, ccl, names;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Check whether this is an admissible case (see [Be00],|
  !gapprompt@>| !gapinput@    # note that a graph automorphism exists only for `d > 2').|
  !gapprompt@>| !gapinput@    if d = 2 or ( d = 3 and q = 4 ) then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Provide a function that constructs a block diagonal matrix.|
  !gapprompt@>| !gapinput@    embedG:= mat -> EmbeddedMatrix( GF( q ), mat,|
  !gapprompt@>| !gapinput@                                    M -> TransposedMat( M^-1 ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the matrix that exchanges the two blocks.|
  !gapprompt@>| !gapinput@    swap:= NullMat( 2*d, 2*d, GF(q) );|
  !gapprompt@>| !gapinput@    swap{ [ 1 .. d ] }{ [ d+1 .. 2*d ] }:= IdentityMat( d, GF(q) );|
  !gapprompt@>| !gapinput@    swap{ [ d+1 .. 2*d ] }{ [ 1 .. d ] }:= IdentityMat( d, GF(q) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the group SL(d,q).2, and the map to the projective group.|
  !gapprompt@>| !gapinput@    G:= ClosureGroupDefault( Group( List( GeneratorsOfGroup( SL( d, q ) ),|
  !gapprompt@>| !gapinput@                                          embedG ) ),|
  !gapprompt@>| !gapinput@                      swap );|
  !gapprompt@>| !gapinput@    orb:= Orbit( G, One( G )[1], OnLines );|
  !gapprompt@>| !gapinput@    epi:= ActionHomomorphism( G, orb, OnLines );|
  !gapprompt@>| !gapinput@    PG:= ImagesSource( epi );|
  !gapprompt@>| !gapinput@    Gprime:= DerivedSubgroup( PG );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the subgroups corresponding to the prime divisors of `d'.|
  !gapprompt@>| !gapinput@    primes:= PrimeDivisors( d );|
  !gapprompt@>| !gapinput@    maxes:= List( primes,|
  !gapprompt@>| !gapinput@              p -> ClosureGroupDefault( Group( List( GeneratorsOfGroup(|
  !gapprompt@>| !gapinput@                         RelativeSigmaL( d/p, SymmetricBasis( q, p ) ) ),|
  !gapprompt@>| !gapinput@                         embedG ) ),|
  !gapprompt@>| !gapinput@                     swap ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Compute conjugacy classes of outer involutions in the maxes.|
  !gapprompt@>| !gapinput@    # (In order to avoid computing all conjugacy classes of these subgroups,|
  !gapprompt@>| !gapinput@    # we work in the Sylow $2$ subgroups.)|
  !gapprompt@>| !gapinput@    maxes:= List( maxes, M -> ImagesSet( epi, M ) );|
  !gapprompt@>| !gapinput@    ccl:= List( maxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );|
  !gapprompt@>| !gapinput@    names:= List( primes, p -> Concatenation( "GL(", String( d/p ), ",",|
  !gapprompt@>| !gapinput@                                   String( q^p ), ").", String( p ) ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return [ names, UpperBoundFixedPointRatios( PG, ccl, true )[1] ];|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 And these are the results for the groups we are interested in (and others). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 4, 3 );|
  [ [ "GL(2,9).2" ], 17/117 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 4, 4 );|
  [ [ "GL(2,16).2" ], 73/1008 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 6, 2 );|
  [ [ "GL(3,4).2", "GL(2,8).3" ], 41/1984 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 6, 3 );|
  [ [ "GL(3,9).2", "GL(2,27).3" ], 541/352836 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 6, 4 );|
  [ [ "GL(3,16).2", "GL(2,64).3" ], 3265/12570624 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 6, 5 );|
  [ [ "GL(3,25).2", "GL(2,125).3" ], 13001/195250000 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 8, 2 );|
  [ [ "GL(4,4).2" ], 367/1007872 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInExtensionOfSLByGraphAut( 10, 2 );|
  [ [ "GL(5,4).2", "GL(2,32).5" ], 609281/476346056704 ]
\end{Verbatim}
 

 Now we consider diagonal automorphisms. We modify the approach for ${{\rm SL}}(d,q)$ by constructing the field extension type subgroups of ${{\rm GL}}(d,q) \ldots$ 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@RelativeGammaL:= function( d, B )|
  !gapprompt@>| !gapinput@    local n, F, q, diag;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    n:= Length( B );|
  !gapprompt@>| !gapinput@    F:= LeftActingDomain( UnderlyingLeftModule( B ) );|
  !gapprompt@>| !gapinput@    q:= Size( F );|
  !gapprompt@>| !gapinput@    diag:= IdentityMat( d * n, F );|
  !gapprompt@>| !gapinput@    diag{[ 1 .. n ]}{[ 1 .. n ]}:= BlownUpMat( B, [ [ Z(q^n) ] ] );|
  !gapprompt@>| !gapinput@    return ClosureGroup( RelativeSigmaL( d, B ),  diag );|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 $\ldots$ and counting the elements of prime order outside the simple group. 

  
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInGL:= function( d, q )|
  !gapprompt@>| !gapinput@    local G, epi, PG, Gprime, primes, maxes, names;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Check whether this is an admissible case (see [Be00]).|
  !gapprompt@>| !gapinput@    if ( d = 2 and q in [ 2, 5, 7, 9 ] ) or ( d = 3 and q = 4 ) then|
  !gapprompt@>| !gapinput@      return fail;|
  !gapprompt@>| !gapinput@    fi;|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the group GL(d,q), and the map to PGL(d,q).|
  !gapprompt@>| !gapinput@    G:= GL( d, q );|
  !gapprompt@>| !gapinput@    epi:= ActionHomomorphism( G, NormedRowVectors( GF(q)^d ), OnLines );|
  !gapprompt@>| !gapinput@    PG:= ImagesSource( epi );|
  !gapprompt@>| !gapinput@    Gprime:= ImagesSet( epi, SL( d, q ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    # Create the subgroups corresponding to the prime divisors of `d'.|
  !gapprompt@>| !gapinput@    primes:= PrimeDivisors( d );|
  !gapprompt@>| !gapinput@    maxes:= List( primes, p -> RelativeGammaL( d/p,|
  !gapprompt@>| !gapinput@                                   Basis( AsField( GF(q), GF(q^p) ) ) ) );|
  !gapprompt@>| !gapinput@    maxes:= List( maxes, M -> ImagesSet( epi, M ) );|
  !gapprompt@>| !gapinput@    names:= List( primes, p -> Concatenation( "M(", String( d/p ), ",",|
  !gapprompt@>| !gapinput@                                   String( q^p ), ")" ) );|
  !gapprompt@>| !gapinput@|
  !gapprompt@>| !gapinput@    return [ names,|
  !gapprompt@>| !gapinput@             UpperBoundFixedPointRatios( PG, List( maxes,|
  !gapprompt@>| !gapinput@                 M -> ClassesOfPrimeOrder( M,|
  !gapprompt@>| !gapinput@                          PrimeDivisors( Index( PG, Gprime ) ), Gprime ) ),|
  !gapprompt@>| !gapinput@                 true )[1] ];|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 Here are the required results. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInGL( 6, 3 );|
  [ [ "M(3,9)", "M(2,27)" ], 41/882090 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInGL( 4, 3 );|
  [ [ "M(2,9)" ], 0 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInGL( 6, 4 );|
  [ [ "M(3,16)", "M(2,64)" ], 1/87296 ]
  !gapprompt@gap>| !gapinput@ApproxPForOuterClassesInGL( 6, 5 );|
  [ [ "M(3,25)", "M(2,125)" ], 821563/756593750000 ]
\end{Verbatim}
 

 (Note that the extension field type subgroup in ${{\rm PGL}}(4,3) = L_4(3).2_1$ is a \emph{non-split} extension of its intersection with $L_4(3)$, hence the zero value.) 

                     

 Concerning extensions by Frobenius automorphisms, only the case $(d,q) = (6,4)$ is interesting in{\nobreakspace}\cite{BGK}. In fact, we would not need to compute anything for the extension $G$ of $S = {{\rm SL}}(6,4)$ by the Frobenius map that squares each matrix entry. This is because ${{\mathbb M}}^{\prime}(G,s)$ consists of the normalizers of the two subgroups of the types ${{\rm SL}}(3,16)$ and ${{\rm SL}}(2,64)$, and the former maximal subgroup is a \emph{non-split} extension of its intersection with $S$,        so only one maximal subgroup can contribute to ${{\sigma}}^{\prime}(G,s)$, which is thus smaller than $1/2$, by{\nobreakspace}\cite[Prop.{\nobreakspace}2.6]{BGK}. 

 However, it is easy enough to compute the exact value of ${{\sigma}}^{\prime}(G,s)$. We work with the projective action of $S$ on its natural module, and compute the permutation induced by the Frobenius
map as the Frobenius action on the normed row vectors. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@matgrp:= SL(6,4);;|
  !gapprompt@gap>| !gapinput@dom:= NormedRowVectors( GF(4)^6 );;|
  !gapprompt@gap>| !gapinput@Gprime:= Action( matgrp, dom, OnLines );;|
  !gapprompt@gap>| !gapinput@pi:= PermList( List( dom, v -> Position( dom, List( v, x -> x^2 ) ) ) );;|
  !gapprompt@gap>| !gapinput@G:= ClosureGroup( Gprime, pi );;|
\end{Verbatim}
 

 Then we compute the maximal subgroups, the classes of outer involutions, and
the bound, similar to the situation with graph automorphisms.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxes:= List( [ 2, 3 ], p -> Normalizer( G,|
  !gapprompt@>| !gapinput@             Action( RelativeSigmaL( 6/p,|
  !gapprompt@>| !gapinput@               Basis( AsField( GF(4), GF(4^p) ) ) ), dom, OnLines ) ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( maxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, Length );|
  [ 0, 1 ]
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, ccl, true );|
  [ 1/34467840, true ]
\end{Verbatim}
 

 For $(d,q) = (6,4)$, we have to consider also the extension $G$ of $S = {{\rm SL}}(6,4)$ by the product $\alpha$ of the Frobenius map and the graph automorphism. We use the same approach as
for the graph automorphism, i.{\nobreakspace}e., we embed ${{\rm SL}}(6,4)$ into a $12$-dimensional group of $6 \times 6$ block matrices, where the second block is the image of the first block under $\alpha$, and describe $\alpha$ by the transposition of the two blocks. 

 First we construct the projective actions of $S$ and $G$ on an orbit of $1$-spaces. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@embedFG:= function( F, mat )|
  !gapprompt@>| !gapinput@     return EmbeddedMatrix( F, mat,|
  !gapprompt@>| !gapinput@                M -> List( TransposedMat( M^-1 ),|
  !gapprompt@>| !gapinput@                           row -> List( row, x -> x^2 ) ) );|
  !gapprompt@>| !gapinput@   end;;|
  !gapprompt@gap>| !gapinput@d:= 6;;  q:= 4;;|
  !gapprompt@gap>| !gapinput@alpha:= NullMat( 2*d, 2*d, GF(q) );;|
  !gapprompt@gap>| !gapinput@alpha{ [ 1 .. d ] }{ [ d+1 .. 2*d ] }:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@alpha{ [ d+1 .. 2*d ] }{ [ 1 .. d ] }:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@Gprime:= Group( List( GeneratorsOfGroup( SL(d,q) ),|
  !gapprompt@>| !gapinput@                         mat -> embedFG( GF(q), mat ) ) );;|
  !gapprompt@gap>| !gapinput@G:= ClosureGroupDefault( Gprime, alpha );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( G, One( G )[1], OnLines );;|
  !gapprompt@gap>| !gapinput@G:= Action( G, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@Gprime:= Action( Gprime, orb, OnLines );;|
\end{Verbatim}
 

 Next we construct the maximal subgroups, the classes of outer involutions, and
the bound. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxes:= List( PrimeDivisors( d ), p -> Group( List( GeneratorsOfGroup(|
  !gapprompt@>| !gapinput@             RelativeSigmaL( d/p, Basis( AsField( GF(q), GF(q^p) ) ) ) ),|
  !gapprompt@>| !gapinput@               mat -> embedFG( GF(q), mat ) ) ) );;|
  !gapprompt@gap>| !gapinput@maxes:= List( maxes, x -> Action( x, orb, OnLines ) );;|
  !gapprompt@gap>| !gapinput@maxes:= List( maxes, x -> Normalizer( G, x ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( maxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, Length );|
  [ 0, 1 ]
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, ccl, true );|
  [ 1/10792960, true ]
\end{Verbatim}
 

 The only missing cases are the extensions of ${{\rm SL}}(6,3)$ and ${{\rm SL}}(6,5)$ by the involutory outer automorphism that acts as the product of a diagonal
and a graph automorphism. 

 In the case $S = {{\rm SL}}(6,3)$, we can directly write down the extension $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@d:= 6;;  q:= 3;;|
  !gapprompt@gap>| !gapinput@diag:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@diag[1][1]:= Z(q);;|
  !gapprompt@gap>| !gapinput@embedDG:= mat -> EmbeddedMatrix( GF(q), mat,|
  !gapprompt@>| !gapinput@                                    M -> TransposedMat( M^-1 )^diag );;|
  !gapprompt@gap>| !gapinput@Gprime:= Group( List( GeneratorsOfGroup( SL(d,q) ), embedDG ) );;|
  !gapprompt@gap>| !gapinput@alpha:= NullMat( 2*d, 2*d, GF(q) );;|
  !gapprompt@gap>| !gapinput@alpha{ [ 1 .. d ] }{ [ d+1 .. 2*d ] }:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@alpha{ [ d+1 .. 2*d ] }{ [ 1 .. d ] }:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@G:= ClosureGroupDefault( Gprime, alpha );;|
\end{Verbatim}
 

 The maximal subgroups are constructed as the normalizers in $G$ of the extension field type subgroups in $S$. We work with a permutation representation of $G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxes:= List( PrimeDivisors( d ), p -> Group( List( GeneratorsOfGroup(|
  !gapprompt@>| !gapinput@             RelativeSigmaL( d/p, Basis( AsField( GF(q), GF(q^p) ) ) ) ),|
  !gapprompt@>| !gapinput@               embedDG ) ) );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( G, One( G )[1], OnLines );;|
  !gapprompt@gap>| !gapinput@G:= Action( G, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@Gprime:= Action( Gprime, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@maxes:= List( maxes, M -> Normalizer( G, Action( M, orb, OnLines ) ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( maxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, Length );|
  [ 1, 1 ]
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, ccl, true );|
  [ 25/352836, true ]
\end{Verbatim}
 

 For $S = {{\rm SL}}(6,5)$, this approach does not work because we cannot realize the diagonal
involution by an involutory matrix. Instead, we consider the extension of ${{\rm GL}}(6,5) \cong 2.(2 \times L_6(5)).2$ by the graph automorphism $\alpha$, which can be embedded into ${{\rm GL}}(12,5)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@d:= 6;;  q:= 5;;|
  !gapprompt@gap>| !gapinput@embedG:= mat -> EmbeddedMatrix( GF(q),|
  !gapprompt@>| !gapinput@                                   mat, M -> TransposedMat( M^-1 ) );;|
  !gapprompt@gap>| !gapinput@Gprime:= Group( List( GeneratorsOfGroup( SL(d,q) ), embedG ) );;|
  !gapprompt@gap>| !gapinput@maxes:= List( PrimeDivisors( d ), p -> Group( List( GeneratorsOfGroup(|
  !gapprompt@>| !gapinput@             RelativeSigmaL( d/p, Basis( AsField( GF(q), GF(q^p) ) ) ) ),|
  !gapprompt@>| !gapinput@               embedG ) ) );;|
  !gapprompt@gap>| !gapinput@diag:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@diag[1][1]:= Z(q);;|
  !gapprompt@gap>| !gapinput@diag:= embedG( diag );;|
  !gapprompt@gap>| !gapinput@alpha:= NullMat( 2*d, 2*d, GF(q) );;|
  !gapprompt@gap>| !gapinput@alpha{ [ 1 .. d ] }{ [ d+1 .. 2*d ] }:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@alpha{ [ d+1 .. 2*d ] }{ [ 1 .. d ] }:= IdentityMat( d, GF(q) );;|
  !gapprompt@gap>| !gapinput@G:= ClosureGroupDefault( Gprime, alpha * diag );;|
\end{Verbatim}
 

 Now we switch to the permutation action of this group on the $1$-dimensional subspaces, thus factoring out the cyclic normal subgroup of order
four. In this action, the involutory diagonal automorphism is represented by
an involution, and we can proceed as above. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orb:= Orbit( G, One( G )[1], OnLines );;|
  !gapprompt@gap>| !gapinput@Gprime:= Action( Gprime, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@G:= Action( G, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@maxes:= List( maxes, M -> Action( M, orb, OnLines ) );;|
  !gapprompt@gap>| !gapinput@extmaxes:= List( maxes, M -> Normalizer( G, M ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( extmaxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, Length );|
  [ 2, 1 ]
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, ccl, true );|
  [ 3863/6052750000, true ]
\end{Verbatim}
 

 In the same way, we can recheck the values for the extensions of ${{\rm SL}}(6,5)$ by the diagonal or by the graph automorphism. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@diag:= Permutation( diag, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@G:= ClosureGroupDefault( Gprime, diag );;|
  !gapprompt@gap>| !gapinput@extmaxes:= List( maxes, M -> Normalizer( G, M ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( extmaxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, Length );|
  [ 3, 1 ]
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, ccl, true );|
  [ 821563/756593750000, true ]
  !gapprompt@gap>| !gapinput@alpha:= Permutation( alpha, orb, OnLines );;|
  !gapprompt@gap>| !gapinput@G:= ClosureGroupDefault( Gprime, alpha );;|
  !gapprompt@gap>| !gapinput@extmaxes:= List( maxes, M -> Normalizer( G, M ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( extmaxes, M -> ClassesOfPrimeOrder( M, [ 2 ], Gprime ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, Length );|
  [ 2, 2 ]
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, ccl, true );|
  [ 13001/195250000, true ]
\end{Verbatim}
  gap{\textgreater} t2:= CharacterTable( "L6(2).2" );; gap{\textgreater} map:=
InverseMap( GetFusionMap( t, t2 ) );; gap{\textgreater} torso:= List(
Concatenation( prim ), pi -{\textgreater} CompositionMaps( pi, map ) );;
gap{\textgreater} ext:= List( torso, x -{\textgreater} PermChars( t2, rec(
torso:= x ) ) ); [ [ Character( CharacterTable( "L6(2).2" ), [ 55552, 0, 128,
256, 337, 112, 22, 0, 0, 16, 0, 16, 2, 17, 0, 0, 8, 2, 4, 28, 0, 0, 0, 4, 1,
0, 1, 0, 0, 4, 0, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1120, 192, 32, 0, 0,
40, 13, 0, 4, 6, 0, 4, 4, 4, 0, 2, 8, 5, 0, 2, 0, 0, 0, 0, 1, 0, 1, 0 ] ) ], [
Character( CharacterTable( "L6(2).2" ), [ 1904640, 0, 0, 512, 960, 0, 120, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 73, 24, 3, 0, 0, 15, 0, 0, 0, 0, 1, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 960, 960, 0, 0, 0, 0, 24, 0, 12, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0 ] ) ] ] gap{\textgreater} sigma:=
ApproxP( Concatenation( ext ), {\textgreater} Position(
OrdersClassRepresentatives( t2 ), 63 ) );; gap{\textgreater} Maximum(
sigma\texttt{\symbol{123}} Difference( PositionsProperty( {\textgreater}
OrdersClassRepresentatives( t2 ), IsPrimeInt ), {\textgreater}
ClassPositionsOfDerivedSubgroup( t2 ) ) \texttt{\symbol{125}} ); 41/1984
--{\textgreater} }

  
\subsection{\textcolor{Chapter }{$L_3(2)$}}\label{L32}
\logpage{[ 11, 5, 8 ]}
\hyperdef{L}{X7C8806DB8588BB51}{}
{
  We show that $S = L_3(2) = {{\rm SL}}(3,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 1/4$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $7$. 
\item[{(b)}]  For $s$ of order $7$, ${{\mathbb M}}(S,s)$ consists of one group of the type $7:3$. 
\item[{(c)}]  $P(S) = 1/4$, and this value is attained exactly for $P(S,s)$ with $s$ of order $7$. 
\item[{(d)}]  The uniform spread of $S$ is at exactly three, with $s$ of order $7$, and the spread of $S$ is exactly four. (This had been left open in{\nobreakspace}\cite{BW1}.) 
\end{description}
 

 (Note that in this example, the spread and the uniform spread differ.) 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "L3(2)" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "L3(2)", 1/4, 3, [ "7A" ], [ 1 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the unique class of maximal subgroups that contain elements
of order $7$ consists of groups of the structure $7:3$, see{\nobreakspace}\cite[p.{\nobreakspace}3]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 3, 4, 7, 7 ]
  !gapprompt@gap>| !gapinput@PrimitivePermutationCharacters( t );|
  [ Character( CharacterTable( "L3(2)" ), [ 7, 3, 1, 1, 0, 0 ] ), 
    Character( CharacterTable( "L3(2)" ), [ 7, 3, 1, 1, 0, 0 ] ), 
    Character( CharacterTable( "L3(2)" ), [ 8, 0, 2, 0, 1, 1 ] ) ]
\end{Verbatim}
 

 For the other statements, we will use the primitive permutation
representations on $7$ and $8$ points of $S$ (computed from the \textsf{GAP} Library of Tables of Marks), and their diagonal products of the degrees $14$ and $15$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tom:= TableOfMarks( "L3(2)" );;|
  !gapprompt@gap>| !gapinput@g:= UnderlyingGroup( tom );|
  Group([ (2,4)(5,7), (1,2,3)(4,5,6) ])
  !gapprompt@gap>| !gapinput@mx:= MaximalSubgroupsTom( tom );|
  [ [ 14, 13, 12 ], [ 7, 7, 8 ] ]
  !gapprompt@gap>| !gapinput@maxes:= List( mx[1], i -> RepresentativeTom( tom, i ) );;|
  !gapprompt@gap>| !gapinput@tr:= List( maxes, s -> RightTransversal( g, s ) );;|
  !gapprompt@gap>| !gapinput@acts:= List( tr, x -> Action( g, x, OnRight ) );;|
  !gapprompt@gap>| !gapinput@g7:= acts[1];|
  Group([ (3,4)(6,7), (1,3,2)(4,6,5) ])
  !gapprompt@gap>| !gapinput@g8:= acts[3];|
  Group([ (1,6)(2,5)(3,8)(4,7), (1,7,3)(2,5,8) ])
  !gapprompt@gap>| !gapinput@g14:= DiagonalProductOfPermGroups( acts{ [ 1, 2 ] } );|
  Group([ (3,4)(6,7)(11,13)(12,14), (1,3,2)(4,6,5)(8,11,9)(10,12,13) ])
  !gapprompt@gap>| !gapinput@g15:= DiagonalProductOfPermGroups( acts{ [ 2, 3 ] } );|
  Group([ (4,6)(5,7)(8,13)(9,12)(10,15)(11,14), (1,4,2)(3,5,6)(8,14,10)
    (9,12,15) ])
\end{Verbatim}
 

 First we compute that for all nonidentity elements $s \in S$ and order three elements $g \in S$, $P(g,s) \geq 1/4$ holds, with equality if and only if $s$ has order $7$; this implies statement{\nobreakspace}(c). We actually compute, for class
representatives $s$, the proportion of order three elements $g$ such that $\langle g, s \rangle {{\not=}} S$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ccl:= List( ConjugacyClasses( g7 ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( ccl, Order ), ccl );|
  !gapprompt@gap>| !gapinput@List( ccl, Order );|
  [ 1, 2, 3, 4, 7, 7 ]
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g7, ccl[3] ) );|
  56
  !gapprompt@gap>| !gapinput@prop:= List( ccl,|
  !gapprompt@>| !gapinput@                r -> RatioOfNongenerationTransPermGroup( g7, ccl[3], r ) );|
  [ 1, 5/7, 19/28, 2/7, 1/4, 1/4 ]
  !gapprompt@gap>| !gapinput@Minimum( prop );|
  1/4
\end{Verbatim}
 

 Now we show that the uniform spread of $S$ is less than four. In any of the primitive permutation representations of
degree seven, we find three involutions whose sets of fixed points cover the
seven points. The elements $s$ of order different from $7$ in $S$ fix a point in this representation, so each such $s$ generates a proper subgroup of $S$ together with one of the three involutions. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@x:= g7.1;|
  (3,4)(6,7)
  !gapprompt@gap>| !gapinput@fix:= Difference( MovedPoints( g7 ), MovedPoints( x ) );|
  [ 1, 2, 5 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g7, fix, OnSets );|
  [ [ 1, 2, 5 ], [ 1, 3, 4 ], [ 2, 3, 6 ], [ 2, 4, 7 ], [ 1, 6, 7 ], 
    [ 3, 5, 7 ], [ 4, 5, 6 ] ]
  !gapprompt@gap>| !gapinput@Union( orb{ [ 1, 2, 5 ] } ) = [ 1 .. 7 ];|
  true
\end{Verbatim}
 

 So we still have to exclude elements $s$ of order $7$. In the primitive permutation representation of $S$ on eight points, we find four elements of order three whose sets of fixed
points cover the set of all points that are moved by $S$, so with each element of order seven in $S$, one of them generates an intransitive group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@three:= g8.2;|
  (1,7,3)(2,5,8)
  !gapprompt@gap>| !gapinput@fix:= Difference( MovedPoints( g8 ), MovedPoints( three ) );|
  [ 4, 6 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g8, fix, OnSets );;|
  !gapprompt@gap>| !gapinput@QuadrupleWithProperty( [ [ fix ], orb, orb, orb ],|
  !gapprompt@>| !gapinput@       list -> Union( list ) = [ 1 .. 8 ] );|
  [ [ 4, 6 ], [ 1, 7 ], [ 3, 8 ], [ 2, 5 ] ]
\end{Verbatim}
 

 Together with statement{\nobreakspace}(a), this proves that the uniform spread
of $S$ is exactly three, with $s$ of order seven. 

 Each element of $S$ fixes a point in the permutation representation on $15$ points. So for proving that the spread of $S$ is less than five, it is sufficient to find a quintuple of elements whose sets
of fixed points cover all $15$ points. (From the permutation characters it is clear that four of these
elements must have order three, and the fifth must be an involution.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@x:= g15.1;|
  (4,6)(5,7)(8,13)(9,12)(10,15)(11,14)
  !gapprompt@gap>| !gapinput@fixx:= Difference( MovedPoints( g15 ), MovedPoints( x ) );|
  [ 1, 2, 3 ]
  !gapprompt@gap>| !gapinput@orbx:= Orbit( g15, fixx, OnSets );|
  [ [ 1, 2, 3 ], [ 1, 4, 5 ], [ 1, 6, 7 ], [ 2, 4, 6 ], [ 3, 4, 7 ], 
    [ 3, 5, 6 ], [ 2, 5, 7 ] ]
  !gapprompt@gap>| !gapinput@y:= g15.2;|
  (1,4,2)(3,5,6)(8,14,10)(9,12,15)
  !gapprompt@gap>| !gapinput@fixy:= Difference( MovedPoints( g15 ), MovedPoints( y ) );|
  [ 7, 11, 13 ]
  !gapprompt@gap>| !gapinput@orby:= Orbit( g15, fixy, OnSets );;|
  !gapprompt@gap>| !gapinput@QuadrupleWithProperty( [ [ fixy ], orby, orby, orby ],|
  !gapprompt@>| !gapinput@       l -> Difference( [ 1 .. 15 ], Union( l ) ) in orbx );|
  [ [ 7, 11, 13 ], [ 5, 8, 14 ], [ 1, 10, 15 ], [ 3, 9, 12 ] ]
\end{Verbatim}
 

 It remains to show that the spread of $S$ is (at least) four. By the consideration of permutation characters, we know
that we can find a suitable order seven element for all quadruples in question
except perhaps quadruples of order three elements. We show that for each such
case, we can choose $s$ of order four. Since ${{\mathbb M}}(S,s)$ consists of two subgroups of the type $S_4$, we work with the representation on $14$ points.) 

 First we compute $s$ and the $S$-orbit of its fixed points, and the $S$-orbit of the fixed points of an element $x$ of order three. Then we prove that for each quadruple of conjugates of $x$, the union of their fixed points intersects the fixed points of at least one
conjugate of $s$ trivially. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g14 );|
  !gapprompt@>| !gapinput@   until Order( s ) = 4;|
  !gapprompt@gap>| !gapinput@s;|
  (1,3)(2,6,7,5)(9,11,10,12)(13,14)
  !gapprompt@gap>| !gapinput@fixs:= Difference( MovedPoints( g14 ), MovedPoints( s ) );|
  [ 4, 8 ]
  !gapprompt@gap>| !gapinput@orbs:= Orbit( g14, fixs, OnSets );;|
  !gapprompt@gap>| !gapinput@Length( orbs );|
  21
  !gapprompt@gap>| !gapinput@three:= g14.2;|
  (1,3,2)(4,6,5)(8,11,9)(10,12,13)
  !gapprompt@gap>| !gapinput@fix:= Difference( MovedPoints( g14 ), MovedPoints( three ) );|
  [ 7, 14 ]
  !gapprompt@gap>| !gapinput@orb:= Orbit( g14, fix, OnSets );;|
  !gapprompt@gap>| !gapinput@Length( orb );|
  28
  !gapprompt@gap>| !gapinput@QuadrupleWithProperty( [ [ fix ], orb, orb, orb ],|
  !gapprompt@>| !gapinput@       l -> ForAll( orbs, o -> not IsEmpty( Intersection( o,|
  !gapprompt@>| !gapinput@                       Union( l ) ) ) ) );|
  fail
\end{Verbatim}
 

 By the lemma from Section{\nobreakspace}\ref{sect:probgen-criteria}, we are done. }

  
\subsection{\textcolor{Chapter }{$M_{11}$}}\label{spreadM11}
\logpage{[ 11, 5, 9 ]}
\hyperdef{L}{X7B7061917ED3714D}{}
{
  We show that $S = M_{11}$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 1/3$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $11$. 
\item[{(b)}]  For $s$ of order $11$, ${{\mathbb M}}(S,s)$ consists of one group of the type $L_2(11)$. 
\item[{(c)}]  $P(S) = 1/3$, and this value is attained exactly for $P(S,s)$ with $s$ of order $11$. 
\item[{(d)}]  Both the uniform spread and the spread of $S$ is exactly three, with $s$ of order $11$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{subsect:spor}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M11" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "M11", 1/3, 2, [ "11A" ], [ 1 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the unique class of maximal subgroups that contain elements
of order $11$ consists of groups of the structure $L_2(11)$, see{\nobreakspace}\cite[p.{\nobreakspace}18]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 3, 4, 5, 6, 8, 8, 11, 11 ]
  !gapprompt@gap>| !gapinput@PrimitivePermutationCharacters( t );|
  [ Character( CharacterTable( "M11" ),
    [ 11, 3, 2, 3, 1, 0, 1, 1, 0, 0 ] ), 
    Character( CharacterTable( "M11" ),
    [ 12, 4, 3, 0, 2, 1, 0, 0, 1, 1 ] ), 
    Character( CharacterTable( "M11" ),
    [ 55, 7, 1, 3, 0, 1, 1, 1, 0, 0 ] ), 
    Character( CharacterTable( "M11" ),
    [ 66, 10, 3, 2, 1, 1, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "M11" ),
    [ 165, 13, 3, 1, 0, 1, 1, 1, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@Maxes( t );|
  [ "A6.2_3", "L2(11)", "3^2:Q8.2", "A5.2", "2.S4" ]
\end{Verbatim}
 

 For the other statements, we will use the primitive permutation
representations of $S$ on $11$ and $12$ points (which are fetched from the \textsf{Atlas} of Group Representations{\nobreakspace}\cite{AGRv3}), and their diagonal product. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@gens11:= OneAtlasGeneratingSet( "M11", NrMovedPoints, 11 );|
  rec( charactername := "1a+10a", constituents := [ 1, 2 ], 
    contents := "core", 
    generators := [ (2,10)(4,11)(5,7)(8,9), (1,4,3,8)(2,5,6,9) ], 
    groupname := "M11", id := "", 
    identifier := [ "M11", [ "M11G1-p11B0.m1", "M11G1-p11B0.m2" ], 1, 
        11 ], isPrimitive := true, maxnr := 1, p := 11, rankAction := 2,
    repname := "M11G1-p11B0", repnr := 1, size := 7920, 
    stabilizer := "A6.2_3", standardization := 1, transitivity := 4, 
    type := "perm" )
  !gapprompt@gap>| !gapinput@g11:= GroupWithGenerators( gens11.generators );;|
  !gapprompt@gap>| !gapinput@gens12:= OneAtlasGeneratingSet( "M11", NrMovedPoints, 12 );;|
  !gapprompt@gap>| !gapinput@g12:= GroupWithGenerators( gens12.generators );;|
  !gapprompt@gap>| !gapinput@g23:= DiagonalProductOfPermGroups( [ g11, g12 ] );|
  Group([ (2,10)(4,11)(5,7)(8,9)(12,17)(13,20)(16,18)(19,21), (1,4,3,8)
    (2,5,6,9)(12,17,18,15)(13,19)(14,20)(16,22,23,21) ])
\end{Verbatim}
 

 First we compute that for all nonidentity elements $s \in S$ and involutions $g \in S$, $P(g,s) \geq 1/3$ holds, with equality if and only if $s$ has order $11$; this implies statement{\nobreakspace}(c). We actually compute, for class
representatives $s$, the proportion of involutions $g$ such that $\langle g, s \rangle {{\not=}} S$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inv:= g11.1;|
  (2,10)(4,11)(5,7)(8,9)
  !gapprompt@gap>| !gapinput@ccl:= List( ConjugacyClasses( g11 ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( ccl, Order ), ccl );|
  !gapprompt@gap>| !gapinput@List( ccl, Order );|
  [ 1, 2, 3, 4, 5, 6, 8, 8, 11, 11 ]
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g11, inv ) );|
  165
  !gapprompt@gap>| !gapinput@prop:= List( ccl,|
  !gapprompt@>| !gapinput@                r -> RatioOfNongenerationTransPermGroup( g11, inv, r ) );|
  [ 1, 1, 1, 149/165, 25/33, 31/55, 23/55, 23/55, 1/3, 1/3 ]
  !gapprompt@gap>| !gapinput@Minimum( prop );|
  1/3
\end{Verbatim}
 

 For the first part of statement{\nobreakspace}(d), we have to deal only with
the case of triples of involutions. 

 The $11$-cycle $s$ is contained in exactly one maximal subgroup of $S$, of index $12$. By Corollary{\nobreakspace}1 in Section{\nobreakspace}\ref{sect:probgen-criteria}, it is enough to show that in the primitive degree $12$ representation of $S$, the fixed points of no triple $(x_1, x_2, x_3)$ of involutions in $S$ can cover all twelve points; equivalenly (considering complements), we show
that there is no triple such that the intersection of the sets of \emph{moved} points is empty. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inv:= g12.1;|
  (1,6)(2,9)(5,7)(8,10)
  !gapprompt@gap>| !gapinput@moved:= MovedPoints( inv );|
  [ 1, 2, 5, 6, 7, 8, 9, 10 ]
  !gapprompt@gap>| !gapinput@orb12:= Orbit( g12, moved, OnSets );;|
  !gapprompt@gap>| !gapinput@Length( orb12 );|
  165
  !gapprompt@gap>| !gapinput@TripleWithProperty( [ orb12{[1]}, orb12, orb12 ],|
  !gapprompt@>| !gapinput@       list -> IsEmpty( Intersection( list ) ) );|
  fail
\end{Verbatim}
 

 This implies that the uniform spread of $S$ is at least three. 

 Now we show that there is a quadruple consisting of one element of order three
and three involutions whose fixed points cover all points in the degree $23$ representation constructed above; since the permutation character of this
representation is strictly positive, this implies that $S$ does not have spread four, by Corollary{\nobreakspace}2 in
Section{\nobreakspace}\ref{sect:probgen-criteria}, and we have proved statement{\nobreakspace}(d). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@inv:= g23.1;|
  (2,10)(4,11)(5,7)(8,9)(12,17)(13,20)(16,18)(19,21)
  !gapprompt@gap>| !gapinput@moved:= MovedPoints( inv );|
  [ 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21 ]
  !gapprompt@gap>| !gapinput@orb23:= Orbit( g23, moved, OnSets );;|
  !gapprompt@gap>| !gapinput@three:= ( g23.1*g23.2^2 )^2;|
  (2,6,10)(4,8,7)(5,9,11)(12,17,23)(15,18,16)(19,21,22)
  !gapprompt@gap>| !gapinput@movedthree:= MovedPoints( three );;|
  !gapprompt@gap>| !gapinput@QuadrupleWithProperty( [ [ movedthree ], orb23, orb23, orb23 ],|
  !gapprompt@>| !gapinput@       list -> IsEmpty( Intersection( list ) ) );|
  [ [ 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23 ],
    [ 1, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 18, 20, 21 ], 
    [ 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 18, 19, 20, 23 ], 
    [ 1, 2, 3, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 20, 22, 23 ] ]
\end{Verbatim}
   }

  
\subsection{\textcolor{Chapter }{$M_{12}$}}\label{spreadM12}
\logpage{[ 11, 5, 10 ]}
\hyperdef{L}{X82E0F48A7FF82BB3}{}
{
  We show that $S = M_{12}$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 1/3$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $10$. 
\item[{(b)}]  For $s \in S$ of order $10$, ${{\mathbb M}}(S,s)$ consists of two nonconjugate subgroups of the type $A_6.2^2$, and one group of the type $2 \times S_5$. 
\item[{(c)}]  $P(S) = 31/99$, and this value is attained exactly for $P(S,s)$ with $s$ of order $10$. 
\item[{(d)}]  The uniform spread of $S$ is at least three, with $s$ of order $10$. 
\item[{(e)}]  ${{\sigma}}^{\prime}({{\rm Aut}}(S), s) = 4/99$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{subsect:spor}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "M12" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "M12", 1/3, 2, [ "10A" ], [ 3 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the only classes of maximal subgroups that contain elements
of order $10$ consist of groups of the structures $A_6.2^2$ (two classes) and $2 \times S_5$ (one class), see{\nobreakspace}\cite[p.{\nobreakspace}33]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 10 );|
  13
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@List( prim, x -> x{ [ 1, spos ] } );|
  [ [ 12, 0 ], [ 12, 0 ], [ 66, 1 ], [ 66, 1 ], [ 144, 0 ], [ 220, 0 ], 
    [ 220, 0 ], [ 396, 1 ], [ 495, 0 ], [ 495, 0 ], [ 1320, 0 ] ]
  !gapprompt@gap>| !gapinput@Maxes( t );|
  [ "M11", "M12M2", "A6.2^2", "M12M4", "L2(11)", "3^2.2.S4", "M12M7", 
    "2xS5", "M8.S4", "4^2:D12", "A4xS3" ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c) (which implies statement{\nobreakspace}(d)),
we use the primitive permutation representation on $12$ points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= MathieuGroup( 12 );|
  Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6), (1,12)(2,11)
    (3,6)(4,8)(5,9)(7,10) ])
\end{Verbatim}
 

 First we show that for $s$ of order $10$, $P(S,s) = 31/99$ holds. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );|
  [ 0, 3/11, 1/3, 1/11, 1/132, 13/99, 13/99, 13/396, 1/132, 1/33, 1/33, 
    1/33, 13/396, 0, 0 ]
  !gapprompt@gap>| !gapinput@2B:= g.2^2;|
  (3,11)(4,5)(6,10)(7,8)
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, 2B ) );|
  495
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 10;|
  !gapprompt@gap>| !gapinput@prop:= RatioOfNongenerationTransPermGroup( g, 2B, s );|
  31/99
  !gapprompt@gap>| !gapinput@Filtered( approx, x -> x >= prop );|
  [ 1/3 ]
\end{Verbatim}
 

 Next we show that for $s$ of order different from $10$, $P(g,s)$ is larger than $31/99$ for suitable $g \in S^{\times}$. Except for $s$ in the class \texttt{6A} (which fixes no point in the degree $12$ representation), it suffices to consider $g$ in the class \texttt{2B} (with four fixed points). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@x:= g.2^2;|
  (3,11)(4,5)(6,10)(7,8)
  !gapprompt@gap>| !gapinput@ccl:= List( ConjugacyClasses( g ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( ccl, Order ), ccl );|
  !gapprompt@gap>| !gapinput@prop:= List( ccl, r -> RatioOfNongenerationTransPermGroup( g, x, r ) );;|
  !gapprompt@gap>| !gapinput@SortedList( prop );|
  [ 7/55, 31/99, 5/9, 5/9, 39/55, 383/495, 383/495, 43/55, 29/33, 1, 1, 
    1, 1, 1, 1 ]
  !gapprompt@gap>| !gapinput@bad:= Filtered( prop, x -> x < 31/99 );|
  [ 7/55 ]
  !gapprompt@gap>| !gapinput@pos:= Position( prop, bad[1] );;|
  !gapprompt@gap>| !gapinput@[ Order( ccl[ pos ] ), NrMovedPoints( ccl[ pos ] ) ];|
  [ 6, 12 ]
\end{Verbatim}
 

 In the remaining case, we choose $g$ in the class \texttt{2A} (which is fixed point free). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@x:= g.3;|
  (1,12)(2,11)(3,6)(4,8)(5,9)(7,10)
  !gapprompt@gap>| !gapinput@s:= ccl[ pos ];;|
  !gapprompt@gap>| !gapinput@prop:= RatioOfNongenerationTransPermGroup( g, x, s );|
  17/33
  !gapprompt@gap>| !gapinput@prop > 31/99;|
  true
\end{Verbatim}
 

 Statement{\nobreakspace}(e) has been shown already in Section{\nobreakspace}\ref{probgen:sporaut}.  }

  
\subsection{\textcolor{Chapter }{$O_7(3)$}}\label{O73}
\logpage{[ 11, 5, 11 ]}
\hyperdef{L}{X7FF2E8F27FBEB65C}{}
{
  We show that $S = O_7(3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 199/351$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $14$. 
\item[{(b)}]  For $s \in S$ of order $14$, ${{\mathbb M}}(S,s)$ consists of one group of the type $2.U_4(3).2_2 = \Omega^-(6,3).2$ and two nonconjugate groups of the type $S_9$. 
\item[{(c)}]  $P(S) = 155/351$, and this value is attained exactly for $P(S,s)$ with $s$ of order $14$. 
\item[{(d)}]  The uniform spread of $S$ is at least three, with $s$ of order $14$. 
\item[{(e)}]  ${{\sigma}}^{\prime}({{\rm Aut}}(S), s) = 1/3$. 
\end{description}
 

 Currently \textsf{GAP} provides neither the table of marks of $S$ nor all character tables of its maximal subgroups. First we compute those
primitive permutation characters of $S$ that have the degrees $351$ (point stabilizer $2.U_4(3).2_2$), $364$ (point stabilizer $3^5:U_4(2).2$), $378$ (point stabilizer $L_4(3).2_2$), $1\,080$ (point stabilizer $G_2(3)$, two classes), $1\,120$ (point stabilizer $3^{3+3}:L_3(3)$), $3\,159$ (point stabilizer $S_6(2)$, two classes), $12\,636$ (point stabilizer $S_9$, two classes), $22\,113$ (point stabilizer $(2^2 \times U_4(2)).2$, which extends to $D_8 \times U_4(2).2$ in $O_7(3).2$), and $28\,431$ (point stabilizer $2^6:A_7$). 

 (So we ignore the primitive permutation characters of the degrees $3\,640$, $265\,356$, and $331\,695$. Note that the orders of the corresponding subgroups are not divisible by $7$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O7(3)" );;|
  !gapprompt@gap>| !gapinput@someprim:= [];;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters(|
  !gapprompt@>| !gapinput@            CharacterTable( "2.U4(3).2_2" ), t );;  Length( pi );|
  1
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PermChars( t, rec( torso:= [ 364 ] ) );;  Length( pi );|
  1
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters(|
  !gapprompt@>| !gapinput@            CharacterTable( "L4(3).2_2" ), t );;  Length( pi );|
  1
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( CharacterTable( "G2(3)" ), t );|
  [ Character( CharacterTable( "O7(3)" ),
    [ 1080, 0, 0, 24, 108, 0, 0, 0, 27, 18, 9, 0, 12, 4, 0, 0, 0, 0, 0, 
        0, 0, 0, 12, 0, 0, 0, 0, 0, 3, 6, 0, 3, 2, 2, 2, 0, 0, 0, 3, 0, 
        0, 0, 0, 0, 0, 4, 0, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "O7(3)" ),
    [ 1080, 0, 0, 24, 108, 0, 0, 27, 0, 18, 9, 0, 12, 4, 0, 0, 0, 0, 0, 
        0, 0, 0, 12, 0, 0, 0, 0, 3, 0, 0, 6, 3, 2, 2, 2, 0, 0, 3, 0, 0, 
        0, 0, 0, 0, 0, 4, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PermChars( t, rec( torso:= [ 1120 ] ) );;  Length( pi );|
  1
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( CharacterTable( "S6(2)" ), t );|
  [ Character( CharacterTable( "O7(3)" ),
    [ 3159, 567, 135, 39, 0, 81, 0, 0, 27, 27, 0, 15, 3, 3, 7, 4, 0, 
        27, 0, 0, 0, 0, 0, 9, 3, 0, 9, 0, 3, 9, 3, 0, 2, 1, 1, 0, 0, 0, 
        3, 0, 2, 0, 0, 0, 3, 0, 0, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "O7(3)" ),
    [ 3159, 567, 135, 39, 0, 81, 0, 27, 0, 27, 0, 15, 3, 3, 7, 4, 0, 
        27, 0, 0, 0, 0, 0, 9, 3, 0, 9, 3, 0, 3, 9, 0, 2, 1, 1, 0, 0, 3, 
        0, 0, 2, 0, 0, 0, 3, 0, 3, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( CharacterTable( "S9" ), t );|
  [ Character( CharacterTable( "O7(3)" ),
    [ 12636, 1296, 216, 84, 0, 81, 0, 0, 108, 27, 0, 6, 0, 12, 10, 1, 
        0, 27, 0, 0, 0, 0, 0, 9, 3, 0, 9, 0, 12, 9, 3, 0, 1, 0, 2, 0, 
        0, 0, 3, 1, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 
        1 ] ), Character( CharacterTable( "O7(3)" ),
    [ 12636, 1296, 216, 84, 0, 81, 0, 108, 0, 27, 0, 6, 0, 12, 10, 1, 
        0, 27, 0, 0, 0, 0, 0, 9, 3, 0, 9, 12, 0, 3, 9, 0, 1, 0, 2, 0, 
        0, 3, 0, 1, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 
        1 ] ) ]
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "O7(3).2" );;|
  !gapprompt@gap>| !gapinput@s2:= CharacterTable( "Dihedral", 8 ) * CharacterTable( "U4(2).2" );|
  CharacterTable( "Dihedral(8)xU4(2).2" )
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s2, t2 );;  Length( pi );|
  1
  !gapprompt@gap>| !gapinput@pi:= RestrictedClassFunctions( pi, t );;|
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters(|
  !gapprompt@>| !gapinput@            CharacterTable( "2^6:A7" ), t );;  Length( pi );|
  1
  !gapprompt@gap>| !gapinput@Append( someprim, pi );|
  !gapprompt@gap>| !gapinput@List( someprim, x -> x[1] );|
  [ 351, 364, 378, 1080, 1080, 1120, 3159, 3159, 12636, 12636, 22113, 
    28431 ]
\end{Verbatim}
 

 Note that in the three cases where two possible permutation characters were
found, there are in fact two classes of subgroups that induce different
permutation characters. For the subgroups of the types $G_2(3)$ and $S_6(2)$, this is stated in{\nobreakspace}\cite[p.{\nobreakspace}109]{CCN85}, and for the subgroups of the type $S_9$, this follows from the fact that each $S_9$ type subgroup in $S$ contains elements in exactly one of the classes \texttt{3D} or \texttt{3E}, and these two classes are fused by the outer automorphism of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cl:= PositionsProperty( AtlasClassNames( t ),|
  !gapprompt@>| !gapinput@                           x -> x in [ "3D", "3E" ] );|
  [ 8, 9 ]
  !gapprompt@gap>| !gapinput@List( Filtered( someprim, x -> x[1] = 12636 ), pi -> pi{ cl } );|
  [ [ 0, 108 ], [ 108, 0 ] ]
  !gapprompt@gap>| !gapinput@GetFusionMap( t, t2 ){ cl };|
  [ 8, 8 ]
\end{Verbatim}
 

 Now we compute the lower bounds for ${{\sigma}}( S, s^{\prime} )$ that are given by the sublist \texttt{someprim} of the primitive permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 14 );|
  52
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( someprim, spos ) );|
  199/351
\end{Verbatim}
 

 This shows that ${{\sigma}}( S, s ) = 199/351$ holds. For statement{\nobreakspace}(a), we have to show that choosing $s^{\prime}$ from another class than \texttt{14A} yields a larger value for ${{\sigma}}( S, s^{\prime} )$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= List( [ 1 .. NrConjugacyClasses( t ) ],|
  !gapprompt@>| !gapinput@      i -> Maximum( ApproxP( someprim, i ) ) );;|
  !gapprompt@gap>| !gapinput@PositionsProperty( approx, x -> x <= 199/351 );|
  [ 52 ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@pos:= PositionsProperty( someprim, x -> x[ spos ] <> 0 );|
  [ 1, 9, 10 ]
  !gapprompt@gap>| !gapinput@List( someprim{ pos }, x -> x{ [ 1, spos ] } );|
  [ [ 351, 1 ], [ 12636, 1 ], [ 12636, 1 ] ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c), we first compute $P(g, s)$ for $g$ in the class \texttt{2A}, via explicit computations with the group. For dealing with this case, we
first construct a faithful permutation representation of $O_7(3)$ from the natural matrix representation of ${{\rm SO}}(7,3)$. 

      
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@so73:= SpecialOrthogonalGroup( 7, 3 );;|
  !gapprompt@gap>| !gapinput@o73:= DerivedSubgroup( so73 );;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( o73, Elements( GF(3)^7 ) );;|
  !gapprompt@gap>| !gapinput@Set( orbs, Length );|
  [ 1, 702, 728, 756 ]
  !gapprompt@gap>| !gapinput@g:= Action( o73, First( orbs, x -> Length( x ) = 702 ) );;|
  !gapprompt@gap>| !gapinput@Size( g ) = Size( t );|
  true
\end{Verbatim}
 

 A \texttt{2A} element $g$ can be found as the $7$-th power of any element of order $14$ in $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 14;|
  !gapprompt@gap>| !gapinput@2A:= s^7;;|
  !gapprompt@gap>| !gapinput@bad:= RatioOfNongenerationTransPermGroup( g, 2A, s );|
  155/351
  !gapprompt@gap>| !gapinput@bad > 1/3;|
  true
  !gapprompt@gap>| !gapinput@approx:= ApproxP( someprim, spos );;|
  !gapprompt@gap>| !gapinput@PositionsProperty( approx, x -> x >= 1/3 );|
  [ 2 ]
\end{Verbatim}
 

 This shows that $P(g,s) = 155/351 > 1/3$. Since ${{\sigma}}( g, s ) < 1/3$ for all nonidentity $g$ not in the class \texttt{2A}, we have $P( S, s ) = 155/351$. For statement{\nobreakspace}(c), it remains to show that $P( S, s^{\prime} )$ is larger than $155/351$ whenever $s^{\prime}$ is not of order $14$. First we compute $P( g, s^{\prime} )$, for $g$ in the class \texttt{2A}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@consider:= RepresentativesMaximallyCyclicSubgroups( t );|
  [ 18, 19, 25, 26, 27, 30, 31, 32, 34, 35, 38, 39, 41, 42, 43, 44, 45, 
    46, 47, 48, 49, 50, 52, 53, 54, 56, 57, 58 ]
  !gapprompt@gap>| !gapinput@Length( consider );|
  28
  !gapprompt@gap>| !gapinput@consider:= ClassesPerhapsCorrespondingToTableColumns( g, t, consider );;|
  !gapprompt@gap>| !gapinput@Length( consider );|
  31
  !gapprompt@gap>| !gapinput@consider:= List( consider, Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( consider, Order ), consider );|
  !gapprompt@gap>| !gapinput@app2A:= List( consider, c ->|
  !gapprompt@>| !gapinput@      RatioOfNongenerationTransPermGroup( g, 2A, c ) );;|
  !gapprompt@gap>| !gapinput@SortedList( app2A );|
  [ 1/3, 1/3, 155/351, 191/351, 67/117, 23/39, 23/39, 85/117, 10/13, 
    10/13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    1 ]
  !gapprompt@gap>| !gapinput@test:= PositionsProperty( app2A, x -> x <= 155/351 );;|
  !gapprompt@gap>| !gapinput@List( test, i -> Order( consider[i] ) );|
  [ 13, 13, 14 ]
\end{Verbatim}
 

 We see that only for $s^{\prime}$ in one of the two (algebraically conjugate) classes of element order $13$, $P( S, s^{\prime} )$ has a chance to be smaller than $155/351$. This possibility is now excluded by counting elements in the class \texttt{3A} that do not generate $S$ together with $s^{\prime}$ of order $13$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@C3A:= First( ConjugacyClasses( g ),|
  !gapprompt@>| !gapinput@              c -> Order( Representative( c ) ) = 3 and Size( c ) = 7280 );;|
  !gapprompt@gap>| !gapinput@repeat ss:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( ss ) = 13;|
  !gapprompt@gap>| !gapinput@bad:= RatioOfNongenerationTransPermGroup( g, Representative( C3A ), ss );|
  17/35
  !gapprompt@gap>| !gapinput@bad > 155/351;|
  true
\end{Verbatim}
 

 Now we show statement{\nobreakspace}(d): For each triple $(x_1, x_2, x_3)$ of nonidentity elements in $S$, there is an element $s$ in the class \texttt{14A} such that $\langle x_i, s \rangle = S$ holds for $1 \leq i \leq 3$. We can read off from the character-theoretic data that only those triples
have to be checked for which at least two elements are contained in the class \texttt{2A}, and the third element lies in one of the classes \texttt{2A}, \texttt{2B}, \texttt{3B}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( someprim, spos );;|
  !gapprompt@gap>| !gapinput@max:= Maximum( approx{ [ 3 .. Length( approx ) ] } );|
  59/351
  !gapprompt@gap>| !gapinput@155 + 2*59 < 351;|
  true
  !gapprompt@gap>| !gapinput@third:= PositionsProperty( approx, x -> 2 * 155/351 + x >= 1 );|
  [ 2, 3, 6 ]
  !gapprompt@gap>| !gapinput@ClassNames( t ){ third };|
  [ "2a", "2b", "3b" ]
\end{Verbatim}
 

 We can find elements in the classes \texttt{2B} and \texttt{3B} as powers of arbitrary elements of the orders $20$ and $15$, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord20:= PositionsProperty( OrdersClassRepresentatives( t ),|
  !gapprompt@>| !gapinput@                              x -> x = 20 );|
  [ 58 ]
  !gapprompt@gap>| !gapinput@PowerMap( t, 10 ){ ord20 };|
  [ 3 ]
  !gapprompt@gap>| !gapinput@repeat x:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( x ) = 20;|
  !gapprompt@gap>| !gapinput@2B:= x^10;;|
  !gapprompt@gap>| !gapinput@C2B:= ConjugacyClass( g, 2B );;|
  !gapprompt@gap>| !gapinput@ord15:= PositionsProperty( OrdersClassRepresentatives( t ),|
  !gapprompt@>| !gapinput@                              x -> x = 15 );|
  [ 53 ]
  !gapprompt@gap>| !gapinput@PowerMap( t, 10 ){ ord15 };|
  [ 6 ]
  !gapprompt@gap>| !gapinput@repeat x:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( x ) = 15;|
  !gapprompt@gap>| !gapinput@3B:= x^5;;|
  !gapprompt@gap>| !gapinput@C3B:= ConjugacyClass( g, 3B );;|
\end{Verbatim}
 

 The existence of $s$ can be shown with the random approach described in Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 14;|
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 2A, 2A, 2A ], s, 50 );|
  true
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 2B, 2A, 2A ], s, 50 );|
  true
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 3B, 2A, 2A ], s, 50 );|
  true
\end{Verbatim}
 

 Finally, we show statement{\nobreakspace}(e). Let $G = {{\rm Aut}}(S) = S.2$. By{\nobreakspace}\cite[p.{\nobreakspace}109]{CCN85}, ${{\mathbb M}}^{\prime}(G,s)$ consists of the extension of the $2.U_4(3).2_1$ type subgroup. We compute the extension of the permutation character. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= someprim{ [ 1 ] };|
  [ Character( CharacterTable( "O7(3)" ),
    [ 351, 127, 47, 15, 27, 45, 36, 0, 0, 9, 0, 15, 3, 3, 7, 6, 19, 19, 
        10, 11, 12, 8, 3, 5, 3, 6, 1, 0, 0, 3, 3, 0, 1, 1, 1, 6, 3, 0, 
        0, 2, 2, 0, 3, 0, 3, 3, 0, 0, 1, 0, 0, 1, 0, 4, 4, 1, 2, 0 ] ) ]
  !gapprompt@gap>| !gapinput@spos:= Position( AtlasClassNames( t ), "14A" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "O7(3).2" );;|
  !gapprompt@gap>| !gapinput@map:= InverseMap( GetFusionMap( t, t2 ) );;|
  !gapprompt@gap>| !gapinput@torso:= List( prim, pi -> CompositionMaps( pi, map ) );;|
  !gapprompt@gap>| !gapinput@ext:= List( torso, x -> PermChars( t2, rec( torso:= x ) ) );|
  [ [ Character( CharacterTable( "O7(3).2" ),
        [ 351, 127, 47, 15, 27, 45, 36, 0, 9, 0, 15, 3, 3, 7, 6, 19, 
            19, 10, 11, 12, 8, 3, 5, 3, 6, 1, 0, 3, 0, 1, 1, 1, 6, 3, 
            0, 2, 2, 0, 3, 0, 3, 3, 0, 1, 0, 0, 1, 0, 4, 1, 2, 0, 117, 
            37, 21, 45, 1, 13, 5, 1, 9, 9, 18, 15, 1, 7, 9, 6, 4, 0, 3, 
            0, 3, 3, 6, 2, 2, 9, 6, 1, 3, 1, 4, 1, 2, 1, 1, 0, 3, 1, 0, 
            0, 0, 0, 1, 1, 0, 0 ] ) ] ]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( Concatenation( ext ),|
  !gapprompt@>| !gapinput@       Position( AtlasClassNames( t2 ), "14A" ) );;|
  !gapprompt@gap>| !gapinput@Maximum( approx{ Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) ) } );|
  1/3
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_8^+(2)$}}\label{O8p2}
\logpage{[ 11, 5, 12 ]}
\hyperdef{L}{X7F80F2527C424AA4}{}
{
  We show that $S = O_8^+(2) = \Omega^+(8,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 334/315$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $15$. 
\item[{(b)}]  For $s \in S$ of order $15$, ${{\mathbb M}}(S,s)$ consists of one group of the type $S_6(2)$, two conjugate groups of the type $2^6:A_8$, two conjugate groups of the type $A_9$, and one group of each of the types $(3 \times U_4(2)):2 = (3 \times \Omega^-(6,2)):2$ and $(A_5 \times A_5):2^2 = (\Omega^-(4,2) \times \Omega^-(4,2)):2^2$. 
\item[{(c)}]  $P(S) = 29/42$, and this value is attained exactly for $P(S,s)$ with $s$ of order $15$. 
\item[{(d)}]  Let $x, y \in S$ such that $x, y, x y$ lie in the unique involution class of length $1\,575$ of $S$. (This is the class \texttt{2A}.) Then each element in $S$ together with one of $x$, $y$, $x y$ generates a proper subgroup of $S$. 
\item[{(e)}]  Both the spread and the uniform spread of $S$ is exactly two, with $s$ of order $15$. 
\item[{(f)}]  For each choice of $s \in S$, there is an extension $S.2$ such that for any element $g$ in the (outer) class \texttt{2F}, $\langle s, g \rangle$ does not contain $S$. 
\item[{(g)}]  For an element $s$ of order $15$ in $S$, either $S$ is the only maximal subgroup of $S.2$ that contains $s$, or the maximal subgroups of $S.2$ that contain $s$ are $S$ and the extensions of the subgroups listed in statement{\nobreakspace}(b);
these groups have the structures $S_6(2) \times 2$, $2^6:S_8$ (twice), $S_9$ (twice), $S_3 \times U_4(2).2$, and $S_5 \wr 2$. 
\item[{(h)}]  For $s \in S$ of order $15$ and arbitrary $g \in S.3 \setminus S$, we have $\langle s, g \rangle = S.3$. 
\item[{(i)}]  If $x$, $y$ are nonidentity elements in ${{\rm Aut}}(S)$ then there is an element $s$ of order $15$ in $S$ such that $S \subseteq \langle x, s \rangle \cap \langle y, s \rangle$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O8+(2)" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "O8+(2)", 334/315, 0, [ "15A", "15B", "15C" ], [ 7, 7, 7 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the only classes of maximal subgroups that contain elements
of order $15$ consist of groups of the structures as claimed, see{\nobreakspace}\cite[p.{\nobreakspace}85]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 15 );;|
  !gapprompt@gap>| !gapinput@List( Filtered( prim, x -> x[ spos ] <> 0 ), l -> l{ [ 1, spos ] } );|
  [ [ 120, 1 ], [ 135, 2 ], [ 960, 2 ], [ 1120, 1 ], [ 12096, 1 ] ]
\end{Verbatim}
 

 For the remaining statements, we take a primitive permutation representation
on $120$ points, and assume that the permutation character is \texttt{1a+35a+84a}. (See{\nobreakspace}\cite[p.{\nobreakspace}85]{CCN85}, note that the three classes of maximal subgroups of index $120$ in $S$ are conjugate under triality.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@matgroup:= DerivedSubgroup( GeneralOrthogonalGroup( 1, 8, 2 ) );;|
  !gapprompt@gap>| !gapinput@points:= NormedRowVectors( GF(2)^8 );;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( matgroup, points );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 135, 120 ]
  !gapprompt@gap>| !gapinput@g:= Action( matgroup, orbs[2] );;|
  !gapprompt@gap>| !gapinput@Size( g );|
  174182400
  !gapprompt@gap>| !gapinput@pi:= Sum( Irr( t ){ [ 1, 3, 7 ] } );|
  Character( CharacterTable( "O8+(2)" ),
   [ 120, 24, 32, 0, 0, 8, 36, 0, 0, 3, 6, 12, 4, 8, 0, 0, 0, 10, 0, 0, 
    12, 0, 0, 8, 0, 0, 3, 6, 0, 0, 2, 0, 0, 2, 1, 2, 2, 3, 0, 0, 2, 0, 
    0, 0, 0, 0, 3, 2, 0, 0, 1, 0, 0 ] )
\end{Verbatim}
 

 In order to show statement{\nobreakspace}(c), we first observe that for $s$ in the class \texttt{15A} and $g$ \emph{not} in one of the classes \texttt{2A}, \texttt{2B}, \texttt{3A}, ${{\sigma}}(g,s) < 1/3$ holds, and for the exceptional three classes, we have ${{\sigma}}(g,s) > 1/2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );;|
  !gapprompt@gap>| !gapinput@testpos:= PositionsProperty( approx, x -> x >= 1/3 );|
  [ 2, 3, 7 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ testpos };|
  [ "2A", "2B", "3A" ]
  !gapprompt@gap>| !gapinput@approx{ testpos };|
  [ 254/315, 334/315, 1093/1120 ]
  !gapprompt@gap>| !gapinput@ForAll( approx{ testpos }, x -> x > 1/2 );|
  true
\end{Verbatim}
 

 Now we compute the values $P(g,s)$, for $s$ in the class \texttt{15A} and $g$ in one of the classes \texttt{2A}, \texttt{2B}, \texttt{3A}. 

 By our choice of the character of the permutation representation we use, the
class \texttt{15A} is determined as the unique class of element order $15$ with one fixed point. (Note that the three classes of element order $15$ in $S$ are conjugate under triality.) A \texttt{2A} element can be found as the fourth power of any element of order $8$ in $S$, a \texttt{3A} element can be found as the fifth power of a \texttt{15A} element, and a \texttt{2B} element can be found as the sixth power of an element of order $12$, with $32$ fixed points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 15 and NrMovedPoints( g ) = 1 + NrMovedPoints( s );|
  !gapprompt@gap>| !gapinput@3A:= s^5;;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g ); until Order( x ) = 8;|
  !gapprompt@gap>| !gapinput@2A:= x^4;;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g ); until Order( x ) = 12 and|
  !gapprompt@>| !gapinput@     NrMovedPoints( g ) = 32 + NrMovedPoints( x^6 );|
  !gapprompt@gap>| !gapinput@2B:= x^6;;|
  !gapprompt@gap>| !gapinput@prop15A:= List( [ 2A, 2B, 3A ],|
  !gapprompt@>| !gapinput@                   x -> RatioOfNongenerationTransPermGroup( g, x, s ) );|
  [ 23/35, 29/42, 149/224 ]
  !gapprompt@gap>| !gapinput@Maximum( prop15A );|
  29/42
\end{Verbatim}
 

 This means that for $s$ in the class \texttt{15A}, we have $P( S, s ) = 29/42$, and the same holds for all $s$ of order $15$ since the three classes of element order $15$ are conjugate under triality. Now we show that for $s$ of order different from $15$, the value $P(g,s)$ is larger than $29/42$, for $g$ in one of the classes \texttt{2A}, \texttt{2B}, \texttt{3A}, or their images under triality. This implies statement{\nobreakspace}(c). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@test:= List( [ 2A, 2B, 3A ], x -> ConjugacyClass( g, x ) );;|
  !gapprompt@gap>| !gapinput@ccl:= ConjugacyClasses( g );;|
  !gapprompt@gap>| !gapinput@consider:= Filtered( ccl, c -> Size( c ) in List( test, Size ) );;|
  !gapprompt@gap>| !gapinput@Length( consider );|
  7
  !gapprompt@gap>| !gapinput@filt:= Filtered( ccl, c -> ForAll( consider, cc ->|
  !gapprompt@>| !gapinput@      RatioOfNongenerationTransPermGroup( g, Representative( cc ),|
  !gapprompt@>| !gapinput@          Representative( c ) ) <= 29/42 ) );;|
  !gapprompt@gap>| !gapinput@Length( filt );|
  3
  !gapprompt@gap>| !gapinput@List( filt, c -> Order( Representative( c ) ) );|
  [ 15, 15, 15 ]
\end{Verbatim}
  

 Now we show statement{\nobreakspace}(d). First we observe that all those Klein
four groups in $S$ whose involutions lie in the class \texttt{2A} are conjugate in $S$. Note that this is the unique class of length $1\,575$ in $S$, and also the unique class whose elements have $24$ fixed points in the degree $120$ permutation representation. 

 For that, we use the character table of $S$ to read off that $S$ contains exactly $14\,175$ such subgroups, and we use the group to compute one such subgroup and its
normalizer of index $14\,175$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( t );|
  [ 1, 1575, 3780, 3780, 3780, 56700, 2240, 2240, 2240, 89600, 268800, 
    37800, 340200, 907200, 907200, 907200, 2721600, 580608, 580608, 
    580608, 100800, 100800, 100800, 604800, 604800, 604800, 806400, 
    806400, 806400, 806400, 2419200, 2419200, 2419200, 7257600, 
    24883200, 5443200, 5443200, 6451200, 6451200, 6451200, 8709120, 
    8709120, 8709120, 1209600, 1209600, 1209600, 4838400, 7257600, 
    7257600, 7257600, 11612160, 11612160, 11612160 ]
  !gapprompt@gap>| !gapinput@NrPolyhedralSubgroups( t, 2, 2, 2 );|
  rec( number := 14175, type := "V4" )
  !gapprompt@gap>| !gapinput@repeat x:= Random( g );|
  !gapprompt@>| !gapinput@   until     Order( x ) mod 2 = 0|
  !gapprompt@>| !gapinput@         and NrMovedPoints( x^( Order(x)/2 ) ) = 120 - 24;|
  !gapprompt@gap>| !gapinput@x:= x^( Order(x)/2 );;|
  !gapprompt@gap>| !gapinput@repeat y:= x^Random( g );|
  !gapprompt@>| !gapinput@   until NrMovedPoints( x*y ) = 120 - 24;|
  !gapprompt@gap>| !gapinput@v4:= SubgroupNC( g, [ x, y ] );;|
  !gapprompt@gap>| !gapinput@n:= Normalizer( g, v4 );;|
  !gapprompt@gap>| !gapinput@Index( g, n );|
  14175
\end{Verbatim}
 

 We verify that the triple has the required property. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxorder:= RepresentativesMaximallyCyclicSubgroups( t );;|
  !gapprompt@gap>| !gapinput@maxorderreps:= List( ClassesPerhapsCorrespondingToTableColumns( g, t,|
  !gapprompt@>| !gapinput@       maxorder ), Representative );;|
  !gapprompt@gap>| !gapinput@Length( maxorderreps );|
  28
  !gapprompt@gap>| !gapinput@CommonGeneratorWithGivenElements( g, maxorderreps, [ x, y, x*y ] );|
  fail
\end{Verbatim}
 

 For the simple group $S$, it remains to show statement{\nobreakspace}(e). We want to show that for any
choice of two nonidentity elements $x$, $y$ in $S$, there is an element $s$ in the class \texttt{15A} such that $\langle s, x \rangle = \langle s, y \rangle = S$ holds. Only $x$, $y$ in the classes given by the list \texttt{testpos} must be considered, by the estimates ${{\sigma}}(g,s)$. 

 We replace the values ${{\sigma}}(g,s)$ by the exact values $P(g,s)$, for $g$ in one of these three classes. Each of the three classes is determined by its
element order and its number of fixed points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@reps:= List( ccl, Representative );;|
  !gapprompt@gap>| !gapinput@bading:= List( testpos, i -> Filtered( reps,|
  !gapprompt@>| !gapinput@       r -> Order( r ) = OrdersClassRepresentatives( t )[i] and|
  !gapprompt@>| !gapinput@            NrMovedPoints( r ) = 120 - pi[i] ) );;|
  !gapprompt@gap>| !gapinput@List( bading, Length );|
  [ 1, 1, 1 ]
  !gapprompt@gap>| !gapinput@bading:= List( bading, x -> x[1] );;|
\end{Verbatim}
 

 For each pair $(C_1, C_2)$ of classes represented by this list, we have to show that for any choice of
elements $x \in C_1$, $y \in C_2$ there is $s$ in the class \texttt{15A} such that $\langle s, x \rangle = \langle s, y \rangle = S$ holds. This is done with the random approach that is described in
Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for pair in UnorderedTuples( bading, 2 ) do|
  !gapprompt@>| !gapinput@     test:= RandomCheckUniformSpread( g, pair, s, 80 );|
  !gapprompt@>| !gapinput@     if test <> true then|
  !gapprompt@>| !gapinput@       Error( test );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 We get no error message, so statement{\nobreakspace}(e) holds. 

  

 Now we turn to the automorphic extensions of $S$. First we compute a permutation representation of ${{\rm SO}}^+(8,2) \cong S.2$ and an element $g$ in the class \texttt{2F}, which is the unique conjugacy class of size $120$ in $S.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@matgrp:= SO(1,8,2);;|
  !gapprompt@gap>| !gapinput@g2:= Image( IsomorphismPermGroup( matgrp ) );;|
  !gapprompt@gap>| !gapinput@IsTransitive( g2, MovedPoints( g2 ) );|
  true
  !gapprompt@gap>| !gapinput@repeat x:= Random( g2 ); until Order( x ) = 14;|
  !gapprompt@gap>| !gapinput@2F:= x^7;;|
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g2, 2F ) );|
  120
\end{Verbatim}
 

 Only for $s$ in six conjugacy classes of $S$, there is a nonzero probability to have $S.2 = \langle g, s \rangle$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( g2 );;|
  !gapprompt@gap>| !gapinput@cclreps:= List( ConjugacyClasses( der ), Representative );;|
  !gapprompt@gap>| !gapinput@nongen:= List( cclreps,|
  !gapprompt@>| !gapinput@              x -> RatioOfNongenerationTransPermGroup( g2, 2F, x ) );;|
  !gapprompt@gap>| !gapinput@goodpos:= PositionsProperty( nongen, x -> x < 1 );;|
  !gapprompt@gap>| !gapinput@invariants:= List( goodpos, i -> [ Order( cclreps[i] ),|
  !gapprompt@>| !gapinput@     Size( Centralizer( g2, cclreps[i] ) ), nongen[i] ] );;|
  !gapprompt@gap>| !gapinput@SortedList( invariants );|
  [ [ 10, 20, 1/3 ], [ 10, 20, 1/3 ], [ 12, 24, 2/5 ], [ 12, 24, 2/5 ], 
    [ 15, 15, 0 ], [ 15, 15, 0 ] ]
\end{Verbatim}
 

 $S$ contains three classes of element order $10$, which are conjugate in $S.3$. For a fixed extension of the type $S.2$, the element $s$ can be chosen only in two of these three classes, which means that there is
another group of the type $S.2$ (more precisely, another subgroup of index three in $S.S_3$) in which this choice of $s$ is not suitable {\textendash}note that the general aim is to find $s \in S$ uniformly for all automorphic extensions of $S$. Analogous statements hold for the other possibilities for $s$, so statement{\nobreakspace}(f) follows. 

 Statement{\nobreakspace}(g) follows from the list of maximal subgroups
in{\nobreakspace}\cite[p.{\nobreakspace}85]{CCN85}. 

 Statement{\nobreakspace}(h) follows from the fact that $S$ is the only maximal subgroup of $S.3$ that contains elements of order $15$, according to the list of maximal subgroups in{\nobreakspace}\cite[p.{\nobreakspace}85]{CCN85}. Alternatively, if we do not want to assume this information, we can use
explicit computations, as follows. All we have to check is that any element in
the classes \texttt{3F} and \texttt{3G} generates $S.3$ together with a fixed element of order $15$ in $S$. 

 We compute a permutation representation of $S.3$ as the derived subgroup of a subgroup of the type $S.S_3$ inside the sporadic simple Fischer group $Fi_{22}$; these subgroups lie in the fourth class of maximal subgroups of $Fi_{22}$, see{\nobreakspace}\cite[p.{\nobreakspace}163]{CCN85}. An element in the class \texttt{3F} of $S.3$ can be found as a power of an order $21$ element, and an element in the class \texttt{3G} can be found as the fourth power of a \texttt{12P} element. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@aut:= Group( AtlasGenerators( "Fi22", 1, 4 ).generators );;|
  !gapprompt@gap>| !gapinput@Size( aut ) = 6 * Size( t );|
  true
  !gapprompt@gap>| !gapinput@g3:= DerivedSubgroup( aut );;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g3, MovedPoints( g3 ) );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 3150, 360 ]
  !gapprompt@gap>| !gapinput@g3:= Action( g3, orbs[2] );;|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g3 ); until Order( s ) = 15;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g3 ); until Order( x ) = 21;|
  !gapprompt@gap>| !gapinput@3F:= x^7;;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( g3, 3F, s );|
  0
  !gapprompt@gap>| !gapinput@repeat x:= Random( g3 );|
  !gapprompt@>| !gapinput@   until Order( x ) = 12 and Size( Centralizer( g3, x^4 ) ) = 648;|
  !gapprompt@gap>| !gapinput@3G:= x^4;;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( g3, 3G, s );|
  0
\end{Verbatim}
 

 Finally, consider statement{\nobreakspace}(i). It implies that{\nobreakspace}\cite[Corollary{\nobreakspace}1.5]{BGK} holds for $\Omega^+(8,2)$, with $s$ of order $15$. Note that by part{\nobreakspace}(f), $s$ \emph{cannot be chosen in a prescribed conjugacy class} of $S$ that is independent of the elements $x$, $y$. 

 If $x$ and $y$ lie in $S$ then statement{\nobreakspace}(i) follows from part{\nobreakspace}(e), and by
part{\nobreakspace}(g), the case that $x$ or $y$ lie in $S.3 \setminus S$ is also not a problem. We now show that also $x$ or $y$ in $S.2 \setminus S$ is not a problem. Here we have to deal with the cases that $x$ and $y$ lie in the same subgroup of index $3$ in ${{\rm Aut}}(S)$ or in different such subgroups. Actually we show that for each index $3$ subgroup $H = S.2 < {{\rm Aut}}(S)$, we can choose $s$ from two of the three classes of element order $15$ in $S$ such that $S$ is the only maximal subgroup of $H$ that contains $s$, and thus $\langle x, s \rangle$ contains $H$, for any choice of $x \in H \setminus S$. 

 For that, we note that no novelty in $S.2$ contains elements of order $15$, so all maximal subgroups of $S.2$ that contain such elements {\textendash}besides $S${\textendash} have one of the indices $120, 135, 960, 1120$, or $12096$, and point stabilizers of the types $S_6(2) \times 2$, $2^6:S_8$, $S_9$, $S_3 \times U_4(2):2$, or $S_5 \wr 2$. We compute the corresponding permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "O8+(2).2" );;|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "S6(2)" ) * CharacterTable( "Cyclic", 2 );;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s, t2 );;|
  !gapprompt@gap>| !gapinput@prim:= pi;;|
  !gapprompt@gap>| !gapinput@pi:= PermChars( t2, rec( torso:= [ 135 ] ) );;|
  !gapprompt@gap>| !gapinput@Append( prim, pi );|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( CharacterTable( "A9.2" ), t2 );;|
  !gapprompt@gap>| !gapinput@Append( prim, pi );|
  !gapprompt@gap>| !gapinput@s:= CharacterTable( "Dihedral(6)" ) * CharacterTable( "U4(2).2" );;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s, t2 );;|
  !gapprompt@gap>| !gapinput@Append( prim, pi );|
  !gapprompt@gap>| !gapinput@s:= CharacterTableWreathSymmetric( CharacterTable( "S5" ), 2 );;|
  !gapprompt@gap>| !gapinput@pi:= PossiblePermutationCharacters( s, t2 );;|
  !gapprompt@gap>| !gapinput@Append( prim, pi );|
  !gapprompt@gap>| !gapinput@Length( prim );|
  5
  !gapprompt@gap>| !gapinput@ord15:= PositionsProperty( OrdersClassRepresentatives( t2 ),|
  !gapprompt@>| !gapinput@                              x -> x = 15 );|
  [ 39, 40 ]
  !gapprompt@gap>| !gapinput@List( prim, pi -> pi{ ord15 } );|
  [ [ 1, 0 ], [ 2, 0 ], [ 2, 0 ], [ 1, 0 ], [ 1, 0 ] ]
  !gapprompt@gap>| !gapinput@List( ord15, i -> Maximum( ApproxP( prim, i ) ) );|
  [ 307/120, 0 ]
\end{Verbatim}
 

 Here it is appropriate to clean the workspace again. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_8^+(3)$}}\label{O8p3}
\logpage{[ 11, 5, 13 ]}
\hyperdef{L}{X78F0815B86253A1F}{}
{
  We show that $S = O_8^+(3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 863/1820$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $20$. 
\item[{(b)}]  For $s \in S$ of order $20$, ${{\mathbb M}}(S,s)$ consists of two nonconjugate groups of the type $O_7(3) = \Omega(7,3)$, two conjugate subgroups of the type $3^6:L_4(3)$, two nonconjugate subgroups of the type $(A_4 \times U_4(2)):2$, and one subgroup of each of the types $2.U_4(3).(2^2)_{122}$ and $(A_6 \times A_6):2^2$. 
\item[{(c)}]  $P(S) = 194/455$, and this value is attained exactly for $P(S,s)$ with $s$ of order $20$. 
\item[{(d)}]  The uniform spread of $S$ is at least three, with $s$ of order $20$. 
\item[{(e)}]  The preimage of $s$ in the matrix group $2.S = \Omega^+(8,3)$ can be chosen of order $40$, and then the maximal subgroups of $2.S$ containing $s$ have the structures $2.O_7(3)$, $3^6:2.L_4(3)$, $4.U_4(3).2^2 = {{\rm SU}}(4,3).2^2$, $2.(A_4 \times U_4(2)).2 = 2.({{\rm PSp}}(2,3) \otimes {{\rm PSp}}(4,3)).2$, and $2.(A_6 \times A_6):2^2 = 2.(\Omega^-(4,3) \times \Omega^-(4,3)):2^2$, respectively. 
\item[{(f)}]  For $s \in S$ of order $20$, we have $P^{\prime}(S.2_1, s) \in \{ 83/567, 574/1215 \}$, $P^{\prime}(S.2_2, s) \in \{ 0, 1 \}$ (depending on the choice of $s$), and ${{\sigma}}^{\prime}(S.3, s) = 0$. 

 Furthermore, for any choice of $s^{\prime} \in S$, we have ${{\sigma}}^{\prime}(S.2_2, s^{\prime}) = 1$ for some group $S.2_2$. However, if it is allowed to choose $s$ from an ${{\rm Aut}}(S)$-class of elements of order $20$ (and not from a fixed $S$-class) then we can achieve ${{\sigma}}(g,s) = 0$ for any given $g \in S.2_2 \setminus S$. 
\item[{(g)}]  The maximal subgroups of $S.2_1$ that contain an element of order $20$ are either $S$ and the extensions of the subgroups listed in statement{\nobreakspace}(b) or
they are $S$ and $L_4(3).2^2$, $3^6:L_4(3).2$ (twice), $2.U_4(3).(2^2)_{122}.2$, and $(A_6 \times A_6):2^2.2$. 

 In the former case, the groups have the structures $O_7(3):2$ (twice), $3^6:(L_4(3) \times 2)$ (twice), $S_4 \times U_4(2).2$ (twice), $2.U_4(3).(2^2)_{122}.2$, and $(A_6 \times A_6):2^2 \times 2$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O8+(3)" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "O8+(3)", 863/1820, 2, [ "20A", "20B", "20C" ], [ 8, 8, 8 ] ]
\end{Verbatim}
 

 Also statement{\nobreakspace}(b) follows from the information provided by the
character table of $S$ (cf.{\nobreakspace}\cite[p.{\nobreakspace}140]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@ord:= OrdersClassRepresentatives( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( ord, 20 );;|
  !gapprompt@gap>| !gapinput@filt:= PositionsProperty( prim, x -> x[ spos ] <> 0 );|
  [ 1, 2, 7, 15, 18, 19, 24 ]
  !gapprompt@gap>| !gapinput@Maxes( t ){ filt };|
  [ "O7(3)", "O8+(3)M2", "3^6:L4(3)", "2.U4(3).(2^2)_{122}", 
    "(A4xU4(2)):2", "O8+(3)M19", "(A6xA6):2^2" ]
  !gapprompt@gap>| !gapinput@prim{ filt }{ [ 1, spos ] };|
  [ [ 1080, 1 ], [ 1080, 1 ], [ 1120, 2 ], [ 189540, 1 ], 
    [ 7960680, 1 ], [ 7960680, 1 ], [ 9552816, 1 ] ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c), we first show that $P(S,s) = 194/455$ holds. Since this value is larger than $1/3$, we have to inspect only those classes $g^S$ for which ${{\sigma}}(g,s) \geq 1/3$ holds, 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord:= OrdersClassRepresentatives( t );;|
  !gapprompt@gap>| !gapinput@ord20:= PositionsProperty( ord, x -> x = 20 );;|
  !gapprompt@gap>| !gapinput@cand:= [];;|
  !gapprompt@gap>| !gapinput@for i in ord20 do|
  !gapprompt@>| !gapinput@     approx:= ApproxP( prim, i );|
  !gapprompt@>| !gapinput@     Add( cand, PositionsProperty( approx, x -> x >= 1/3 ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@cand;|
  [ [ 2, 6, 7, 10 ], [ 3, 6, 8, 11 ], [ 4, 6, 9, 12 ] ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ cand[1] };|
  [ "2A", "3A", "3B", "3E" ]
\end{Verbatim}
 

 The three possibilities form one orbit under the outer automorphism group of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t3:= CharacterTable( "O8+(3).3" );;|
  !gapprompt@gap>| !gapinput@tfust3:= GetFusionMap( t, t3 );;|
  !gapprompt@gap>| !gapinput@List( cand, x -> tfust3{ x } );|
  [ [ 2, 4, 5, 6 ], [ 2, 4, 5, 6 ], [ 2, 4, 5, 6 ] ]
\end{Verbatim}
 

 By symmetry, we may consider only the first possibility, and assume that $s$ is in the class \texttt{20A}. 

 We work with a permutation representation of degree $1\,080$, and assume that the permutation character is \texttt{1a+260a+819a}. (Note that all permutation characters of $S$ of degree $1\,080$ are conjugate under ${{\rm Aut}}(S)$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= Action( SO(1,8,3), NormedRowVectors( GF(3)^8 ), OnLines );;|
  !gapprompt@gap>| !gapinput@Size( g );|
  9904359628800
  !gapprompt@gap>| !gapinput@g:= DerivedSubgroup( g );;  Size( g );|
  4952179814400
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g, MovedPoints( g ) );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 1080, 1080, 1120 ]
  !gapprompt@gap>| !gapinput@g:= Action( g, orbs[1] );;|
  !gapprompt@gap>| !gapinput@PositionProperty( Irr( t ), chi -> chi[1] = 819 );|
  9
  !gapprompt@gap>| !gapinput@permchar:= Sum( Irr( t ){ [ 1, 2, 9 ] } );|
  Character( CharacterTable( "O8+(3)" ),
   [ 1080, 128, 0, 0, 24, 108, 135, 0, 0, 108, 0, 0, 27, 27, 0, 0, 18, 
    9, 12, 16, 0, 0, 4, 15, 0, 0, 20, 0, 0, 12, 11, 0, 0, 20, 0, 0, 15, 
    0, 0, 12, 0, 0, 2, 0, 0, 3, 3, 0, 0, 6, 6, 0, 0, 3, 2, 2, 2, 18, 0, 
    0, 9, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 0, 0, 12, 0, 0, 3, 0, 0, 0, 
    0, 0, 4, 3, 3, 0, 0, 1, 0, 0, 4, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 3, 
    0, 0, 2, 0, 0, 5, 0, 0, 1, 0, 0 ] )
\end{Verbatim}
 

 Now we show that for $s$ in the class \texttt{20A} (which fixes one point), the proportion of nongenerating elements $g$ in one of the classes \texttt{2A}, \texttt{3A}, \texttt{3B}, \texttt{3E} has the maximum $194/455$, which is attained exactly for \texttt{3A}. (We find a \texttt{2A} element as a power of $s$, a \texttt{3A} element as a power of any element of order $18$, a \texttt{3B} and a \texttt{3E} element as elements with $135$ and $108$ fixed points, respectively, which occur as powers of suitable elements of
order $15$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@permchar{ ord20 };|
  [ 1, 0, 0 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t )[ PowerMap( t, 10 )[ ord20[1] ] ];|
  "2A"
  !gapprompt@gap>| !gapinput@ord18:= PositionsProperty( ord, x -> x = 18 );;|
  !gapprompt@gap>| !gapinput@Set( AtlasClassNames( t ){ PowerMap( t, 6 ){ ord18 } } );|
  [ "3A" ]
  !gapprompt@gap>| !gapinput@ord15:= PositionsProperty( ord, x -> x = 15 );;|
  !gapprompt@gap>| !gapinput@PowerMap( t, 5 ){ ord15 };|
  [ 7, 8, 9, 10, 11, 12 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ [ 7 .. 12 ] };|
  [ "3B", "3C", "3D", "3E", "3F", "3G" ]
  !gapprompt@gap>| !gapinput@permchar{ [ 7 .. 12 ] };|
  [ 135, 0, 0, 108, 0, 0 ]
  !gapprompt@gap>| !gapinput@mp:= NrMovedPoints( g );;|
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat 20A:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( 20A ) = 20 and mp - NrMovedPoints( 20A ) = 1;|
  !gapprompt@gap>| !gapinput@2A:= 20A^10;;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g ); until Order( x ) = 18;|
  !gapprompt@gap>| !gapinput@3A:= x^6;;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( x ) = 15 and mp - NrMovedPoints( x^5 ) = 135;|
  !gapprompt@gap>| !gapinput@3B:= x^5;;|
  !gapprompt@gap>| !gapinput@repeat x:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( x ) = 15 and mp - NrMovedPoints( x^5 ) = 108;|
  !gapprompt@gap>| !gapinput@3E:= x^5;;|
  !gapprompt@gap>| !gapinput@nongen:= List( [ 2A, 3A, 3B, 3E ],|
  !gapprompt@>| !gapinput@                  c -> RatioOfNongenerationTransPermGroup( g, c, 20A ) );|
  [ 3901/9477, 194/455, 451/1092, 451/1092 ]
  !gapprompt@gap>| !gapinput@Maximum( nongen );|
  194/455
\end{Verbatim}
 

 Next we compute the values $P(g,s)$, for $g$ is in the class \texttt{3A} and certain elements $s$. It is enough to consider representatives $s$ of maximally cyclic subgroups in $S$, but here we can do better, as follows. Since \texttt{3A} is the unique class of length $72\,800$, it is fixed under ${{\rm Aut}}(S)$, so it is enough to consider one element $s$ from each ${{\rm Aut}}(S)$-orbit on the classes of $S$. We use the class fusion between the character tables of $S$ and ${{\rm Aut}}(S)$ for computing orbit representatives. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@maxorder:= RepresentativesMaximallyCyclicSubgroups( t );;|
  !gapprompt@gap>| !gapinput@Length( maxorder );|
  57
  !gapprompt@gap>| !gapinput@autt:= CharacterTable( "O8+(3).S4" );;|
  !gapprompt@gap>| !gapinput@fus:= PossibleClassFusions( t, autt );;|
  !gapprompt@gap>| !gapinput@orbreps:= Set( fus, map -> Set( ProjectionMap( map ) ) );|
  [ [ 1, 2, 5, 6, 7, 13, 17, 18, 19, 20, 23, 24, 27, 30, 31, 37, 43, 
        46, 50, 54, 55, 56, 57, 58, 64, 68, 72, 75, 78, 84, 85, 89, 95, 
        96, 97, 100, 106, 112 ] ]
  !gapprompt@gap>| !gapinput@totest:= Intersection( maxorder, orbreps[1] );|
  [ 43, 50, 54, 56, 57, 64, 68, 75, 78, 84, 85, 89, 95, 97, 100, 106, 
    112 ]
  !gapprompt@gap>| !gapinput@Length( totest );|
  17
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ totest };|
  [ "6Q", "6X", "6B1", "8A", "8B", "9G", "9K", "12A", "12D", "12J", 
    "12K", "12O", "13A", "14A", "15A", "18A", "20A" ]
\end{Verbatim}
 

 This means that we have to test one element of each of the element orders $13$, $14$, $15$, and $18$ (note that we know already a bound for elements of order $20$), plus certain elements of the orders $6$, $8$, $9$, and $12$ which can be identified by their centralizer orders and (for elements of order $6$ and $8$) perhaps the centralizer orders of some powers. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@elementstotest:= [];;|
  !gapprompt@gap>| !gapinput@for elord in [ 13, 14, 15, 18 ] do|
  !gapprompt@>| !gapinput@     repeat s:= Random( g );|
  !gapprompt@>| !gapinput@     until Order( s ) = elord;|
  !gapprompt@>| !gapinput@     Add( elementstotest, s );|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 The next elements to be tested are in the classes \texttt{6B1} (centralizer order $162$), in one of \texttt{9G}{\textendash}\texttt{9J} (centralizer order $729$), in one of \texttt{9K}{\textendash}\texttt{9N} (centralizer order $81$), in one of \texttt{12A}{\textendash}\texttt{12C} (centralizer order $1\,728$), in one of \texttt{12D}{\textendash}\texttt{12I} (centralizer order $432$), in \texttt{12J} (centralizer order $192$), in one of \texttt{12K}{\textendash}\texttt{12N} (centralizer order $108$), and in one of \texttt{12O}{\textendash}\texttt{12T} (centralizer order $72$). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ordcent:= [ [ 6, 162 ], [ 9, 729 ], [ 9, 81 ], [ 12, 1728 ],|
  !gapprompt@>| !gapinput@               [ 12, 432 ], [ 12, 192 ], [ 12, 108 ], [ 12, 72 ] ];;|
  !gapprompt@gap>| !gapinput@cents:= SizesCentralizers( t );;|
  !gapprompt@gap>| !gapinput@for pair in ordcent do|
  !gapprompt@>| !gapinput@     Print( pair, ": ", AtlasClassNames( t ){|
  !gapprompt@>| !gapinput@         Filtered( [ 1 .. Length( ord ) ],|
  !gapprompt@>| !gapinput@                   i -> ord[i] = pair[1] and cents[i] = pair[2] ) }, "\n" );|
  !gapprompt@>| !gapinput@     repeat s:= Random( g );|
  !gapprompt@>| !gapinput@     until Order( s ) = pair[1] and Size( Centralizer( g, s ) ) = pair[2];|
  !gapprompt@>| !gapinput@     Add( elementstotest, s );|
  !gapprompt@>| !gapinput@   od;|
  [ 6, 162 ]: [ "6B1" ]
  [ 9, 729 ]: [ "9G", "9H", "9I", "9J" ]
  [ 9, 81 ]: [ "9K", "9L", "9M", "9N" ]
  [ 12, 1728 ]: [ "12A", "12B", "12C" ]
  [ 12, 432 ]: [ "12D", "12E", "12F", "12G", "12H", "12I" ]
  [ 12, 192 ]: [ "12J" ]
  [ 12, 108 ]: [ "12K", "12L", "12M", "12N" ]
  [ 12, 72 ]: [ "12O", "12P", "12Q", "12R", "12S", "12T" ]
\end{Verbatim}
 

 The next elements to be tested are in one of the classes \texttt{6Q}{\textendash}\texttt{6S} (centralizer order $648$). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ Filtered( [ 1 .. Length( ord ) ],|
  !gapprompt@>| !gapinput@       i -> cents[i] = 648 and cents[ PowerMap( t, 2 )[i] ] = 52488|
  !gapprompt@>| !gapinput@                           and cents[ PowerMap( t, 3 )[i] ] = 26127360 ) };|
  [ "6Q", "6R", "6S" ]
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 6 and Size( Centralizer( g, s ) ) = 648|
  !gapprompt@>| !gapinput@     and Size( Centralizer( g, s^2 ) ) = 52488|
  !gapprompt@>| !gapinput@     and Size( Centralizer( g, s^3 ) ) = 26127360;|
  !gapprompt@gap>| !gapinput@Add( elementstotest, s );|
\end{Verbatim}
 

 The next elements to be tested are in the class \texttt{6X}{\textendash}\texttt{6A1} (centralizer order $648$). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ Filtered( [ 1 .. Length( ord ) ],|
  !gapprompt@>| !gapinput@       i -> cents[i] = 648 and cents[ PowerMap( t, 2 )[i] ] = 52488|
  !gapprompt@>| !gapinput@                           and cents[ PowerMap( t, 3 )[i] ] = 331776 ) };|
  [ "6X", "6Y", "6Z", "6A1" ]
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 6 and Size( Centralizer( g, s ) ) = 648|
  !gapprompt@>| !gapinput@     and Size( Centralizer( g, s^2 ) ) = 52488|
  !gapprompt@>| !gapinput@     and Size( Centralizer( g, s^3 ) ) = 331776;|
  !gapprompt@gap>| !gapinput@Add( elementstotest, s );|
\end{Verbatim}
 

 Finally, we add elements from the classes \texttt{8A} and \texttt{8B}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ Filtered( [ 1 .. Length( ord ) ],|
  !gapprompt@>| !gapinput@       i -> ord[i] = 8 and cents[ PowerMap( t, 2 )[i] ] = 13824 ) };|
  [ "8A" ]
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 8 and Size( Centralizer( g, s^2 ) ) = 13824;|
  !gapprompt@gap>| !gapinput@Add( elementstotest, s );|
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ Filtered( [ 1 .. Length( ord ) ],|
  !gapprompt@>| !gapinput@       i -> ord[i] = 8 and cents[ PowerMap( t, 2 )[i] ] = 1536 ) };|
  [ "8B" ]
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 8 and Size( Centralizer( g, s^2 ) ) = 1536;|
  !gapprompt@gap>| !gapinput@Add( elementstotest, s );|
\end{Verbatim}
 

 Now we compute the ratios. It turns out that from these candidates, only
elements $s$ of the orders $14$ and $15$ satisfy $P(g,s) < 194/455$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nongen:= List( elementstotest,|
  !gapprompt@>| !gapinput@                  s -> RatioOfNongenerationTransPermGroup( g, 3A, s ) );;|
  !gapprompt@gap>| !gapinput@smaller:= PositionsProperty( nongen, x -> x < 194/455 );|
  [ 2, 3 ]
  !gapprompt@gap>| !gapinput@nongen{ smaller };|
  [ 127/325, 1453/3640 ]
\end{Verbatim}
 

 So the only candidates for $s$ that may be better than order $20$ elements are elements of order $14$ or $15$. In order to exclude these two possibilities, we compute $P(g,s)$ for $s$ in the class \texttt{14A} and $g = s^7$ in the class \texttt{2A}, and for $s$ in the class \texttt{15A} and $g$ in the class \texttt{2A}, which yields values that are larger than $194/455$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 14 and NrMovedPoints( s ) = 1078;|
  !gapprompt@gap>| !gapinput@2A:= s^7;;|
  !gapprompt@gap>| !gapinput@nongen:= RatioOfNongenerationTransPermGroup( g, 2A, s );|
  1573/3645
  !gapprompt@gap>| !gapinput@nongen > 194/455;|
  true
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 15 and NrMovedPoints( s ) = 1080 - 3;|
  !gapprompt@gap>| !gapinput@nongen:= RatioOfNongenerationTransPermGroup( g, 2A, s );|
  490/1053
  !gapprompt@gap>| !gapinput@nongen > 194/455;|
  true
\end{Verbatim}
 

 For statement{\nobreakspace}(d), we show that for each triple of elements in
the union of the classes \texttt{2A}, \texttt{3A}, \texttt{3B}, \texttt{3E} there is an element in the class \texttt{20A} that generates $S$ together with each element of the triple. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@for tup in UnorderedTuples( [ 2A, 3A, 3B, 3E ], 3 ) do|
  !gapprompt@>| !gapinput@     cl:= ShallowCopy( tup );|
  !gapprompt@>| !gapinput@     test:= RandomCheckUniformSpread( g, cl, 20A, 100 );|
  !gapprompt@>| !gapinput@     if test <> true then|
  !gapprompt@>| !gapinput@       Error( test );|
  !gapprompt@>| !gapinput@     fi;|
  !gapprompt@>| !gapinput@   od;|
\end{Verbatim}
 

 We get no error message, so statement{\nobreakspace}(d) is true. 

 For statement{\nobreakspace}(e), first we show that $2.S = \Omega^+(8,3)$ contains elements of order $40$ but $S$ does not. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( SO(1,8,3) );;|
  !gapprompt@gap>| !gapinput@repeat x:= PseudoRandom( der ); until Order( x ) = 40;|
  !gapprompt@gap>| !gapinput@40 in ord;|
  false
\end{Verbatim}
 

 Thus elements of order $40$ must arise as preimages of order $20$ elements under the natural epimorphism from $2.S$ to $S$, which means that we may choose an order $40$ preimage $\hat{s}$ of $s$. Then ${{\mathbb M}}(2.S, \hat{s})$ consists of central extensions of the subgroups listed in
statement{\nobreakspace}(b). The perfect subgroups $O_7(3)$, $L_4(3)$, $2.U_4(3)$, and $U_4(2)$ of these groups must lift to their Schur double covers in $2.S$ because otherwise the preimages would not contain elements of order $40$. 

 Next we consider the preimage of the subgroup $U = (A_4 \times U_4(2)).2$ of $S$. We show that the preimages of the two direct factors $A_4$ and $U_4(2)$ in $U^{\prime} = A_4 \times U_4(2)$ are Schur covers. For $A_4$, this follows from the fact that the preimage of $U^{\prime}$ must contain elements of order $20$, and that $U_4(2)$ does not contain elements of order $10$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u42:= CharacterTable( "U4(2)" );;|
  !gapprompt@gap>| !gapinput@Filtered( OrdersClassRepresentatives( u42 ), x -> x mod 5 = 0 );|
  [ 5 ]
\end{Verbatim}
 

 In order to show that the $U_4(2)$ type subgroup of $U^{\prime}$ lifts to its double cover in $2.S$, we note that the class \texttt{2B} of $U_4(2)$ lifts to a class of elements of order four in the double cover $2.U_4(2)$, and that the corresponding class of elements in $U$ is $S$-conjugate to the class of involutions in the direct factor $A_4$ (which is the unique class of length three in $U$). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( Maxes( t )[18] );|
  CharacterTable( "(A4xU4(2)):2" )
  !gapprompt@gap>| !gapinput@2u42:= CharacterTable( "2.U4(2)" );;|
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( 2u42 )[4];|
  4
  !gapprompt@gap>| !gapinput@GetFusionMap( 2u42, u42 )[4];|
  3
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( u42 )[3];|
  2
  !gapprompt@gap>| !gapinput@List( PossibleClassFusions( u42, u ), x -> x[3] );|
  [ 8 ]
  !gapprompt@gap>| !gapinput@PositionsProperty( SizesConjugacyClasses( u ), x -> x = 3 );|
  [ 2 ]
  !gapprompt@gap>| !gapinput@ForAll( PossibleClassFusions( u, t ), x -> x[2] = x[8] );|
  true
\end{Verbatim}
 

     

 The last subgroup for which the structure of the preimage has to be shown is $U = (A_6 \times A_6):2^2$. We claim that each of the $A_6$ type subgroups in the derived subgroup $U^{\prime} = A_6 \times A_6$ lifts to its double cover in $2.S$. Since all elements of order $20$ in $U$ lie in $U^{\prime}$, at least one of the two direct factors must lift to its double cover, in
order to give rise to an order $40$ element in $U$. In fact both factors lift to the double cover since the two direct factors
are interchanged by conjugation in $U$; the latter follows form tha fact that $U$ has no normal subgroup of type $A_6$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= CharacterTable( Maxes( t )[24] );|
  CharacterTable( "(A6xA6):2^2" )
  !gapprompt@gap>| !gapinput@ClassPositionsOfDerivedSubgroup( u );|
  [ 1 .. 22 ]
  !gapprompt@gap>| !gapinput@PositionsProperty( OrdersClassRepresentatives( u ), x -> x = 20 );|
  [ 8 ]
  !gapprompt@gap>| !gapinput@List( ClassPositionsOfNormalSubgroups( u ),|
  !gapprompt@>| !gapinput@         x -> Sum( SizesConjugacyClasses( u ){ x } ) );|
  [ 1, 129600, 259200, 259200, 259200, 518400 ]
\end{Verbatim}
 

 So statement{\nobreakspace}(e) holds. 

 For statement{\nobreakspace}(f), we have to consider the upward extensions $S.2_1$, $S.2_2$, and $S.3$. 

 First we look at $S.2_1$, an extension by an outer automorphism that acts as a double transposition in
the outer automorphism group $S_4$. Note that the symmetry between the three classes of element oder $20$ in $S$ is broken in $S.2_1$, two of these classes have square roots in $S.2_1$, the third has not. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "O8+(3).2_1" );;|
  !gapprompt@gap>| !gapinput@ord20:= PositionsProperty( OrdersClassRepresentatives( t2 ),|
  !gapprompt@>| !gapinput@               x -> x = 20 );;|
  !gapprompt@gap>| !gapinput@ord20:= Intersection( ord20, ClassPositionsOfDerivedSubgroup( t2 ) );|
  [ 84, 85, 86 ]
  !gapprompt@gap>| !gapinput@List( ord20, x -> x in PowerMap( t2, 2 ) );|
  [ false, true, true ]
\end{Verbatim}
 

 Changing the viewpoint, we see that for each class of element order $20$ in $S$, there is a group of the type $S.2_1$ in which the elements in this class do not have square roots, and there are
groups of this type in which these elements have square roots. So we have to
deal with two different cases, and we do this by first collecting the
permutation characters induced from \emph{all} maximal subgroups of $S.2_1$ (other than $S$) that contain elements of order $20$ in $S$, and then considering $s$ in each of these classes of $S$. 

 We fix an embedding of $S$ into $S.2_1$ in which the elements in the class \texttt{20A} do not have square roots. This situation is given for the stored class fusion
between the tables in the \textsf{GAP} Character Table Library. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tfust2:= GetFusionMap( t, t2 );;|
  !gapprompt@gap>| !gapinput@tfust2{ PositionsProperty( OrdersClassRepresentatives( t ),|
  !gapprompt@>| !gapinput@               x -> x = 20 ) };|
  [ 84, 85, 86 ]
\end{Verbatim}
 

 The six different actions of $S$ on the cosets of $O_7(3)$ type subgroups induce pairwise different permutation characters that form an
orbit under the action of ${{\rm Aut}}(S)$. Four of these characters cannot extend to $S.2_1$, the other two extend to permutation characters of $S.2_1$ on the cosets of $O_7(3).2$ type subgroups; these subgroups contain \texttt{20A} elements. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@primt2:= [];;|
  !gapprompt@gap>| !gapinput@poss:= PossiblePermutationCharacters( CharacterTable( "O7(3)" ), t );;|
  !gapprompt@gap>| !gapinput@invfus:= InverseMap( tfust2 );;|
  !gapprompt@gap>| !gapinput@List( poss, pi -> ForAll( CompositionMaps( pi, invfus ), IsInt ) );|
  [ false, false, false, false, true, true ]
  !gapprompt@gap>| !gapinput@PossiblePermutationCharacters(|
  !gapprompt@>| !gapinput@       CharacterTable( "O7(3)" ) * CharacterTable( "Cyclic", 2 ), t2 );|
  [  ]
  !gapprompt@gap>| !gapinput@ext:= PossiblePermutationCharacters( CharacterTable( "O7(3).2" ), t2 );;|
  !gapprompt@gap>| !gapinput@List( ext, pi -> pi{ ord20 } );|
  [ [ 1, 0, 0 ], [ 1, 0, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 The novelties in $S.2_1$ that arise from $O_7(3)$ type subgroups of $S$ have the structure $L_4(3).2^2$. These subgroups contain elements in the classes \texttt{20B} and \texttt{20C} of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ext:= PossiblePermutationCharacters( CharacterTable( "L4(3).2^2" ), t2 );;|
  !gapprompt@gap>| !gapinput@List( ext, pi -> pi{ ord20 } );|
  [ [ 0, 0, 1 ], [ 0, 1, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 Note that from the possible permutation characters of $S.2_1$ on the cosets of $L_4(3):2 \times 2$ type subgroups, we see that such subgroups must contain \texttt{20A} elements, i.{\nobreakspace}e., all such subgroups of $S.2_1$ lie inside $O_7(3).2$ type subgroups. This means that the structure description of these novelties
in{\nobreakspace}\cite[p.{\nobreakspace}140]{CCN85} is not correct. The correct structure is $L_4(3).2^2$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@List( PossiblePermutationCharacters( CharacterTable( "L4(3).2_2" ) *|
  !gapprompt@>| !gapinput@             CharacterTable( "Cyclic", 2 ), t2 ), pi -> pi{ ord20 } );|
  [ [ 1, 0, 0 ] ]
\end{Verbatim}
 

 All $3^6:L_4(3)$ type subgroups of $S$ extend to $S.2_1$. We compute these permutation characters as the possible permutation
characters of the right degree. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ext:= PermChars( t2, rec( torso:= [ 1120 ] ) );;|
  !gapprompt@gap>| !gapinput@List( ext, pi -> pi{ ord20 } );|
  [ [ 2, 0, 0 ], [ 0, 0, 2 ], [ 0, 2, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 Also all $2.U_4(3).2^2$ type subgroups of $S$ extend to $S.2_1$. We compute the permutation characters as the extensions of the corresponding
permutation characters of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( prim, x -> x[1] = 189540 );;|
  !gapprompt@gap>| !gapinput@cand:= List( filt, x -> CompositionMaps( x, invfus ) );;|
  !gapprompt@gap>| !gapinput@ext:= Concatenation( List( cand,|
  !gapprompt@>| !gapinput@             pi -> PermChars( t2, rec( torso:= pi ) ) ) );;|
  !gapprompt@gap>| !gapinput@List( ext, x -> x{ ord20 } );|
  [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 The extensions of $(A_4 \times U_4(2)):2$ type subgroups of $S$ to $S.2_1$ have the type $S_4 \times U_4(2):2$, they contain \texttt{20A} elements. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ext:= PossiblePermutationCharacters( CharacterTable( "Symmetric", 4 ) *|
  !gapprompt@>| !gapinput@             CharacterTable( "U4(2).2" ), t2 );;|
  !gapprompt@gap>| !gapinput@List( ext, x -> x{ ord20 } );|
  [ [ 1, 0, 0 ], [ 1, 0, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 All $(A_6 \times A_6):2^2$ type subgroups of $S$ extend to $S.2_1$. We compute the permutation characters as the extensions of the corresponding
permutation characters of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( prim, x -> x[1] = 9552816 );;|
  !gapprompt@gap>| !gapinput@cand:= List( filt, x -> CompositionMaps( x, InverseMap( tfust2 ) ));;|
  !gapprompt@gap>| !gapinput@ext:= Concatenation( List( cand,|
  !gapprompt@>| !gapinput@             pi -> PermChars( t2, rec( torso:= pi ) ) ) );;|
  !gapprompt@gap>| !gapinput@List( ext, x -> x{ ord20 } );|
  [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 We have found all relevant permutation characters of $S.2_1$. This together with the list in{\nobreakspace}\cite[p.{\nobreakspace}140]{CCN85} implies statement{\nobreakspace}(g). 

 Now we compute the bounds ${{\sigma}}^{\prime}(S.2_1, s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Length( primt2 );|
  15
  !gapprompt@gap>| !gapinput@approx:= List( ord20, x -> ApproxP( primt2, x ) );;|
  !gapprompt@gap>| !gapinput@outer:= Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) );;|
  !gapprompt@gap>| !gapinput@List( approx, l -> Maximum( l{ outer } ) );|
  [ 574/1215, 83/567, 83/567 ]
\end{Verbatim}
 

 Next we look at $S.2_2$, an extension by an outer automorphism that acts as a transposition in the
outer automorphism group $S_4$. Similar to the above situation, the symmetry between the three classes of
element oder $20$ in $S$ is broken also in $S.2_2$: The first is a conjugacy class of $S.2_2$, the other two classes are fused in $S.2_2$, 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "O8+(3).2_2" );;|
  !gapprompt@gap>| !gapinput@ord20:= PositionsProperty( OrdersClassRepresentatives( t2 ),|
  !gapprompt@>| !gapinput@               x -> x = 20 );;|
  !gapprompt@gap>| !gapinput@ord20:= Intersection( ord20, ClassPositionsOfDerivedSubgroup( t2 ) );|
  [ 82, 83 ]
  !gapprompt@gap>| !gapinput@tfust2:= GetFusionMap( t, t2 );;|
  !gapprompt@gap>| !gapinput@tfust2{ PositionsProperty( OrdersClassRepresentatives( t ),|
  !gapprompt@>| !gapinput@               x -> x = 20 ) };|
  [ 82, 83, 83 ]
\end{Verbatim}
 

 Like in the case $S.2_1$, we compute the permutation characters induced from \emph{all} maximal subgroups of $S.2_2$ (other than $S$) that contain elements of order $20$ in $S$. 

 We fix the embedding of $S$ into $S.2_2$ in which the class \texttt{20A} of $S$ is a class of $S.2_2$. This situation is given for the stored class fusion between the tables in
the \textsf{GAP} Character Table Library. 

 Exactly two classes of $O_7(3)$ type subgroups in $S$ extend to $S.2_2$, these groups contain \texttt{20A} elements. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@primt2:= [];;|
  !gapprompt@gap>| !gapinput@ext:= PermChars( t2, rec( torso:= [ 1080 ] ) );;|
  !gapprompt@gap>| !gapinput@List( ext, pi -> pi{ ord20 } );|
  [ [ 1, 0 ], [ 1, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 Only one class of $3^6:L_4(3)$ type subgroups extends to $S.2_2$. (Note that we need not consider the novelties of the type $3^{3+6}:(L_3(3) \times 2)$, because the order of these groups is not divisible by $5$.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ext:= PermChars( t2, rec( torso:= [ 1120 ] ) );;|
  !gapprompt@gap>| !gapinput@List( ext, pi -> pi{ ord20 } );|
  [ [ 2, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 Only one class of $2.U_4(3).2^2$ type subgroups of $S$ extends to $S.2_2$. We compute the permutation character as the extension of the corresponding
permutation characters of $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( prim, x -> x[1] = 189540 );;|
  !gapprompt@gap>| !gapinput@cand:= List( filt, x -> CompositionMaps( x, InverseMap( tfust2 ) ));;|
  !gapprompt@gap>| !gapinput@ext:= Concatenation( List( cand,|
  !gapprompt@>| !gapinput@             pi -> PermChars( t2, rec( torso:= pi ) ) ) );;|
  !gapprompt@gap>| !gapinput@List( ext, x -> x{ ord20 } );|
  [ [ 1, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 Two classes of $(A_4 \times U_4(2)):2$ type subgroups of $S$ extend to $S.2_2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@filt:= Filtered( prim, x -> x[1] = 7960680 );;|
  !gapprompt@gap>| !gapinput@cand:= List( filt, x -> CompositionMaps( x, InverseMap( tfust2 ) ));;|
  !gapprompt@gap>| !gapinput@ext:= Concatenation( List( cand,|
  !gapprompt@>| !gapinput@             pi -> PermChars( t2, rec( torso:= pi ) ) ) );;|
  !gapprompt@gap>| !gapinput@List( ext, x -> x{ ord20 } );|
  [ [ 1, 0 ], [ 1, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 Exactly one class of $(A_6 \times A_6):2^2$ type subgroups in $S$ extends to $S.2_2$, and the extensions have the structure $S_6 \wr 2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ext:= PossiblePermutationCharacters( CharacterTableWreathSymmetric(|
  !gapprompt@>| !gapinput@             CharacterTable( "S6" ), 2 ), t2 );;|
  !gapprompt@gap>| !gapinput@List( ext, x -> x{ ord20 } );|
  [ [ 1, 0 ] ]
  !gapprompt@gap>| !gapinput@Append( primt2, ext );|
\end{Verbatim}
 

 We have found all relevant permutation characters of $S.2_2$, and compute the bounds ${{\sigma}}^{\prime}(S.2_2, s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Length( primt2 );|
  7
  !gapprompt@gap>| !gapinput@approx:= List( ord20, x -> ApproxP( primt2, x ) );;|
  !gapprompt@gap>| !gapinput@outer:= Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) );;|
  !gapprompt@gap>| !gapinput@List( approx, l -> Maximum( l{ outer } ) );|
  [ 14/9, 0 ]
\end{Verbatim}
 

 This means that there is an extension of the type $S.2_2$ in which $s$ cannot be chosen such that the bound is less than $1/2$. More precisely, we have ${{\sigma}}(g,s) \geq 1/2$ exactly for $g$ in the unique outer involution class of size $1\,080$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( primt2, ord20[1] );;|
  !gapprompt@gap>| !gapinput@bad:= Filtered( outer, i -> approx[i] >= 1/2 );|
  [ 84 ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t2 ){ bad };|
  [ 2 ]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( t2 ){ bad };|
  [ 1080 ]
  !gapprompt@gap>| !gapinput@Number( SizesConjugacyClasses( t2 ), x -> x = 1080 );|
  1
\end{Verbatim}
 

 So we compute the proportion of elements in this class that generate $S.2_2$ together with an element $s$ of order $20$ in $S$. (As above, we have to consider two conjugacy classes.) For that, we first
compute a permutation representation of $S.2_2$, using that $S.2_2$ is isomporphic to the two subgroups of index $2$ in ${{\rm PGO}}^+(8,3) = O_8^+(3).2^2_{122}$ that are different from ${{\rm PSO}}^+(8,3) = O_8^+(3).2_1$, cf.{\nobreakspace}\cite[p.{\nobreakspace}140]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@go:= GO(1,8,3);;|
  !gapprompt@gap>| !gapinput@so:= SO(1,8,3);;|
  !gapprompt@gap>| !gapinput@outerelm:= First( GeneratorsOfGroup( go ), x -> not x in so );;|
  !gapprompt@gap>| !gapinput@g2:= ClosureGroup( DerivedSubgroup( so ), outerelm );;|
  !gapprompt@gap>| !gapinput@Size( g2 );|
  19808719257600
  !gapprompt@gap>| !gapinput@dom:= NormedRowVectors( GF(3)^8 );;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g2, dom, OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 1080, 1080, 1120 ]
  !gapprompt@gap>| !gapinput@act:= Action( g2, orbs[1], OnLines );;|
\end{Verbatim}
 

 An involution $g$ can be found as a power of one of the given generators. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Order( outerelm );|
  26
  !gapprompt@gap>| !gapinput@g:= Permutation( outerelm^13, orbs[1], OnLines );;|
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( act, g ) );|
  1080
\end{Verbatim}
 

 Now we find the candidates for the elements $s$, and compute their ratios of nongeneration. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ord20;|
  [ 82, 83 ]
  !gapprompt@gap>| !gapinput@SizesCentralizers( t2 ){ ord20 };|
  [ 40, 20 ]
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( act );;|
  !gapprompt@gap>| !gapinput@repeat 20A:= Random( der );|
  !gapprompt@>| !gapinput@   until Order( 20A ) = 20 and Size( Centralizer( act, 20A ) ) = 40;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( act, g, 20A );|
  1
  !gapprompt@gap>| !gapinput@repeat 20BC:= Random( der );|
  !gapprompt@>| !gapinput@   until Order( 20BC ) = 20 and Size( Centralizer( act, 20BC ) ) = 20;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( act, g, 20BC );|
  0
\end{Verbatim}
 

 This means that for $s$ in one $S$-class of elements of order $20$, we have $P^{\prime}(g, s) = 1$, and $s$ in the other two $S$-classes of elements of order $20$ generates with any conjugate of $g$. 

 Concerning $S.2_2$, it remains to show that we cannot find a better element than $s$. For that, we first compute class representatives $s^{\prime}$ in $S$, w.r.t.{\nobreakspace}conjugacy in $S.2_2$, and then compute $P^{\prime}( s^{\prime}, g )$. (It would be enough to check representatives of classes of maximal element
order, but computing all classes is easy enough.) 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ccl:= ConjugacyClasses( act );;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( act );;|
  !gapprompt@gap>| !gapinput@reps:= Filtered( List( ccl, Representative ), x -> x in der );;|
  !gapprompt@gap>| !gapinput@Length( reps );|
  83
  !gapprompt@gap>| !gapinput@ratios:= List( reps,|
  !gapprompt@>| !gapinput@                  s -> RatioOfNongenerationTransPermGroup( act, g, s ) );;|
  !gapprompt@gap>| !gapinput@cand:= PositionsProperty( ratios, x -> x < 1 );;|
  !gapprompt@gap>| !gapinput@ratios:= ratios{ cand };;|
  !gapprompt@gap>| !gapinput@SortParallel( ratios, cand );|
  !gapprompt@gap>| !gapinput@ratios;|
  [ 0, 1/10, 1/10, 16/135, 1/3, 1/3, 11/27, 7/15, 7/15 ]
\end{Verbatim}
 

 For $S.2_2$, it remains to show that there is no element $s^{\prime} \in S$ such that $P^{\prime}( {s^{\prime}}^x, g ) < 1$ holds for any $x \in {{\rm Aut}}(S)$ and $g \in S.2_2$. So we are done when we can show that each class given by \texttt{cand} is conjugate in $S.3$ to a class outside \texttt{cand}. The classes can be identified by element orders and centralizer orders. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@invs:= List( cand,|
  !gapprompt@>| !gapinput@      x -> [ Order( reps[x] ), Size( Centralizer( der, reps[x] ) ) ] );|
  [ [ 20, 20 ], [ 18, 108 ], [ 18, 108 ], [ 14, 28 ], [ 15, 45 ], 
    [ 15, 45 ], [ 10, 40 ], [ 12, 72 ], [ 12, 72 ] ]
\end{Verbatim}
 

 Namely, \texttt{cand} contains no full $S.3$-orbit of classes of the element orders $20$, $18$, $14$, $15$, and $10$; also, \texttt{cand} does not contain full $S.3$-orbits on the classes \texttt{12O}{\textendash}\texttt{12T}. 

 Finally, we deal with $S.3$. The fact that no maximal subgroup of $S$ containing an element of order $20$ extends to $S.3$ follows either from the list of maximal subgroups of $S$ in{\nobreakspace}\cite[p.{\nobreakspace}140]{CCN85} or directly from the permutation characters. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t3:= CharacterTable( "O8+(3).3" );;|
  !gapprompt@gap>| !gapinput@tfust3:= GetFusionMap( t, t3 );;|
  !gapprompt@gap>| !gapinput@inv:= InverseMap( tfust3 );;|
  !gapprompt@gap>| !gapinput@filt:= PositionsProperty( prim, x -> x[ spos ] <> 0 );;|
  !gapprompt@gap>| !gapinput@ForAll( prim{ filt },|
  !gapprompt@>| !gapinput@           pi -> ForAny( CompositionMaps( pi, inv ), IsList ) );|
  true
\end{Verbatim}
 

 So we have to consider only the classes of novelties in $S.3$, but the order of none of these groups is divisible by $20$ {\textendash}again see{\nobreakspace}\cite[p.{\nobreakspace}140]{CCN85}). This means that \emph{any} element in $S.3 \setminus S$ together with an element of order $20$ in $S$ generates $S.3$. This is in fact stronger than statement{\nobreakspace}(f), which claims this
property only for elements of prime order in $S.3 \setminus S$ (and their roots); note that $S.3 \setminus S$ contains elements of the orders $9$ and $27$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@outer:= Difference( [ 1 .. NrConjugacyClasses( t3 ) ],|
  !gapprompt@>| !gapinput@               ClassPositionsOfDerivedSubgroup( t3 ) );|
  [ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
    70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 
    87, 88, 89, 90, 91, 92, 93, 94 ]
  !gapprompt@gap>| !gapinput@Set( OrdersClassRepresentatives( t3 ){ outer } );|
  [ 3, 6, 9, 12, 18, 21, 24, 27, 36, 39 ]
\end{Verbatim}
 

 Before we turn to the next computations, we clean the workspace. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O^+_8(4)$}}\label{O8p4}
\logpage{[ 11, 5, 14 ]}
\hyperdef{L}{X85BACC4A83F73392}{}
{
  We show that $S = O^+_8(4) = \Omega^+(8,4)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For suitable $s \in S$ of the type $2^- \perp 6^-$ (i.{\nobreakspace}e., $s$ decomposes the natural $8$-dimensional module for $S$ into an orthogonal sum of two irreducible modules of the dimensions $2$ and $6$, respectively) and of order $65$, ${{\mathbb M}}(S,s)$ consists of exactly three pairwise nonconjugate subgroups of the type $(5 \times O^-_6(4)).2 = (5 \times \Omega^-(6,4)).2$. 
\item[{(b)}]  ${{\sigma}}( S, s ) \leq 34\,817 / 1\,645\,056$. 
\item[{(c)}]  In the extensions $S.2_1$ and $S.3$ of $S$ by graph automorphisms, there is at most one maximal subgroup besides $S$ that contains $s$. For the extension $S.2_2$ of $S$ by a field automorphism, we have ${{\sigma}}^{\prime}(S.2_2, s) = 0$. In the extension $S.2_3$ of $S$ by the product of an involutory graph automorphism and a field automorphism,
there is a unique maximal subgroup besides $S$ that contains $s$. 
\end{description}
 

 A safe source for determining ${{\mathbb M}}(S,s)$ is{\nobreakspace}\cite{Kle87}.                      By inspection of the result matrix in this paper, we get that the only maximal
subgroups of $S$ that contain elements of order $65$ occur in the rows 9{\textendash}14 and 23{\textendash}25; they have the
isomorphism types $S_6(4) = {{\rm Sp}}(6,4) \cong O_7(4) = \Omega(7,4)$ and $(5 \times O_6^-(4)).2 = (5 \times \Omega^-(6,4)).2$, respectively, and for each of these, there are three conjugacy classes of
subgroups in $S$, which are conjugate under the triality graph automorphism of $S$. 

 We start with the natural matrix representation of $S$. For convenience, we compute an isomorphic permutation group on $5\,525$ points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@q:= 4;;  n:= 8;;|
  !gapprompt@gap>| !gapinput@G:= DerivedSubgroup( SO( 1, n, q ) );;|
  !gapprompt@gap>| !gapinput@points:= NormedRowVectors( GF(q)^n );;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( G, points, OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 5525, 16320 ]
  !gapprompt@gap>| !gapinput@hom:= ActionHomomorphism( G, orbs[1], OnLines );;|
  !gapprompt@gap>| !gapinput@G:= Image( hom );;|
\end{Verbatim}
 

 The group $S$ contains exactly six conjugacy classes of (cyclic) subgroups of order $65$; this follows from the fact that the centralizer of any Sylow $13$ subgroup in $S$ has the structure $5 \times 5 \times 13$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Collected( Factors( Size( G ) ) );|
  [ [ 2, 24 ], [ 3, 5 ], [ 5, 4 ], [ 7, 1 ], [ 13, 1 ], [ 17, 2 ] ]
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat x:= Random( G );|
  !gapprompt@>| !gapinput@   until Order( x ) mod 13 = 0;|
  !gapprompt@gap>| !gapinput@x:= x^( Order( x ) / 13 );;|
  !gapprompt@gap>| !gapinput@c:= Centralizer( G, x );;|
  !gapprompt@gap>| !gapinput@IsAbelian( c );  AbelianInvariants( c );|
  true
  [ 5, 5, 13 ]
\end{Verbatim}
 

 The group $S_6(4)$ contains exactly one class of subgroups of order $65$, since the conjugacy classes of elements of order $65$ in $S_6(4)$ are algebraically conjugate. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S6(4)" );;|
  !gapprompt@gap>| !gapinput@ord65:= PositionsProperty( OrdersClassRepresentatives( t ),|
  !gapprompt@>| !gapinput@                              x -> x = 65 );|
  [ 105, 106, 107, 108, 109, 110, 111, 112 ]
  !gapprompt@gap>| !gapinput@ord65 = ClassOrbit( t, ord65[1] );|
  true
\end{Verbatim}
 

 Thus there are at least three classes of order $65$ elements in $S$ that are \emph{not} contained in $S_6(4)$ type subgroups of $S$. So we choose such an element $s$, and have to consider only overgroups of the type $(5 \times \Omega^-(6,4)).2$. 

 The group $\Omega^-(6,4) \cong U_4(4)$ contains exactly one class of subgroups of order $65$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U4(4)" );;|
  !gapprompt@gap>| !gapinput@ords:= OrdersClassRepresentatives( t );;|
  !gapprompt@gap>| !gapinput@ord65:= PositionsProperty( ords, x -> x = 65 );;|
  !gapprompt@gap>| !gapinput@ord65 = ClassOrbit( t, ord65[1] );|
  true
\end{Verbatim}
 

 So $5 \times \Omega^-(6,4)$ contains exactly six such classes. Furthermore, subgroups in different classes
are not $S$-conjugate. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@syl5:= SylowSubgroup( c, 5 );;|
  !gapprompt@gap>| !gapinput@elms:= Filtered( Elements( syl5 ), y -> Order( y ) = 5 );;|
  !gapprompt@gap>| !gapinput@reps:= Set( elms, SmallestGeneratorPerm );;  Length( reps );|
  6
  !gapprompt@gap>| !gapinput@reps65:= List( reps, y -> SubgroupNC( G, [ y * x ] ) );;|
  !gapprompt@gap>| !gapinput@pairs:= Filtered( UnorderedTuples( [ 1 .. 6 ], 2 ),|
  !gapprompt@>| !gapinput@                     p -> p[1] <> p[2] );;|
  !gapprompt@gap>| !gapinput@ForAny( pairs, p -> IsConjugate( G, reps65[ p[1] ], reps65[ p[2] ] ) );|
  false
\end{Verbatim}
 

 We consider only subgroups $M \leq S$ in the three $S$-classes of the type $(5 \times \Omega^-(6,4)).2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@cand:= List( reps, y -> Normalizer( G, SubgroupNC( G, [ y ] ) ) );;|
  !gapprompt@gap>| !gapinput@cand:= Filtered( cand, y -> Size( y ) = 10 * Size( t ) );;|
  !gapprompt@gap>| !gapinput@Length( cand );|
  3
\end{Verbatim}
 

  

 (Note that one of the members in ${{\mathbb M}}(S,s)$ is the stabilizer in $S$ of the orthogonal decomposition $2^- \perp 6^-$, the other two members are not reducible.) 

 By the above, the classes of subgroups of order $65$ in each such $M$ are in bijection with the corresponding classes in $S$. Since $N_S(\langle g \rangle) \subseteq M$ holds for any $g \in M$ of order $65$, also the conjugacy classes of \emph{elements} of order $65$ in $M$ are in bijection with those in $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@norms:= List( reps65, y -> Normalizer( G, y ) );;|
  !gapprompt@gap>| !gapinput@ForAll( norms, y -> ForAll( cand, M -> IsSubset( M, y ) ) );|
  true
\end{Verbatim}
 

 As a consequence, we have $g^S \cap M = g^M$ and thus $1_M^S(g) = 1$. This implies statement{\nobreakspace}(a). 

 In order to show statement{\nobreakspace}(b), we want to use the function \texttt{UpperBoundFixedPointRatios} introduced in Section{\nobreakspace}\ref{subsect:groups}. For that, we first compute the conjugacy classes of the three class
representatives $M$. (Since the groups have elementary abelian Sylow $5$ subgroups of the order $5^4$, computing all conjugacy classes appears to be faster than using \texttt{ClassesOfPrimeOrder}.) Then we compute an upper bound for ${{\sigma}}(S,s)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@syl5:= SylowSubgroup( cand[1], 5 );;|
  !gapprompt@gap>| !gapinput@Size( syl5 );  IsElementaryAbelian( syl5 );|
  625
  true
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( G, List( cand, ConjugacyClasses ), false );|
  [ 34817/1645056, false ]
\end{Verbatim}
 

 \emph{Remark:} 

 Computing the exact value ${{\sigma}}(S,s)$ in the above setup would require to test the $S$-conjugacy of certain order $5$ elements in $M$. With the current \textsf{GAP} implementation, some of the relevant tests need several hours of CPU time. 

 An alternative approach would be to compute the permutation action of $S$ on the cosets of $M$, of degree $6\,580\,224$, and to count the fixed points of conjugacy class representatives of prime
order. The currently available \textsf{GAP} library methods are not sufficient for computing this in reasonable time. ``Ad-hoc code'' for this special case works, but it seemed to be not appropriate to include it
here. 

 In the proof of statement{\nobreakspace}(c), again we consult the result
matrix in{\nobreakspace}\cite{Kle87}. For $S.3$, the maximal subgroups are in the rows $4$, $15$, $22$, $26$, and $61$. Only row $26$ yields subgroups that contain elements $s$ of order $65$, they have the isomorphism type $(5 \times {{\rm GU}}(3,4)).2 \cong (5^2 \times U_3(4)).2$. Note that the conjugacy classes of the members in ${{\mathbb M}}(S,s)$ are permuted by the outer automorphism of order $3$, so none of the subgroups in ${{\mathbb M}}(S,s)$ extends to $S.3$. By{\nobreakspace}\cite[Lemma{\nobreakspace}2.4{\nobreakspace}(2)]{BGK}, if there is a maximal subgroup of $S.3$ besides $S$ that contains $s$ then this subgroup is the normalizer in $S.3$ of the intersection of the three members of ${{\mathbb M}}(S,s)$, i.{\nobreakspace}e., $s$ is contained in at most one such subgroup.        

 For $S.2_1$, only the rows $9$ and $23$ yield maximal subgroups containing elements of order $65$, and since we had chosen $s$ in such a way that row $9$ was excluded already for the simple group, only extensions of the elements in ${{\mathbb M}}(S,s)$ can appear. Exactly one of these three subgroups of $S$ extends to $S.2_1$, so again we get just one maximal subgroup of $S.2_1$, besides $S$, that contains $s$.   

 All subgroups in ${{\mathbb M}}(S,s)$ extend to $S.2_2$, see{\nobreakspace}\cite{Kle87}. We compute the extensions of the above subgroups $M$ of $S$ to $S.2_2$, by constructing the action of the field automorphism in the permutation
representation we used for $S$. In other words, we compute the projective action of the Frobenius map. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@frob:= PermList( List( orbs[1], v -> Position( orbs[1],|
  !gapprompt@>| !gapinput@             List( v, x -> x^2 ) ) ) );;|
  !gapprompt@gap>| !gapinput@G2:= ClosureGroupDefault( G, frob );;|
  !gapprompt@gap>| !gapinput@cand2:= List( cand, M -> Normalizer( G2, M ) );;|
  !gapprompt@gap>| !gapinput@ccl:= List( cand2,|
  !gapprompt@>| !gapinput@               M2 -> PcConjugacyClassReps( SylowSubgroup( M2, 2 ) ) );;|
  !gapprompt@gap>| !gapinput@List( ccl, l -> Number( l, x -> Order( x ) = 2 and not x in G ) );|
  [ 0, 0, 0 ]
\end{Verbatim}
 

 So in each case, the extension of $M$ to its normalizer in $S.2_2$ is non-split. This implies ${{\sigma}}^{\prime}(S.2_2,s) = 0$. 

 Finally, in the extension of $S$ by the product of a graph automorphism and the field automorphism, exactly
that member of ${{\mathbb M}}(S,s)$ is invariant that is invariant under the graph automorphism, hence
statement{\nobreakspace}(c) holds. 

 It is again time to clean the workspace. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 

  }

  
\subsection{\textcolor{Chapter }{$\ast${\nobreakspace}$O_9(3)$}}\label{O93}
\logpage{[ 11, 5, 15 ]}
\hyperdef{L}{X86EC26F78609618E}{}
{
  The group $S = O_9(3) = \Omega_9(3)$ is the first member in the series dealt with in{\nobreakspace}\cite[Proposition{\nobreakspace}5.7]{BGK}, and serves as an example to illustrate this statement. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of the type $1 \perp 8^-$ (i.{\nobreakspace}e., $s$ decomposes the natural $9$-dimensional module for $S$ into an orthogonal sum of two irreducible modules of the dimensions $1$ and $8$, respectively) and of order $(3^4 + 1)/2 = 41$, ${{\mathbb M}}(S,s)$ consists of one group of the type $O_8^-(3).2_1 = {{\rm PGO}}^-(8,3)$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/3$. 
\item[{(c)}]  The uniform spread of $S$ is at least three, with $s$ of order $41$. 
\end{description}
 

 By{\nobreakspace}\cite{MSW94}, the only maximal subgroup of $S$ that contains $s$ is the stabilizer $M$ of the orthogonal decomposition. The group $2 \times O_8^-(3).2_1 = {{\rm GO}}^-(8,3)$ embeds naturally into ${{\rm SO}}(9,3)$, its intersection with $S$ is ${{\rm PGO}}^-(8,3)$. This proves statement{\nobreakspace}(a). 

 The group $M$ is the stabilizer of a $1$-space, it has index $3\,240$ in $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= SO( 9, 3 );;|
  !gapprompt@gap>| !gapinput@g:= DerivedSubgroup( g );;|
  !gapprompt@gap>| !gapinput@Size( g );|
  65784756654489600
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g, NormedRowVectors( GF(3)^9 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length ) / 41;|
  [ 3240/41, 81, 80 ]
  !gapprompt@gap>| !gapinput@Size( SO( 9, 3 ) ) / Size( GO( -1, 8, 3 ) );|
  3240
\end{Verbatim}
 

 So we compute the unique transitive permutation character of $S$ that has degree $3\,240$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O9(3)" );;|
  !gapprompt@gap>| !gapinput@pi:= PermChars( t, rec( torso:= [ 3240 ] ) );|
  [ Character( CharacterTable( "O9(3)" ),
    [ 3240, 1080, 380, 132, 48, 324, 378, 351, 0, 0, 54, 27, 54, 27, 0, 
        118, 0, 36, 46, 18, 12, 2, 8, 45, 0, 108, 108, 135, 126, 0, 0, 
        56, 0, 0, 36, 47, 38, 27, 39, 36, 24, 12, 18, 18, 15, 24, 2, 
        18, 15, 9, 0, 0, 0, 2, 0, 18, 11, 3, 9, 6, 6, 9, 6, 3, 6, 3, 0, 
        6, 16, 0, 4, 6, 2, 45, 36, 0, 0, 0, 0, 0, 0, 0, 9, 9, 6, 3, 0, 
        0, 15, 13, 0, 5, 7, 36, 0, 10, 0, 10, 19, 6, 15, 0, 0, 0, 0, 
        12, 3, 10, 0, 3, 3, 7, 0, 6, 6, 2, 8, 0, 4, 0, 2, 0, 1, 3, 0, 
        0, 3, 0, 3, 2, 2, 3, 3, 6, 2, 2, 9, 6, 3, 0, 0, 18, 9, 0, 0, 
        12, 0, 0, 8, 0, 6, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 2, 1, 
        3, 3, 1, 0, 0, 4, 1, 0, 0, 1, 0, 3, 3, 1, 1, 2, 2, 0, 0, 1, 3, 
        4, 0, 1, 2, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 
        1, 1, 1, 1, 0, 0, 1, 1, 1, 0 ] ) ]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 41 );|
  208
  !gapprompt@gap>| !gapinput@approx:= ApproxP( pi, spos );;|
  !gapprompt@gap>| !gapinput@Maximum( approx );|
  1/3
  !gapprompt@gap>| !gapinput@PositionsProperty( approx, x -> x = 1/3 );|
  [ 2 ]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( t )[2];|
  3321
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t )[2];|
  2
\end{Verbatim}
 

 We see that $P( S, s ) = {{\sigma}}( S, s ) = 1/3$ holds, and that ${{\sigma}}( g, s )$ attains this maximum only for $g$ in one class of involutions in $S$; let us call this class \texttt{2A}. (This class consists of the negatives of a class of \emph{reflections} in ${{\rm GO}}(9,3)$.) This shows statement{\nobreakspace}(b). 

 In order to show that the uniform spread of $S$ is at least three, it suffices to show that for each triple of \texttt{2A} elements, there is an element $s$ of order $41$ in $S$ that generates $S$ with each element of the triple. 

 We work with the primitive permutation representation of $S$ on $3\,240$ points. In this representation, $s$ fixes exactly one point, and by statement{\nobreakspace}(a), $s$ generates $S$ with $x \in S$ if and only if $x$ moves this point. Since the number of fixed points of each \texttt{2A} involution in $S$ is exactly one third of the moved points of $S$, it suffices to show that we cannot choose three such involutions with
mutually disjoint fixed point sets. And this is shown particularly easily
because it will turn out that already for any two different \texttt{2A} involutions, the sets of fixed points of are never disjoint. 

 First we compute a \texttt{2A} element, which is determined as an involution with exactly $1\,080$ fixed points. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= Action( g, orbs[1], OnLines );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     repeat x:= Random( g ); ord:= Order( x ); until ord mod 2 = 0;|
  !gapprompt@>| !gapinput@     y:= x^(ord/2);|
  !gapprompt@>| !gapinput@until NrMovedPoints( y ) = 3240 - 1080;|
\end{Verbatim}
 

 Next we compute the sets of fixed points of the elements in the class \texttt{2A}, by forming the $S$-orbit of the set of fixed points of the chosen \texttt{2A} element. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@fp:= Difference( MovedPoints( g ), MovedPoints( y ) );;|
  !gapprompt@gap>| !gapinput@orb:= Orbit( g, fp, OnSets );;|
\end{Verbatim}
 

 Finally, we show that for any pair of \texttt{2A} elements, their sets of fixed points intersect nontrivially. (Of course we can
fix one of the two elements.) This proves statement{\nobreakspace}(c). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ForAny( orb, l -> IsEmpty( Intersection( l, fp ) ) );|
  false
\end{Verbatim}
   }

  
\subsection{\textcolor{Chapter }{$O_{10}^-(3)$}}\label{O10m3}
\logpage{[ 11, 5, 16 ]}
\hyperdef{L}{X8393978A8773997E}{}
{
  We show that the group $S = O_{10}^-(3) = {{\rm P\hbox{$\Omega$}}}^-(10,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ irreducible of order $(3^5 + 1)/4 = 61$, ${{\mathbb M}}(S,s)$ consists of one subgroup of the type ${{\rm SU}}(5,3) \cong U_5(3)$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/1\,066$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, the maximal subgroups of $S$ containing $s$ are of extension field type, and by{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.18 and{\nobreakspace}4.3.20]{KlL90}, these groups have the structure ${{\rm SU}}(5,3) = U_5(3)$ (which lift to $2 \times U_5(3) < {{\rm GU}}(5,3)$ in $\Omega^-(10,3) = 2.S$) or $\Omega(5,9).2$, but the order of the latter group is not divisible by $|s|$. Furthermore, by{\nobreakspace}\cite[Lemma{\nobreakspace}2.12{\nobreakspace}(b)]{BGK}, $s$ is contained in only one member of the former class. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Size( GO(5,9) ) / 61;|
  6886425600/61
\end{Verbatim}
 

 \emph{When the first version of these computations was written, the character tables
of both $S$ and $U_5(3)$ were not contained in the \textsf{GAP} Character Table Library, so we worked with the groups. Meanwhile the character
tables are available, thus we can show also a character theoretic solution.)} 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "O10-(3)" );  s:= CharacterTable( "U5(3)" );|
  CharacterTable( "O10-(3)" )
  CharacterTable( "U5(3)" )
  !gapprompt@gap>| !gapinput@SigmaFromMaxes( t, "61A", [ s ], [ 1 ] );|
  1/1066
\end{Verbatim}
 

 \emph{(Now follow the computations with groups.)} 

 The first step is the construction of the embedding of $M = {{\rm SU}}(5,3)$ into the matrix group $2.S$, that is, we write the matrix generators of $M$ as linear mappings on the natural module for $2.S$, and then conjugate them such that the result matrices respect the bilinear
form of $2.S$. For convenience, we choose a basis for the field extension ${{\mathbb F}}_9/{{\mathbb F}}_3$ such that the ${{\mathbb F}}_3$-linear mapping given by the invariant form of $M$ is invariant under the ${{\mathbb F}}_3$-linear mappings given by the generators of $M$. 

   
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:= SU(5,3);;|
  !gapprompt@gap>| !gapinput@so:= SO(-1,10,3);;|
  !gapprompt@gap>| !gapinput@omega:= DerivedSubgroup( so );;|
  !gapprompt@gap>| !gapinput@om:= InvariantBilinearForm( so ).matrix;;|
  !gapprompt@gap>| !gapinput@Display( om );|
   . 1 . . . . . . . .
   1 . . . . . . . . .
   . . 1 . . . . . . .
   . . . 2 . . . . . .
   . . . . 2 . . . . .
   . . . . . 2 . . . .
   . . . . . . 2 . . .
   . . . . . . . 2 . .
   . . . . . . . . 2 .
   . . . . . . . . . 2
  !gapprompt@gap>| !gapinput@b:= Basis( GF(9), [ Z(3)^0, Z(3^2)^2 ] );|
  Basis( GF(3^2), [ Z(3)^0, Z(3^2)^2 ] )
  !gapprompt@gap>| !gapinput@blow:= List( GeneratorsOfGroup( m ), x -> BlownUpMat( b, x ) );;|
  !gapprompt@gap>| !gapinput@form:= BlownUpMat( b, InvariantSesquilinearForm( m ).matrix );;|
  !gapprompt@gap>| !gapinput@ForAll( blow, x -> x * form * TransposedMat( x ) = form );|
  true
  !gapprompt@gap>| !gapinput@Display( form );|
   . . . . . . . . 1 .
   . . . . . . . . . 1
   . . . . . . 1 . . .
   . . . . . . . 1 . .
   . . . . 1 . . . . .
   . . . . . 1 . . . .
   . . 1 . . . . . . .
   . . . 1 . . . . . .
   1 . . . . . . . . .
   . 1 . . . . . . . .
\end{Verbatim}
 

 The matrix \texttt{om} of the invariant bilinear form of $2.S$ is equivalent to the identity matrix $I$. So we compute matrices \texttt{T1} and \texttt{T2} that transform \texttt{om} and \texttt{form}, respectively, to $\pm I$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@T1:= IdentityMat( 10, GF(3) );;|
  !gapprompt@gap>| !gapinput@T1{[1..3]}{[1..3]}:= [[1,1,0],[1,-1,1],[1,-1,-1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@pi:= PermutationMat( (1,10)(3,8), 10, GF(3) );;|
  !gapprompt@gap>| !gapinput@tr:= NullMat( 10,10,GF(3) );;|
  !gapprompt@gap>| !gapinput@tr{[1, 2]}{[1, 2]}:= [[1,1],[1,-1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@tr{[3, 4]}{[3, 4]}:= [[1,1],[1,-1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@tr{[7, 8]}{[7, 8]}:= [[1,1],[1,-1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@tr{[9,10]}{[9,10]}:= [[1,1],[1,-1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@tr{[5, 6]}{[5, 6]}:= [[1,0],[0,1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@tr2:= IdentityMat( 10,GF(3) );;|
  !gapprompt@gap>| !gapinput@tr2{[1,3]}{[1,3]}:= [[-1,1],[1,1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@tr2{[7,9]}{[7,9]}:= [[-1,1],[1,1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@T2:= tr2 * tr * pi;;|
  !gapprompt@gap>| !gapinput@D:= T1^-1 * T2;;|
  !gapprompt@gap>| !gapinput@tblow:= List( blow, x -> D * x * D^-1 );;|
  !gapprompt@gap>| !gapinput@IsSubset( omega, tblow );|
  true
\end{Verbatim}
 

 Now we switch to a permutation representation of $S$, and use the embedding of $M$ into $2.S$ to obtain the corresponding subgroup of type $M$ in $S$.   Then we compute an upper bound for $\max\{ {{\mu}}(g,S/M); g \in S^{\times} \}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( omega, NormedRowVectors( GF(3)^10 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 9882, 9882, 9760 ]
  !gapprompt@gap>| !gapinput@permgrp:= Action( omega, orbs[3], OnLines );;|
  !gapprompt@gap>| !gapinput@M:= SubgroupNC( permgrp,|
  !gapprompt@>| !gapinput@           List( tblow, x -> Permutation( x, orbs[3], OnLines ) ) );;|
  !gapprompt@gap>| !gapinput@ccl:= ClassesOfPrimeOrder( M, PrimeDivisors( Size( M ) ),|
  !gapprompt@>| !gapinput@                              TrivialSubgroup( M ) );;|
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( permgrp, [ ccl ], false );|
  [ 1/1066, true ]
\end{Verbatim}
 

 The entry \texttt{true} in the second position of the result indicates that in fact the \emph{exact} value for the maximum of ${{\mu}}(g,S/M)$ has been computed. This implies statement{\nobreakspace}(b). 

 We clean the workspace. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_{14}^-(2)$}}\label{O14m2}
\logpage{[ 11, 5, 17 ]}
\hyperdef{L}{X7BBBEEEF834F1002}{}
{
  We show that the group $S = O_{14}^-(2) = \Omega^-(14,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ irreducible of order $2^7+1 = 129$, ${{\mathbb M}}(S,s)$ consists of one subgroup $M$ of the type ${{\rm GU}}(7,2) \cong 3 \times U_7(2)$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 1/2\,015$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, any maximal subgroup of $S$ containing $s$ is of extension field type, and by{\nobreakspace}\cite[Table{\nobreakspace}3.5.F, Prop.{\nobreakspace}4.3.18]{KlL90}, these groups have the type ${{\rm GU}}(7,2)$, and there is exactly one class of subgroups of this type. Furthermore,
by{\nobreakspace}\cite[Lemma{\nobreakspace}2.12{\nobreakspace}(a)]{BGK}, $s$ is contained in only one member of this class. 

 We embed $U_7(2)$ into $S$, by first replacing each element in ${{\mathbb F}}_4$ by the $2 \times 2$ matrix of the induced ${{\mathbb F}}_2$-linear mapping w.r.t.{\nobreakspace}a suitable basis, and then conjugating
the images of the generators such that the invariant quadratic form of $S$ is respected. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@o:= SO(-1,14,2);;|
  !gapprompt@gap>| !gapinput@g:= SU(7,2);;|
  !gapprompt@gap>| !gapinput@b:= Basis( GF(4) );;|
  !gapprompt@gap>| !gapinput@blow:= List( GeneratorsOfGroup( g ), x -> BlownUpMat( b, x ) );;|
  !gapprompt@gap>| !gapinput@form:= NullMat( 14, 14, GF(2) );;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. 14 ] do form[i][ 15-i ]:= Z(2); od;|
  !gapprompt@gap>| !gapinput@ForAll( blow, x -> x * form * TransposedMat( x ) = form );|
  true
  !gapprompt@gap>| !gapinput@pi:= PermutationMat( (1,13)(3,11)(5,9), 14, GF(2) );;|
  !gapprompt@gap>| !gapinput@pi * form * TransposedMat( pi ) = InvariantBilinearForm( o ).matrix;|
  true
  !gapprompt@gap>| !gapinput@pi2:= PermutationMat( (7,3)(8,4), 14, GF(2) );;|
  !gapprompt@gap>| !gapinput@D:= pi2 * pi;;|
  !gapprompt@gap>| !gapinput@tblow:= List( blow, x -> D * x * D^-1 );;|
  !gapprompt@gap>| !gapinput@IsSubset( o, tblow );|
  true
\end{Verbatim}
 

 Note that the central subgroup of order three in ${{\rm GU}}(7,2)$ consists of scalar matrices. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@omega:= DerivedSubgroup( o );;|
  !gapprompt@gap>| !gapinput@IsSubset( omega, tblow );|
  true
  !gapprompt@gap>| !gapinput@z:= Z(4) * One( g );;|
  !gapprompt@gap>| !gapinput@tz:= D * BlownUpMat( b, z ) * D^-1;;|
  !gapprompt@gap>| !gapinput@tz in omega;|
  true
\end{Verbatim}
 

 Now we switch to a permutation representation of $S$, and compute the conjugacy classes of prime element order in the subgroup $M$. The latter is done in two steps, first class representatives of the simple
subgroup $U_7(2)$ of $M$ are computed, and then they are multiplied with the scalars in $M$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( omega, NormedRowVectors( GF(2)^14 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 8127, 8256 ]
  !gapprompt@gap>| !gapinput@omega:= Action( omega, orbs[1], OnLines );;|
  !gapprompt@gap>| !gapinput@gens:= List( GeneratorsOfGroup( g ),|
  !gapprompt@>| !gapinput@            x -> Permutation( D * BlownUpMat( b, x ) * D^-1, orbs[1] ) );;|
  !gapprompt@gap>| !gapinput@g:= Group( gens );;|
  !gapprompt@gap>| !gapinput@ccl:= ClassesOfPrimeOrder( g, PrimeDivisors( Size( g ) ),|
  !gapprompt@>| !gapinput@                              TrivialSubgroup( g ) );;|
  !gapprompt@gap>| !gapinput@tz:= Permutation( tz, orbs[1] );;|
  !gapprompt@gap>| !gapinput@primereps:= List( ccl, Representative );;|
  !gapprompt@gap>| !gapinput@Add( primereps, () );|
  !gapprompt@gap>| !gapinput@reps:= Concatenation( List( primereps,|
  !gapprompt@>| !gapinput@              x -> List( [ 0 .. 2 ], i -> x * tz^i ) ) );;|
  !gapprompt@gap>| !gapinput@primereps:= Filtered( reps, x -> IsPrimeInt( Order( x ) ) );;|
  !gapprompt@gap>| !gapinput@Length( primereps );|
  48
\end{Verbatim}
 

 Finally, we apply \texttt{UpperBoundFixedPointRatios} (see Section{\nobreakspace}\ref{subsect:groups}) to compute an upper bound for ${{\mu}}(g,S/M)$, for $g \in S^{\times}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@M:= ClosureGroup( g, tz );;|
  !gapprompt@gap>| !gapinput@bccl:= List( primereps, x -> ConjugacyClass( M, x ) );;|
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( omega, [ bccl ], false );|
  [ 1/2015, true ]
\end{Verbatim}
 

 Although some of the classes of $M$ in the list \texttt{bccl} may be $S$-conjugate, the entry \texttt{true} in the second position of the result indicates that in fact the \emph{exact} value for the maximum of ${{\mu}}(g,S/M)$, for $g \in S^{\times}$, has been computed. This implies statement{\nobreakspace}(b). 

 We clean the workspace. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$O_{12}^+(3)$}}\label{O12p3}
\logpage{[ 11, 5, 18 ]}
\hyperdef{L}{X8477457780B69BC7}{}
{
  We show that the group $S = O_{12}^+(3) = {{\rm P\hbox{$\Omega$}}}^+(12,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  $S$ has a maximal subgroup $M$ of the type $N_S({{\rm P\hbox{$\Omega$}}}^+(6,9))$, which has the structure ${{\rm P\hbox{$\Omega$}}}^+(6,9).[4]$. 
\item[{(b)}]  ${{\mu}}(g,S/M) \leq 2/88\,209$ holds for all $g \in S^{\times}$. 
\end{description}
 

 (This result is used in the proof of{\nobreakspace}\cite[Proposition{\nobreakspace}5.14]{BGK}, where it is shown that for $s \in S$ of order $205$, ${{\mathbb M}}(S,s)$ consists of one reducible subgroup $G_8$ and at most two extension field type subgroups of the type $N_S({{\rm P\hbox{$\Omega$}}}^+(6,9))$. By{\nobreakspace}\cite[Proposition{\nobreakspace}3.16]{GK}, ${{\mu}}(g,S/G_8) \leq 19/3^5$ holds for all $g \in S^{\times}$. This implies $P(g,s) \leq 19/3^5 + 2 \cdot 2/88\,209 = 6\,901/88\,209 < 1/3$.) 

 Statement{\nobreakspace}(a) follows from{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.14]{KlL90}. 

  For statement{\nobreakspace}(b), we embed ${{\rm GO}}^+(6,9) \cong \Omega^+(6,9).2^2$ into ${{\rm SO}}^+(12,3) = 2.S.2$, by replacing each element in ${{\mathbb F}}_9$ by the $2 \times 2$ matrix of the induced ${{\mathbb F}}_3$-linear mapping w.r.t.{\nobreakspace}a suitable basis $(b_1, b_2)$. We choose a basis with the property $b_1 = 1$ and $b_2^2 = 1 + b_2$, because then the image of a symmetric matrix is again symmetric (so the
image of the invariant form is an invariant form for the image of the group),
and apply an appropriate transformation to the images of the generators. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@so:= SO(+1,12,3);;|
  !gapprompt@gap>| !gapinput@Display( InvariantBilinearForm( so ).matrix );|
   . 1 . . . . . . . . . .
   1 . . . . . . . . . . .
   . . 1 . . . . . . . . .
   . . . 2 . . . . . . . .
   . . . . 2 . . . . . . .
   . . . . . 2 . . . . . .
   . . . . . . 2 . . . . .
   . . . . . . . 2 . . . .
   . . . . . . . . 2 . . .
   . . . . . . . . . 2 . .
   . . . . . . . . . . 2 .
   . . . . . . . . . . . 2
  !gapprompt@gap>| !gapinput@g:= GO(+1,6,9);;|
  !gapprompt@gap>| !gapinput@Z(9)^2 = Z(3)^0 + Z(9);|
  true
  !gapprompt@gap>| !gapinput@b:= Basis( GF(9), [ Z(3)^0, Z(9) ] );|
  Basis( GF(3^2), [ Z(3)^0, Z(3^2) ] )
  !gapprompt@gap>| !gapinput@blow:= List( GeneratorsOfGroup( g ), x -> BlownUpMat( b, x ) );;|
  !gapprompt@gap>| !gapinput@m:= BlownUpMat( b, InvariantBilinearForm( g ).matrix );;|
  !gapprompt@gap>| !gapinput@Display( m );|
   . . 1 . . . . . . . . .
   . . . 1 . . . . . . . .
   1 . . . . . . . . . . .
   . 1 . . . . . . . . . .
   . . . . 2 . . . . . . .
   . . . . . 2 . . . . . .
   . . . . . . 2 . . . . .
   . . . . . . . 2 . . . .
   . . . . . . . . 2 . . .
   . . . . . . . . . 2 . .
   . . . . . . . . . . 2 .
   . . . . . . . . . . . 2
  !gapprompt@gap>| !gapinput@pi:= PermutationMat( (2,3), 12, GF(3) );;|
  !gapprompt@gap>| !gapinput@tr:= IdentityMat( 12, GF(3) );;|
  !gapprompt@gap>| !gapinput@tr{[3,4]}{[3,4]}:= [[1,-1],[1,1]]*Z(3)^0;;|
  !gapprompt@gap>| !gapinput@D:= tr * pi;;|
  !gapprompt@gap>| !gapinput@D * m * TransposedMat( D ) = InvariantBilinearForm( so ).matrix;|
  true
  !gapprompt@gap>| !gapinput@tblow:= List( blow, x -> D * x * D^-1 );;|
  !gapprompt@gap>| !gapinput@IsSubset( so, tblow );|
  true
\end{Verbatim}
 

 The image of ${{\rm GO}}^+(6,9)$ under the embedding into ${{\rm SO}}^+(12,3)$ does not lie in $\Omega^+(12,3) = 2.S$, so a factor of two is missing in ${{\rm GO}}^+(6,9) \cap 2.S$ for getting (the preimage $2.M$ of) the required maximal subgroup $M$ of $S$. Because of this, and also because currently it is time consuming to compute
the derived subgroup of ${{\rm SO}}^+(12,3)$, we work with the upward extension ${{\rm PSO}}^+(12,3) = S.2$. Note that $M$ extends to a maximal subgroup of $S.2$. 

 First we factor out the centre of ${{\rm SO}}^+(12,3)$, and switch to a permutation representation of $S.2$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( so, NormedRowVectors( GF(3)^12 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 88452, 88452, 88816 ]
  !gapprompt@gap>| !gapinput@act:= Action( so, orbs[1], OnLines );;|
  !gapprompt@gap>| !gapinput@SetSize( act, Size( so ) / 2 );|
\end{Verbatim}
  

 Next we rewrite the matrix generators for ${{\rm GO}}^+(6,9)$ accordingly, and compute the normalizer in $S.2$ of the subgroup they generate; this is the maximal subgroup $M.2$ we need. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@u:= SubgroupNC( act,|
  !gapprompt@>| !gapinput@           List( tblow, x -> Permutation( x, orbs[1], OnLines ) ) );;|
  !gapprompt@gap>| !gapinput@n:= Normalizer( act, u );;|
  !gapprompt@gap>| !gapinput@Size( n ) / Size( u );|
  2
\end{Verbatim}
  

 Now we compute class representatives of prime order in $M.2$, in a smaller faithful permutation representation, and then the desired upper
bound for ${{\mu}}(g, S/M)$.  

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@norbs:= OrbitsDomain( n, MovedPoints( n ) );;|
  !gapprompt@gap>| !gapinput@List( norbs, Length );|
  [ 58968, 29484 ]
  !gapprompt@gap>| !gapinput@hom:= ActionHomomorphism( n, norbs[2] );;|
  !gapprompt@gap>| !gapinput@nact:= Image( hom );;|
  !gapprompt@gap>| !gapinput@Size( nact ) = Size( n );|
  true
  !gapprompt@gap>| !gapinput@ccl:= ClassesOfPrimeOrder( nact, PrimeDivisors( Size( nact ) ),|
  !gapprompt@>| !gapinput@                              TrivialSubgroup( nact ) );;|
  !gapprompt@gap>| !gapinput@Length( ccl );|
  26
  !gapprompt@gap>| !gapinput@preim:= List( ccl,|
  !gapprompt@>| !gapinput@       x -> PreImagesRepresentative( hom, Representative( x ) ) );;|
  !gapprompt@gap>| !gapinput@pccl:= List( preim, x -> ConjugacyClass( n, x ) );;|
  !gapprompt@gap>| !gapinput@for i in [ 1 .. Length( pccl ) ] do|
  !gapprompt@>| !gapinput@     SetSize( pccl[i], Size( ccl[i] ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@UpperBoundFixedPointRatios( act, [ pccl ], false );|
  [ 2/88209, true ]
\end{Verbatim}
  

 Note that we have computed $\max\{ {{\mu}}(g,S.2/M.2), g \in S.2^{\times} \} \geq \max\{ {{\mu}}(g,S.2/M.2), g \in S^{\times} \} = \max\{ {{\mu}}(g,S/M), g \in S^{\times} \}$. }

  
\subsection{\textcolor{Chapter }{$\ast${\nobreakspace}$S_4(8)$}}\label{S48}
\logpage{[ 11, 5, 19 ]}
\hyperdef{L}{X854D85F287767342}{}
{
  We show that the group $S = S_4(8) = {{\rm Sp}}(4,8)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ irreducible of order $65$, ${{\mathbb M}}(S,s)$ consists of two nonconjugate subgroups of the type $S_2(64).2 = {{\rm Sp}}(2,64).2 \cong L_2(64).2 \cong O_4^-(8).2 = \Omega^-(4,8).2$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 8/63$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, the only maximal subgroups of $S$ that contain $s$ are $O_4^-(8).2 = {{\rm SO}}^-(4,8)$ or of extension field type. By{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.10, 4.8.6]{KlL90}, there is one class of each of these subgroups (which happen to be
isomorphic). 

 These classes of subgroups induce different permutation characters. One
argument to see this is that the involutions in the outer half of extension
field type subgroup $S_2(64).2 < S_4(8)$ have a two-dimensional fixed space, whereas the outer involutions in ${{\rm SO}}^-(4,8)$ have a three-dimensional fixed space. 

 The former statement can be seen by using a normal basis of the field
extension ${{\mathbb F}}_{64}/{{\mathbb F}}_8$, such that the action of the Frobenius automorphism (which yields a suitable
outer involution) is just a double transposition on the basis vectors of the
natural module for $S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@sp:= SP(4,8);;|
  !gapprompt@gap>| !gapinput@Display( InvariantBilinearForm( sp ).matrix );|
   . . . 1
   . . 1 .
   . 1 . .
   1 . . .
  !gapprompt@gap>| !gapinput@z:= Z(64);;|
  !gapprompt@gap>| !gapinput@f:= AsField( GF(8), GF(64) );;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     b:= Basis( f, [ z, z^8 ] );|
  !gapprompt@>| !gapinput@     z:= z * Z(64);|
  !gapprompt@>| !gapinput@until b <> fail;|
  !gapprompt@gap>| !gapinput@sub:= SP(2,64);;|
  !gapprompt@gap>| !gapinput@Display( InvariantBilinearForm( sub ).matrix );|
   . 1
   1 .
  !gapprompt@gap>| !gapinput@ext:= Group( List( GeneratorsOfGroup( sub ),|
  !gapprompt@>| !gapinput@                      x -> BlownUpMat( b, x ) ) );;|
  !gapprompt@gap>| !gapinput@tr:= PermutationMat( (3,4), 4, GF(2) );;|
  !gapprompt@gap>| !gapinput@conj:= ConjugateGroup( ext, tr );;|
  !gapprompt@gap>| !gapinput@IsSubset( sp, conj );|
  true
  !gapprompt@gap>| !gapinput@inv:= [[0,1,0,0],[1,0,0,0],[0,0,0,1],[0,0,1,0]] * Z(2);;|
  !gapprompt@gap>| !gapinput@inv in sp;|
  true
  !gapprompt@gap>| !gapinput@inv in conj;|
  false
  !gapprompt@gap>| !gapinput@Length( NullspaceMat( inv - inv^0 ) );|
  2
\end{Verbatim}
 

 The latter statement can be shown by looking at an outer involution in ${{\rm SO}}^-(4,8)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@so:= SO(-1,4,8);;|
  !gapprompt@gap>| !gapinput@der:= DerivedSubgroup( so );;|
  !gapprompt@gap>| !gapinput@x:= First( GeneratorsOfGroup( so ), x -> not x in der );;|
  !gapprompt@gap>| !gapinput@x:= x^( Order(x)/2 );;|
  !gapprompt@gap>| !gapinput@Length( NullspaceMat( x - x^0 ) );|
  3
\end{Verbatim}
  

 The character table of $L_2(64).2$ is currently not available in the \textsf{GAP} Character Table Library, so we compute the possible permutation characters
with a combinatorial approach, and show statement{\nobreakspace}(a). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CharacterTable( "L2(64).2" );|
  fail
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S4(8)" );;|
  !gapprompt@gap>| !gapinput@degree:= Size( t ) / ( 2 * Size( SL(2,64) ) );;|
  !gapprompt@gap>| !gapinput@pi:= PermChars( t, rec( torso:= [ degree ] ) );|
  [ Character( CharacterTable( "S4(8)" ),
    [ 2016, 0, 256, 32, 0, 36, 0, 8, 1, 0, 4, 0, 0, 0, 28, 28, 28, 0, 
        0, 0, 0, 0, 0, 36, 36, 36, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 
        4, 4, 4, 0, 0, 0, 4, 4, 4, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 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 ] ), Character( CharacterTable( "S4(8)" ),
    [ 2016, 256, 0, 32, 36, 0, 0, 8, 1, 4, 0, 28, 28, 28, 0, 0, 0, 0, 
        0, 0, 36, 36, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 4, 4, 4, 
        0, 0, 0, 4, 4, 4, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 
        1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
        1, 1, 1 ] ) ]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 65 );;|
  !gapprompt@gap>| !gapinput@List( pi, x -> x[ spos ] );|
  [ 1, 1 ]
\end{Verbatim}
 

 Now we compute ${{\sigma}}(S,s)$, which yields statement{\nobreakspace}(b). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( pi, spos ) );|
  8/63
\end{Verbatim}
 

 We clean the workspace. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CleanWorkspace();|
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$S_6(2)$}}\label{S62}
\logpage{[ 11, 5, 20 ]}
\hyperdef{L}{X82CFBAF07D3487A0}{}
{
  We show that the group $S = S_6(2) = {{\rm Sp}}(6,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 4/7$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $9$. 
\item[{(b)}]  For $s \in S$ of order $9$, ${{\mathbb M}}(S,s)$ consists of one subgroup of the type $U_4(2).2 = \Omega^-(6,2).2$ and three conjugate subgroups of the type $L_2(8).3 = {{\rm Sp}}(2,8).3$. 
\item[{(c)}]  For $s \in S$ of order $9$, and $g \in S^{\times}$, we have $P(g,s) < 1/3$, except if $g$ is in one of the classes \texttt{2A} (the transvection class) or \texttt{3A}. 
\item[{(d)}]  For $s \in S$ of order $15$, and $g \in S^{\times}$, we have $P(g,s) < 1/3$, except if $g$ is in one of the classes \texttt{2A} or \texttt{2B}. 
\item[{(e)}]  $P(S) = 11/21$, and this value is attained exactly for $P(S,s)$ with $s$ of order $15$. 
\item[{(f)}]  For all $s^{\prime} \in S$, we have $P(g,s^{\prime}) > 1/3$ for $g$ in at least two classes. 
\item[{(g)}]  The uniform spread of $S$ is at least two, with $s$ of order $9$. 
\end{description}
  

 (Note that in this example, the optimal choice of $s$ w.r.t. ${{\sigma}}(S,s)$ is not optimal w.r.t. $P(S,s)$.) 

 Statement{\nobreakspace}(a) follows from the inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S6(2)" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "S6(2)", 4/7, 1, [ "9A" ], [ 4 ] ]
\end{Verbatim}
 

 Also statement{\nobreakspace}(b) follows from the information provided by the
character table of $S$ (cf.{\nobreakspace}\cite[p.{\nobreakspace}46]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@ord:= OrdersClassRepresentatives( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( ord, 9 );;|
  !gapprompt@gap>| !gapinput@filt:= PositionsProperty( prim, x -> x[ spos ] <> 0 );|
  [ 1, 8 ]
  !gapprompt@gap>| !gapinput@Maxes( t ){ filt };|
  [ "U4(2).2", "L2(8).3" ]
  !gapprompt@gap>| !gapinput@List( prim{ filt }, x -> x[ spos ] );|
  [ 1, 3 ]
\end{Verbatim}
 

 Now we consider statement{\nobreakspace}(c). For $s$ of order $9$ and $g$ in one of the classes \texttt{2A}, \texttt{3A}, we observe that $P(g,s) = {{\sigma}}(g,s)$ holds. This is because exactly one maximal subgroup of $S$ contains both $s$ and $g$. For all other elements $g$, we have even ${{\sigma}}(g,s) < 1/3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@spos9:= Position( ord, 9 );;|
  !gapprompt@gap>| !gapinput@approx9:= ApproxP( prim, spos9 );;|
  !gapprompt@gap>| !gapinput@filt9:= PositionsProperty( approx9, x -> x >= 1/3 );|
  [ 2, 6 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ filt9 };|
  [ "2A", "3A" ]
  !gapprompt@gap>| !gapinput@approx9{ filt9 };|
  [ 4/7, 5/14 ]
  !gapprompt@gap>| !gapinput@List( Filtered( prim, x -> x[ spos9 ] <> 0 ), x -> x{ filt9 } );|
  [ [ 16, 10 ], [ 0, 0 ] ]
\end{Verbatim}
 

 Similarly, statement{\nobreakspace}(d) follows. For $s$ of order $15$ and $g$ in one of the classes \texttt{2A}, \texttt{2B}, already the degree $36$ permutation character yields $P(g,s) \geq 1/3$. And for all other elements $g$, again we have ${{\sigma}}(g,s) < 1/3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos15:= Position( ord, 15 );;|
  !gapprompt@gap>| !gapinput@approx15:= ApproxP( prim, spos15 );;|
  !gapprompt@gap>| !gapinput@filt15:= PositionsProperty( approx15, x -> x >= 1/3 );|
  [ 2, 3 ]
  !gapprompt@gap>| !gapinput@PositionsProperty( ApproxP( prim{ [ 2 ] }, spos15 ), x -> x >= 1/3 );|
  [ 2, 3 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ filt15 };|
  [ "2A", "2B" ]
  !gapprompt@gap>| !gapinput@approx15{ filt15 };|
  [ 46/63, 8/21 ]
\end{Verbatim}
 

 For the remaining statements, we use explicit computations with $S$, in the transitive degree $63$ permutation representation. We start with a function that computes a
transvection in $S_d(2)$; note that the invariant bilinear form used for symplectic groups in \textsf{GAP} is described by a matrix with nonzero entries exactly in the positions $(i,d+1-i)$, for $1 \leq i \leq d$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@transvection:= function( d )|
  !gapprompt@>| !gapinput@    local mat;|
  !gapprompt@>| !gapinput@    mat:= IdentityMat( d, Z(2) );|
  !gapprompt@>| !gapinput@    mat{ [ 1, d ] }{ [ 1, d ] }:= [ [ 0, 1 ], [ 1, 0 ] ] * Z(2);|
  !gapprompt@>| !gapinput@    return mat;|
  !gapprompt@>| !gapinput@end;;|
\end{Verbatim}
 

 First we compute, for statement{\nobreakspace}(d), the exact values $P(g,s)$ for $g$ in one of the classes \texttt{2A} or \texttt{2B}, and $s$ of order $15$. Note that the classes \texttt{2A}, \texttt{2B} are the unique classes of the lengths $63$ and $315$, respectively. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PositionsProperty( SizesConjugacyClasses( t ), x -> x in [ 63, 315 ] );|
  [ 2, 3 ]
  !gapprompt@gap>| !gapinput@d:= 6;;|
  !gapprompt@gap>| !gapinput@matgrp:= Sp(d,2);;|
  !gapprompt@gap>| !gapinput@hom:= ActionHomomorphism( matgrp, NormedRowVectors( GF(2)^d ) );;|
  !gapprompt@gap>| !gapinput@g:= Image( hom, matgrp );;|
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s15:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s15 ) = 15;|
  !gapprompt@gap>| !gapinput@2A:= Image( hom, transvection( d ) );;|
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, 2A ) );|
  63
  !gapprompt@gap>| !gapinput@IsTransitive( g, MovedPoints( g ) );|
  true
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( g, 2A, s15 );|
  11/21
  !gapprompt@gap>| !gapinput@repeat 12C:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( 12C ) = 12 and Size( Centralizer( g, 12C ) ) = 12;|
  !gapprompt@gap>| !gapinput@2B:= 12C^6;;|
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, 2B ) );|
  315
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( g, 2B, s15 );|
  8/21
\end{Verbatim}
 

 For statement{\nobreakspace}(e), we compute $P(g, s^{\prime})$, for a transvection $g$ and class representatives $s^{\prime}$ of $S$. It turns out that the minimum is $11/21$, and it is attained for exactly one $s^{\prime}$; by the above, this element has order $15$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ccl:= ConjugacyClasses( g );;|
  !gapprompt@gap>| !gapinput@reps:= List( ccl, Representative );;|
  !gapprompt@gap>| !gapinput@nongen2A:= List( reps,|
  !gapprompt@>| !gapinput@       x -> RatioOfNongenerationTransPermGroup( g, 2A, x ) );;|
  !gapprompt@gap>| !gapinput@min:= Minimum( nongen2A );|
  11/21
  !gapprompt@gap>| !gapinput@Number( nongen2A, x -> x = min );|
  1
\end{Verbatim}
 

 For statement{\nobreakspace}(f), we show that for any choice of $s^{\prime}$, at least two of the values $P(g,s^{\prime})$, with $g$ in the classes \texttt{2A}, \texttt{2B}, or \texttt{3A}, are larger than $1/3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@nongen2B:= List( reps,|
  !gapprompt@>| !gapinput@       x -> RatioOfNongenerationTransPermGroup( g, 2B, x ) );;|
  !gapprompt@gap>| !gapinput@3A:= s15^5;;|
  !gapprompt@gap>| !gapinput@nongen3A:= List( reps,|
  !gapprompt@>| !gapinput@       x -> RatioOfNongenerationTransPermGroup( g, 3A, x ) );;|
  !gapprompt@gap>| !gapinput@bad:= List( [ 1 .. NrConjugacyClasses( t ) ],|
  !gapprompt@>| !gapinput@               i -> Number( [ nongen2A, nongen2B, nongen3A ],|
  !gapprompt@>| !gapinput@                            x -> x[i] > 1/3 ) );;|
  !gapprompt@gap>| !gapinput@Minimum( bad );|
  2
\end{Verbatim}
 

 Finally, for statement{\nobreakspace}(g), we have to consider only the case
that the two elements $x$, $y$ are transvections. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PositionsProperty( approx9, x -> x + approx9[2] >= 1 );|
  [ 2 ]
\end{Verbatim}
 

 We use the random approach described in Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat s9:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s9 ) = 9;|
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 2A, 2A ], s9, 20 );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$S_8(2)$}}\label{S82}
\logpage{[ 11, 5, 21 ]}
\hyperdef{L}{X826658207D9D6570}{}
{
  We show that the group $S = S_8(2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of order $17$, ${{\mathbb M}}(S,s)$ consists of one subgroup of each of the types $O_8^-(2).2 = \Omega^-(8,2).2$, $S_4(4).2 = {{\rm Sp}}(4,4).2$, and $L_2(17) = {{\rm PSL}}(2,17)$. 
\item[{(b)}]  For $s \in S$ of order $17$, and $g \in S^{\times}$, we have $P(g,s) < 1/3$, except if $g$ is a transvection. 
\item[{(c)}]  The uniform spread of $S$ is at least two, with $s$ of order $17$. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from the list of maximal subgroups of $S$ in{\nobreakspace}\cite[p.{\nobreakspace}123]{CCN85}, and the fact that $1_H^S(s) = 1$ holds for each $H \in {{\mathbb M}}(S,s)$. Note that $17$ divides the indices of the maximal subgroups of the types $O_8^+(2).2$ and $2^7 : S_6(2)$ in $S$, and obviously $17$ does not divide the orders of the remaining maximal subgroups. 

 The permutation characters induced from the first two subgroups are uniquely
determined by the ordinary character tables. The permutation character induced
from the last subgroup is uniquely determined if one considers also the
corresponding Brauer tables; the correct class fusion is stored in the \textsf{GAP} Character Table Library, see{\nobreakspace}\cite{AmbigFus}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S8(2)" );;|
  !gapprompt@gap>| !gapinput@pi1:= PossiblePermutationCharacters( CharacterTable( "O8-(2).2" ), t );;|
  !gapprompt@gap>| !gapinput@pi2:= PossiblePermutationCharacters( CharacterTable( "S4(4).2" ), t );;|
  !gapprompt@gap>| !gapinput@pi3:= [ TrivialCharacter( CharacterTable( "L2(17)" ) )^t ];;|
  !gapprompt@gap>| !gapinput@prim:= Concatenation( pi1, pi2, pi3 );;|
  !gapprompt@gap>| !gapinput@Length( prim );|
  3
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 17 );;|
  !gapprompt@gap>| !gapinput@List( prim, x -> x[ spos ] );|
  [ 1, 1, 1 ]
\end{Verbatim}
 

 For statement{\nobreakspace}(b), we observe that ${{\sigma}}(g,s) < 1/3$ if $g$ is not a transvection, and that $P(g,s) = {{\sigma}}(g,s)$ for transvections $g$ because exactly one of the three permutation characters is nonzero on both $s$ and the class of transvections. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );;|
  !gapprompt@gap>| !gapinput@PositionsProperty( approx, x -> x >= 1/3 );|
  [ 2 ]
  !gapprompt@gap>| !gapinput@Number( prim, pi -> pi[2] <> 0 and pi[ spos ] <> 0 );|
  1
  !gapprompt@gap>| !gapinput@approx[2];|
  8/15
\end{Verbatim}
 

 In statement{\nobreakspace}(c), we have to consider only the case that the two
elements $x$, $y$ are transvections. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PositionsProperty( approx, x -> x + approx[2] >= 1 );|
  [ 2 ]
\end{Verbatim}
 

 We use the random approach described in Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@d:= 8;;|
  !gapprompt@gap>| !gapinput@matgrp:= Sp(d,2);;|
  !gapprompt@gap>| !gapinput@hom:= ActionHomomorphism( matgrp, NormedRowVectors( GF(2)^d ) );;|
  !gapprompt@gap>| !gapinput@x:= Image( hom, transvection( d ) );;|
  !gapprompt@gap>| !gapinput@g:= Image( hom, matgrp );;|
  !gapprompt@gap>| !gapinput@C:= ConjugacyClass( g, x );;  Size( C );|
  255
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 17;|
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ x, x ], s, 20 );|
  true
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$\ast${\nobreakspace}$S_{10}(2)$}}\label{S102}
\logpage{[ 11, 5, 22 ]}
\hyperdef{L}{X82A6496887F80843}{}
{
  We show that the group $S = S_{10}(2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of order $33$, ${{\mathbb M}}(S,s)$ consists of one subgroup of each of the types $\Omega^-(10,2).2$ and $L_2(32).5 = {{\rm Sp}}(2,32).5$. 
\item[{(b)}]  For $s \in S$ of order $33$, and $g \in S^{\times}$, we have $P(g,s) < 1/3$, except if $g$ is a transvection. 
\item[{(c)}]  The uniform spread of $S$ is at least two, with $s$ of order $33$. 
\end{description}
 

 By{\nobreakspace}\cite{Be00}, the only maximal subgroups of $S$ that contain $s$ have the types stated in{\nobreakspace}(a), and by{\nobreakspace}\cite[Prop.{\nobreakspace}4.3.10 and 4.8.6]{KlL90}, there is exactly one class of each of these subgroups. 

 We compute the values ${{\sigma}}( g, s )$, for all $g \in S^{\times}$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "S10(2)" );;|
  !gapprompt@gap>| !gapinput@pi1:= PossiblePermutationCharacters( CharacterTable( "O10-(2).2" ), t );;|
  !gapprompt@gap>| !gapinput@pi2:= PossiblePermutationCharacters( CharacterTable( "L2(32).5" ), t );;|
  !gapprompt@gap>| !gapinput@prim:= Concatenation( pi1, pi2 );;  Length( prim );|
  2
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 33 );;|
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );;|
\end{Verbatim}
 

 For statement{\nobreakspace}(b), we observe that ${{\sigma}}(g,s) < 1/3$ if $g$ is not a transvection, and that $P(g,s) = {{\sigma}}(g,s)$ for transvections $g$ because exactly one of the two permutation characters is nonzero on both $s$ and the class of transvections. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PositionsProperty( approx, x -> x >= 1/3 );|
  [ 2 ]
  !gapprompt@gap>| !gapinput@Number( prim, pi -> pi[2] <> 0 and pi[ spos ] <> 0 );|
  1
  !gapprompt@gap>| !gapinput@approx[2];|
  16/31
\end{Verbatim}
 

 In statement{\nobreakspace}(c), we have to consider only the case that the two
elements $x$, $y$ are transvections. We use the random approach described in
Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@d:= 10;;|
  !gapprompt@gap>| !gapinput@matgrp:= Sp(d,2);;|
  !gapprompt@gap>| !gapinput@hom:= ActionHomomorphism( matgrp, NormedRowVectors( GF(2)^d ) );;|
  !gapprompt@gap>| !gapinput@x:= Image( hom, transvection( d ) );;|
  !gapprompt@gap>| !gapinput@g:= Image( hom, matgrp );;|
  !gapprompt@gap>| !gapinput@C:= ConjugacyClass( g, x );;  Size( C );|
  1023
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 33;|
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ x, x ], s, 20 );|
  true
\end{Verbatim}
 }

                                                                     
\subsection{\textcolor{Chapter }{$U_4(2)$}}\label{U42}
\logpage{[ 11, 5, 23 ]}
\hyperdef{L}{X7A03F8EC839AF0B5}{}
{
  We show that $S = U_4(2) = {{\rm SU}}(4,2) \cong S_4(3) = {{\rm PSp}}(4,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 21/40$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $12$. 
\item[{(b)}]  For $s \in S$ of order $9$, ${{\mathbb M}}(S,s)$ consists of two groups, of the types $3^{1+2}_+ \colon 2A_4 = {{\rm GU}}(3,2)$ and $3^3 \colon S_4$, respectively. 
\item[{(c)}]  $P(S) = 2/5$, and this value is attained exactly for $P(S,s)$ with $s$ of order $9$. 
\item[{(d)}]  The uniform spread of $S$ is at least three, with $s$ of order $9$. 
\item[{(e)}]  ${{\sigma}}^{\prime}({{\rm Aut}}(S),s) = 7/20$. 
\end{description}
  

 (Note that in this example, the optimal choice of $s$ w.r.t. ${{\sigma}}(S,s)$ is not optimal w.r.t. $P(S,s)$.) 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U4(2)" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "U4(2)", 21/40, 1, [ "12A" ], [ 2 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the only classes of maximal subgroups that contain elements
of order $9$ consist of groups of the structures $3^{1+2}_+:2A_4$ and $3^3:S_4$, see{\nobreakspace}\cite[p.{\nobreakspace}26]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 6, 6, 9, 9, 12, 12 ]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );|
  [ Character( CharacterTable( "U4(2)" ),
    [ 27, 3, 7, 0, 0, 9, 0, 3, 1, 2, 0, 0, 3, 3, 0, 1, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "U4(2)" ),
    [ 36, 12, 8, 0, 0, 6, 3, 0, 2, 1, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0 ] ), 
    Character( CharacterTable( "U4(2)" ),
    [ 40, 8, 0, 13, 13, 4, 4, 4, 0, 0, 5, 5, 2, 2, 2, 0, 1, 1, 1, 1 ] ),
    Character( CharacterTable( "U4(2)" ),
    [ 40, 16, 4, 4, 4, 1, 7, 0, 2, 0, 4, 4, 1, 1, 1, 1, 1, 1, 0, 0 ] ), 
    Character( CharacterTable( "U4(2)" ),
    [ 45, 13, 5, 9, 9, 6, 3, 1, 1, 0, 1, 1, 4, 4, 1, 2, 0, 0, 1, 1 ] ) ]
\end{Verbatim}
 

 For statement{\nobreakspace}(c), we use a primitive permutation representation
on $40$ points that occurs in the natural action of ${{\rm SU}}(4,2)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:= SU(4,2);;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g, NormedRowVectors( GF(4)^4 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 45, 40 ]
  !gapprompt@gap>| !gapinput@g:= Action( g, orbs[2], OnLines );;|
\end{Verbatim}
 

 First we show that for $s$ of order $9$, $P(S,s) = 2/5$ holds. For that, we have to consider only $P(g,s)$, with $g$ in one of the classes \texttt{2A} (of length $45$) and \texttt{3A} (of length $40$); since the class \texttt{3B} contains the inverses of the elements in the class \texttt{3A}, we need not test it. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 9 );|
  17
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );|
  [ 0, 3/5, 1/10, 17/40, 17/40, 1/8, 11/40, 1/10, 1/20, 0, 9/40, 9/40, 
    3/40, 3/40, 3/40, 1/40, 1/20, 1/20, 1/40, 1/40 ]
  !gapprompt@gap>| !gapinput@badpos:= PositionsProperty( approx, x -> x >= 2/5 );|
  [ 2, 4, 5 ]
  !gapprompt@gap>| !gapinput@PowerMap( t, 2 )[4];|
  5
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 6, 6, 9, 9, 12, 12 ]
  !gapprompt@gap>| !gapinput@SizesConjugacyClasses( t );|
  [ 1, 45, 270, 40, 40, 240, 480, 540, 3240, 5184, 360, 360, 720, 720, 
    1440, 2160, 2880, 2880, 2160, 2160 ]
\end{Verbatim}
 

 A representative $g$ of a class of length $40$ can be found as the third power of any order $9$ element. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@PowerMap( t, 3 )[ spos ];|
  4
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat s:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( s ) = 9;|
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, s^3 ) );|
  40
  !gapprompt@gap>| !gapinput@prop:= RatioOfNongenerationTransPermGroup( g, s^3, s );|
  13/40
\end{Verbatim}
 

 Next we examine $g$ in the class \texttt{2A}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat x:= Random( g ); until Order( x ) = 12;|
  !gapprompt@gap>| !gapinput@Size( ConjugacyClass( g, x^6 ) );|
  45
  !gapprompt@gap>| !gapinput@prop:= RatioOfNongenerationTransPermGroup( g, x^6, s );|
  2/5
\end{Verbatim}
 

 Finally, we compute that for $s$ of order different from $9$ and $g$ in the class \texttt{2A}, $P(g,s)$ is larger than $2/5$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ccl:= List( ConjugacyClasses( g ), Representative );;|
  !gapprompt@gap>| !gapinput@SortParallel( List( ccl, Order ), ccl );|
  !gapprompt@gap>| !gapinput@List( ccl, Order );|
  [ 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 6, 6, 9, 9, 12, 12 ]
  !gapprompt@gap>| !gapinput@prop:= List( ccl, r -> RatioOfNongenerationTransPermGroup( g, x^6, r ) );|
  [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 5/9, 1, 1, 1, 1, 1, 1, 2/5, 2/5, 7/15, 
    7/15 ]
  !gapprompt@gap>| !gapinput@Minimum( prop );|
  2/5
\end{Verbatim}
 

 In order to show statement{\nobreakspace}(d), we have to consider triples $(x_1, x_2, x_3)$ with $x_i$ of prime order and $\sum_{i=1}^3 P(x_i,s) \geq 1$. This means that it suffices to check $x$ in the class \texttt{2A}, $y$ in \texttt{2A}$ \cup $\texttt{3A}, and $z$ in \texttt{2A}$ \cup $\texttt{3A}$ \cup $\texttt{3D}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx[2]:= 2/5;;|
  !gapprompt@gap>| !gapinput@approx[4]:= 13/40;;|
  !gapprompt@gap>| !gapinput@primeord:= PositionsProperty( OrdersClassRepresentatives( t ),|
  !gapprompt@>| !gapinput@                                 IsPrimeInt );|
  [ 2, 3, 4, 5, 6, 7, 10 ]
  !gapprompt@gap>| !gapinput@RemoveSet( primeord, 5 );|
  !gapprompt@gap>| !gapinput@primeord;|
  [ 2, 3, 4, 6, 7, 10 ]
  !gapprompt@gap>| !gapinput@approx{ primeord };|
  [ 2/5, 1/10, 13/40, 1/8, 11/40, 0 ]
  !gapprompt@gap>| !gapinput@AtlasClassNames( t ){ primeord };|
  [ "2A", "2B", "3A", "3C", "3D", "5A" ]
  !gapprompt@gap>| !gapinput@triples:= Filtered( UnorderedTuples( primeord, 3 ),|
  !gapprompt@>| !gapinput@                 t -> Sum( approx{ t } ) >= 1 );|
  [ [ 2, 2, 2 ], [ 2, 2, 4 ], [ 2, 2, 7 ], [ 2, 4, 4 ], [ 2, 4, 7 ] ]
\end{Verbatim}
 

 We use the random approach described in Section{\nobreakspace}\ref{subsect:groups}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@repeat 6E:= Random( g );|
  !gapprompt@>| !gapinput@   until Order( 6E ) = 6 and Size( Centralizer( g, 6E ) ) = 18;|
  !gapprompt@gap>| !gapinput@2A:= 6E^3;;|
  !gapprompt@gap>| !gapinput@3A:= s^3;;|
  !gapprompt@gap>| !gapinput@3D:= 6E^2;;|
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 2A, 2A, 2A ], s, 50 );|
  true
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 2A, 2A, 3A ], s, 50 );|
  true
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 3D, 2A, 2A ], s, 50 );|
  true
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 2A, 3A, 3A ], s, 50 );|
  true
  !gapprompt@gap>| !gapinput@RandomCheckUniformSpread( g, [ 3D, 3A, 2A ], s, 50 );|
  true
\end{Verbatim}
 

 Statement{\nobreakspace}(e) can be proved using \texttt{ProbGenInfoAlmostSimple}, cf. Section{\nobreakspace}\ref{easyloopaut}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U4(2)" );;|
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "U4(2).2" );;|
  !gapprompt@gap>| !gapinput@spos:= PositionsProperty( OrdersClassRepresentatives( t ), x -> x = 9 );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoAlmostSimple( t, t2, spos );|
  [ "U4(2).2", 7/20, [ "9AB" ], [ 2 ] ]
\end{Verbatim}
 

                                                           }

  
\subsection{\textcolor{Chapter }{$U_4(3)$}}\label{U43}
\logpage{[ 11, 5, 24 ]}
\hyperdef{L}{X7D738BE5804CF22E}{}
{
  We show that $S = U_4(3) = {{\rm PSU}}(4,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  ${{\sigma}}(S) = 53/153$, and this value is attained exactly for ${{\sigma}}(S,s)$ with $s$ of order $7$. 
\item[{(b)}]  For $s \in S$ of order $7$, ${{\mathbb M}}(S,s)$ consists of two nonconjugate groups of the type $L_3(4)$, one group of the type $U_3(3)$, and four pairwise nonconjugate groups of the type $A_7$. 
\item[{(c)}]  $P(S) = 43/135$, and this value is attained exactly for $P(S,s)$ with $s$ of order $7$. 
\item[{(d)}]  The uniform spread of $S$ is at least three, with $s$ of order $7$. 
\item[{(e)}]  The preimage of $s$ in the matrix group ${{\rm SU}}(4,3) \cong 4.U_4(3)$ has order $28$, the preimages of the groups in ${{\mathbb M}}(S,s)$ have the structures $4_2.L_3(4)$, $4 \times U_3(3) \cong {{\rm GU}}(3,3)$, and $4.A_7$ (the latter being a central product of a cyclic group of order four and $2.A_7$). 
\item[{(f)}]  $P^{\prime}(S.2_1,s) = 13/27$, ${{\sigma}}^{\prime}(S.2_2) = 1/3$, and ${{\sigma}}^{\prime}(S.2_3) = 31/162$, with $s$ of order $7$ in each case. 
\end{description}
 

 Statement{\nobreakspace}(a) follows from inspection of the primitive
permutation characters, cf.{\nobreakspace}Section{\nobreakspace}\ref{easyloop}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t:= CharacterTable( "U4(3)" );;|
  !gapprompt@gap>| !gapinput@ProbGenInfoSimple( t );|
  [ "U4(3)", 53/135, 2, [ "7A" ], [ 7 ] ]
\end{Verbatim}
 

 Statement{\nobreakspace}(b) can be read off from the permutation characters,
and the fact that the only classes of maximal subgroups that contain elements
of order $7$ consist of groups of the structures as claimed, see{\nobreakspace}\cite[p.{\nobreakspace}52]{CCN85}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@prim:= PrimitivePermutationCharacters( t );;|
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t ), 7 );|
  13
  !gapprompt@gap>| !gapinput@List( Filtered( prim, x -> x[ spos ] <> 0 ), l -> l{ [ 1, spos ] } );|
  [ [ 162, 1 ], [ 162, 1 ], [ 540, 1 ], [ 1296, 1 ], [ 1296, 1 ], 
    [ 1296, 1 ], [ 1296, 1 ] ]
\end{Verbatim}
 

 In order to show statement{\nobreakspace}(c) (which then implies
statement{\nobreakspace}(d)), we use a permutation representation on $112$ points. It corresponds to an orbit of one-dimensional subspaces in the natural
module of $\Omega^-(6,3) \cong S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@matgrp:= DerivedSubgroup( SO( -1, 6, 3 ) );;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( matgrp, NormedRowVectors( GF(3)^6 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 126, 126, 112 ]
  !gapprompt@gap>| !gapinput@G:= Action( matgrp, orbs[3], OnLines );;|
\end{Verbatim}
 

 It is sufficient to compute $P(g,s)$, for involutions $g \in S$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@approx:= ApproxP( prim, spos );|
  [ 0, 53/135, 1/10, 1/24, 1/24, 7/45, 4/45, 1/27, 1/36, 1/90, 1/216, 
    1/216, 7/405, 7/405, 1/270, 0, 0, 0, 0, 1/270 ]
  !gapprompt@gap>| !gapinput@Filtered( approx, x -> x >= 43/135 );|
  [ 53/135 ]
  !gapprompt@gap>| !gapinput@OrdersClassRepresentatives( t );|
  [ 1, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 6, 7, 7, 8, 9, 9, 9, 9, 12 ]
  !gapprompt@gap>| !gapinput@ResetGlobalRandomNumberGenerators();|
  !gapprompt@gap>| !gapinput@repeat g:= Random( G ); until Order(g) = 2;|
  !gapprompt@gap>| !gapinput@repeat s:= Random( G );|
  !gapprompt@>| !gapinput@   until Order(s) = 7;|
  !gapprompt@gap>| !gapinput@bad:= RatioOfNongenerationTransPermGroup( G, g, s );|
  43/135
  !gapprompt@gap>| !gapinput@bad < 1/3;|
  true
\end{Verbatim}
 

 Statement{\nobreakspace}(e) can be shown easily with character-theoretic
methods, as follows. Since ${{\rm SU}}(4,3)$ is a Schur cover of $S$ and the groups in ${{\mathbb M}}(S,s)$ are simple, only very few possibilities have to be checked. The Schur
multiplier of $U_3(3)$ is trivial (see, e.{\nobreakspace}g., \cite[p.{\nobreakspace}14]{CCN85}), so the preimage in ${{\rm SU}}(4,3)$ is a direct product of $U_3(3)$ and the centre of ${{\rm SU}}(4,3)$. Neither $L_3(4)$ nor its double cover $2.L_3(4)$ can be a subgroup of ${{\rm SU}}(4,3)$, so the preimage of $L_3(4)$ must be a Schur cover of $L_3(4)$, i.{\nobreakspace}e., it must have either the type $4_1.L_3(4)$ or $4_2.L_3(4)$ (see{\nobreakspace}\cite[p.{\nobreakspace}23]{CCN85}); only the type $4_2.L_3(4)$ turns out to be possible. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@4t:= CharacterTable( "4.U4(3)" );;|
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( "L3(4)" ), 4t ) );|
  0
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( "2.L3(4)" ), 4t ) );|
  0
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( "4_1.L3(4)" ), 4t ) );|
  0
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( "4_2.L3(4)" ), 4t ) );|
  4
\end{Verbatim}
 

 As for the preimage of the $A_7$ type subgroups, we first observe that the double cover of $A_7$ cannot be a subgroup of the double cover of $S$, so the preimage of $A_7$ in the double cover of $U_4(3)$ is a direct product $2 \times A_7$. The group ${{\rm SU}}(4,3)$ does not contain $A_7$ type subgroups, thus the $A_7$ type subgroups in $2.U_4(3)$ lift to double covers of $A_7$ in ${{\rm SU}}(4,3)$. This proves the claimed structure. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@2t:= CharacterTable( "2.U4(3)" );;|
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( "2.A7" ), 2t ) );|
  0
  !gapprompt@gap>| !gapinput@Length( PossibleClassFusions( CharacterTable( "A7" ), 4t ) );|
  0
\end{Verbatim}
 

 For statement{\nobreakspace}(f), we consider automorphic extensions of $S$. The bound for $S.2_3$ has been computed in Section{\nobreakspace}\ref{easyloopaut}. That for $S.2_2$ can be computed form the fact that the classes of maximal subgroups of $S.2_2$ containing $s$ of order $7$ are $S$, one class of $U_3(3).2$ type subgroups, and two classes of $S_7$ type subgroups which induce the same permutation character (see{\nobreakspace}\cite[p.{\nobreakspace}52]{CCN85}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@t2:= CharacterTable( "U4(3).2_2" );;|
  !gapprompt@gap>| !gapinput@pi1:= PossiblePermutationCharacters( CharacterTable( "U3(3).2" ), t2 );|
  [ Character( CharacterTable( "U4(3).2_2" ),
    [ 540, 12, 54, 0, 0, 9, 8, 0, 0, 6, 0, 0, 1, 2, 0, 0, 0, 2, 0, 24, 
        4, 0, 0, 0, 0, 0, 0, 3, 2, 0, 4, 0, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@pi2:= PossiblePermutationCharacters( CharacterTable( "A7.2" ), t2 );|
  [ Character( CharacterTable( "U4(3).2_2" ),
    [ 1296, 48, 0, 27, 0, 9, 0, 4, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 216, 
        24, 0, 4, 0, 0, 0, 9, 0, 3, 0, 1, 0, 1, 0, 0 ] ) ]
  !gapprompt@gap>| !gapinput@prim:= Concatenation( pi1, pi2, pi2 );;|
  !gapprompt@gap>| !gapinput@outer:= Difference(|
  !gapprompt@>| !gapinput@     PositionsProperty( OrdersClassRepresentatives( t2 ), IsPrimeInt ),|
  !gapprompt@>| !gapinput@     ClassPositionsOfDerivedSubgroup( t2 ) );;|
  !gapprompt@gap>| !gapinput@spos:= Position( OrdersClassRepresentatives( t2 ), 7 );;|
  !gapprompt@gap>| !gapinput@Maximum( ApproxP( prim, spos ){ outer } );|
  1/3
\end{Verbatim}
 

 Finally, Section{\nobreakspace}\ref{easyloopaut} shows that the character tables are not sufficient for what we need, so we
compute the exact proportion of nongeneration for $U_4(3).2_1 \cong {{\rm SO}}^-(6,3)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@matgrp:= SO( -1, 6, 3 );|
  SO(-1,6,3)
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( matgrp, NormedRowVectors( GF(3)^6 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 126, 126, 112 ]
  !gapprompt@gap>| !gapinput@G:= Action( matgrp, orbs[3], OnLines );;|
  !gapprompt@gap>| !gapinput@repeat s:= Random( G );|
  !gapprompt@>| !gapinput@   until Order( s ) = 7;|
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     repeat 2B:= Random( G ); until Order( 2B ) mod 2 = 0;|
  !gapprompt@>| !gapinput@     2B:= 2B^( Order( 2B ) / 2 );|
  !gapprompt@>| !gapinput@     c:= Centralizer( G, 2B );|
  !gapprompt@>| !gapinput@   until Size( c ) = 12096;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( G, 2B, s );|
  13/27
  !gapprompt@gap>| !gapinput@repeat|
  !gapprompt@>| !gapinput@     repeat 2C:= Random( G ); until Order( 2C ) mod 2 = 0;|
  !gapprompt@>| !gapinput@     2C:= 2C^( Order( 2C ) / 2 );|
  !gapprompt@>| !gapinput@     c:= Centralizer( G, 2C );|
  !gapprompt@>| !gapinput@   until Size( c ) = 1440;|
  !gapprompt@gap>| !gapinput@RatioOfNongenerationTransPermGroup( G, 2C, s );|
  0
\end{Verbatim}
 }

  
\subsection{\textcolor{Chapter }{$U_6(3)$}}\label{U63}
\logpage{[ 11, 5, 25 ]}
\hyperdef{L}{X7D4BC6A38074BF68}{}
{
  We show that $S = U_6(3) = {{\rm PSU}}(6,3)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of the type $1 \perp 5$ (i.{\nobreakspace}e., the preimage of $s$ in $2.S = {{\rm SU}}(6,3)$ decomposes the natural $6$-dimensional module for $2.S$ into an orthogonal sum of two irreducible modules of the dimensions $1$ and $5$, respectively) and of order $(3^5 + 1)/2 = 122$, ${{\mathbb M}}(S,s)$ consists of one group of the type $2 \times U_5(3)$, which lifts to a subgroup of the type $4 \times U_5(3) = {{\rm GU}}(5,3)$ in $2.S$. (The preimage of $s$ in $2.S$ has order $3^5 + 1 = 244$.) 
\item[{(b)}]  ${{\sigma}}(S,s) = 353/3\,159$. 
\end{description}
 

 By{\nobreakspace}\cite{MSW94}, the only maximal subgroup of $S$ that contains $s$ is the stabilizer $H \cong 2 \times U_5(3)$ of the orthogonal decomposition. This proves statement{\nobreakspace}(a). 

 The character table of $S$ is currently not available in the \textsf{GAP} Character Table Library. We consider the permutation action of $S$ on the orbit of the stabilized $1$-space. So $M$ can be taken as a point stabilizer in this action. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CharacterTable( "U6(3)" );|
  fail
  !gapprompt@gap>| !gapinput@g:= SU(6,3);;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g, NormedRowVectors( GF(9)^6 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 22204, 44226 ]
  !gapprompt@gap>| !gapinput@repeat x:= PseudoRandom( g ); until Order( x ) = 244;|
  !gapprompt@gap>| !gapinput@List( orbs, o -> Number( o, v -> OnLines( v, x ) = v ) );|
  [ 0, 1 ]
  !gapprompt@gap>| !gapinput@g:= Action( g, orbs[2], OnLines );;|
  !gapprompt@gap>| !gapinput@M:= Stabilizer( g, 1 );;|
\end{Verbatim}
 

 Then we compute a list of elements in $M$ that covers the conjugacy classes of prime element order, from which the
numbers of fixed points and thus $\max\{ {{\mu}}( S/M, g ); g \in M^{\times} \} = {{\sigma}}( S, s )$ can be derived. This way we avoid completely to check the $S$-conjugacy of elements (class representatives of Sylow subgroups in $M$). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@elms:= [];;|
  !gapprompt@gap>| !gapinput@for p in PrimeDivisors( Size( M ) ) do|
  !gapprompt@>| !gapinput@     syl:= SylowSubgroup( M, p );|
  !gapprompt@>| !gapinput@     Append( elms, Filtered( PcConjugacyClassReps( syl ),|
  !gapprompt@>| !gapinput@                             r -> Order( r ) = p ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@1 - Minimum( List( elms, NrMovedPoints ) ) / Length( orbs[2] );|
  353/3159
\end{Verbatim}
  }

  
\subsection{\textcolor{Chapter }{$U_8(2)$}}\label{U82}
\logpage{[ 11, 5, 26 ]}
\hyperdef{L}{X7A92577A830B5F23}{}
{
  We show that $S = U_8(2) = {{\rm SU}}(8,2)$ satisfies the following. 

 
\begin{description}
\item[{(a)}]  For $s \in S$ of the type $1 \perp 7$ (i.{\nobreakspace}e., $s$ decomposes the natural $8$-dimensional module for $S$ into an orthogonal sum of two irreducible modules of the dimensions $1$ and $7$, respectively) and of order $2^7 + 1 = 129$, ${{\mathbb M}}(S,s)$ consists of one group of the type $3 \times U_7(2) = {{\rm GU}}(7,2)$. 
\item[{(b)}]  ${{\sigma}}(S,s) = 2\,753/10\,880$. 
\end{description}
 

 By{\nobreakspace}\cite{MSW94}, the only maximal subgroup of $S$ that contains $s$ is the stabilizer $M \cong {{\rm GU}}(7,2)$ of the orthogonal decomposition. This proves statement{\nobreakspace}(a). 

 The character table of $S$ is currently not available in the \textsf{GAP} Character Table Library. We proceed exactly as in Section{\nobreakspace}\ref{U63} in order to prove statement{\nobreakspace}(b). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@CharacterTable( "U8(2)" );|
  fail
  !gapprompt@gap>| !gapinput@g:= SU(8,2);;|
  !gapprompt@gap>| !gapinput@orbs:= OrbitsDomain( g, NormedRowVectors( GF(4)^8 ), OnLines );;|
  !gapprompt@gap>| !gapinput@List( orbs, Length );|
  [ 10965, 10880 ]
  !gapprompt@gap>| !gapinput@repeat x:= PseudoRandom( g ); until Order( x ) = 129;|
  !gapprompt@gap>| !gapinput@List( orbs, o -> Number( o, v -> OnLines( v, x ) = v ) );|
  [ 0, 1 ]
  !gapprompt@gap>| !gapinput@g:= Action( g, orbs[2], OnLines );;|
  !gapprompt@gap>| !gapinput@M:= Stabilizer( g, 1 );;|
  !gapprompt@gap>| !gapinput@elms:= [];;|
  !gapprompt@gap>| !gapinput@for p in PrimeDivisors( Size( M ) ) do|
  !gapprompt@>| !gapinput@     syl:= SylowSubgroup( M, p );|
  !gapprompt@>| !gapinput@     Append( elms, Filtered( PcConjugacyClassReps( syl ),|
  !gapprompt@>| !gapinput@                             r -> Order( r ) = p ) );|
  !gapprompt@>| !gapinput@   od;|
  !gapprompt@gap>| !gapinput@Length( elms );|
  611
  !gapprompt@gap>| !gapinput@1 - Minimum( List( elms, NrMovedPoints ) ) / Length( orbs[2] );|
  2753/10880
\end{Verbatim}
  }

 }

 }

  \def\bibname{References\logpage{[ "Bib", 0, 0 ]}
\hyperdef{L}{X7A6F98FD85F02BFE}{}
}

\bibliographystyle{alpha}
\bibliography{../doc/manualbib.xml,gapmanualbib.xml}

\addcontentsline{toc}{chapter}{References}

\def\indexname{Index\logpage{[ "Ind", 0, 0 ]}
\hyperdef{L}{X83A0356F839C696F}{}
}

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Index}


\printindex

\newpage
\immediate\write\pagenrlog{["End"], \arabic{page}];}
\immediate\closeout\pagenrlog
\end{document}
