Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  ctblm.tst   Sprache: unbekannt

 
Spracherkennung für: .tst vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# This file was created from xpl/ctblm.xpl, do not edit!
#############################################################################
##
#W  ctblm.tst                 GAP applications              Thomas Breuer
##
##  In order to run the tests, one starts GAP from the `tst` subdirectory
##  of the `pkg/ctbllib` directory, and calls `Test( "ctblm.tst" );`.
##
gap> START_TEST( "ctblm.tst" );

##
gap> LoadPackage( "ctbllib", false );
true
gap> LoadPackage( "atlasrep", false );
true

##
gap> CTblLib.IsMagmaAvailable();
true

##
gap> SizeScreen( [ 72 ] );;

##
gap> table2B:= CharacterTable( "2.B" );;
gap> cand:= Filtered( Irr( table2B ), x -> x[1] <= 196883 );;
gap> List( cand, x -> x[1] );
143719625596256 ]
gap> inv:= Positions( OrdersClassRepresentatives( table2B ), 2 );
23457 ]
gap> PrintArray( List( cand, x -> x{ Concatenation( [ 1 ], inv ) } ) );
[ [       1,       1,       1,       1,       1,       1 ],
  [    4371,    4371,    -493,     275,     275,      19 ],
  [   96255,   96255,    4863,    2047,    2047,     255 ],
  [   96256,  -96256,       0,    2048,   -2048,       0 ] ]

##
gap> Sum( cand ){ inv };
437143714371275275 ]

##
gap> table3Fi24prime:= CharacterTable( "3.Fi24'" );;
gap> cand:= Filtered( Irr( table3Fi24prime ), x -> x[1] <= 196883 );;
gap> inv:= Positions( OrdersClassRepresentatives( table3Fi24prime ), 2 );
47 ]
gap> mat:= List( cand, x -> x{ Concatenation([1], inv)});;
gap> PrintArray( mat );
[ [      1,      1,      1 ],
  [   8671,    351,    -33 ],
  [  57477,   1157,    133 ],
  [    783,     79,     15 ],
  [    783,     79,     15 ],
  [  64584,   1352,     72 ],
  [  64584,   1352,     72 ] ]

##
gap> List( cand, x -> x[2] );
1867157477783*E(3), 783*E(3)^264584*E(3), 64584*E(3)^2 ]

##
gap> Float( 196883 / 4371 );
45.043
gap> List( mat, v -> Float( v[1] / v[2] ) );
1., 24.703749.67769.911399.9113947.769247.7692 ]
gap> Float( ( 196883 - 2 * 64584 ) / ( 4371 - 2 * 1352 ) );
40.6209
gap> Float( ( 196883 - 57477 ) / ( 4371 - 1157 ) );
43.3746
gap> Float( ( 196883 - 2*57477 ) / ( 4371 - 2*1157 ) );
39.8294
gap> Float( ( 196883 - 3*57477 ) / ( 4371 - 3*1157 ) );
27.1689

##
gap> mat[3] + mat[6] + mat[7];
1866453861277 ]

##
gap> Sum( mat );
1968834371275 ]

##
gap> table3Fi24:= CharacterTable( "3.Fi24" );;
gap> cand:= Filtered( Irr( table3Fi24 ), x -> x[1] <= 196883 );;
gap> inv:= Positions( OrdersClassRepresentatives( table3Fi24 ), 2 );
35172173 ]
gap> mat:= List( cand, x -> x{ Concatenation([1], inv)});;
gap> PrintArray( mat );
[ [       1,       1,       1,       1,       1 ],
  [       1,       1,       1,      -1,      -1 ],
  [    8671,     351,     -33,    1495,     -41 ],
  [    8671,     351,     -33,   -1495,      41 ],
  [   57477,    1157,     133,    5865,     233 ],
  [   57477,    1157,     133,   -5865,    -233 ],
  [    1566,     158,      30,       0,       0 ],
  [  129168,    2704,     144,       0,       0 ] ]

##
gap> Sum( mat{ [ 14578 ] } );
19688343712754371275 ]

##
gap> pi1:= TrivialCharacter( table2B );;

##
gap> tableB:= CharacterTable( "B" );;   
gap> tableUbar:= CharacterTable( "2.2E6(2)" );;
gap> fus:= PossibleClassFusions( tableUbar, tableB );;
gap> pi:= Set( fus,
>              map -> InducedClassFunctionsByFusionMap( tableUbar, tableB,
>                         [ TrivialCharacter( tableUbar ) ], map )[1] );;
gap> Length( pi );
1
gap> pi2:= Inflated( tableB, table2B, pi )[1];;
gap> mult:= List( Irr( table2B ),
>                 chi -> ScalarProduct( table2B, chi, pi2 ) );;
gap> Maximum( mult );
1
gap> Positions( mult, 1 );
12357131517 ]

##
gap> tableUbar:= CharacterTable( "BN2B" );
CharacterTable( "2^(1+22).Co2" )
gap> fus:= PossibleClassFusions( tableUbar, tableB );;
gap> pi:= Set( fus,
>              map -> InducedClassFunctionsByFusionMap( tableUbar, tableB,
>                         [ TrivialCharacter( tableUbar ) ], map )[1] );;
gap> Length( pi );
1
gap> pi3:= Inflated( tableB, table2B, pi )[1];;
gap> mult:= List( Irr( table2B ),
>                 chi -> ScalarProduct( table2B, chi, pi3 ) );;
gap> Maximum( mult );
1
gap> Positions( mult, 1 );
1358131528303740 ]

##
gap> tableU:= CharacterTable( "Fi23" );;
gap> fus:= PossibleClassFusions( tableU, table2B );;
gap> pi:= Set( fus,
>              map -> InducedClassFunctionsByFusionMap( tableU, table2B,
>                         [ TrivialCharacter( tableU ) ], map )[1] );;
gap> Length( pi );
1
gap> pi4:= pi[1];;
gap> mult:= List( Irr( table2B ),
>                 chi -> ScalarProduct( table2B, chi, pi4 ) );;
gap> Maximum( mult );
1
gap> Positions( mult, 1 );
12357891213151723273032404154
  6368778183185186187188189194195196203
  208220 ]

##
gap> tableU:= CharacterTable( "Th" );;
gap> fus:= PossibleClassFusions( tableU, table2B );;
gap> pi:= Set( fus,
>              map -> InducedClassFunctionsByFusionMap( tableU, table2B,
>                         [ TrivialCharacter( tableU ) ], map )[1] );;
gap> Length( pi );
1
gap> pi5:= pi[1];;
gap> mult:= List( Irr( table2B ),
>                 chi -> ScalarProduct( table2B, chi, pi5 ) );;
gap> Maximum( mult );
2
gap> Positions( mult, 1 );
13781213161927283438415768707778
  8589113114116129133142143145155156185187
  188193195196201208216219225232233235236
  237242 ]
gap> Positions( mult, 2 );
62 ]

##
gap> mcl:= CharacterTable( "McL" );;
gap> co2:= CharacterTable( "Co2" );;
gap> fus:= PossibleClassFusions( mcl, co2 );;       
gap> Length( fus );
4
gap> ind:= Set( fus, map -> InducedClassFunctionsByFusionMap( mcl, co2,     
>                               [ TrivialCharacter( mcl ) ], map )[1] );;
gap> Length( ind );
1
gap> bm2:= CharacterTable( "BM2" );
CharacterTable( "2^(1+22).Co2" )
gap> infl:= Inflated( co2, bm2, ind );;
gap> ind:= Induced( bm2, tableB, infl );;
gap> infl:= Inflated( tableB, table2B, ind )[1];;

