############################################################################# ## ## Partial Brauer table of M mod 29 ## ## The diploma thesis of Michael Naehrig ## (M. Naehrig,``Die Brauer-Bäume des Monsters $M$ in Charakteristik 29, ## Diplomarbeit, Lehrstuhl D für Mathematik, RWTH Aachen, 2002) ## states that the 29-modular character table of the sporadic simple ## Monster group $M$ is one of 10 candidates. ## ## Reading this file into a GAP session creates a record `Mmod29info' ## which contains the relevant information. ## Afterwards, the following works. ## ## gap> Display( Mmod29info.tmod29, rec( chars:= Mmod29info.ibrpart ) ); ## if not LoadPackage( "ctbllib" ) then Error( "the GAP Character Table Library is not available" ); fi; Mmod29info:= rec( text:= JoinStringsWithSeparator( [ "partial Brauer table of M mod 29,", "constructed by Michael Naehrig;", "179 irreducible Brauer characters known (component ibrpart),", "10 possible matrices of irreducibles (component cand);", "last change of this file on July 09, 2019", ], "\n" ), t := CharacterTable( "M" ), tmod29 := CharacterTableRegular( ~.t, 29 ), # non-princ. block B of defect 1 (3 possibilities) stem_B:= [1,2,3,4,9,12,14,16,15,13,11,10], tree_B:= [ Concatenation( List( [ 2 .. Length( ~.stem_B ) ], i -> [ ~.stem_B[ i-1 ], ~.stem_B[i] ] ), [ [ 10, 7, 8 ] ], # exceptional characters [ [ 5, 11 ], [ 6, 11 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_B ) ], i -> [ ~.stem_B[ i-1 ], ~.stem_B[i] ] ), [ [ 10, 7, 8 ] ], # exceptional characters [ [ 5, 15 ], [ 6, 15 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_B ) ], i -> [ ~.stem_B[ i-1 ], ~.stem_B[i] ] ), [ [ 10, 7, 8 ] ], # exceptional characters [ [ 5, 14 ], [ 6, 14 ] ] ) ], # princ. block A (2+4+4 possibilities for the 3 possibilities of block B) stem_A:= [1,7,9,15,22,24,27,29,28,26,25,23,17,16,12,8,4,3,2], tree_A:= [ [ Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 27 ], [ 21, 27 ], [ 18, 28 ], [ 19, 28 ], [ 10, 25 ], [ 11, 25 ], [ 6, 25 ], [ 5, 25 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 28 ], [ 21, 28 ], [ 18, 28 ], [ 19, 28 ], [ 10, 25 ], [ 11, 25 ], [ 6, 25 ], [ 5, 25 ], [ 13, 23 ], [ 14, 23 ] ] ) ], [ Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 28 ], [ 21, 28 ], [ 18, 28 ], [ 19, 28 ], [ 10, 25 ], [ 11, 25 ], [ 6, 13 ], [ 5, 14 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 28 ], [ 21, 28 ], [ 18, 28 ], [ 19, 28 ], [ 10, 28 ], [ 11, 28 ], [ 6, 13 ], [ 5, 14 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 27 ], [ 21, 27 ], [ 18, 27 ], [ 19, 27 ], [ 10, 25 ], [ 11, 25 ], [ 6, 13 ], [ 5, 14 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 27 ], [ 21, 27 ], [ 18, 27 ], [ 19, 27 ], [ 10, 28 ], [ 11, 28 ], [ 6, 13 ], [ 5, 14 ], [ 13, 23 ], [ 14, 23 ] ] ) ], [ Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 28 ], [ 21, 28 ], [ 18, 27 ], [ 19, 27 ], [ 10, 25 ], [ 11, 25 ], [ 6, 17 ], [ 5, 17 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 27 ], [ 21, 27 ], [ 18, 27 ], [ 19, 27 ], [ 10, 25 ], [ 11, 25 ], [ 6, 17 ], [ 5, 17 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 27 ], [ 21, 27 ], [ 18, 27 ], [ 19, 27 ], [ 10, 28 ], [ 11, 28 ], [ 6, 17 ], [ 5, 17 ], [ 13, 23 ], [ 14, 23 ] ] ), Concatenation( List( [ 2 .. Length( ~.stem_A ) ], i -> [ ~.stem_A[ i-1 ], ~.stem_A[i] ] ), [ [ 20, 28 ], [ 21, 28 ], [ 18, 27 ], [ 19, 27 ], [ 10, 28 ], [ 11, 28 ], [ 6, 17 ], [ 5, 17 ], [ 13, 23 ], [ 14, 23 ] ] ) ] ], # restrictions of ordinary irreducibles to 29-regular classes rest:= List( Restricted( Irr( ~.t ), ~.tmod29 ), ValuesOfClassFunction ), # distribution of ordinary irreducibles to 29-blocks inv:= InverseMap( PrimeBlocks( ~.t, 29 ).block ), # data for block A: poss. decomposition matrices and irred. Brauer char. D_A:= List( ~.tree_A, l -> List( l, DecMatBrauerTree ) ), A:= ~.rest{ ~.inv[1] }, li_A:= [ 1 .. 28 ], Y_A:= List( ~.D_A, l -> List( l, d -> Inverse( d{ ~.li_A } ) * ~.A{ ~.li_A } ) ), # data for block B: poss. decomposition matrices and irred. Brauer char. D_B:= List( ~.tree_B, DecMatBrauerTree ), B:= ~.rest{ ~.inv[2] }, li_B:= Concatenation( [ 1 .. 7 ], [ 9 .. 15 ] ), Y_B:= List( ~.D_B, d -> Inverse( d{ ~.li_B } ) * ~.B{ ~.li_B } ), # defect zero irreducibles defzero:= Filtered( ~.rest, x -> x[1] mod 29 = 0 ), # the 10 possible matrices of irreducibles cand:= Concatenation( List( [ 1 .. 3 ], i -> List( ~.Y_A[i], l -> List( Concatenation( l, ~.Y_B[i], ~.defzero ), x -> Character( ~.tmod29, x ) ) ) ) ), # the known irreducible Brauer characters ibrpart:= Intersection( ~.cand ), );;