LoadPackage( "ctbllib" );
ct := CharacterTable( "Fi23" );;
permchar := Sum( Irr( ct ){[1,2,6]} );;
permchar[1];
nccl := NrConjugacyClasses( ct );;
ord3 := Filtered( [ 1 .. nccl ],
     i -> OrdersClassRepresentatives( ct )[i] = 3 );
permchar{ ord3 };
roots := [ 6 ];;
for i in [ 1 .. nccl ] do
     if ForAny( Set( Factors( Size( ct ) ) ),
         p -> PowerMap( ct, p )[i] in roots ) then
       AddSet( roots, i );
     fi;
   od;
roots;
prop := Sum( roots, i -> 1 / SizesCentralizers( ct )[i] );
Int( 100 * prop );
LoadPackage( "atlasrep" );
gens := OneAtlasGeneratingSet( "Fi23", NrMovedPoints, 31671 );;
Fi23 := Group( gens.generators );;
SetSize( Fi23, Size( ct ) );
opdom := MovedPoints( Fi23 );;
found := false;;
repeat
     g := Random( Fi23 );
     ord := Order( g );
     if ord mod 3 = 0 then
       h := g^( ord / 3 );
       if Number( opdom, i -> i^h = i ) = 324 then
         found := true;
       fi;
     fi;
   until found;
N := Normalizer( Fi23, SubgroupNC( Fi23, [ h ] ) );;
Size( N );
orb := Orbits( N, opdom );;
List( orb, Length );
P := Action( N, orb[2] );;
Size( P ) = Size( N );
A := Image( IsomorphismPcGroup( P ) );;
Size( A ) = Size( N );
ds := DerivedSeries( A );;
Length( ds );
List( ds, i -> Collected( Factors( Size( i ) ) ) );
compcl := List( [1..8],
    i-> Complementclasses( ds[i], ds[9] ) );;
List( compcl, Length );
conjcl := ConjugacyClasses( A );;
Length( conjcl );
sct := CharacterTable( A );;
# To complete the next command you need to start GAP with at least -o 400M option
# During the computation of Irr(sct) you will get two info messages about
# computing class matrix for class of size >10^6
Irr( sct );;
Maximum( List( Irr( sct ), i -> i[1] ) );
irrat := Filtered( Union( Irr( sct ) ), i -> not IsRat( i) );
alpha := irrat[4];
MinimalPolynomial( Rationals, alpha );
MinimalPolynomial( Rationals, E( 8 ) );
char144 := First( Irr( sct ), i -> i[1] = 144 );;
ker := KernelOfCharacter( char144 );
Size( ker );
ker = ds[8]; 
fus := PossibleClassFusions( sct, ct );;
Length( fus );
Length( RepresentativesFusions( AutomorphismsOfTable( sct ), fus,
               AutomorphismsOfTable( ct ) ) );
ind := Set( List( fus,
      map -> Induced( sct, ct, [ TrivialCharacter( sct ) ], map )[1] ) );
MatScalarProducts( ct, Irr( ct ), ind );
PermCharInfo( ct, ind ).ATLAS;
quit;