##
gap> centre:= ClassPositionsOfCentre( table2B );
12 ]
gap> pi:= PermChars( table2B, rec( torso:= [ 2 * infl[1], 0 ],
>                             normalsubgroup:= centre,
>                             nonfaithful:= infl ) );;
gap> Length( pi );
1
gap> pi6:= pi[1];;
gap> List( Irr( table2B ), chi -> ScalarProduct( table2B, chi, pi6 ) );
1121202320014120320200
  2200231504320032064011
  0000301005052002004102
  0424430242403032501031
  0112531145110300321121
  1403231301302213300200
  0030333103040100200200
  2110000121110111111021
  1330001111232002243524
  0000520001100000070017
  7000164500300000411383
  22501 ]

##
gap> tableU:= CharacterTable( "2.F4(2)" );;
gap> fus:= PossibleClassFusions( tableU, table2B );;
gap> pi:= Set( fus, map -> InducedClassFunctionsByFusionMap( tableU, table2B,
>             [ TrivialCharacter( tableU ) ], map )[1] );;
gap> Length( pi );
2
gap> pi:= Filtered( pi, x -> ClassPositionsOfKernel( x ) = [ 1 ] );;
gap> Length( pi );
1
gap> pi7:= pi[1];;
gap> List( Irr( table2B ), chi -> ScalarProduct( table2B, chi, pi7 ) );
1120202210024130210000
  2100221402120032044000
  0010001002133003014003
  0603200141426140401120
  0321320045310300112002
  0203330410411111211230
  0220553015140101100310
  2310200210100100010012
  1440003111222001233312
  0011420003200000040015
  5011224400311100411573
  25501 ]

##
gap> tableU:= CharacterTable( "HN" );;
gap> fus:= PossibleClassFusions( tableU, table2B );;
gap> pi:= Set( fus, map -> InducedClassFunctionsByFusionMap( tableU, table2B,
>             [ TrivialCharacter( tableU ) ], map )[1] );;
gap> Length( pi );
1
gap> pi8:= pi[1];;
gap> List( Irr( table2B ), chi -> ScalarProduct( table2B, chi, pi8 ) );
1121203421144211331300
  53006456174700382611255
  00213470073950064213604
  41211169731113122051061113174
  107197781014181951012237126246
  41716891711122382418262129101831
  102421172735131429191271826153434
  35201436143982924154013938241735
  3226262422173139293030194437372830
  312942404056563030425047224640
  0461010128120024161000212100
  00000280014344021010224044448
  83614141688462828589072709210456
  90 ]

##
gap> tableU:= CharacterTable( "2.Fi22" );;
gap> fus:= PossibleClassFusions( tableU, table2B );;
gap> pi:= Set( fus, map -> InducedClassFunctionsByFusionMap( tableU, table2B,
>             [ TrivialCharacter( tableU ) ], map )[1] );;
gap> Length( pi );
2
gap> pi:= Filtered( pi, x -> ClassPositionsOfKernel( x ) = [ 1 ] );;
gap> Length( pi );
1
gap> pi9:= pi[1];;
gap> List( Irr( table2B ), chi -> ScalarProduct( table2B, chi, pi9 ) );
1231415551158441760500
  1070010661331410110051121419
  6650003671100172209001281
  231118723182718127222921346227
  22183331910341212151728343472026
  4015253409634251821302118431245
  3949385118326319424133486427295238
  2919404731696965423568277320534638
  7529247250417268585254504464755869
  6549857575636865639087831181187471
  901091092369800710181622122300
  262819005161800000052112659
  7611181839778077222266272733202087
  6060103175148152187215140201 ]

##
gap> constit:= [ pi1, pi2, pi3, pi4, pi5, pi6, pi7, pi8, pi9 ];;
gap> pi:= Sum( constit );;

##
gap> sizeM:= pi[1] * Size( table2B );
808017424794512875886459904961710757005754368000000000
gap> StringPP( sizeM );
"2^46*3^20*5^9*7^6*11^2*13^3*17*19*23*29*31*41*47*59*71"
gap> sizeM = Size( CharacterTable( "M" ) );
true

##
gap> head:= rec( Size:= sizeM,
>                SizesCentralizers:= [ sizeM ],
>                OrdersClassRepresentatives:= [ 1 ],
>                fusions:= [],
>              );;

##
gap> ExtendTableHeadByRootClasses:= function( head, s, pos )
>    local fus, orders, p, cents, oldnumber, i, ord;

>    # Initialize the fusion information.
>    fus:= rec( subtable:= s, map:= [ 1 ] );
>    Add( head.fusions, fus );

>    # Compute the positions of root classes of 'pos'.
>    orders:= OrdersClassRepresentatives( s );
>    p:= orders[ pos ];
>    cents:= SizesCentralizers( s );
>    oldnumber:= Length( head.OrdersClassRepresentatives );

>    # Run over the classes of 's'
>    # are already contained in head
>    for i in [ 1 .. NrConjugacyClasses( s ) ] do
>      ord:= orders[i];
>      if ord mod p = 0 and
>         Minimum( PrimeDivisors( ord ) ) = p and
>         PowerMap( s, ord / p, i ) = pos then
>        # Class 'i' is a root class of 'pos' and is new in 'head'.
>        Add( head.SizesCentralizers, cents[i] );
>        Add( head.OrdersClassRepresentatives, orders[i] );
>        fus.map[i]:= Length( head.SizesCentralizers );
>      fi;
>    od;

>    Print( "#I  after ", Identifier( s ), ": found ",
>           Length( head.OrdersClassRepresentatives ) - oldnumber,
>           " classes, now have ",
>           Length( head.OrdersClassRepresentatives ), "\n" );
>    end;;

##
gap> ExtendTableHeadByCentralizerOrder:= function( head, s, cent, poss )
>    local ord, fus, i;

>    if IsCharacterTable( s ) then
>      ord:= Set( OrdersClassRepresentatives( s ){ poss } );
>      if Length( ord ) <> 1 then
>        Error( "classes cannot fuse" );
>      fi;
>      ord:= ord[1];
>    elif IsInt( s ) then
>      ord:= s;
>    fi;
>    Add( head.SizesCentralizers, cent );
>    Add( head.OrdersClassRepresentatives, ord );

>    Print( "#I  after order ", ord, " element" );
>    if IsCharacterTable( s ) then
>      # extend the stored fusion from s
>      fus:= First( head.fusions,
>                   r -> Identifier( r.subtable ) = Identifier( s ) );
>      for i in poss do
>        fus.map[i]:= Length( head.SizesCentralizers );
>      od;
>      Print( " from ", Identifier( s ) );
>    fi;
>    Print( ": have ",
>           Length( head.OrdersClassRepresentatives ), " classes\n" );
>    end;;

##
gap> ExtendTableHeadByPermCharValue:= function( head, s, pi_rest_to_s, poss )
>    local pival, cent;

>    pival:= Set( pi_rest_to_s{ poss } );
>    if Length( pival ) <> 1 then
>      Error( "classes cannot fuse" );
>    fi;

>    cent:= pival[1] * Size( s ) / Sum( SizesConjugacyClasses( s ){ poss } );
>    ExtendTableHeadByCentralizerOrder( head, s, cent, poss );
>    end;;

##
gap> s:= CharacterTable( "2.B" );;
gap> ClassPositionsOfCentre( s );
12 ]
gap> ExtendTableHeadByRootClasses( head, s, 2 );
#I  after 2.B: found 42 classes, now have 43
gap> s:= CharacterTable( "MN2B" );;
gap> ClassPositionsOfCentre( s );
12 ]
gap> ExtendTableHeadByRootClasses( head, s, 2 );
#I  after 2^1+24.Co1: found 91 classes, now have 134

