|
#############################################################################
##
#W mferctbl.gap character tables of mult.-free endom. rings Thomas Breuer
#W Juergen Mueller
##
#Y Copyright (C) 2002, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
## This file contains the following {\GAP} objects.
##
## `MULTFREEINFO'
## is the global variable that encodes the character tables of the
## endomorphism rings of the faithful multiplicity-free permutation
## modules of the sporadic simple groups and their cyclic and
## bicyclic extensions.
##
## `MultFreeEndoRingCharacterTables'
## is a function that can be used for computing more detailed data
## about the endomorphism rings from the compact information
## stored in `MULTFREEINFO'.
##
#############################################################################
##
## Print the banner if wanted.
##
if not ( GAPInfo.CommandLineOptions.q or GAPInfo.CommandLineOptions.b ) then
Print(
"---------------------------------------------------------------------------\n",
"Loading the database of character tables of endomorphism rings of\n",
"multiplicity-free permutation modules of the sporadic simple groups and\n",
"their cyclic and bicyclic extensions, compiled by T. Breuer and J. Mueller.\n",
"---------------------------------------------------------------------------\n"
);
fi;
#############################################################################
##
#V MULTFREEINFO
##
## `MULTFREEINFO' is an immutable record.
## Its components are the `Identifier' values of the {\GAP} character
## tables of the sporadic simple groups and their automorphism groups.
## The value of the component corresponding to the group $G$, say,
## is a list containing in the first position a string denoting the name of
## $G$ in {\LaTeX} format, and in each of the remaining positions a triple
## `[ <const>, <subgroup>, <ctbl> ]'
## where <const> is a list of positive integers, <subgroup> is a string
## that denotes the name of a subgroup $H$ of $G$, in {\LaTeX} format,
## and <ctbl> is either the matrix of irreducible characters of the
## endomorphism ring of the permutation module $(1_H)^G$ or `fail'
## (indicating that the character table is not yet known).
## The sum of irreducible characters of $G$ at the positions in <const>
## is a multiplicity-free permutation character of $G$ that is induced from
## the trivial character of $H$.
##
## The ordering of the entries corresponds to the ordering in~\cite{BL96},
## for the scope of the latter paper.
##
if IsBound( MULTFREEINFO ) then
# Perhaps the file 'multfree.tst' has been processed in this session.
# We will need an extended version of the data used in these tests.
MakeReadWriteGlobal( "MULTFREEINFO" );
UnbindGlobal( "MULTFREEINFO" );
fi;
BindGlobal( "MULTFREEINFO", rec() );
#############################################################################
##
#F CollapsedAdjacencyMatricesFromCharacterTable( <mat> )
##
## Let $X$ be the character table of an endomorphism algebra.
## The collapsed adjacency matrix of the orbital graph that corresponds to
## the $j$-th column of $X$ is given by $X^{-1} \cdot D_j \cdot X$, where
## $D_j$ is the diagonal matrix whose diagonal is the $j$-th column of $X$.
##
BindGlobal( "CollapsedAdjacencyMatricesFromCharacterTable", function( mat )
local tr,itr;
if mat=fail then ## only for 2.B
return fail;
fi;
tr:=TransposedMat(mat);
itr:=Inverse(tr);
return List([1..Length(mat)],
j->tr*List([1..Length(mat)],i->mat[i][j]*itr[i]));
end );
#############################################################################
##
#F MultFreeEndoRingCharacterTables( <name> )
##
## For a string <name> that is the name of a sporadic simple group,
## or a cyclic or bicyclic extension of a sporadic simple group,
## `MultFreeEndoRingCharacterTables' returns a list of records that describe
## the character tables of the endomorphism rings of the faithful
## multiplicity-free permutation modules of this group,
## in a format that is similar to the classification shown in~\cite{BL96}.
##
## If <name> is the string `\"all\"' then `MultFreeEndoRingCharacterTables'
## returns the list of records for all sporadic simple groups and their
## cyclic or bicyclic extensions.
##
## Each entry in the result list has the following components.
## \beginitems
## group &
## {\LaTeX} format of <name>,
##
## name &
## <name>,
##
## character &
## the permutation character,
##
## rank &
## the rank of the character,
##
## subgroup &
## a string that is a name (in {\LaTeX} format) of the subgroup
## from whose trivial character the permutation character is induced,
##
## ctbl &
## the matrix of irreducible characters of the endomorphism ring,
## where the rows are labelled by the irreducible constituents of the
## permutation character and the columns are labelled by the orbits of
## the subgroup on its right cosets, which are ordered according to
## their lengths.
##
## mats &
## the collapsed adjacency matrices, and
##
## ATLAS &
## a string that describes (in {\LaTeX} format) the constituents of the
## permutation character, relative to the perfect group involved;
## the format is described in the section~"ref:PermCharInfoRelative"
## in the {\GAP} Reference Manual.
## \enditems
##
## In the one case where the character table is not (yet) known,
## the components `ctbl' and `mats' have the value `fail'.
##
DeclareGlobalFunction( "MultFreeEndoRingCharacterTables" );
InstallGlobalFunction( MultFreeEndoRingCharacterTables, function( name )
local alternat, # list of alternative names
result, # the result list
tbl, # character table with `Identifier' value `name'
group, # value of the `group' component of each result entry
len, # length of the list stored for `name'
chars, # list of the permutation characters for `name'
dername, # name of derived subgroup
tblsimp, # character table of the derived subgroup of `tbl'
info, # list of `ATLAS' values
i, # loop over the permutation characters
entry, # one entry in the record for `name'
pos; # position in `alternative'
alternat:= [ [ "Fi24'" ], [ "F3+" ] ];
result:= [];
if IsBound( MULTFREEINFO.( name ) ) then
if 9 < Length( name ) and name{ [ 1 .. 9 ] } = "Isoclinic" then
tbl:= CharacterTableIsoclinic(
CharacterTable( name{ [ 11 .. Length( name )-1 ] } ) );
else
tbl:= CharacterTable( name );
fi;
group:= MULTFREEINFO.( name )[1];
len:= Length( MULTFREEINFO.( name ) );
chars:= List( MULTFREEINFO.( name ){ [ 2 .. len ] },
x -> Sum( Irr( tbl ){ x[1] } ) );
if Number( name, c -> c = '.' ) = 2 then
if 9 < Length( name ) and name{ [ 1 .. 9 ] } = "Isoclinic" then
dername:= name{ [ 11 .. Length( name )-1 ] };
else
dername:= name;
fi;
i:= Position( dername, '.' );
dername:= dername{ [ 1 .. Position( dername, '.', i )-1 ] };
tblsimp:= CharacterTable( dername );
if 9 < Length( name ) and name{ [ 1 .. 9 ] } = "Isoclinic" then
StoreFusion( tblsimp, GetFusionMap( tblsimp,
CharacterTable( name{ [ 11 .. Length( name )-1 ] } ) ), tbl );
fi;
info:= PermCharInfoRelative( tblsimp, tbl, chars ).ATLAS;
elif '.' in name then
dername:= name{ [ 1 .. Position( name, '.' )-1 ] };
if Int( dername ) = fail then
tblsimp:= CharacterTable( dername );
info:= PermCharInfoRelative( tblsimp, tbl, chars ).ATLAS;
else
info:= PermCharInfo( tbl, chars ).ATLAS;
fi;
else
info:= PermCharInfo( tbl, chars ).ATLAS;
fi;
for i in [ 2 .. len ] do
entry:= MULTFREEINFO.( name )[i];
Add( result, rec( group := group,
name := name,
character := chars[ i-1 ],
charnmbs := entry[1],
rank := Length( entry[1] ),
subgroup := entry[2],
ATLAS := info[ i-1 ],
ctbl := entry[3],
mats :=
CollapsedAdjacencyMatricesFromCharacterTable( entry[3] ) ) );
od;
elif name = "all" then
for name in RecNames( MULTFREEINFO ) do
Append( result, MultFreeEndoRingCharacterTables( name ) );
od;
else
pos:= Position( alternat[1], name );
if pos = fail then
Error( "<name> must be the name of a ",
"(cyclic or bicyclic extension of a)\n",
"sporadic simple group, or the string \"all\"" );
else
return MultFreeEndoRingCharacterTables( alternat[2][ pos ] );
fi;
fi;
return result;
end );
#############################################################################
##
#F LinearCombinationString( <F>, <vectors>, <strings>, <multstring>, <val> )
##
BindGlobal( "LinearCombinationString",
function( F, vectors, strings, multstring, val )
local V, B, coeff, str, i;
V:= VectorSpace( F, vectors );
B:= Basis( V, vectors );
coeff:= Coefficients( B, val );
if coeff = fail then
return fail;
elif IsZero( coeff ) then
return String( val );
fi;
str:= "";
for i in [ 1 .. Length( coeff ) ] do
if coeff[i] > 0 then
if str <> "" then
Append( str, "+" );
fi;
if coeff[i] = 1 and strings[i] = "" then
Append( str, "1" );
elif coeff[i] <> 1 then
Append( str, String( coeff[i] ) );
if strings[i] <> "" then
Append( str, multstring );
fi;
fi;
Append( str, strings[i] );
elif coeff[i] < 0 then
if coeff[i] = -1 then
Append( str, "-" );
else
Append( str, String( coeff[i] ) );
if strings[i] <> "" then
Append( str, multstring );
fi;
fi;
Append( str, strings[i] );
fi;
od;
return str;
end );
#############################################################################
##
#F Cubic( <irrat> )
##
## The database contains nonquadratic irrationalities,
## which are either cubic or quartic.
## The function `Cubic' deals with these few cases.
##
Cubic:=function( irrat )
local bas, str, dsp, atlas, display;
if Conductor( irrat ) = 9 and irrat = ComplexConjugate( irrat ) then
bas:= [ 1, EY(9), GaloisCyc( EY(9), 2 ) ];
str:= [ "1", "y9", "y9*2" ];
dsp:= [ "1", "EY(9)", "GaloisCyc(EY(9),2)" ];
elif Conductor( irrat ) = 19 and irrat = ComplexConjugate( irrat ) then
bas:= [ EC(19), GaloisCyc( EC(19), 2 ), GaloisCyc( EC(19), 4 ) ];
str:= [ "c19", "c19*2", "c19*4" ];
dsp:= [ "EC(19)", "GaloisCyc(EC(19),2)", "GaloisCyc(EC(19),4)" ];
elif Conductor( irrat ) = 33 then
bas:= [1, EV(33), GaloisCyc(EV(33),5), GaloisCyc(EV(33),7)];
str:= [ "1", "v33", "v33*5", "v33*7" ];
dsp:= [ "1", "EV(33)", "GaloisCyc(EV(33),5)", "GaloisCyc(EV(33),7)"];
else
Error( "this should not occur" );
fi;
atlas := LinearCombinationString( Rationals, bas, str, "", irrat );
display := LinearCombinationString( Rationals, bas, dsp, "*", irrat );
return rec( value:= irrat, ATLAS := atlas, display := display );
end;
#############################################################################
##
#F CharacterLabels( <tbl> )
#F CharacterLabels( <tbl2>, <tbl>] )
##
BindGlobal( "CharacterLabels", function( arg )
local tbl, tbl2, tblfustbl2, irr, alp, degreeset, irreds, chi,
nccl2, irr2, irreds2, irrnam2, rest, i, j, chi2, k, pos, result;
if Length( arg ) = 1 and IsCharacterTable( arg[1] ) then
tbl:= arg[1];
tbl2:= false;
elif Length( arg ) = 2 and ForAll( arg, IsCharacterTable ) then
tbl:= arg[2];
tbl2:= arg[1];
tblfustbl2:= GetFusionMap( tbl, tbl2 );
if tblfustbl2 = fail or Size( tbl2 ) <> 2 * Size( tbl ) then
Error( "<tbl> must be of index 2 in <tbl2>, with stored fusion" );
fi;
else
Error( "usage: CharacterLabels( [<tbl2>, ]<tbl> )" );
fi;
irr:= Irr( tbl );
alp:= [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z" ];
degreeset:= Set( List( irr, DegreeOfCharacter ) );
# `irreds[i]' contains all irreducibles of `tbl' of the `i'-th degree.
irreds:= List( degreeset, x -> [] );
for chi in irr do
Add( irreds[ Position( degreeset, chi[1] ) ], chi );
od;
# Extend the alphabet if necessary.
while Length( alp ) < Maximum( List( irreds, Length ) ) do
alp:= Concatenation( alp,
List( alp, x -> Concatenation( "(", x, "')" ) ) );
od;
if tbl2 <> false then
# Construct relative names for the irreducibles of `tbl2'.
nccl2:= NrConjugacyClasses( tbl2 );
irr2:= Irr( tbl2 );
irreds2:= [];
irrnam2:= [];
rest:= List( irr2, x -> x{ tblfustbl2 } );
for i in [ 1 .. Length( irreds ) ] do
for j in [ 1 .. Length( irreds[i] ) ] do
chi2:= irr2{ Filtered( [ 1 .. nccl2 ],
k -> rest[k] = irreds[i][j] ) };
if Length( chi2 ) = 2 then
# The `j'-th character of the `i'-th degree of `tbl' extends.
Append( irreds2, chi2 );
Add( irrnam2, Concatenation( String( chi2[1][1] ), alp[j], "^+" ) );
Add( irrnam2, Concatenation( String( chi2[1][1] ), alp[j], "^-" ) );
else
# The `j'-th character of the `i'-th degree of `tbl' fuses
# with another character of `tbl', of the same degree.
for k in [ 1 .. nccl2 ] do
if rest[k][1] = 2 * degreeset[i]
and ScalarProduct( tbl, rest[k], irreds[i][j] ) <> 0 then
pos:= Position( irreds2, irr2[k] );
if pos = fail then
Add( irreds2, irr2[k] );
Add( irrnam2, Concatenation( String( degreeset[i] ), alp[j] ) );
else
Append( irrnam2[ pos ], alp[j] );
fi;
fi;
od;
fi;
od;
od;
result:= List( irr2, chi -> irrnam2[ Position( irreds2, chi ) ] );
else
result:= List( irr, chi -> Concatenation( String( chi[1] ),
alp[ Position( irreds[ Position( degreeset, chi[1] ) ], chi ) ] ) );
fi;
return result;
end );
#############################################################################
##
#V DisplayStringLabelledMatrixDefaults
##
BindGlobal( "DisplayStringLabelledMatrixDefaults", rec(
format := "GAP",
rowlabels := [],
rowalign := [ "t" ],
rowsep := [ , "-" ],
collabels := [],
colalign := [ "l" ],
colsep := [ , "|" ],
legend := "",
header := ""
) );
#############################################################################
##
#F DisplayStringLabelledMatrix( <matrix>, <inforec> )
##
## <inforec> must be a record;
## the following components are supported
## \beginitems
## `header'
## (default nothing)
##
## `rowlabels'
## list of row labels (default nothing)
##
## `rowalign'
## list of vertical alignments ("top", "bottom", "center";
## default top alignment)
## the first is for the column labels!
##
## `rowsep'
## list of strings that separate rows
## the first is for the row above the column labels,
## the second is for the row below the column labels!
## default separate column labels from the other lines by a line
##
## `collabels'
## list of column labels (default nothing)
##
## `colalign'
## list of horizontal alignments ("left", "right", "center";
## default left alignment of label, right alignment of the rest)
## the first is for the row labels!
##
## `colsep'
## list of strings that separate columns
## the first is for the column before the row labels,
## the second is for the column after the row labels!
## default separate row labels from the other columns with a pipe
##
## `legend'
##
## `format'
## one of `\"GAP\"', `\"HTML\"', or `\"LaTeX\"' (default `\"GAP\"').
## \enditems
##
## improved version, better than the one in `mferctbl'!
##
BindGlobal( "DisplayStringLabelledMatrix", function( matrix, inforec )
local header, rowlabels, collabels, legend, format, # options
inforec2, name,
ncols, colwidth, row, i, len, fmat, max, fcollabels,
openmat, openrow, align1, opencol, closecol, closerow, closemat,
str, j;
# Get the parameters.
inforec2:= ShallowCopy( DisplayStringLabelledMatrixDefaults );
for name in RecNames( inforec ) do
inforec2.( name ):= inforec.( name );
od;
inforec:= inforec2;
if inforec.format = "GAP" then
# Compute the column widths (used in GAP format only).
ncols:= Length( matrix[1] );
if IsEmpty( inforec.collabels ) then
colwidth:= ListWithIdenticalEntries( ncols, 0 );
else
colwidth:= List( inforec.collabels, Length );
#T may be non-dense list
fi;
for row in matrix do
for i in [ 1 .. ncols ] do
len:= Length( row[i] );
if colwidth[i] < len then
colwidth[i]:= len;
fi;
od;
od;
matrix:= List( matrix,
row -> List( [ 1 .. ncols ],
i -> String( row[i], colwidth[i] ) ) );
#T alignment!
# Inspect the row labels.
if not IsEmpty( inforec.rowlabels ) then
max:= Maximum( List( inforec.rowlabels, Length ) ) + 1;
inforec.rowlabels:= List( inforec.rowlabels, x -> String( x, -max ) );
#T label alignment!
else
max:= 0;
fi;
# Set the parameters.
if IsBound( inforec.colsep[1] ) then
Append( fcollabels, inforec.colsep[1] );
fi;
fcollabels:= String( "", max );
if IsBound( inforec.colsep[2] ) then
Append( fcollabels, inforec.colsep[2] );
fi;
for i in [ 1 .. ncols ] do
Append( fcollabels, " " );
if IsBound( inforec.collabels[i] ) then
Append( fcollabels,
String( inforec.collabels[i], colwidth[i] ) );
else
Append( fcollabels,
String( "", colwidth[i] ) );
fi;
if IsBound( inforec.colsep[ i+2 ] ) then
Append( fcollabels, inforec.colsep[ i+2 ] );
Append( fcollabels, " " );
fi;
od;
Append( fcollabels, "\n" );
openmat:= Concatenation( ListWithIdenticalEntries( max + Sum( colwidth ) + Length( colwidth ) + 1, '-' ), "\n" );
openrow:= ShallowCopy( inforec.rowlabels );
for i in [ 1 .. Length( matrix ) + 2 ] do
if not IsBound( openrow[i] ) then
openrow[i]:= "";
fi;
if IsBound( inforec.colsep[1] ) then
openrow[i]:= Concatenation( inforec.colsep[1], openrow[i] );
fi;
if IsBound( inforec.colsep[2] ) then
openrow[i]:= Concatenation( openrow[i], inforec.colsep[2] );
fi;
od;
opencol := List( matrix[1], x -> " " );
closecol := [];
for i in [ 1 .. ncols ] do
if IsBound( inforec.colsep[ i+2 ] ) then
closecol[i]:= inforec.colsep[ i+2 ];
else
closecol[i]:= "";
fi;
od;
closerow := List( matrix, x -> "\n" );
closemat := "";
elif inforec.format = "HTML" then
# Translate alignment values from LaTeX to HTML.
inforec.colalign:= ShallowCopy( inforec.colalign );
for i in [ 1 .. Length( inforec.colalign ) ] do
if IsBound( inforec.colalign[i] ) then
if inforec.colalign[i] = "l" then
inforec.colalign[i]:= "left";
elif inforec.colalign[i] = "r" then
inforec.colalign[i]:= "right";
elif inforec.colalign[i] = "c" then
inforec.colalign[i]:= "center";
fi;
fi;
od;
inforec.rowalign:= ShallowCopy( inforec.rowalign );
for i in [ 1 .. Length( inforec.rowalign ) ] do
if IsBound( inforec.rowalign[i] ) then
if inforec.rowalign[i] = "l" then
inforec.rowalign[i]:= "left";
elif inforec.rowalign[i] = "r" then
inforec.rowalign[i]:= "right";
elif inforec.rowalign[i] = "c" then
inforec.rowalign[i]:= "center";
fi;
fi;
od;
# Set the parameters.
ncols:= Length( matrix[1] );
fcollabels:= "\n<table align=\"center\"";
if not IsEmpty( inforec.colsep ) then
Append( fcollabels, " border=2" );
fi;
if not IsEmpty( inforec.collabels ) then
Append( fcollabels, ">\n<tr>\n" );
if not IsEmpty( inforec.rowlabels ) then
Append( fcollabels, "<td>\n</td>\n" );
fi;
for i in [ 1 .. ncols ] do
Append( fcollabels, "<td align=\"" );
if IsBound( inforec.colalign[ i+1 ] ) then
Append( fcollabels, inforec.colalign[ i+1 ] );
else
Append( fcollabels, "right" );
fi;
Append( fcollabels, "\">" );
if IsBound( inforec.collabels[i] ) then
Append( fcollabels, inforec.collabels[i] );
fi;
Append( fcollabels, "</td>\n" );
od;
Append( fcollabels, "</tr>\n" );
fi;
openmat:= "";
if IsEmpty( inforec.rowlabels ) then
openrow:= List( matrix, x -> "<tr>\n" );
else
if IsBound( inforec.colalign[1] ) then
align1:= inforec.colalign[1];
else
align1:= "right";
fi;
openrow:= List( inforec.rowlabels,
x -> Concatenation( "<tr>\n<td align=\"", align1, "\">", x, "</td>\n" ) );
for i in [ 1 .. Length( matrix ) ] do
if not IsBound( openrow[i] ) then
openrow[i]:= Concatenation( "<tr>\n<td align=\"", align1, "\"></td>\n" );
fi;
od;
fi;
opencol:= [];
for i in [ 1 .. ncols ] do
if IsBound( inforec.colalign[ i+1 ] ) then
opencol[i]:= Concatenation( "<td align=\"", inforec.colalign[ i+1 ], "\">\n" );
else
opencol[i]:= "<td align=\"right\">\n";
fi;
od;
closecol:= List( matrix[1], x -> "</td>\n" );
closerow:= List( matrix, x -> "</tr>\n" );
closemat:= "</table>\n";
elif inforec.format = "LaTeX" then
# Set the parameters.
ncols:= Length( matrix[1] );
fcollabels:= "\\begin{tabular}{";
if IsBound( inforec.colsep[1] ) then
Append( fcollabels, inforec.colsep[1] );
fi;
if IsBound( inforec.colalign[1] ) then
Append( fcollabels, inforec.colalign[1] );
elif not IsEmpty( inforec.rowlabels ) then
Append( fcollabels, "l" );
fi;
for i in [ 1 .. ncols ] do
if IsBound( inforec.colsep[ i+1 ] ) then
Append( fcollabels, inforec.colsep[ i+1 ] );
fi;
if IsBound( inforec.colalign[ i+1 ] ) then
Append( fcollabels, inforec.colalign[ i+1 ] );
else
Append( fcollabels, "r" );
fi;
od;
if IsBound( inforec.colsep[ ncols+2 ] ) then
Append( fcollabels, inforec.colsep[ ncols+2 ] );
fi;
Append( fcollabels, "}" );
if IsBound( inforec.rowsep[1] ) then
if inforec.rowsep[1] = "=" then
Append( fcollabels, " \\hline\\hline" );
else
Append( fcollabels, " \\hline" );
fi;
fi;
Append( fcollabels, "\n" );
if not IsEmpty( inforec.collabels ) then
for i in [ 1 .. ncols ] do
if 1 < i or not IsEmpty( inforec.rowlabels ) then
Append( fcollabels, " & " );
fi;
if IsBound( inforec.collabels[i] ) then
Append( fcollabels, inforec.collabels[i] );
fi;
Append( fcollabels, "\n" );
od;
Append( fcollabels, " \\rule[-7pt]{0pt}{20pt} \\\\" );
if IsBound( inforec.rowsep[2] ) then
if inforec.rowsep[2] = "=" then
Append( fcollabels, " \\hline\\hline" );
else
Append( fcollabels, " \\hline" );
fi;
fi;
Append( fcollabels, "\n" );
fi;
openmat:= "";
openrow:= ShallowCopy( inforec.rowlabels );
for i in [ 1 .. Length( matrix ) ] do
if not IsBound( openrow[i] ) then
openrow[i]:= "";
else
openrow[i]:= Concatenation( "$", openrow[i], "$" );
fi;
od;
closerow:= [];
for i in [ 1 .. Length( matrix ) ] do
if IsBound( inforec.rowsep[ i+2 ] ) then
if inforec.rowsep[ i+2 ] = "=" then
closerow[i]:= " \\\\ \\hline\\hline\n";
else
closerow[i]:= " \\\\ \\hline\n";
fi;
else
closerow[i]:= " \\\\\n";
fi;
od;
opencol:= List( matrix[1], x -> " & " );
if IsEmpty( inforec.rowlabels ) then
opencol[1]:= "";
fi;
closecol:= List( matrix[1], x -> "" );
closemat:= "\\rule[-7pt]{0pt}{5pt}\\end{tabular}\n";
else
Error( "<inforec>.format must be one of `\"GAP\"', `\"HTML\"', `\"LaTeX\"'" );
fi;
# Put the string for the matrix together.
str:= ShallowCopy( inforec.header );
Append( str, fcollabels );
Append( str, openmat );
for i in [ 1 .. Length( matrix ) ] do
row:= matrix[i];
Append( str, openrow[i] );
for j in [ 1 .. ncols ] do
Append( str, opencol[j] );
Append( str, row[j] );
Append( str, closecol[j] );
od;
Append( str, closerow[i] );
od;
Append( str, closemat );
Append( str, inforec.legend );
# Return the string.
return str;
end );
#############################################################################
##
#F DisplayMultFreeEndoRingCharacterTable( <record> )
##
BindGlobal( "DisplayMultFreeEndoRingCharacterTable", function( record )
local name, subname, pos, header, mat, triples, legend,
row, mrow, entry, l, triple, tbl, simpname, tbl2,
charlabels, rowlabels, collabels, str;
name:=record.group;
if name[1] = '$' then
name:= name{ [ 2 .. Length( name ) - 1 ] };
fi;
subname:= record.subgroup;
if subname[1] = '$' then
subname:= subname{ [ 2 .. Length( subname ) - 1 ] };
fi;
pos:= PositionSublist( subname, "\\leq" );
if pos <> fail then
subname:= Concatenation( subname{ [ 1 .. pos-1 ] }, "< ",
subname{ [ pos+5 .. Length( subname ) ] } );
fi;
pos:= PositionSublist( subname, "\\rightarrow" );
if pos <> fail then
subname:= Concatenation( subname{ [ 1 .. pos-1 ] }, "---> ",
subname{ [ pos+12 .. Length( subname ) ] } );
fi;
header:= Concatenation( "G = ", name, ", H = ", subname, "\n\n" );
if IsMatrix( record.ctbl ) then
mat:= [];
triples:= [];
legend:= "";
for row in record.ctbl do
mrow:= [];
for entry in row do
l:= Quadratic( entry );
if IsRecord( l ) then
Add( mrow, l.ATLAS );
else
l:= Cubic( entry );
if not IsRecord( l ) then
Error( "entry <l> not expected" );
fi;
Add( mrow, l.ATLAS );
fi;
if not IsInt( entry ) then
AddSet( triples, [ l.ATLAS, l.display ] );
fi;
od;
Add( mat, mrow );
od;
for triple in triples do
Append( legend, "\n" );
Append( legend, triple[1] );
Append( legend, " = " );
Append( legend, triple[2] );
od;
#T better legend: only smallest multiple of several
#T (example: see first table of M12.2, multiples of r3 and r5)
tbl:= CharacterTable( record.name );
if '.' in record.name then
simpname:= record.name{ [ 1 .. Position( record.name, '.' )-1 ] };
if Int(simpname)=fail then
tbl2:= tbl;
tbl:= CharacterTable( simpname );
charlabels:= CharacterLabels( tbl2, tbl );
else
charlabels:= CharacterLabels( tbl );
fi;
else
charlabels:= CharacterLabels( tbl );
fi;
rowlabels:= charlabels{ record.charnmbs };
collabels:= List( [ 1 .. record.rank ],
i -> Concatenation( "O_", String( i ) ) );
str:= DisplayStringLabelledMatrix( mat,
rec( header := header,
rowlabels := rowlabels,
collabels := collabels,
legend := legend,
format := "GAP" ) );
else
str:= Concatenation( header, "(character table not yet known)" );
fi;
Print( str, "\n" );
end );
#############################################################################
##
#F MultFreeFromTOM( <name> )
##
## For a string <name> that is a valid name for a table of marks in the
## {\GAP} library of tables of marks, `MultFreeFromTOM' returns
## the list of pairs $[ \pi, G ]$ where $\pi$ is a multiplicity free
## permutation character of the group for <name>,
## and $G$ is the corresponding permutation group,
## as computed from the table of marks of this group.
##
## If there is no table of marks for <name> or if the class fusion of the
## character table for <name> into the table of marks is not unique then
## `fail' is returned.
##
BindGlobal( "MultFreeFromTOM", function( name )
local tom, # the table of marks
G, # the underlying group
t, # the character table
fus, # fusion map from 't' to 'tom'
perms, # list of perm. characters
multfree, # list of mult. free characters and perm. groups
i, # loop over `perms'
H, # point stabilizer
tr, # right transversal of `H' in `G'
P; # permutation action of `G' on the cosets of `H'
tom:= TableOfMarks( name );
if tom <> fail then
G:= UnderlyingGroup( tom );
t:= CharacterTable( name );
fus:= FusionCharTableTom( t, tom );
if ForAll( fus, IsInt ) then
perms:= PermCharsTom( fus, tom );
multfree:= [];
for i in [ 1 .. Length( perms ) ] do
if ForAll( Irr( t ),
chi -> ScalarProduct( t, chi, perms[i] ) <= 1 ) then
H:= RepresentativeTom( tom, i );
tr:= RightTransversal( G, H );
P:= Action( G, tr, OnRight );
Add( multfree, [ Character( t, perms[i] ), P ] );
fi;
od;
else
Print( "#E fusion is not unique!\n" );
multfree:= fail;
fi;
else
multfree:= fail;
fi;
return multfree;
end );
#############################################################################
##
#F OrbitAndTransversal( <gens>, <pt> )
##
## Let <gens> be a list of permutations, and <pt> be a positive integer.
## `OrbitAndTransversal' returns a record that describes the orbit of <pt>
## under the group generated by <gens>, as follows.
## The component `orb' is the orbit itself,
## the component `from' is the list of predecessors,
## the component `use' is the list of positions of generators used
##
OrbitAndTransversal := function( gens, pt )
local orb, # the orbit of `pt'
sort, # a sorted copy of `orb', for faster lookup
from, # list of points
use,
i,
j,
img;
# Initialize the lists.
orb := [ pt ];
sort := [ pt ];
from := [ fail ];
use := [ fail ];
# Compute the orbit.
for i in orb do
for j in [ 1 .. Length( gens ) ] do
img:= i^gens[j];
if not img in sort then
Add( orb, img );
AddSet( sort, img );
Add( from, i );
Add( use, j );
fi;
od;
od;
# Return the result.
return rec( orb := orb,
from := from,
use := use,
gens := gens );
end;
#############################################################################
##
#F RepresentativeFromTransversal( <orbitinfo>, <gens>, <pt> )
##
## Let <orbitinfo> be a record returned by `OrbitAndTransversal', and <pt>
## be a point in the orbit `<orbitinfo>.orb'.
## `RepresentativeFromTransversal' returns an element in the group generated
## by `<orbitinfo>.gens' that maps `<orbitinfo>.orb[1]' to <pt>.
##
RepresentativeFromTransversal := function( record, gens, pt2 )
local orb, from, use, rep, pos;
orb := record.orb;
from := record.from;
use := record.use;
rep := ();
while pt2 <> orb[1] do
pos:= Position( orb, pt2 );
rep:= gens[ use[ pos ] ] * rep;
pt2:= from[ pos ];
od;
return rep;
end;
#############################################################################
##
#F CollapsedAdjacencyMatricesInfo( <G>[, <order>][, <S>] )
##
## Let <G> be a transitive permutations group,
## $\omega$ the smallest point moved by <G>,
## and $S$ the stabilizer of $\omega$ in <G>.
## `CollapsedAdjacencyMatricesInfo' returns a record describing the
## collapsed adjacency matrices of the permutation module.
## The components are
## `mats'
## the collapsed adjacency matrices,
##
## `points'
## a list of representatives of the orbits of $S$ on the set of the
## points moved by <G>,
##
## `representatives' :
## a list of elements in <G> such that the $i$-th entry maps $\omega$
## to the $i$-th entry in the `points' list,
##
## The order of <G> can be given as the optional argument <order>,
## and the group $S$ can be given as the optional argument <S>.
##
CollapsedAdjacencyMatricesInfo := function( arg )
local G,size,stab,points,gens,orbs,record,reps,mats,r,i,j,k,img;
# Get and check the arguments.
if Length( arg ) = 1 and IsPermGroup( arg[1] ) then
G := arg[1];
size := Size( G );
elif Length( arg ) = 2 and IsPermGroup( arg[1] )
and IsPosInt( arg[2] ) then
G := arg[1];
size := arg[2];
elif Length( arg ) = 2 and IsPermGroup( arg[1] )
and IsPermGroup( arg[2] ) then
G := arg[1];
size := Size( G );
stab := arg[2];
elif Length( arg ) = 3 and IsPermGroup( arg[1] )
and IsPosInt( arg[2] )
and IsPermGroup( arg[3] ) then
G := arg[1];
size := arg[2];
stab := arg[3];
fi;
points:= MovedPoints( G );
if not IsBound( stab ) then
stab:= Stabilizer( G, points[1] );
fi;
# Compute the orbits of the point stabilizer, and sort them.
gens:= GeneratorsOfGroup( G );
orbs:= List( Orbits( stab, points ), Set );
SortParallel( List( orbs, Length ), orbs );
# Compute representatives ...
record:= OrbitAndTransversal( gens, orbs[1][1] );
reps:= List( orbs,
x -> RepresentativeFromTransversal( record, gens, x[1] ) );
# Compute the collapsed adjacency matrices.
mats:= [];
r:= Length( orbs );
for i in [ 1 .. r ] do
mats[i]:= [];
for j in [ 1 .. r ] do
mats[i][j]:= [];
od;
for k in [1 .. r] do
img:= OnTuples( orbs[i], reps[k] );
for j in [ 1 .. r ] do
mats[i][j][k]:= Number( Intersection( orbs[j], img ) );
od;
od;
od;
# Return the result.
return rec( mats := mats,
points := List( orbs, x -> x[1] ),
representatives := reps );
end;
#############################################################################
##
## The following component can be used for running over the groups in the
## original order.
## Note that from GAP 4.5 on, `RecNames' does not return the list of
## component names in the same order as the assignments of the components.
##
MULTFREEINFO.allnames:= [ "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", "M12.2", "M22.2", "J2.2",
"HS.2", "J3.2", "McL.2", "He.2", "Suz.2", "ON.2", "Fi22.2", "HN.2",
"F3+.2", "2.M12", "2.M22", "3.M22", "4.M22", "6.M22", "12.M22", "2.J2",
"2.HS", "3.J3", "3.McL", "2.Ru", "2.Suz", "3.Suz", "6.Suz", "3.ON",
"2.Fi22", "3.Fi22", "6.Fi22", "2.Co1", "3.F3+", "2.B", "2.M12.2",
"Isoclinic(2.M12.2)", "2.M22.2", "Isoclinic(2.M22.2)", "3.M22.2",
"4.M22.2", "Isoclinic(4.M22.2)", "6.M22.2", "Isoclinic(6.M22.2)",
"12.M22.2", "Isoclinic(12.M22.2)", "2.J2.2", "Isoclinic(2.J2.2)",
"2.HS.2", "Isoclinic(2.HS.2)", "3.J3.2", "3.McL.2", "2.Suz.2",
"Isoclinic(2.Suz.2)", "3.Suz.2", "6.Suz.2", "Isoclinic(6.Suz.2)",
"3.ON.2", "2.Fi22.2", "Isoclinic(2.Fi22.2)", "3.Fi22.2", "6.Fi22.2",
"Isoclinic(6.Fi22.2)", "3.F3+.2" ];
MULTFREEINFO.("M11"):= ["$M_{11}$",
##
[[1,2],"$A_6.2_3$",
[[1,10],
[1,-1]]],
##
[[1,2,5],"$A_6 \\leq A_6.2_3$",
[[1,1,20],
[1,1,-2],
[1,-1,0]]],
##
[[1,5],"$L_2(11)$",
[[1,11],
[1,-1]]],
##
[[1,5,6,7,9,10],"$11:5 \\leq L_2(11)$",
[[1,11,11,11,55,55],
[1,-1,-1,11,-5,-5],
[1,(-5-3*ER(-11))/2,(-5+3*ER(-11))/2,-1,-5,10],
[1,(-5+3*ER(-11))/2,(-5-3*ER(-11))/2,-1,-5,10],
[1,3,3,-1,-5,-1],
[1,-1,-1,-1,7,-5]]],
##
[[1,2,8],"$3^2:Q_8.2$",
[[1,18,36],
[1,7,-8],
[1,-2,1]]],
##
[[1,2,8,10],"$3^2:8 \\leq 3^2:Q_8.2$",
[[1,1,36,72],
[1,1,14,-16],
[1,1,-4,2],
[1,-1,0,0]]],
##
[[1,2,5,8],"$A_5.2$",
[[1,15,20,30],
[1,-7,-2,8],
[1,-3,8,-6],
[1,2,-2,-1]]]];
MULTFREEINFO.("M12"):= ["$M_{12}$",
##
[[1,2],"$M_{11}$",
[[1,11],
[1,-1]]],
##
[[1,3],"$M_{11}$",
[[1,11],
[1,-1]]],
##
[[1,2,3,8,11],"$L_2(11) \\leq M_{11}$",
[[1,11,11,55,66],
[1,-1,11,-5,-6],
[1,11,-1,-5,-6],
[1,-1,-1,7,-6],
[1,-1,-1,-5,6]]],
##
[[1,2,7],"$A_6.2^2$",
[[1,20,45],
[1,8,-9],
[1,-2,1]]],
##
[[1,2,3,7,8],"$A_6.2_1 \\leq A_6.2^2$",
[[1,1,40,45,45],
[1,-1,0,15,-15],
[1,1,16,-9,-9],
[1,1,-4,1,1],
[1,-1,0,-3,3]]],
##
[[1,2,7,11],"$A_6.2_2 \\leq A_6.2^2$",
[[1,1,40,90],
[1,1,16,-18],
[1,1,-4,2],
[1,-1,0,0]]],
##
[[1,3,7],"$A_6.2^2$",
[[1,20,45],
[1,8,-9],
[1,-2,1]]],
##
[[1,2,3,7,8],"$A_6.2_1 \\leq A_6.2^2$",
[[1,1,40,45,45],
[1,1,16,-9,-9],
[1,-1,0,15,-15],
[1,1,-4,1,1],
[1,-1,0,-3,3]]],
##
[[1,3,7,11],"$A_6.2_2 \\leq A_6.2^2$",
[[1,1,40,90],
[1,1,16,-18],
[1,1,-4,2],
[1,-1,0,0]]],
##
[[1,4,5,6,11],"$L_2(11)$",
[[1,11,11,55,66],
[1,(-5-3*ER(-11))/2,(-5+3*ER(-11))/2,10,-6],
[1,(-5+3*ER(-11))/2,(-5-3*ER(-11))/2,10,-6],
[1,3,3,-1,-6],
[1,-1,-1,-5,6]]],
##
[[1,2,7,8,12],"$3^2.2.S_4$",
[[1,12,27,72,108],
[1,-4,15,-24,12],
[1,1,5,6,-13],
[1,5,-3,-6,3],
[1,-3,-3,2,3]]],
##
[[1,2,6,7,8,10,12,13],"$3^2:2.A_4 \\leq 3^2.2.S_4$",
[[1,1,24,27,27,72,72,216],
[1,1,-8,15,15,-24,-24,24],
[1,-1,0,3,-3,16,-16,0],
[1,1,2,5,5,6,6,-26],
[1,1,10,-3,-3,-6,-6,6],
[1,-1,0,-9,9,0,0,0],
[1,1,-6,-3,-3,2,2,6],
[1,-1,0,3,-3,-6,6,0]]],
##
[[1,3,7,8,12],"$3^2.2.S_4$",
[[1,12,27,72,108],
[1,-4,15,-24,12],
[1,1,5,6,-13],
[1,5,-3,-6,3],
[1,-3,-3,2,3]]],
##
[[1,3,6,7,8,9,12,13],"$3^2:2.A_4 \\leq 3^2.2.S_4$",
[[1,1,24,27,27,72,72,216],
[1,1,-8,15,15,-24,-24,24],
[1,-1,0,3,-3,16,-16,0],
[1,1,2,5,5,6,6,-26],
[1,1,10,-3,-3,-6,-6,6],
[1,-1,0,-9,9,0,0,0],
[1,1,-6,-3,-3,2,2,6],
[1,-1,0,3,-3,-6,6,0]]]];
MULTFREEINFO.("J1"):= ["$J_1$",
##
[[1,2,3,4,6],"$L_2(11)$",
[[1,11,12,110,132],
[1,(-7-ER(5))/2,(-3+3*ER(5))/2,(5+7*ER(5))/2,(3-9*ER(5))/2],
[1,(-7+ER(5))/2,(-3-3*ER(5))/2,(5-7*ER(5))/2,(3+9*ER(5))/2],
[1,4,-2,5,-8],
[1,1,4,-10,4]]],
##
[[1,2,3,4,7,8,9,10,11,12,15],"$2^3.7.3$",
[[1,8,28,56,56,56,168,168,168,168,168],
[1,-2-ER(5),1+3*ER(5),1+4*ER(5),-11-ER(5),(23-7*ER(5))/2,6*ER(5),
(-33+3*ER(5))/2,(27+9*ER(5))/2,-6-6*ER(5),(15-15*ER(5))/2],
[1,-2+ER(5),1-3*ER(5),1-4*ER(5),-11+ER(5),(23+7*ER(5))/2,-6*ER(5),
(-33-3*ER(5))/2,(27-9*ER(5))/2,-6+6*ER(5),(15+15*ER(5))/2],
[1,2,11,-4,4,-2,-24,-6,12,18,-12],
[1,-2-ER(5),-7,1+4*ER(5),-4+4*ER(5),-4-ER(5),3,3-9*ER(5),3-3*ER(5),
18+3*ER(5),-12+3*ER(5)],
[1,-2+ER(5),-7,1-4*ER(5),-4-4*ER(5),-4+ER(5),3,3+9*ER(5),3+3*ER(5),
18-3*ER(5),-12-3*ER(5)],
[1,-EC(19)-2*GaloisCyc(EC(19),2)-2*GaloisCyc(EC(19),4),
2*GaloisCyc(EC(19),4),4*EC(19)-GaloisCyc(EC(19),2),
-EC(19)+2*GaloisCyc(EC(19),2)-2*GaloisCyc(EC(19),4),
7*EC(19)+7*GaloisCyc(EC(19),2)+6*GaloisCyc(EC(19),4),
-6*EC(19)-2*GaloisCyc(EC(19),2)-GaloisCyc(EC(19),4),
3*EC(19)+GaloisCyc(EC(19),2)+2*GaloisCyc(EC(19),4),
-EC(19)+2*GaloisCyc(EC(19),2)-5*GaloisCyc(EC(19),4),
5*EC(19)+4*GaloisCyc(EC(19),2)+8*GaloisCyc(EC(19),4),
-9*EC(19)-10*GaloisCyc(EC(19),2)-7*GaloisCyc(EC(19),4)],
[1,-2*EC(19)-2*GaloisCyc(EC(19),2)-GaloisCyc(EC(19),4),
2*GaloisCyc(EC(19),2),-EC(19)+4*GaloisCyc(EC(19),4),
2*EC(19)-2*GaloisCyc(EC(19),2)-GaloisCyc(EC(19),4),
7*EC(19)+6*GaloisCyc(EC(19),2)+7*GaloisCyc(EC(19),4),
-2*EC(19)-GaloisCyc(EC(19),2)-6*GaloisCyc(EC(19),4),
EC(19)+2*GaloisCyc(EC(19),2)+3*GaloisCyc(EC(19),4),
2*EC(19)-5*GaloisCyc(EC(19),2)-GaloisCyc(EC(19),4),
4*EC(19)+8*GaloisCyc(EC(19),2)+5*GaloisCyc(EC(19),4),
-10*EC(19)-7*GaloisCyc(EC(19),2)-9*GaloisCyc(EC(19),4)],
[1,-2*EC(19)-GaloisCyc(EC(19),2)-2*GaloisCyc(EC(19),4),2*EC(19),
4*GaloisCyc(EC(19),2)-GaloisCyc(EC(19),4),
-2*EC(19)-GaloisCyc(EC(19),2)+2*GaloisCyc(EC(19),4),
6*EC(19)+7*GaloisCyc(EC(19),2)+7*GaloisCyc(EC(19),4),
-EC(19)-6*GaloisCyc(EC(19),2)-2*GaloisCyc(EC(19),4),
2*EC(19)+3*GaloisCyc(EC(19),2)+GaloisCyc(EC(19),4),
-5*EC(19)-GaloisCyc(EC(19),2)+2*GaloisCyc(EC(19),4),
8*EC(19)+5*GaloisCyc(EC(19),2)+4*GaloisCyc(EC(19),4),
-7*EC(19)-9*GaloisCyc(EC(19),2)-10*GaloisCyc(EC(19),4)],
[1,3,1,1,4,9,15,-4,-14,-1,-15],
[1,-3,1,1,4,3,-9,14,-8,-7,3]]]];
MULTFREEINFO.("M22"):= ["$M_{22}$",
##
[[1,2],"$L_3(4)$",
[[1,21],
[1,-1]]],
##
[[1,2,5],"$2^4:A_6$",
[[1,16,60],
[1,-6,5],
[1,2,-3]]],
##
[[1,2,5,7,9],"$2^4:A_5 \\leq 2^4:A_6$",
[[1,5,96,120,240],
[1,5,-36,10,20],
[1,5,12,-6,-12],
[1,-1,0,12,-12],
[1,-1,0,-8,8]]],
##
[[1,2,7],"$A_7$",
[[1,70,105],
[1,-18,17],
[1,2,-3]]],
##
[[1,2,7],"$A_7$",
[[1,70,105],
[1,-18,17],
[1,2,-3]]],
##
[[1,2,5,7],"$2^4:S_5$",
[[1,30,40,160],
[1,-3,18,-16],
[1,9,-2,-8],
[1,-3,-2,4]]],
##
[[1,2,5,6,7],"$2^3:L_3(2)$",
[[1,7,42,112,168],
[1,-4,9,24,-30],
[1,4,9,-8,-6],
[1,-3,2,-8,8],
[1,1,-6,4,0]]],
##
[[1,2,5,7,12],"$A_6.2_3$",
[[1,30,45,180,360],
[1,8,-21,48,-36],
[1,16,3,-16,-4],
[1,-2,9,8,-16],
[1,-2,-3,-4,8]]],
##
[[1,2,5,7,8,9],"$L_2(11)$",
[[1,55,55,66,165,330],
[1,15,-25,-6,45,-30],
[1,13,13,-18,-3,-6],
[1,-5,7,6,9,-18],
[1,-7,-3,-6,1,14],
[1,5,-3,6,-11,2]]]];
MULTFREEINFO.("J2"):= ["$J_2$",
##
[[1,6,7],"$U_3(3)$",
[[1,36,63],
[1,6,-7],
[1,-4,3]]],
##
[[1,7,10,11],"$3.A_6.2_2$",
[[1,36,108,135],
[1,-4,-12,15],
[1,8,-4,-5],
[1,-4,8,-5]]],
##
[[1,2,3,6,10,12],"$2^{1+4}_{-}:A_5$",
[[1,10,32,32,80,160],
[1,-5,2-6*ER(5),2+6*ER(5),20,-20],
[1,-5,2+6*ER(5),2-6*ER(5),20,-20],
[1,5,-8,-8,10,0],
[1,3,4,4,-4,-8],
[1,-2,-1,-1,-4,7]]],
##
[[1,6,7,10,12,13],"$2^{2+4}.(3 \\times S_3)$",
[[1,12,32,96,192,192],
[1,7,-8,16,-28,12],
[1,-3,12,6,-18,2],
[1,5,4,-2,10,-18],
[1,0,-1,-12,0,12],
[1,-3,-4,6,6,-6]]],
##
[[1,7,10,11,12,13,18],"$A_4 \\times A_5$",
[[1,15,20,24,180,240,360],
[1,5,10,-6,0,20,-30],
[1,1,6,10,-16,-12,10],
[1,-5,0,4,20,0,-20],
[1,6,-4,0,9,-12,0],
[1,-3,2,-6,0,-12,18],
[1,-1,-4,0,-12,16,0]]]];
MULTFREEINFO.("M23"):= ["$M_{23}$",
##
[[1,2],"$M_{22}$",
[[1,22],
[1,-1]]],
##
[[1,2,5],"$L_3(4).2_2$",
[[1,112,140],
[1,-26,25],
[1,2,-3]]],
##
[[1,2,5],"$2^4:A_7$",
[[1,112,140],
[1,-26,25],
[1,2,-3]]],
##
[[1,2,5,9],"$A_8$",
[[1,15,210,280],
[1,-8,49,-42],
[1,4,1,-6],
[1,-3,-6,8]]],
##
[[1,2,5,16],"$M_{11}$",
[[1,165,330,792],
[1,-65,100,-36],
[1,19,16,-36],
[1,-3,-6,8]]]];
MULTFREEINFO.("HS"):= ["$HS$",
##
[[1,2,3],"$M_{22}$",
[[1,22,77],
[1,-8,7],
[1,2,-3]]],
##
[[1,7],"$U_3(5).2$",
[[1,175],
[1,-1]]],
##
[[1,2,5,7],"$U_3(5) \\leq U_3(5).2$",
[[1,1,175,175],
[1,-1,35,-35],
[1,-1,-5,5],
[1,1,-1,-1]]],
##
[[1,7],"$U_3(5).2$",
[[1,175],
[1,-1]]],
##
[[1,2,6,7],"$U_3(5) \\leq U_3(5).2$",
[[1,1,175,175],
[1,-1,35,-35],
[1,-1,-5,5],
[1,1,-1,-1]]],
##
[[1,2,3,7,13],"$L_3(4).2_1$",
[[1,42,105,280,672],
[1,12,-45,80,-48],
[1,22,5,-20,-8],
[1,-2,17,16,-32],
[1,-2,-3,-4,8]]],
##
[[1,3,4,7,9],"$A_8.2$",
[[1,28,105,336,630],
[1,-12,25,16,-30],
[1,8,15,-24,0],
[1,6,-5,28,-30],
[1,-2,-5,-4,10]]],
##
[[1,2,3,4,5,6,7,9,10],"$A_8 \\leq A_8.2$",
[[1,1,28,28,105,105,336,336,1260],
[1,-1,0,0,-35,35,-112,112,0],
[1,1,-12,-12,25,25,16,16,-60],
[1,1,8,8,15,15,-24,-24,0],
[1,-1,-10,10,15,-15,-12,12,0],
[1,-1,10,-10,15,-15,-12,12,0],
[1,1,6,6,-5,-5,28,28,-60],
[1,1,-2,-2,-5,-5,-4,-4,20],
[1,-1,0,0,-5,5,8,-8,0]]],
##
[[1,2,3,4,7,9,10,13,18],"$4^3:L_3(2)$",
[[1,28,64,112,336,448,896,896,1344],
[1,-7,-36,42,-84,168,-224,56,84],
[1,13,14,32,6,28,16,-164,54],
[1,13,4,22,36,-32,-64,56,-36],
[1,-5,20,2,6,52,16,16,-108],
[1,3,4,2,-34,-12,16,16,4],
[1,-7,-6,12,6,-12,16,-4,-6],
[1,5,-10,-8,6,12,16,-4,-18],
[1,-2,4,-8,6,-2,-19,-4,24]]],
##
[[1,2,3,5,7,10,13,16,22],"$M_{11}$",
[[1,55,132,165,495,660,792,1320,1980],
[1,5,52,-85,195,-140,72,-280,180],
[1,-20,37,40,45,85,-138,-80,30],
[1,-19,-12,-21,27,84,72,-24,-108],
[1,7,4,37,63,-44,24,40,-132],
[1,-4,13,-16,-3,-11,-18,56,-18],
[1,12,-11,-8,13,21,-26,0,-2],
[1,6,13,4,-23,9,22,-24,-8],
[1,-4,-7,4,-3,-11,2,-4,22]]],
##
[[1,2,3,6,7,10,13,16,22],"$M_{11}$",
[[1,55,132,165,495,660,792,1320,1980],
[1,5,52,-85,195,-140,72,-280,180],
[1,-20,37,40,45,85,-138,-80,30],
[1,-19,-12,-21,27,84,72,-24,-108],
[1,7,4,37,63,-44,24,40,-132],
[1,-4,13,-16,-3,-11,-18,56,-18],
[1,12,-11,-8,13,21,-26,0,-2],
[1,6,13,4,-23,9,22,-24,-8],
[1,-4,-7,4,-3,-11,2,-4,22]]],
##
[[1,3,4,7,9,13,16,17,18],"$4.2^4:S_5$",
[[1,30,80,128,480,640,960,1536,1920],
[1,15,20,-32,60,80,0,96,-240],
[1,15,20,8,60,-20,0,-144,60],
[1,-3,14,40,-48,68,36,-48,-60],
[1,5,-10,8,0,20,-60,16,20],
[1,7,4,0,-28,-32,16,32,0],
[1,-5,10,-12,-10,10,-20,-4,30],
[1,-5,0,8,20,-20,0,16,-20],
[1,0,-10,-7,0,10,30,-24,0]]]];
MULTFREEINFO.("J3"):= ["$J_3$",
##
[[1,4,5,6,10,11,12,13],"$L_2(16).2$",
[[1,85,120,510,680,1360,1360,2040],
[1,13,12,-30,-40,28-36*ER(5),28+36*ER(5),-12],
[1,13,12,-30,-40,28+36*ER(5),28-36*ER(5),-12],
[1,-17,-18,0,0,68,68,-102],
[1,13,-6,6,32,-8,-8,-30],
[1,-4-ER(17),-6+2*ER(17),-11-5*ER(17),-2+6*ER(17),-8,-8,38-2*ER(17)],
[1,-4+ER(17),-6-2*ER(17),-11+5*ER(17),-2-6*ER(17),-8,-8,38+2*ER(17)],
[1,-5,12,24,-4,-8,-8,-12]]]];
MULTFREEINFO.("M24"):= ["$M_{24}$",
##
[[1,2],"$M_{23}$",
[[1,23],
[1,-1]]],
##
[[1,2,7],"$M_{22}.2$",
[[1,44,231],
[1,20,-21],
[1,-2,1]]],
##
[[1,2,7,9],"$2^4:A_8$",
[[1,30,280,448],
[1,-15,70,-56],
[1,7,4,-12],
[1,-3,-6,8]]],
##
[[1,7,14],"$M_{12}.2$",
[[1,495,792],
[1,35,-36],
[1,-9,8]]],
##
[[1,2,7,14,17],"$M_{12} \\leq M_{12}.2$",
[[1,1,495,495,1584],
[1,-1,-165,165,0],
[1,1,35,35,-72],
[1,1,-9,-9,16],
[1,-1,3,-3,0]]],
##
[[1,7,9,14],"$2^6:3.S_6$",
[[1,90,240,1440],
[1,21,10,-32],
[1,-9,20,-12],
[1,-1,-12,12]]],
##
[[1,7,9,14,18],"$2^6:3.A_6 \\leq 2^6:3.S_6$",
[[1,1,180,480,2880],
[1,1,42,20,-64],
[1,1,-18,40,-24],
[1,1,-2,-24,24],
[1,-1,0,0,0]]],
##
[[1,2,7,9,17],"$L_3(4).3.2_2$",
[[1,63,210,630,1120],
[1,39,-30,150,-160],
[1,17,3,-37,16],
[1,-3,23,3,-24],
[1,-3,-9,3,8]]],
##
[[1,2,7,8,9,17,18],"$L_3(4).3 \\leq L_3(4).3.2_2$",
[[1,1,63,63,420,1260,2240],
[1,1,39,39,-60,300,-320],
[1,1,17,17,6,-74,32],
[1,-1,-21,21,0,0,0],
[1,1,-3,-3,46,6,-48],
[1,1,-3,-3,-18,6,16],
[1,-1,3,-3,0,0,0]]],
##
[[1,7,9,14,19],"$2^6:(L_3(2) \\times S_3)$",
[[1,42,56,1008,2688],
[1,19,10,42,-72],
[1,9,-10,-48,48],
[1,-3,10,-24,16],
[1,-3,-4,18,-12]]],
##
[[1,7,8,9,14,17,19,20],
"$2^6:(L_3(2) \\times 3) \\leq 2^6:(L_3(2) \\times S_3)$",
[[1,1,56,56,84,2016,2688,2688],
[1,1,10,10,38,84,-72,-72],
[1,-1,-14,14,0,0,-168,168],
[1,1,-10,-10,18,-96,48,48],
[1,1,10,10,-6,-48,16,16],
[1,-1,10,-10,0,0,-24,24],
[1,1,-4,-4,-6,36,-12,-12],
[1,-1,-4,4,0,0,32,-32]]],
##
[[1,7,9,14,17,18,19,20,23,24,26],
"$2^6:(7:3 \\times S_3) \\leq 2^6:(L_3(2) \\times S_3)$",
[[1,7,168,168,224,224,2688,2688,8064,8064,8064],
[1,7,76,76,40,40,-72,-72,-216,-216,336],
[1,7,36,36,-40,-40,48,48,144,144,-384],
[1,7,-12,-12,40,40,16,16,48,48,-192],
[1,-1,12,-12,-8,8,0,0,-288,288,0],
[1,-1,-24,24,-32,32,0,0,0,0,0],
[1,7,-12,-12,-16,-16,-12,-12,-36,-36,144],
[1,-1,12,-12,-8,8,112,-112,48,-48,0],
[1,-1,12,-12,-8,8,-48,48,48,-48,0],
[1,-1,-4,4,8,-8,60,60,-60,-60,0],
[1,-1,-4,4,8,-8,-32,-32,32,32,0]]]];
MULTFREEINFO.("McL"):= ["$McL$",
##
[[1,2,4],"$U_4(3)$",
[[1,112,162],
[1,-28,27],
[1,2,-3]]],
##
[[1,2,4,9],"$M_{22}$",
[[1,330,462,1232],
[1,-120,147,-28],
[1,30,27,-58],
[1,-3,-6,8]]],
##
[[1,2,4,9],"$M_{22}$",
[[1,330,462,1232],
[1,-120,147,-28],
[1,30,27,-58],
[1,-3,-6,8]]],
##
[[1,2,4,9,14],"$U_3(5)$",
[[1,252,750,2625,3500],
[1,-126,300,-525,350],
[1,54,90,-15,-130],
[1,-18,12,51,-46],
[1,4,-10,-15,20]]],
##
[[1,4,12,14,15],"$3^{1+4}:2S_5$",
[[1,90,1215,2430,11664],
[1,35,225,-45,-216],
[1,-1,-3,-69,72],
[1,10,-25,30,-16],
[1,-10,15,30,-36]]],
##
[[1,4,9,14,15,20],"$2.A_8$",
[[1,210,2240,5040,6720,8064],
[1,45,260,90,-540,144],
[1,39,-28,72,60,-144],
[1,-5,60,-60,60,-56],
[1,-15,-10,90,-30,-36],
[1,3,-28,-36,-12,72]]]];
MULTFREEINFO.("He"):= ["$He$",
##
[[1,2,3,6,9],"$S_4(4).2$",
[[1,136,136,425,1360],
[1,-18-14*ER(-7),-18+14*ER(-7),75,-40],
[1,-18+14*ER(-7),-18-14*ER(-7),75,-40],
[1,10,10,5,-26],
[1,-4,-4,-9,16]]],
##
[[1,2,3,6,7,8,9],"$S_4(4) \\leq S_4(4).2$",
[[1,1,272,272,425,425,2720],
[1,1,-36-28*ER(-7),-36+28*ER(-7),75,75,-80],
[1,1,-36+28*ER(-7),-36-28*ER(-7),75,75,-80],
[1,1,20,20,5,5,-52],
[1,-1,0,0,-5*ER(17),5*ER(17),0],
[1,-1,0,0,5*ER(17),-5*ER(17),0],
[1,1,-8,-8,-9,-9,32]]],
##
[[1,2,3,6,9,12,14],"$2^2.L_3(4).S_3$",
[[1,105,720,840,840,1344,4480],
[1,35,-120,-70-70*ER(-7),-70+70*ER(-7),224,0],
[1,35,-120,-70+70*ER(-7),-70-70*ER(-7),224,0],
[1,21,6,42,42,0,-112],
[1,7,48,-28,-28,0,0],
[1,-14,6,7,7,35,-42],
[1,0,-15,0,0,-21,35]]],
##
[[1,2,3,6,7,8,9,12,14,15],"$2^2.L_3(4).3 \\leq 2^2.L_3(4).S_3$",
[[1,1,105,105,1344,1344,1440,1680,1680,8960],
[1,1,35,35,224,224,-240,-140-140*ER(-7),-140+140*ER(-7),0],
[1,1,35,35,224,224,-240,-140+140*ER(-7),-140-140*ER(-7),0],
[1,1,21,21,0,0,12,84,84,-224],
[1,-1,-5*ER(17),5*ER(17),-64,64,0,0,0,0],
[1,-1,5*ER(17),-5*ER(17),-64,64,0,0,0,0],
[1,1,7,7,0,0,96,-56,-56,0],
[1,1,-14,-14,35,35,12,14,14,-84],
[1,1,0,0,-21,-21,-30,0,0,70],
[1,-1,0,0,21,-21,0,0,0,0]]]];
MULTFREEINFO.("Ru"):= ["$Ru$",
##
[[1,5,6],"${^2F_4(2)^{\\prime}}.2$",
[[1,1755,2304],
[1,-65,64],
[1,15,-16]]],
##
[[1,4,5,6,7],"${^2F_4(2)^{\\prime}} \\leq {^2F_4(2)^{\\prime}}.2$",
[[1,1,2304,2304,3510],
[1,-1,144,-144,0],
[1,1,64,64,-130],
[1,1,-16,-16,30],
[1,-1,-16,16,0]]],
##
[[1,6,8,14,15,16,21,23,25,32],"$(2^2 \\times Sz(8)):3$",
[[1,455,3640,5824,29120,29120,58240,87360,87360,116480],
[1,-9,392,-208,816,352,-224,-1728,1056,-448],
[1,39,-104,64,192,256,-512,192,384,-512],
[1,-9,72,192,256,-288,-64,192,-224,-128],
[1,23-2*ER(6),16-14*ER(6),-92+24*ER(6),68+28*ER(6),
-64+76*ER(6),208+148*ER(6),216-84*ER(6),-192-72*ER(6),-184-104*ER(6)],
[1,23+2*ER(6),16+14*ER(6),-92-24*ER(6),68-28*ER(6),
-64-76*ER(6),208-148*ER(6),216+84*ER(6),-192+72*ER(6),-184+104*ER(6)],
[1,-25,-40,-16,-80,-160,160,0,480,-320],
[1,23,40,64,-256,32,64,-192,96,128],
[1,-1,-64,-16,112,-64,-32,-288,-96,448],
[1,-22,20,-16,-56,167,-116,153,-159,28]]]];
MULTFREEINFO.("Suz"):= ["$Suz$",
##
[[1,4,5],"$G_2(4)$",
[[1,416,1365],
[1,20,-21],
[1,-16,15]]],
##
[[1,3,4,9,15],"$3.U_4(3):2$",
[[1,280,486,8505,13608],
[1,80,-54,405,-432],
[1,-28,90,189,-252],
[1,20,18,-75,36],
[1,-8,-10,9,8]]],
##
[[1,2,3,4,9,10,11,15],"$3.U_4(3) \\leq 3.U_4(3):2$",
[[1,1,486,486,560,8505,8505,27216],
[1,-1,162,-162,0,-945,945,0],
[1,1,-54,-54,160,405,405,-864],
[1,1,90,90,-56,189,189,-504],
[1,1,18,18,40,-75,-75,72],
[1,-1,18,-18,0,63,-63,0],
[1,-1,-18,18,0,-45,45,0],
[1,1,-10,-10,-16,9,9,16]]],
##
[[1,2,3,9,11,12],"$U_5(2)$",
[[1,891,1980,2816,6336,20736],
[1,243,-180,512,-576,0],
[1,-99,330,176,-264,-144],
[1,33,30,8,96,-168],
[1,-27,-30,32,24,0],
[1,9,6,-40,-48,72]]],
##
[[1,2,4,6,9,12,16,17,27],"$2^{1+6}_-.U_4(2)$",
[[1,54,360,1728,5120,9216,17280,46080,55296],
[1,-27,90,432,800,-1152,-2160,-1440,3456],
[1,21,30,276,-160,768,120,-1440,384],
[1,3,-60,132,200,48,-60,360,-624],
[1,15,48,12,128,-144,276,-96,-240],
[1,-9,24,-36,80,144,-108,48,-144],
[1,-11,10,48,-80,-64,80,80,-64],
[1,9,6,0,-64,0,-144,192,0],
[1,0,-12,-18,8,-9,36,-96,90]]],
##
[[1,3,4,5,9,11,12,15,17,27,28,30,33],"$2^{4+6}:3A_6$",
[[1,60,480,1536,1920,6144,6144,20480,23040,23040,46080,92160,184320],
[1,-15,30,336,120,1104,-96,-1120,-2160,-360,2880,-5040,4320],
[1,27,84,216,336,-192,864,1472,72,864,-1440,-2880,576],
[1,15,-60,-156,300,96,1104,-1120,-180,-720,720,1440,-1440],
[1,21,90,-24,48,216,-96,-112,-360,576,-96,744,-1008],
[1,-15,30,-96,120,96,-96,320,0,-360,0,0,0],
[1,-3,18,24,-96,264,96,-16,360,-144,-288,-72,-144],
[1,7,-36,116,76,48,-96,112,172,-96,240,240,-784],
[1,15,36,-12,12,-96,-48,-160,252,-144,144,-288,288],
[1,6,0,6,-42,-24,24,128,-180,-144,9,144,72],
[1,-9,12,36,12,-48,0,-112,-36,0,-144,144,144],
[1,-5,0,-16,-20,-24,24,40,40,120,240,-120,-280],
[1,3,-24,-24,12,24,-24,-40,0,72,-144,-72,216]]]];
MULTFREEINFO.("ON"):= ["$ON$",
##
[[1,2,7,8,11],"$L_3(7).2$",
[[1,5586,6384,52136,58653],
[1,196,-106,161,-252],
[1,-21,111,161,-252],
[1,42,48,-280,189],
[1,-56,-64,56,63]]],
##
[[1,2,7,8,10,11,18],"$L_3(7) \\leq L_3(7).2$",
[[1,1,11172,12768,52136,52136,117306],
[1,1,392,-212,161,161,-504],
[1,1,-42,222,161,161,-504],
[1,1,84,96,-280,-280,378],
[1,-1,0,0,-343,343,0],
[1,1,-112,-128,56,56,126],
[1,-1,0,0,152,-152,0]]],
##
[[1,2,7,9,11],"$L_3(7).2$",
[[1,5586,6384,52136,58653],
[1,196,-106,161,-252],
[1,-21,111,161,-252],
[1,42,48,-280,189],
[1,-56,-64,56,63]]],
##
[[1,2,7,9,10,11,18],"$L_3(7) \\leq L_3(7).2$",
[[1,1,11172,12768,52136,52136,117306],
[1,1,392,-212,161,161,-504],
[1,1,-42,222,161,161,-504],
[1,1,84,96,-280,-280,378],
[1,-1,0,0,-343,343,0],
[1,1,-112,-128,56,56,126],
[1,-1,0,0,152,-152,0]]]];
MULTFREEINFO.("Co3"):= ["$Co_3$",
##
[[1,5],"$McL.2$",
[[1,275],
[1,-1]]],
##
[[1,2,4,5],"$McL \\leq McL.2$",
[[1,1,275,275],
[1,-1,55,-55],
[1,-1,-5,5],
[1,1,-1,-1]]],
##
[[1,2,5,9,15],"$HS$",
[[1,352,1100,4125,5600],
[1,-176,440,-825,560],
[1,76,134,-15,-196],
[1,-26,20,75,-70],
[1,4,-10,-15,20]]],
##
[[1,2,4,5,9,13,15,24],"$M_{23}$",
[[1,253,506,1771,7590,8855,14168,15456],
[1,55,-286,847,-330,-2695,3080,-672],
[1,-85,-86,147,870,105,-280,-672],
[1,1,146,343,-330,455,56,-672],
[1,10,-61,97,-105,80,-250,228],
[1,-22,31,21,15,-120,-82,156],
[1,28,11,1,75,-40,-52,-24],
[1,-4,-5,-15,-21,24,44,-24]]],
##
[[1,5,13,15,20,31],"$3^5:(2 \\times M_{11})$",
[[1,495,2673,32076,40095,53460],
[1,35,741,2268,-1305,-1740],
[1,-55,123,-324,495,-240],
[1,35,93,-324,-225,420],
[1,35,-15,0,207,-228],
[1,-9,-15,44,-57,36]]],
##
[[1,2,4,5,9,13,15,20,22,24,28,31],"$3^5:M_{11} \\leq 3^5:(2 \\times M_{11})$",
[[1,1,495,495,2673,2673,32076,32076,40095,40095,53460,53460],
[1,-1,165,-165,1485,-1485,10692,-10692,4455,-4455,5940,-5940],
[1,-1,-135,135,345,-345,-108,108,2655,-2655,-3660,3660],
[1,1,35,35,741,741,2268,2268,-1305,-1305,-1740,-1740],
[1,-1,15,-15,315,-315,-108,108,-945,945,-360,360],
[1,1,-55,-55,123,123,-324,-324,495,495,-240,-240],
[1,1,35,35,93,93,-324,-324,-225,-225,420,420],
[1,1,35,35,-15,-15,0,0,207,207,-228,-228],
[1,-1,33,-33,9,-9,-108,108,135,-135,36,-36],
[1,-1,-27,27,21,-21,-108,108,63,-63,228,-228],
[1,-1,-3,3,-27,27,108,-108,-81,81,-108,108],
[1,1,-9,-9,-15,-15,44,44,-57,-57,36,36]]],
##
[[1,5,14,15,20,27,29],"$2.S_6(2)$",
[[1,630,1920,8960,30240,48384,80640],
[1,147,-288,1232,1260,2016,-4368],
[1,-45,120,-40,540,-216,-360],
[1,75,0,80,180,-576,240],
[1,3,72,116,-252,72,-12],
[1,15,0,-100,0,144,-60],
[1,-18,-33,32,0,-54,72]]]];
MULTFREEINFO.("Co2"):= ["$Co_2$",
##
[[1,4,6],"$U_6(2).2$",
[[1,891,1408],
[1,63,-64],
[1,-9,8]]],
##
[[1,2,4,6,7],"$U_6(2) \\leq U_6(2).2$",
[[1,1,891,891,2816],
[1,-1,297,-297,0],
[1,1,63,63,-128],
[1,1,-9,-9,16],
[1,-1,-3,3,0]]],
##
[[1,4,5,6,8,15,17,28,36,39,44],"$U_5(2).2 \\leq U_6(2).2$",
[[1,176,495,5346,8448,8910,14256,142560,253440,427680,684288],
[1,176,495,378,-384,630,1008,10080,-11520,30240,-31104],
[1,-16,15,1026,-768,270,-1296,4320,7680,-4320,-6912],
[1,176,495,-54,48,-90,-144,-1440,1440,-4320,3888],
[1,-16,15,378,384,-810,432,4320,-3840,-4320,3456],
[1,8,-9,378,288,126,504,-1008,576,0,-864],
[1,8,-9,-54,-288,414,360,576,-576,-1296,864],
[1,-16,15,-54,-48,-90,144,0,480,0,-432],
[1,-16,15,26,32,70,-96,-80,-320,80,288],
[1,8,-9,-54,96,30,-24,192,192,-144,-288],
[1,8,-9,26,-64,-50,-24,-128,-128,176,192]]],
##
[[1,2,3,4,5,6,7,8,15,16,17,19,21,28,35,36,39,42,44,48],
"$U_5(2) \\leq U_6(2).2$",
[[1,1,176,176,495,495,5346,5346,8910,8910,14256,14256,16896,142560,
142560,253440,253440,427680,427680,1368576],
[1,-1,176,-176,495,-495,1782,-1782,-2970,2970,4752,-4752,0,-47520,47520,
0,0,142560,-142560,0],
[1,-1,-16,16,15,-15,1782,-1782,1350,-1350,-432,432,0,-12960,12960,
-30720,30720,-12960,12960,0],
[1,1,176,176,495,495,378,378,630,630,1008,1008,-768,10080,10080,
-11520,-11520,30240,30240,-62208],
[1,1,-16,-16,15,15,1026,1026,270,270,-1296,-1296,-1536,4320,4320,
7680,7680,-4320,-4320,-13824],
[1,1,176,176,495,495,-54,-54,-90,-90,-144,-144,96,-1440,-1440,1440,1440,
-4320,-4320,7776],
[1,-1,176,-176,495,-495,-18,18,30,-30,-48,48,0,480,-480,0,0,-1440,1440,0],
[1,1,-16,-16,15,15,378,378,-810,-810,432,432,768,4320,4320,-3840,-3840,
-4320,-4320,6912],
[1,1,8,8,-9,-9,378,378,126,126,504,504,576,-1008,-1008,576,576,0,0,-1728],
[1,-1,-16,16,15,-15,270,-270,-162,162,-432,432,0,-864,864,1536,-1536,
-864,864,0],
[1,1,8,8,-9,-9,-54,-54,414,414,360,360,-576,576,576,-576,-576,
-1296,-1296,1728],
[1,-1,-16,16,15,-15,-18,18,350,-350,368,-368,0,-960,960,1280,-1280,
-960,960,0],
[1,-1,8,-8,-9,9,270,-270,54,-54,216,-216,0,864,-864,0,0,432,-432,0],
[1,1,-16,-16,15,15,-54,-54,-90,-90,144,144,-96,0,0,480,480,0,0,-864],
[1,-1,8,-8,-9,9,-18,18,-138,138,120,-120,0,-192,192,0,0,-432,432,0],
[1,1,-16,-16,15,15,26,26,70,70,-96,-96,64,-80,-80,-320,-320,80,80,576],
[1,1,8,8,-9,-9,-54,-54,30,30,-24,-24,192,192,192,192,192,-144,-144,-576],
[1,-1,-16,16,15,-15,-18,18,-18,18,0,0,0,144,-144,-192,192,144,-144,0],
[1,1,8,8,-9,-9,26,26,-50,-50,-24,-24,-128,-128,-128,-128,-128,176,176,384],
[1,-1,8,-8,-9,9,-18,18,54,-54,-72,72,0,0,0,0,0,144,-144,0]]],
##
[[1,4,6,14,17],"$2^{10}:M_{22}:2$",
[[1,462,2464,21120,22528],
[1,-21,532,-960,448],
[1,87,64,120,-272],
[1,-21,28,120,-128],
[1,3,-20,-48,64]]],
##
[[1,2,4,6,7,14,17,20],"$2^{10}:M_{22} \\leq 2^{10}:M_{22}:2$",
[[1,1,924,2464,2464,22528,22528,42240],
[1,-1,0,1232,-1232,-5632,5632,0],
[1,1,-42,532,532,448,448,-1920],
[1,1,174,64,64,-272,-272,240],
[1,-1,0,182,-182,368,-368,0],
[1,1,-42,28,28,-128,-128,240],
[1,1,6,-20,-20,64,64,-96],
[1,-1,0,-10,10,-16,16,0]]],
##
[[1,2,4,7,14,18],"$McL$",
[[1,275,2025,7128,15400,22275],
[1,-165,945,-2376,3080,-1485],
[1,91,369,504,-56,-909],
[1,-45,105,24,-280,195],
[1,19,9,-72,-56,99],
[1,-5,-15,24,40,-45]]],
##
[[1,4,6,15,17],"$2^{1+8}:S_6(2)$",
[[1,1008,1260,14336,40320],
[1,-234,225,1088,-1080],
[1,108,135,-64,-180],
[1,18,-27,80,-72],
[1,-18,9,-64,72]]],
##
[[1,4,6,14,17,27,33],"$HS.2$",
[[1,3850,4125,44352,61600,132000,231000],
[1,-14,1365,-2016,7504,-6000,-840],
[1,490,285,-2016,-560,2640,-840],
[1,-86,285,576,-416,480,-840],
[1,178,21,288,-176,-624,312],
[1,10,-35,64,160,160,-360],
[1,-30,5,-96,-80,-80,280]]],
##
[[1,2,4,6,7,14,17,18,20,27,33,38],"$HS \\leq HS.2$",
[[1,1,3850,3850,4125,4125,61600,61600,88704,231000,231000,264000],
[1,-1,770,-770,2475,-2475,24640,-24640,0,46200,-46200,0],
[1,1,-14,-14,1365,1365,7504,7504,-4032,-840,-840,-12000],
[1,1,490,490,285,285,-560,-560,-4032,-840,-840,5280],
[1,-1,-70,70,675,-675,1120,-1120,0,-4200,4200,0],
[1,1,-86,-86,285,285,-416,-416,1152,-840,-840,960],
[1,1,178,178,21,21,-176,-176,576,312,312,-1248],
[1,-1,-190,190,75,-75,-320,320,0,600,-600,0],
[1,-1,122,-122,99,-99,-416,416,0,408,-408,0],
[1,1,10,10,-35,-35,160,160,128,-360,-360,320],
[1,1,-30,-30,5,5,-80,-80,-192,280,280,-160],
[1,-1,2,-2,-21,21,64,-64,0,-72,72,0]]]];
MULTFREEINFO.("Fi22"):= ["$Fi_{22}$",
##
[[1,3,7],"$2.U_6(2)$",
[[1,693,2816],
[1,63,-64],
[1,-9,8]]],
##
[[1,3,9],"$O_7(3)$",
[[1,3159,10920],
[1,279,-280],
[1,-9,8]]],
##
[[1,3,9],"$O_7(3)$",
[[1,3159,10920],
[1,279,-280],
[1,-9,8]]],
##
[[1,7,9,13],"$O_8^+(2):S_3$",
[[1,1575,22400,37800],
[1,171,-64,-108],
[1,-9,224,-216],
[1,-9,-64,72]]],
##
[[1,4,7,8,9,13,15],"$O_8^+(2):3 \\leq O_8^+(2):S_3$",
[[1,1,1575,1575,22400,22400,75600],
[1,-1,225,-225,800,-800,0],
[1,1,171,171,-64,-64,-216],
[1,-1,-63,63,224,-224,0],
[1,1,-9,-9,224,224,-432],
[1,1,-9,-9,-64,-64,144],
[1,-1,9,-9,-64,64,0]]],
##
[[1,3,7,9,13,14,17],"$O_8^+(2):2 \\leq O_8^+(2):S_3$",
[[1,2,1575,3150,22400,44800,113400],
[1,-1,315,-315,2240,-2240,0],
[1,2,171,342,-64,-128,-324],
[1,2,-9,-18,224,448,-648],
[1,2,-9,-18,-64,-128,216],
[1,-1,-45,45,80,-80,0],
[1,-1,27,-27,-64,64,0]]],
##
[[1,2,3,5,7,10,11,17],"$2^{10}:M_{22}$",
[[1,154,1024,3696,4928,11264,42240,78848],
[1,-77,-320,924,1232,-1408,-5280,4928],
[1,49,-176,546,-532,1184,-960,-112],
[1,-35,160,294,-364,-400,120,224],
[1,37,88,186,248,32,120,-712],
[1,13,-32,6,-28,-112,120,32],
[1,-17,-20,24,32,32,120,-172],
[1,1,16,-30,-4,32,-96,80]]],
##
[[1,3,5,7,9,10,13,17,25,28],"$2^6:S_6(2)$",
[[1,135,1260,2304,8640,10080,45360,143360,241920,241920],
[1,-15,210,624,-960,1680,1260,8960,-1680,-10080],
[1,-27,126,-288,216,1008,-2268,-1792,6048,-3024],
[1,57,246,120,840,96,1368,-1408,120,-1440],
[1,3,-60,192,192,312,-576,-256,-960,1152],
[1,21,30,-96,-168,240,180,-256,-672,720],
[1,27,36,0,0,-144,-432,512,0,0],
[1,-15,66,48,-96,-48,-36,-256,48,288],
[1,-9,0,-36,72,0,0,224,-252,0],
[1,3,-24,12,-24,-12,72,-112,228,-144]]],
##
[[1,4,5,9,10,26,31,32,39,45,53],"${^2F_4(2)^{\\prime}}$",
[[1,1755,11700,14976,83200,83200,140400,187200,374400,449280,2246400],
[1,-405,900,-576,-3200,-3200,-10800,14400,-14400,17280,0],
[1,-189,1980,-576,5440,5440,4320,-7200,-14400,13824,-8640],
[1,171,612,-864,832,832,1008,3456,3744,-576,-9216],
[1,99,540,576,-320,-320,-1440,-1440,2880,2304,-2880],
[1,75,-60,192,-128,-128,624,384,-576,384,-768],
[1,27,36,-144,-608,256,0,-288,-144,0,864],
[1,27,36,-144,256,-608,0,-288,-144,0,864],
[1,-21,132,96,64,64,-48,192,-288,-960,768],
[1,27,-108,0,256,256,-432,0,0,0,0],
[1,-45,-36,0,-32,-32,144,0,288,288,-576]]]];
MULTFREEINFO.("HN"):= ["$HN$",
##
[[1,2,3,4,5,8,10,11,12,18,20,23],"$A_{12}$",
[[1,462,2520,2520,10395,16632,30800,69300,166320,166320,311850,362880],
[1,-198,360*ER(5),-360*ER(5),2475,792,4400,-9900,-7920*ER(5),7920*ER(5),
-14850,17280],
[1,-198,-360*ER(5),360*ER(5),2475,792,4400,-9900,7920*ER(5),-7920*ER(5),
-14850,17280],
[1,132,-540,-540,1485,-1188,1100,4950,-5940,-5940,0,6480],
[1,12,120,120,495,1332,-2200,300,-1080,-1080,-900,2880],
[1,82,240,240,515,-88,400,900,640,640,-1650,-1920],
[1,62,-120,-120,155,632,400,-300,80,80,1050,-1920],
[1,-48,60*ER(5),-60*ER(5),225,-108,-100,-150,180*ER(5),-180*ER(5),900,-720],
[1,-48,-60*ER(5),60*ER(5),225,-108,-100,-150,-180*ER(5),180*ER(5),900,-720],
[1,12,30,30,-45,-18,50,-150,-270,-270,450,180],
[1,-18,0,0,-45,72,80,180,0,0,-270,0],
[1,12,-20,-20,5,-68,-100,-50,180,180,-200,80]]],
[[1,2,3,4,5,8,9,10,11,12,18,20,23,24,32,39,40,41,47],"$A_{11} \\leq A_{12}$",
[[1,11,2772,2772,16632,20790,30240,30240,83160,99792,103950,362880,369600,
831600,1247400,1995840,1995840,2494800,3991680],
[1,11,-1188,-1188,792,4950,-4320*ER(5),4320*ER(5),3960,4752,24750,17280,
52800,-118800,-59400,95040*ER(5),-95040*ER(5),-118800,190080],
[1,11,-1188,-1188,792,4950,4320*ER(5),-4320*ER(5),3960,4752,24750,17280,
52800,-118800,-59400,-95040*ER(5),95040*ER(5),-118800,190080],
[1,11,792,792,-1188,2970,-6480,-6480,-5940,-7128,14850,6480,13200,59400,0,
--> --------------------
--> maximum size reached
--> --------------------
[ Verzeichnis aufwärts0.59unsichere Verbindung
Übersetzung europäischer Sprachen durch Browser
]
|