##
gap> s:= CharacterTable( "3.Fi24" );;
gap> ClassPositionsOfPCore( s, 3 );
12 ]
gap> ExtendTableHeadByRootClasses( head, s, 2 );
#I  after 3.F3+.2: found 12 classes, now have 146
gap> s:= CharacterTableDirectProduct( CharacterTable( "Th" ),
>                                     CharacterTable( "Symmetric", 3 ) );;
gap> ClassPositionsOfPCore( s, 3 );
13 ]
gap> ExtendTableHeadByRootClasses( head, s, 3 );
#I  after ThxSym(3): found 7 classes, now have 153

##
gap> exts:= CharacterTable( "3^(1+12):6.Suz.2" );;
gap> kernels:= Positions( SizesConjugacyClasses( exts ), 2 );
2181920 ]
gap> order3_13:= Filtered( ClassPositionsOfNormalSubgroups( exts ),
>        l -> Sum( SizesConjugacyClasses( exts ){ l } ) = 3^13 );
[ [ 1 .. 4 ] ]
gap> kernels:= Difference( kernels, order3_13[1] );
181920 ]

##
gap> facts:= List( kernels, i -> exts / [ 1, i ] );
[ CharacterTable( "3^(1+12):6.Suz.2/[ 118 ]" ), 
  CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" ), 
  CharacterTable( "3^(1+12):6.Suz.2/[ 120 ]" ) ]
gap> f:= CharacterTable( "2.Suz.2" );;
gap> facts:= Filtered( facts,
>        x -> Length( PossibleClassFusions( f, x ) ) = 0 );
[ CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" ), 
  CharacterTable( "3^(1+12):6.Suz.2/[ 120 ]" ) ]

##
gap> kernels:= List( facts,
>        f -> Positions( SizesConjugacyClasses( f ), 2 ) );
[ [ 2 ], [ 2 ] ]
gap> head2:= StructuralCopy( head );;
gap> ExtendTableHeadByRootClasses( head, facts[1], 2 );
#I  after 3^(1+12):6.Suz.2/[ 119 ]: found 12 classes, now have 165
gap> ExtendTableHeadByRootClasses( head2, facts[2], 2 );
#I  after 3^(1+12):6.Suz.2/[ 120 ]: found 12 classes, now have 165

##
gap> nams:= RecNames( head );
[ "Size", "OrdersClassRepresentatives", "SizesCentralizers", 
  "fusions" ]
gap> ForAll( Difference( nams, [ "fusions" ] ),
>            nam -> head.( nam ) = head2.( nam ) );
true
gap> Length( head.fusions );
5
gap> ForAll( [ 1 .. 4 ], i -> head.fusions[i] = head2.fusions[i] );
true
gap> head.fusions[5].map = head2.fusions[5].map;
true

##
gap> s:= CharacterTable( "2.B" );;
gap> pos:= Positions( OrdersClassRepresentatives( s ), 5 );
2325 ]
gap> pi{ pos };
15390007875 ]

##
gap> cents:= List( pos,
>      i -> pi[i] * Size( s ) / SizesConjugacyClasses( s )[i] );
136515456000000094500000000 ]
gap> cents = [ 5 * Size( CharacterTable( "HN" ) ),
>              5^7 * Size( CharacterTable( "2.J2" ) ) ];
true

##
gap> s:= CharacterTable( "MN5A" );
CharacterTable( "(D10xHN).2" )
gap> ClassPositionsOfPCore( s, 5 );
145 ]
gap> ExtendTableHeadByRootClasses( head, s, 45 );
#I  after (D10xHN).2: found 5 classes, now have 170

##
gap> s:= CharacterTable( "MN5B" );
CharacterTable( "5^(1+6):2.J2.4" )
gap> 5core:= ClassPositionsOfPCore( s, 5 );
1 .. 4 ]
gap> SizesConjugacyClasses( s ){ 5core };
143780040320 ]
gap> ExtendTableHeadByRootClasses( head, s, 2 );
#I  after 5^(1+6):2.J2.4: found 3 classes, now have 173

##
gap> s:= CharacterTable( "2.B" );;
gap> pos:= Positions( OrdersClassRepresentatives( s ), 11 );
71 ]

##
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos );
#I  after order 11 element from 2.B: have 174 classes

##
gap> s:= CharacterTable( "2.B" );;
gap> pos:= Positions( OrdersClassRepresentatives( s ), 17 );
118 ]
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos );
#I  after order 17 element from 2.B: have 175 classes
gap> pos:= Positions( OrdersClassRepresentatives( s ), 19 );
128 ]
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos );
#I  after order 19 element from 2.B: have 176 classes

##
gap> s:= CharacterTable( "2.B" );
CharacterTable( "2.B" )
gap> ord:= OrdersClassRepresentatives( s );;
gap> classes:= SizesConjugacyClasses( s );;
gap> p:= 23;;
gap> pos:= Positions( ord, p );
147149 ]
gap> n:= (p-1)/2 * Size( s ) * pi[ pos[1] ] / classes[ pos[1] ];
6072
gap> Collected( Factors( n ) );
[ [ 23 ], [ 31 ], [ 111 ], [ 231 ] ]

##
gap> u:= CharacterTable( "MN2B" );
CharacterTable( "2^1+24.Co1" )
gap> upos:= Positions( OrdersClassRepresentatives( u ), p );
289294 ]
gap> SizesCentralizers( u ){ upos } / 2^3;
2323 ]

##
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos{ [1] } );
#I  after order 23 element from 2.B: have 177 classes
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos{ [2] } );
#I  after order 23 element from 2.B: have 178 classes

##
gap> p:= 31;;
gap> pos:= Positions( OrdersClassRepresentatives( s ), p );
190192 ]
gap> n:= (p-1)/2 * Size( s ) * pi[ pos[1] ] / classes[ pos[1] ];
2790
gap> Collected( Factors( n ) );
[ [ 21 ], [ 32 ], [ 51 ], [ 311 ] ]
gap> SizesCentralizers( s ){ pos };
6262 ]
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos{ [1] } );
#I  after order 31 element from 2.B: have 179 classes
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos{ [2] } );
#I  after order 31 element from 2.B: have 180 classes

##
gap> p:= 47;;
gap> pos:= Positions( OrdersClassRepresentatives( s ), p );
228230 ]
gap> n:= (p-1)/2 * Size( s ) * pi[ pos[1] ] / classes[ pos[1] ];
2162
gap> Collected( Factors( n ) );
[ [ 21 ], [ 231 ], [ 471 ] ]
gap> SizesCentralizers( s ){ pos };
9494 ]
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos{ [1] } );
#I  after order 47 element from 2.B: have 181 classes
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos{ [2] } );
#I  after order 47 element from 2.B: have 182 classes

##
gap> p:= 13;;
gap> pos:= Positions( OrdersClassRepresentatives( s ), p );
97 ]
gap> c:= Size( s ) * pi[ pos[1] ] / classes[ pos[1] ];
73008
gap> Factors( c );
22223331313 ]
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos );
#I  after order 13 element from 2.B: have 183 classes

##
gap> c2b:= CharacterTable( "MN2B" );;
gap> pos:= Positions( OrdersClassRepresentatives( c2b ), 13 );
220 ]
gap> ExtendTableHeadByCentralizerOrder( head, c2b, 13^3 * 24, pos );
#I  after order 13 element from 2^1+24.Co1: have 184 classes

##
gap> u:= CharacterTable( "3.Fi24" );;
gap> pos:= Positions( OrdersClassRepresentatives( u ), 29 );
142 ]
gap> SizesCentralizers( u ){ pos };
87 ]

##
gap> poss:= PositionsProperty( head.SizesCentralizers,
>                              x -> x mod 29 = 0 );
1135144145 ]
gap> head.OrdersClassRepresentatives{ poss };
138787 ]
gap> head.SizesCentralizers{ poss };
808017424794512875886459904961710757005754368000000000
  37656171275719851638784008787 ]

##
gap> candprimes:= Difference( PrimeDivisors( head.Size ),
>                     [ 2351113171923293147 ] );
7415971 ]

##
gap> parts:= Filtered( Collected( Factors( head.Size ) ),
>                      x -> x[1] in candprimes );
[ [ 76 ], [ 411 ], [ 591 ], [ 711 ] ]
gap> poss:= List( parts, l -> List( [ 0 .. l[2] ], i -> l[1]^i ) );;
gap> cart:= Cartesian( poss );;
gap> possord:= 3 * 29 * List( cart, Product );;

##
gap> good:= Filtered( possord,
>                     x -> ( head.Size / ( 28 * x ) ) mod 29 = 1 );
875133 ]
gap> List( good, Factors );
[ [ 329 ], [ 32959 ] ]

##
gap> Filtered( DivisorsInt( 5133 ), x -> x mod 59 = 1 );
1 ]

##
gap> ExtendTableHeadByCentralizerOrder( head, u, 3 * 29, pos );
#I  after order 29 element from 3.F3+.2: have 185 classes

##
gap> t:= CharacterTable( "O8-(3)" );
CharacterTable( "O8-(3)" )
gap> Length( Positions( OrdersClassRepresentatives( t ), 41 ) );
10

##
gap> possord:= 2^2 * 41 * DivisorsInt( 2 * 5 * 7^6 * 59 * 71 );;
gap> good:= Filtered( possord,
>                     x -> ( head.Size / x ) mod 41 = 1 );
1640163016 ]
gap> List( good, Factors );
[ [ 222541 ], [ 22274171 ] ]

##
gap> Filtered( DivisorsInt( good[2] ), x -> x mod 71 = 1 );
1 ]

##
gap> ExtendTableHeadByCentralizerOrder( head, 4141, fail );
#I  after order 41 element: have 186 classes

##
gap> possord:= 59 * DivisorsInt( 58*7^6*71 );;
gap> good:= Filtered( possord,
>                     x -> ( head.Size / x ) mod 59 = 1 );
1711 ]
gap> List( good, Factors );
[ [ 2959 ] ]

##
gap> ExtendTableHeadByCentralizerOrder( head, 5959, fail );
#I  after order 59 element: have 187 classes
gap> ExtendTableHeadByCentralizerOrder( head, 5959, fail );
#I  after order 59 element: have 188 classes

##
gap> possord:= 71 * DivisorsInt( 70*7^5 );;
gap> good:= Filtered( possord,
>                     x -> ( head.Size / x ) mod 71 = 1 );
2485 ]
gap> List( good, Factors );
[ [ 5771 ] ]

##
gap> ExtendTableHeadByCentralizerOrder( head, 7171, fail );
#I  after order 71 element: have 189 classes
gap> ExtendTableHeadByCentralizerOrder( head, 7171, fail );
#I  after order 71 element: have 190 classes

##
gap> s:= CharacterTable( "2.B" );;
gap> pos:= Positions( OrdersClassRepresentatives( s ), 7 );
41 ]
gap> ExtendTableHeadByPermCharValue( head, s, pi, pos );
#I  after order 7 element from 2.B: have 191 classes
gap> Last( head.SizesCentralizers ) = 7 * Size( CharacterTable( "He" ) );
true

##
gap> ExtendTableHeadByCentralizerOrder( head, 119119, fail );
#I  after order 119 element: have 192 classes
gap> ExtendTableHeadByCentralizerOrder( head, 119119, fail );
#I  after order 119 element: have 193 classes

##
gap> u:= CharacterTable( "3.Fi24" );;
gap> cand:= Filtered( Irr( u ), x -> x[1] <= 196883 );;
gap> rest:= Sum( cand{ [ 14578 ] } );;
gap> pos:= Positions( OrdersClassRepresentatives( u ), 7 );
4143 ]
gap> rest{ pos };
501 ]

##
gap> ExtendTableHeadByCentralizerOrder( head, u, 7^5 * Factorial(7), [ 43 ] );
#I  after order 7 element from 3.F3+.2: have 194 classes

##
gap> Sum( head.SizesCentralizers, x -> head.Size / x ) = head.Size;
true

##
gap> m:= ConvertToCharacterTableNC( rec(
>      UnderlyingCharacteristic:= 0,
>      Size:= head.Size,
>      SizesCentralizers:= head.SizesCentralizers,
>      OrdersClassRepresentatives:= head.OrdersClassRepresentatives,
>    ) );;

##
gap> safe_fusions:= Filtered( head.fusions,
>        r -> not IsIdenticalObj( r.subtable, facts[1] ) );;
gap> Length( safe_fusions );
6

##
gap> for r in safe_fusions do
>      fus:= InitFusion( r.subtable, m );
>      for i in [ 1 .. Length( r.map ) ] do
>        if IsBound( r.map[i] ) then
>          if IsInt( fus[i] ) then
>            if fus[i] <> r.map[i] then
>              Error( "fusion problem" );
>            fi;
>          elif IsInt( r.map[i] ) then
>            if not r.map[i] in fus[i] then
>              Error( "fusion problem" );
>            fi;
>          else
>            if not IsSubset( fus[i], r.map[i] ) then
>              Error( "fusion problem" );
>            fi;
>          fi;
>          fus[i]:= r.map[i];
>        fi;
>      od;
>      r.fus:= fus;
>    od;

##
gap> maxorder:= Maximum( head.OrdersClassRepresentatives );
119
gap> powermaps:= [];;
gap> primes:= Filtered( [ 1 .. maxorder ], IsPrimeInt );;
gap> for p in primes do
>      powermaps[p]:= InitPowerMap( m, p );
>      for r in safe_fusions do
>        subpowermap:= PowerMap( r.subtable, p );
>        if TransferDiagram( subpowermap, r.fus, powermaps[p] ) = fail then
>          Error( "inconsistency" );
>        fi;
>      od;
>    od;

##
gap> found:= true;;
gap> res:= "dummy";;  # avoid a syntax warning
gap> while found do
>      Print( "#I  start a round\n" );
>      found:= false;
>      for p in primes do
>        for r in safe_fusions do
>          subpowermap:= PowerMap( r.subtable, p );
>          res:= TransferDiagram( subpowermap, r.fus, powermaps[p] );
>          if res = fail then
>            Error( "inconsistency" );
>          elif ForAny( RecNames( res ), nam -> res.( nam ) <> [] ) then
>            found:= true;
>          fi;
>        od;
>      od;
>    od;
#I  start a round
#I  start a round
#I  start a round
#I  start a round

##
gap> pos:= PositionsProperty( powermaps[5], IsList );
157158163164187188189190192193 ]
gap> head.OrdersClassRepresentatives{ pos };
1515393959597171119119 ]

##
gap> u:= CharacterTable( "(7:3xHe):2" );;
gap> ConstructionInfoCharacterTable( u );
[ "ConstructIndexTwoSubdirectProduct", "7:3", "7:6", "He", "He.2", 
  [ 117118119120121122123124125126127128129
      130131132133134135207208209210211212
      213214215216217218219220221222223224
      225297298299300301302303304305306307
      308309310311312313314315 ], (), () ]
gap> pos:= Positions( OrdersClassRepresentatives( u ), 119 );
5253 ]
gap> f:= Field( Rationals, List( Irr( u ), x -> x[pos[1]] ) );;
gap> Sqrt(-119) in f;
true

##
gap> for l in [ 5971119 ] do
>      val:= Sqrt( -l );
>      poss:= Positions( head.OrdersClassRepresentatives, l );
>      for p in primes do
>        if Gcd( l, p ) = 1 then
>          if GaloisCyc( val, p ) = val then
>            powermaps[p]{ poss }:= poss;
>          else
>            powermaps[p]{ poss }:= Reversed( poss );
>          fi;
>        fi;
>      od;
>    od;

##
gap> PositionsProperty( powermaps[17], IsList );
163164 ]
gap> head.OrdersClassRepresentatives{ [ 163164 ] };
3939 ]
gap> List( Filtered( head.fusions,
>                    r -> IsSubset( r.map, [ 163164 ] ) ),
>          r -> r.subtable );
[ CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" ) ]

##
gap> 78pos:= Positions( head.OrdersClassRepresentatives, 78 );
37132133 ]
gap> head.fusions[1].subtable;
CharacterTable( "2.B" )
gap> Intersection( 78pos, head.fusions[1].map );
37 ]
gap> s:= head.fusions[2].subtable;
CharacterTable( "2^1+24.Co1" )
gap> Intersection( 78pos, head.fusions[2].map );
132133 ]
gap> Positions( head.fusions[2].map, 132 );
342 ]
gap> Positions( head.fusions[2].map, 133 );
344 ]
gap> PowerMap( s, 7 )[342];
344

##
gap> poss:= Filtered( head.fusions, r -> IsSubset( r.map, [ 163164 ] ) );;
gap> List( poss, r -> r.subtable );
[ CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" ) ]
gap> Position( poss[1].map, 163 );
173
gap> Position( poss[1].map, 164 );
174
gap> List( facts, s -> Positions( OrdersClassRepresentatives( s ), 39 ) );
[ [ 173174 ], [ 173174 ] ]
gap> List( facts, s -> PowerMap( s, 7 )[173] );
174174 ]

##
gap> fields:= List( facts,
>                   s -> Field( Rationals, List( Irr( s ),
>                                                x -> x[173] ) ) );;
gap> Length( Set( fields ) );
1
gap> Sqrt(-39) in fields[1];
true

##
gap> val:= Sqrt( -39 );;
gap> poss:= [ 163164 ];;
gap> for p in primes do
>      if Gcd( 39, p ) = 1 then
>        if GaloisCyc( val, p ) = val then
>          powermaps[p]{ poss }:= poss;
>        else
>          powermaps[p]{ poss }:= Reversed( poss );
>        fi;
>      fi;
>    od;
gap> List( powermaps, Indeterminateness );
[ , 20481536,, 4,, 2,,,, 2,, 9,,,, 1,, 1,,,, 1,,,,,, 1,, 1,,,,,, 1,,
  ,, 1,, 1,,,, 1,,,,,, 1,,,,,, 1,, 1,,,,,, 1,,,, 1,, 1,,,,,, 1,,,, 1,,
  ,,,, 1,,,,,,,, 1,,,, 1,, 1,,,, 1,, 1,,,, 1 ]

##
gap> r:= First( head.fusions, r -> IsIdenticalObj( r.subtable, facts[1] ) );;
gap> fus:= InitFusion( r.subtable, m );;
gap> for i in [ 1 .. Length( r.map ) ] do
>      if IsBound( r.map[i] ) then
>        if IsInt( fus[i] ) then
>          if fus[i] <> r.map[i] then
>            Error( "fusion problem" );
>          fi;
>        elif IsInt( r.map[i] ) then
>          if not r.map[i] in fus[i] then
>            Error( "fusion problem" );
>          fi;
>        else
>          if not IsSubset( fus[i], r.map[i] ) then
>            Error( "fusion problem" );
>          fi;
>        fi;
>        fus[i]:= r.map[i];
>      fi;
>    od;
gap> r.fus:= fus;;

##
gap> r2:= First( head2.fusions, r -> IsIdenticalObj( r.subtable, facts[2] ) );;
gap> fus2:= InitFusion( r2.subtable, m );;
gap> for i in [ 1 .. Length( r2.map ) ] do 
>      if IsBound( r2.map[i] ) then
>        if IsInt( fus2[i] ) then
>          if fus2[i] <> r2.map[i] then
>            Error( "fusion problem" );
>          fi;
>        elif IsInt( r2.map[i] ) then
>          if not r2.map[i] in fus2[i] then
>            Error( "fusion problem" );
>          fi;
>        else
>          if not IsSubset( fus2[i], r2.map[i] ) then
>            Error( "fusion problem" );
>          fi;
>        fi;
>        fus2[i]:= r2.map[i];
>      fi;
>    od;
gap> r2.fus:= fus2;;

##
gap> powermaps2:= StructuralCopy( powermaps );;
gap> s:= r.subtable;
CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" )
gap> for p in primes do
>      if TransferDiagram( PowerMap( s, p ), fus, powermaps[p] ) = fail then
>        Error( "inconsistency" );
>      fi;
>    od;
gap> s2:= r2.subtable;
CharacterTable( "3^(1+12):6.Suz.2/[ 120 ]" )
gap> for p in primes do
>      if TransferDiagram( PowerMap( s2, p ), fus2, powermaps2[p] ) = fail then
>        Error( "inconsistency" );
>      fi;
>    od;
gap> powermaps = powermaps2;
true
gap> List( powermaps, Indeterminateness );
[ , 3264,, 1,, 1,,,, 1,, 1,,,, 1,, 1,,,, 1,,,,,, 1,, 1,,,,,, 1,,,, 
  1,, 1,,,, 1,,,,,, 1,,,,,, 1,, 1,,,,,, 1,,,, 1,, 1,,,,,, 1,,,, 1,,,,,
  , 1,,,,,,,, 1,,,, 1,, 1,,,, 1,, 1,,,, 1 ]

##
gap> powermaps[2]{ [ 132133 ] };
[ [ 163164 ], [ 163164 ] ]
gap> pos78:= List( facts,
>                  s -> Positions( OrdersClassRepresentatives( s ), 78 ) );
[ [ 235236 ], [ 235236 ] ]
gap> fus{ [ 235236 ] };
[ [ 132133 ], [ 132133 ] ]
gap> fus2{ [ 235236 ] };
[ [ 132133 ], [ 132133 ] ]

##
gap> fus[235]:= 132;;
gap> fus2[235]:= 132;;
gap> TransferDiagram( PowerMap( s, 2 ), fus, powermaps[2] ) <> fail;
true
gap> TransferDiagram( PowerMap( s2, 2 ), fus2, powermaps2[2] ) <> fail;
true
gap> powermaps = powermaps2;
true
gap> List( powermaps{ [ 23 ] }, Indeterminateness );
864 ]

##
gap> powermaps[3]{ [ 163164 ] };
[ [ 183184 ], [ 183184 ] ]
gap> TransferDiagram( powermaps[2], powermaps[3], powermaps[2] ) <> fail;
true
gap> List( powermaps{ [ 23 ] }, Indeterminateness );
816 ]

##
gap> poss:= Filtered( head.fusions,
>                     r -> 93 in OrdersClassRepresentatives( r.subtable ) );;
gap> List( poss, r -> r.subtable );
[ CharacterTable( "ThxSym(3)" ) ]
gap> pos93:= Positions( head.OrdersClassRepresentatives, 93 );
152153 ]
gap> powermaps[3]{ pos93 };
[ [ 179180 ], [ 179180 ] ]
gap> powermaps[3][152]:= 179;;
gap> TransferDiagram( PowerMap( poss[1].subtable, 3 ), poss[1].fus,
>                     powermaps[3] ) <> fail;
true
gap> List( powermaps{ [ 23 ] }, Indeterminateness );
84 ]

##
gap> poss:= Filtered( head.fusions, 
>                     r -> 69 in OrdersClassRepresentatives( r.subtable ) );;
gap> List( poss, r -> r.subtable );
[ CharacterTable( "3.F3+.2" ) ]
gap> pos69:= Positions( head.OrdersClassRepresentatives, 69 );
142143 ]
gap> powermaps[3]{ pos69 };
[ [ 177178 ], [ 177178 ] ]
gap> powermaps[3]{ [ 142143 ] }:= [ 177178 ];;
gap> TransferDiagram( PowerMap( poss[1].subtable, 3 ), poss[1].fus,
>                     powermaps[3] ) <> fail;
true
gap> List( powermaps{ [ 23 ] }, Indeterminateness );
81 ]

##
gap> pos46:= Positions( head.OrdersClassRepresentatives, 46 );
2627118120 ]
gap> powermaps[2]{ pos46 };
177178, [ 177178 ], [ 177178 ] ]
gap> powermaps[23]{ pos46 };
224444 ]

##
gap> powermaps[2]{ [ 118120 ] }:= [ 177178 ];;
gap> Indeterminateness ( powermaps[2] );
2

##
gap> powermaps[2][78];
155156 ]
gap> head.OrdersClassRepresentatives[78];
18
gap> head.SizesCentralizers[78];
3888

##
gap> Filtered( [ 1 .. Length( head.OrdersClassRepresentatives ) ],
>              i -> head.OrdersClassRepresentatives[i] = 18 and
>                   head.SizesCentralizers[i] = 3888 );
7879 ]
gap> powermaps[3]{ [ 7879 ] };
5252 ]
gap> powermaps[2][52];
154
gap> First( head.fusions, r -> 154 in r.map ).subtable;
CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" )
gap> s:= facts[1];
CharacterTable( "3^(1+12):6.Suz.2/[ 119 ]" )
gap> pos18:= Filtered( [ 1 .. NrConjugacyClasses( s ) ],
>                i -> OrdersClassRepresentatives( s )[i] = 18 and
>                     SizesCentralizers( s )[i] = 3888 );
6783 ]
gap> PowerMap( s, 2 ){ pos18 };
2424 ]
gap> s:= facts[2];
CharacterTable( "3^(1+12):6.Suz.2/[ 120 ]" )
gap> pos18:= Filtered( [ 1 .. NrConjugacyClasses( s ) ],
>                i -> OrdersClassRepresentatives( s )[i] = 18 and
>                     SizesCentralizers( s )[i] = 3888 );
6783 ]
gap> PowerMap( s, 2 ){ pos18 };
2424 ]

##
gap> powermaps[2][78]:= powermaps[2][79];;
gap> for r in safe_fusions do
>      if not TestConsistencyMaps( ComputedPowerMaps( r.subtable ), r.fus,
>                                  powermaps ) then
>        Error( "inconsistent!" );
>      fi;
>    od;
gap> r:= First( head.fusions, r -> IsIdenticalObj( r.subtable, facts[1] ) );;
gap> TestConsistencyMaps( ComputedPowerMaps( r.subtable ), r.fus,
>                         powermaps );
true
gap> r2:= First( head2.fusions, r -> IsIdenticalObj( r.subtable, facts[2] ) );;
gap> TestConsistencyMaps( ComputedPowerMaps( r2.subtable ), r2.fus,
>                         powermaps );
true
gap> SetComputedPowerMaps( m, powermaps );

##
gap> r:= head.fusions[1];;
gap> s:= r.subtable;
CharacterTable( "2.B" )
gap> cand:= Filtered( Irr( s ), x -> x[1] <= 196883 );;
gap> List( cand, x -> x[1] );
143719625596256 ]
gap> rest:= Sum( cand );;
gap> rest[1];
196883

##
gap> chi:= [];;
gap> map:= r.fus;;
gap> for i in [ 1 .. Length( map ) ] do
>      if IsInt( map[i] ) then
>        chi[ map[i] ]:= rest[i];
>      fi;
>    od;
gap> Number( chi );
111

##
gap> r:= head.fusions[3];;
gap> s:= r.subtable;
CharacterTable( "3.F3+.2" )
gap> cand:= Filtered( Irr( s ), x -> x[1] <= 196883 );;
gap> rest:= Sum( cand{ [ 14578 ] } );;
gap> rest[1];
196883
gap> map:= r.fus;;
gap> for i in [ 1 .. Length( map ) ] do
>      if IsInt( map[i] ) then
>        if IsBound( chi[ map[i] ] ) and chi[ map[i] ] <> rest[i] then
>          Error( "inconsistency!" );
>        fi;
>        chi[ map[i] ]:= rest[i];
>      fi;
>    od;
gap> Number( chi );
140

##
gap> r:= head.fusions[2];;
gap> s:= r.subtable;
CharacterTable( "2^1+24.Co1" )
gap> cand:= Filtered( Irr( s ), x -> x[1] <= chi[1] );;
gap> map:= r.fus;;
gap> knownpos:= Filtered( [ 1 .. Length( map ) ],
>                      i -> IsInt( map[i] ) and IsBound( chi[ map[i] ] ) );;
gap> rest:= List( knownpos, i -> chi[ map[i] ] );;
gap> mat:= List( cand, x -> x{ knownpos } );;
gap> Length( mat );
13
gap> RankMat( mat );
13
gap> sol:= SolutionMat( mat, rest );
0010000000011 ]
gap> rest:= sol * cand;;
gap> for i in [ 1 .. Length( map ) ] do
>      if IsInt( map[i] ) then chi[ map[i] ]:= rest[i]; fi;
>    od;
gap> Number( chi );
181

##
gap> missing:= Filtered( [ 1..194 ], i -> not IsBound( chi[i] ) );
151152153160169170186187188189190192193 ]
gap> head.OrdersClassRepresentatives{ missing };
5793932795954159597171119119 ]
gap> head.SizesCentralizers{ missing };
57939324395954159597171119119 ]

##
gap> for i in missing do
>      ord:= head.OrdersClassRepresentatives[i];
>      divs:= PrimeDivisors( ord );
>      if ForAll( divs, p -> IsBound( chi[ powermaps[p][i] ] ) ) then
>        congr:= List( divs, p -> chi[ powermaps[p][i] ] mod p );
>        res:= ChineseRem( divs, congr );
>        modulus:= Lcm( divs );
>        c:= head.SizesCentralizers[i];
>        Print( "#I  |g| = ", head.OrdersClassRepresentatives[i],
>               ", |C_M(g)| = ", c,
>               ": value ", res, " modulo ", modulus, "\n" );
>        if ( res + 2 * modulus )^2 >= c and ( res - 2 * modulus )^2 >= c then
>          cand:= Filtered( res + [ -1 .. 1 ] * modulus, a -> a^2 < c );
>          if Length( cand ) = 1 then
>            chi[i]:= cand[1];
>          fi;
>        fi;
>      fi;
>    od;
#I  |g| = 57, |C_M(g)| = 57: value 56 modulo 57
#I  |g| = 93, |C_M(g)| = 93: value 92 modulo 93
#I  |g| = 93, |C_M(g)| = 93: value 92 modulo 93
#I  |g| = 27, |C_M(g)| = 243: value 2 modulo 3
#I  |g| = 95, |C_M(g)| = 95: value 0 modulo 95
#I  |g| = 95, |C_M(g)| = 95: value 0 modulo 95
#I  |g| = 41, |C_M(g)| = 41: value 1 modulo 41
#I  |g| = 59, |C_M(g)| = 59: value 0 modulo 59
#I  |g| = 59, |C_M(g)| = 59: value 0 modulo 59
#I  |g| = 71, |C_M(g)| = 71: value 0 modulo 71
#I  |g| = 71, |C_M(g)| = 71: value 0 modulo 71
#I  |g| = 119, |C_M(g)| = 119: value 118 modulo 119
#I  |g| = 119, |C_M(g)| = 119: value 118 modulo 119
gap> missing:= Filtered( [ 1..194 ], i -> not IsBound( chi[i] ) );
160 ]

##
gap> diff:= Difference( [ 1 .. NrConjugacyClasses( m ) ], missing );;
gap> classes:= SizesConjugacyClasses( m );;
gap> sum:= Sum( diff, i -> classes[i] * chi[i] );
-6650349175263480459970863415322722279882752000000000
gap> chi[ missing[1] ]:= - sum / classes[ missing[1] ];
2

##
gap> r:= First( head.fusions, r -> IsIdenticalObj( r.subtable, facts[1] ) );;
gap> map:= r.fus;;
gap> knownpos:= Filtered( [ 1 .. Length( map ) ], i -> IsInt( map[i] ) );;
gap> rest:= List( knownpos, i -> chi[ map[i] ] );;
gap> cand:= Filtered( Irr( r.subtable ), x -> x[1] <= chi[1] );;
gap> mat:= List( cand, x -> x{ knownpos } );;
gap> Length( mat );
95
gap> RankMat( mat );
88
gap> SolutionMat( mat, rest );
fail

##
gap> r2:= First( head2.fusions, r -> IsIdenticalObj( r.subtable, facts[2] ) );;
gap> map:= r2.fus;;
gap> knownpos:= Filtered( [ 1 .. Length( map ) ], i -> IsInt( map[i] ) );;
gap> rest:= List( knownpos, i -> chi[ map[i] ] );;
gap> cand:= Filtered( Irr( r2.subtable ), x -> x[1] <= chi[1] );;
gap> mat:= List( cand, x -> x{ knownpos } );;
gap> Length( mat );
95
gap> RankMat( mat );
88
gap> SolutionMat( mat, rest );
0001000000000000000000
  0000000000000000000000
  0000000000000000000000
  0000000000000000000000
  0001110 ]
gap> Add( safe_fusions, r2 );

##
gap> TransformingPermutationsCharacterTables( r2.subtable,
>        CharacterTable( "MN3B" ) ) <> fail;
true

##
gap> invs:= TransposedMat( [
>      OrdersClassRepresentatives( m ),
>      SizesCentralizers( m ),
>      chi,
>      CompositionMaps( chi, PowerMap( m, 2 ) ) ] );;
gap> invs_set:= Set( invs );;
gap> Length( invs_set );
172
gap> atlas_m:= CharacterTable( "M" );;
gap> invs_atlas:= TransposedMat( [
>      OrdersClassRepresentatives( atlas_m ),
>      SizesCentralizers( atlas_m ),
>      Irr( atlas_m )[2],
>      CompositionMaps( Irr( atlas_m )[2], PowerMap( atlas_m, 2 ) ) ] );;
gap> invs_atlas_set:= Set( invs_atlas );;
gap> invs_atlas_set = invs_set;
true

##
gap> pi1:= SortingPerm( invs );;
gap> pi2:= SortingPerm( invs_atlas );;
gap> pi:= pi2 / pi1 * (32,33)(179,180);;
gap> oracle:= List( Irr( atlas_m ), x -> Permuted( x, pi ) );;

##
gap> SetAutomorphismsOfTable( m, Group( () ) );

##
gap> r:= safe_fusions[1];;
gap> s:= r.subtable;
CharacterTable( "2.B" )
gap> pos:= [ 217218222223 ];;
gap> r.fus{ pos };
[ [ 110111 ], [ 110111 ], [ 8889 ], [ 8889 ] ]
gap> OrdersClassRepresentatives( s ){ pos };
40404444 ]

##
gap> r.fus[ PowerMap( s, 20 )[217] ];
44
gap> r2:= safe_fusions[2];;
gap> s2:= r2.subtable;
CharacterTable( "2^1+24.Co1" )
gap> Position( r2.map, 110 );
273
gap> ForAll( Irr( s2 ), x -> IsInt( x[273] ) );
false

##
gap> (217,218) in AutomorphismsOfTable( s );
true
gap> r.fus{ [ 217218 ] }:= [ 110111 ];;

##
gap> r.fus[ PowerMap( s, 22 )[ 222 ] ];
44
gap> Position( r2.map, 88 );
178
gap> ForAll( Irr( s2 ), x -> IsInt( x[178] ) );
false

##
gap> (143,144)(222,223)(244,245) in AutomorphismsOfTable( s );
true
gap> r.fus{ [ 143144244245 ] };
15153434 ]
gap> r.fus{ [ 222223 ] }:= [ 8889 ];;

##
gap> knownirr:= [ TrivialCharacter( m ), chi ];;
gap> poss:= PossibleClassFusions( s, m,
>               rec( chars:= knownirr, fusionmap:= r.fus ) );;
gap> List( poss, Indeterminateness );
1 ]

##
gap> induced:= InducedClassFunctionsByFusionMap( s, m, Irr( s ), poss[1] );;

##
gap> poss:= PossibleClassFusions( s2, m,
>               rec( chars:= Concatenation( knownirr, induced ),
>                    fusionmap:= r2.fus ) );;
gap> List( poss, Indeterminateness );
1111 ]
gap> Length( RepresentativesFusions( AutomorphismsOfTable( s2 ), poss,
>                Group( () ) ) );
1
gap> Append( induced,
>        InducedClassFunctionsByFusionMap( s2, m, Irr( s2 ), poss[1] ) );

##
gap> r:= safe_fusions[7];;
gap> s:= r.subtable;
CharacterTable( "3^(1+12):6.Suz.2/[ 120 ]" )
gap> pos:= Positions( OrdersClassRepresentatives( s ), 56 );
250251 ]
gap> r.fus{ pos };
[ [ 125126 ], [ 125126 ] ]
gap> r.fus[ PowerMap( s, 28 )[ 250 ] ];
44
gap> Position( r2.map, 125 );
319
gap> ForAll( Irr( s2 ), x -> IsInt( x[319] ) );
false
gap> (250251) in AutomorphismsOfTable( s );
true
gap> r.fus{ [ 250251 ] }:= [ 125126 ];;

##
gap> poss:= PossibleClassFusions( s, m,
>               rec( chars:= Concatenation( knownirr, induced ),
>                    fusionmap:= r.fus ) );;
gap> List( poss, Indeterminateness );
11 ]
gap> Length( RepresentativesFusions( AutomorphismsOfTable( s ), poss,
>                Group( () ) ) );
1
gap> Append( induced,
>        InducedClassFunctionsByFusionMap( s, m, Irr( s ), poss[1] ) );

##
gap> r:= safe_fusions[3];;
gap> s:= r.subtable;
CharacterTable( "3.F3+.2" )
gap> poss:= PossibleClassFusions( s, m,
>               rec( chars:= Concatenation( knownirr, induced ),
>                    fusionmap:= r.fus ) );;
gap> List( poss, Indeterminateness );
1 ]
gap> Append( induced,
>        InducedClassFunctionsByFusionMap( s, m, Irr( s ), poss[1] ) );

##
gap> Append( induced,
>      InducedCyclic( m, [ 2 .. NrConjugacyClasses( m ) ], "all" ) );

##
gap> red:= Reduced( m, knownirr, induced );;
gap> Length( red.irreducibles );
0
gap> lll:= LLL( m, red.remainders );;
gap> Length( lll.irreducibles );
4

##
gap> knownirr:= Union( knownirr, lll.irreducibles );;
gap> red:= Reduced( m, knownirr, induced );;
gap> Length( red.irreducibles );
0
gap> lll:= LLL( m, red.remainders );;
gap> Length( lll.irreducibles );
0

##
gap> mat:= MatScalarProducts( m, oracle, lll.remainders );;
gap> norm:= NormalFormIntMat( mat, 4 );;
gap> rowtrans:= norm.rowtrans;;
gap> normal:= norm.normal{ [ 1 .. norm.rank ] };;
gap> one:= IdentityMat( NrConjugacyClasses( m ) );;
gap> for i in [ 2 .. Length( one ) ] do
>      extmat:= Concatenation( normal, [ one[i] ] );
>      extlen:= Length( extmat );
>      extnorm:= NormalFormIntMat( extmat, 4 );
>      if extnorm.rank = Length( extnorm.normal ) or
>         extnorm.rowtrans[ extlen ][ extlen ] <> 1 then
>        coeffs:= fail;
>      else
>        coeffs:= - extnorm.rowtrans[ extlen ]{ [ 1 .. extnorm.rank ] }
>                   * rowtrans{ [ 1 .. extnorm.rank ] };
>      fi;
>      if coeffs <> fail and ForAll( coeffs, IsInt ) then
>        # The vector lies in the lattice.
>        chi:= coeffs * lll.remainders;
>        if not chi in knownirr then
>          Add( knownirr, chi );
>        fi;
>      fi;
>    od;
gap> Length( knownirr );
66
gap> Set( knownirr, chi -> ScalarProduct( m, chi, chi ) );
1 ]

##
gap> red:= Reduced( m, knownirr, lll.remainders );;
gap> Length( red.irreducibles );
0
gap> sym:= Symmetrizations( m, knownirr, 2 );;
gap> sym:= Reduced( m, knownirr, sym );;
gap> Length( sym.irreducibles );
0
gap> lll:= LLL( m, Concatenation( red.remainders, sym.remainders ) );;
gap> Length( lll.irreducibles );
0

##
gap> mat:= MatScalarProducts( m, oracle, lll.remainders );;
gap> norm:= NormalFormIntMat( mat, 4 );;
gap> rowtrans:= norm.rowtrans;;
gap> normal:= norm.normal{ [ 1 .. norm.rank ] };;
gap> one:= IdentityMat( NrConjugacyClasses( m ) );;
gap> for i in [ 2 .. Length( one ) ] do
>      extmat:= Concatenation( normal, [ one[i] ] );
>      extlen:= Length( extmat );
>      extnorm:= NormalFormIntMat( extmat, 4 );
>      if extnorm.rank = Length( extnorm.normal ) or
>         extnorm.rowtrans[ extlen ][ extlen ] <> 1 then
>        coeffs:= fail;
>      else
>        coeffs:= - extnorm.rowtrans[ extlen ]{ [ 1 .. extnorm.rank ] }
>                   * rowtrans{ [ 1 .. extnorm.rank ] };
>      fi;
>      if coeffs <> fail and ForAll( coeffs, IsInt ) then
>        Add( knownirr, coeffs * lll.remainders );
>      fi;
>    od;
gap> Length( knownirr );
194

##
gap> SetIrr( m, List( knownirr, x -> ClassFunction( m, x ) ) );
gap> ResetFilterObj( m, HasAutomorphismsOfTable );
gap> TransformingPermutationsCharacterTables( m, atlas_m ) <> fail;
true

##
gap> info:= OneAtlasGeneratingSetInfo( "3^(1+12):6.Suz.2", Dimension, 38 );;
gap> gens:= AtlasGenerators( info ).generators;;
gap> Length( gens );
4
gap> ForAll( gens,
>            m -> ForAll( [ 25 .. 38 ],
>                         i -> ForAll( [ 1 .. 24 ],
>                                      j -> IsZero( m[i,j] ) and
>                                           IsZero( m[i,j] ) ) ) );
true

##
gap> mats:= List( gens, x -> x{ [ 25 .. 38 ] }{ [ 25 .. 38 ] } );;
gap> List( mats, ConvertToMatrixRep );;
gap> Comm( mats[3], mats[3]^mats[2] ) = Inverse( mats[4] );
true
gap> mats:= mats{ [ 1 .. 3 ] };;

##
gap> G:= GroupWithGenerators( mats );;
gap> orbs:= ShallowCopy( OrbitsDomain( G, GF(3)^14 ) );;
gap> Length( orbs );
6
gap> SortBy( orbs, Length );
gap> List( orbs, Length );
12196560139776015943231594323 ]
gap> v:= [ 00000000000002 ] * Z(3)^0;;
gap> orb_large:= First( orbs, x -> v in x );;
gap> Length( orb_large );
1594323
gap> Length( orb_large ) = 3^13;
true
gap> orb_large:= SortedList( orb_large );;
gap> homHtoHmodX:= ActionHomomorphism( G, orb_large );;
gap> represHmodX:= Image( homHtoHmodX );;
gap> Size( represHmodX );
2859230155080499200
gap> Size( represHmodX ) = Size( CharacterTable( "2.Suz.2" ) ) * 3^13;
true

##
gap> gensHmodX:= List( mats, m -> m^homHtoHmodX );;
gap> n:= NormalClosure( represHmodX,
>                       Subgroup( represHmodX, [ gensHmodX[3] ] ) );;
gap> Size( n ) = 3^13;
true
gap> IsAbelian( n );
false

##
gap> slp:= AtlasProgram( "Suz.2", "check" );;
gap> prog:= StraightLineProgramFromStraightLineDecision( slp.program );;
gap> res:= ResultOfStraightLineProgram( prog, gensHmodX );;
gap> List( res, Order );
2121 ]
gap> ForAll( gensHmodX{ [ 12 ] }, x -> ForAll( res, y -> x*y = y*x ) );
true
gap> Order( gensHmodX[2] );
3

##
gap> 3suz2:= OneAtlasGeneratingSet( "3.Suz.2", NrMovedPoints, 5346 );;
gap> 3suz2:= 3suz2.generators;;
gap> omega:= [ 1 .. LargestMovedPoint( 3suz2 ) ];;
gap> shifted:= omega + LargestMovedPoint( gensHmodX );;
gap> pi:= MappingPermListList( omega, shifted );;
gap> shiftedgens:= List( 3suz2, x -> x^pi );;
gap> Append( shiftedgens, [ () ] );
gap> gensH:= List( [ 1 .. 3 ], i -> gensHmodX[i] * shiftedgens[i] );;
gap> NrMovedPoints( gensH );
1599669

##
gap> Order( gensH[2] );
3
gap> Order( Product( gensH{ [ 12122 ] } ) );
7

##
gap> H:= GroupWithGenerators( gensH );;
gap> if CTblLib.IsMagmaAvailable() then
>      mgmt:= CharacterTableComputedByMagma( H, "H_Magma" );
>    else
>      mgmt:= CharacterTable( "3^(1+12):6.Suz.2" );
>    fi;

##
gap> IsRecord( TransformingPermutationsCharacterTables( mgmt,
>        CharacterTable( "3^(1+12):6.Suz.2" ) ) );
true

##
gap> g:= AtlasGroup( "5^(1+6):2.J2.4" );;
gap> if CTblLib.IsMagmaAvailable() then
>      mgmt:= CharacterTableComputedByMagma( g, "MN5B_Magma" );
>    else
>      mgmt:= CharacterTable( "5^(1+6):2.J2.4" );
>    fi;
gap> IsRecord( TransformingPermutationsCharacterTables( mgmt,
>        CharacterTable( "5^(1+6):2.J2.4" ) ) );
true

##
gap> STOP_TEST( "ctblm.tst" );

#############################################################################
##
#E


[Dauer der Verarbeitung: 0.29 Sekunden, vorverarbeitet 2026-06-04]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik