1# This file was created from xpl/ambigfus.xpl, do not edit! 2######################################################################### 3## 4#W ambigfus.tst GAP applications Thomas Breuer 5## 6#Y Copyright 2003, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany 7## 8## In order to run the tests, one starts GAP from the `tst` subdirectory 9## of the `pkg/ctbllib` directory, and calls `ReadTest( "ambigfus.tst" );`. 10## 11 12gap> START_TEST( "ambigfus.tst" ); 13 14gap> LoadPackage( "ctbllib" ); 15true 16gap> SetOfComposedClassFusions:= function( hfusg, ufush ) 17> local result, map1, map2; 18> result:= [];; 19> for map2 in hfusg do 20> for map1 in ufush do 21> AddSet( result, CompositionMaps( map2, map1 ) ); 22> od; 23> od; 24> return result; 25> end;; 26gap> co3:= CharacterTable( "Co3" ); 27CharacterTable( "Co3" ) 28gap> h:= CharacterTable( "Co3N5" ); 29CharacterTable( "5^(1+2):(24:2)" ) 30gap> hfusco3:= PossibleClassFusions( h, co3 );; 31gap> Length( RepresentativesFusions( h, hfusco3, co3 ) ); 322 33gap> mx:= Maxes( co3 ); 34[ "McL.2", "HS", "U4(3).(2^2)_{133}", "M23", "3^5:(2xm11)", "2.S6(2)", 35 "U3(5).3.2", "3^1+4:4s6", "2^4.a8", "L3(4).D12", "2xm12", 36 "2^2.(2^7.3^2).s3", "s3xpsl(2,8).3", "a4xs5" ] 37gap> maxes:= List( mx, CharacterTable );; 38gap> filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 ); 39[ CharacterTable( "McL.2" ), CharacterTable( "HS" ), 40 CharacterTable( "U3(5).3.2" ) ] 41gap> max:= filt[1];; 42gap> hfusmax:= PossibleClassFusions( h, max );; 43gap> maxfusco3:= PossibleClassFusions( max, co3 );; 44gap> comp:= SetOfComposedClassFusions( maxfusco3, hfusmax );; 45gap> Length( comp ); 462 47gap> reps:= RepresentativesFusions( h, comp, co3 ); 48[ [ 1, 2, 3, 4, 8, 8, 7, 9, 10, 11, 17, 17, 19, 19, 22, 23, 27, 27, 30, 33, 49 34, 40, 40, 40, 40, 42 ] ] 50gap> max:= filt[3];; 51gap> hfusmax:= PossibleClassFusions( h, max );; 52gap> maxfusco3:= PossibleClassFusions( max, co3 );; 53gap> comp:= SetOfComposedClassFusions( maxfusco3, hfusmax );; 54gap> reps2:= RepresentativesFusions( h, comp, co3 );; 55gap> reps2 = reps; 56true 57gap> GetFusionMap( h, co3 ) in reps; 58true 59gap> b:= CharacterTable( "B" );; 60gap> h:= CharacterTable( "31:15" );; 61gap> hfusb:= PossibleClassFusions( h, b );; 62gap> Length( RepresentativesFusions( h, hfusb, b ) ); 632 64gap> th:= CharacterTable( "Th" );; 65gap> hfusth:= PossibleClassFusions( h, th );; 66gap> thfusb:= PossibleClassFusions( th, b );; 67gap> comp:= SetOfComposedClassFusions( thfusb, hfusth );; 68gap> Length( comp ); 692 70gap> reps:= RepresentativesFusions( h, comp, b ); 71[ [ 1, 145, 146, 82, 82, 19, 82, 7, 19, 82, 82, 19, 7, 82, 19, 82, 82 ] ] 72gap> GetFusionMap( h, b ) in reps; 73true 74gap> h:= CharacterTable( "SuzN3" ); 75CharacterTable( "3^5:(3^2:SD16)" ) 76gap> suz:= CharacterTable( "Suz" ); 77CharacterTable( "Suz" ) 78gap> hfussuz:= PossibleClassFusions( h, suz );; 79gap> Length( RepresentativesFusions( h, hfussuz, suz ) ); 802 81gap> maxes:= List( Maxes( suz ), CharacterTable );; 82gap> filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 ); 83[ CharacterTable( "3_2.U4(3).2_3'" ), CharacterTable( "3^5:M11" ), 84 CharacterTable( "3^2+4:2(2^2xa4)2" ) ] 85gap> PossibleClassFusions( h, filt[1] ); 86[ ] 87gap> max:= filt[2];; 88gap> hfusmax:= PossibleClassFusions( h, max );; 89gap> maxfussuz:= PossibleClassFusions( max, suz );; 90gap> comp:= SetOfComposedClassFusions( maxfussuz, hfusmax );; 91gap> repr:= RepresentativesFusions( h, comp, suz ); 92[ [ 1, 2, 2, 4, 5, 4, 5, 5, 5, 5, 5, 6, 9, 9, 14, 15, 13, 16, 16, 14, 15, 13, 93 13, 13, 16, 15, 14, 16, 16, 16, 21, 21, 23, 22, 29, 29, 29, 38, 39 ] ] 94gap> GetFusionMap( h, suz ) in repr; 95true 96gap> f3p:= CharacterTable( "F3+" );; 97gap> h:= CharacterTable( "F3+N5" );; 98gap> hfusf3p:= PossibleClassFusions( h, f3p );; 99gap> Length( RepresentativesFusions( h, hfusf3p, f3p ) ); 1002 101gap> maxes:= List( Maxes( f3p ), CharacterTable );; 102gap> filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 ); 103[ CharacterTable( "Fi23" ), CharacterTable( "2.Fi22.2" ), 104 CharacterTable( "(3xO8+(3):3):2" ), CharacterTable( "O10-(2)" ), 105 CharacterTable( "(A4xO8+(2).3).2" ), CharacterTable( "He.2" ), 106 CharacterTable( "F3+M14" ), CharacterTable( "(A5xA9):2" ) ] 107gap> possfus:= List( filt, x -> PossibleClassFusions( h, x ) ); 108[ [ ], [ ], [ ], [ ], 109 [ [ 1, 69, 110, 12, 80, 121, 4, 72, 113, 11, 11, 79, 79, 120, 120, 3, 71, 110 11, 79, 23, 91, 112, 120, 132, 29, 32, 97, 100, 37, 37, 105, 105, 111 139, 140, 145, 146, 155, 155, 156, 156, 44, 44, 167, 167, 48, 48, 112 171, 171, 57, 57, 180, 180, 66, 66, 189, 189 ], 113 [ 1, 69, 110, 12, 80, 121, 4, 72, 113, 11, 11, 79, 79, 120, 120, 3, 71, 114 11, 79, 23, 91, 112, 120, 132, 29, 32, 97, 100, 37, 37, 105, 105, 115 140, 139, 146, 145, 156, 156, 155, 155, 44, 44, 167, 167, 48, 48, 116 171, 171, 57, 57, 180, 180, 66, 66, 189, 189 ] ], [ ], [ ], [ ] ] 117gap> max:= filt[5]; 118CharacterTable( "(A4xO8+(2).3).2" ) 119gap> hfusmax:= possfus[5];; 120gap> maxfusf3p:= PossibleClassFusions( max, f3p );; 121gap> comp:= SetOfComposedClassFusions( maxfusf3p, hfusmax );; 122gap> Length( comp ); 1232 124gap> repr:= RepresentativesFusions( h, comp, f3p ); 125[ [ 1, 2, 4, 12, 35, 54, 3, 3, 16, 9, 9, 11, 11, 40, 40, 2, 3, 9, 11, 35, 36, 126 13, 40, 90, 7, 22, 19, 20, 43, 43, 50, 50, 8, 8, 23, 23, 46, 46, 47, 127 47, 10, 10, 9, 9, 10, 10, 11, 11, 26, 26, 28, 28, 67, 67, 68, 68 ] ] 128gap> GetFusionMap( h, f3p ) in repr; 129true 130gap> b:= CharacterTable( "B" ); 131CharacterTable( "B" ) 132gap> h:= CharacterTable( "BN7" ); 133CharacterTable( "BN7" ) 134gap> hfusb:= PossibleClassFusions( h, b );; 135gap> Length( RepresentativesFusions( h, hfusb, b ) ); 1362 137gap> Number( Factors( Size( b ) ), x -> x = 7 ); 1382 139gap> th:= CharacterTable( "Th" ); 140CharacterTable( "Th" ) 141gap> Filtered( Maxes( th ), x -> Size( CharacterTable( x ) ) mod 7^2 = 0 ); 142[ "3D4(2).3", "7^2:(3x2S4)" ] 143gap> thn7:= CharacterTable( "ThN7" ); 144CharacterTable( "7^2:(3x2S4)" ) 145gap> comp:= SetOfComposedClassFusions( PossibleClassFusions( th, b ), 146> PossibleClassFusions( thn7, th ) ); 147[ [ 1, 31, 7, 7, 5, 28, 28, 17, 72, 72, 6, 6, 7, 28, 27, 27, 109, 109, 17, 148 45, 45, 72, 72, 127, 127, 127, 127 ] ] 149gap> thn7fush:= PossibleClassFusions( thn7, h );; 150gap> filt:= Filtered( hfusb, x -> 151> ForAny( thn7fush, y -> CompositionMaps( x, y ) in comp ) );; 152gap> Length( RepresentativesFusions( h, filt, b ) ); 1531 154gap> GetFusionMap( h, b ) in filt; 155true 156gap> m:= CharacterTable( "(A4xO8+(2).3).2" );; 157gap> t:= CharacterTable( "F3+" );; 158gap> mfust:= PossibleClassFusions( m, t );; 159gap> repr:= RepresentativesFusions( m, mfust, t );; 160gap> Length( repr ); 1612 162gap> a4inm:= Filtered( ClassPositionsOfNormalSubgroups( m ), 163> n -> Sum( SizesConjugacyClasses( m ){ n } ) = 12 ); 164[ [ 1, 69, 110 ] ] 165gap> OrdersClassRepresentatives( m ){ a4inm[1] }; 166[ 1, 2, 3 ] 167gap> List( repr, map -> map[110] ); 168[ 4, 4 ] 169gap> OrdersClassRepresentatives( t ){ [ 1 .. 4 ] }; 170[ 1, 2, 2, 3 ] 171gap> s:= CharacterTable( "F3+N3A" ); 172CharacterTable( "(3xO8+(3):3):2" ) 173gap> u:= CharacterTable( "Cyclic", 3 ) * CharacterTable( "O8+(2).3" ); 174CharacterTable( "C3xO8+(2).3" ) 175gap> ufuss:= PossibleClassFusions( u, s );; 176gap> ufusm:= PossibleClassFusions( u, m );; 177gap> sfust:= PossibleClassFusions( s, t );; 178gap> comp:= SetOfComposedClassFusions( sfust, ufuss );; 179gap> Length( comp ); 1806 181gap> filt:= Filtered( mfust, 182> x -> ForAny( ufusm, map -> CompositionMaps( x, map ) in comp ) );; 183gap> repr:= RepresentativesFusions( m, filt, t );; 184gap> Length( repr ); 1851 186gap> GetFusionMap( m, t ) in repr; 187true 188gap> m:= CharacterTable( "A6xL2(8):3" );; 189gap> t:= CharacterTable( "F3+" );; 190gap> mfust:= PossibleClassFusions( m, t );; 191gap> Length( RepresentativesFusions( m, mfust, t ) ); 1922 193gap> dppos:= ClassPositionsOfDirectProductDecompositions( m ); 194[ [ [ 1, 12 .. 67 ], [ 1 .. 11 ] ] ] 195gap> List( dppos[1], l -> Sum( SizesConjugacyClasses( t ){ l } ) ); 196[ 17733424133316996808705, 4545066196775803392 ] 197gap> List( dppos[1], l -> Sum( SizesConjugacyClasses( m ){ l } ) ); 198[ 360, 1512 ] 199gap> 3Apos:= Position( OrdersClassRepresentatives( t ), 3 ); 2004 201gap> 3Ainm:= List( mfust, map -> Position( map, 3Apos ) ); 202[ 23, 23, 23, 23, 34, 34, 34, 34 ] 203gap> ForAll( 3Ainm, x -> x in dppos[1][1] ); 204true 205gap> u:= CharacterTable( "3^2:2" ) * CharacterTable( "L2(8).3" ); 206CharacterTable( "3^2:2xL2(8).3" ) 207gap> s:= CharacterTable( "F3+N3A" ); 208CharacterTable( "(3xO8+(3):3):2" ) 209gap> ufuss:= PossibleClassFusions( u, s );; 210gap> comp:= SetOfComposedClassFusions( sfust, ufuss );; 211gap> ufusm:= PossibleClassFusions( u, m );; 212gap> filt:= Filtered( mfust, 213> map -> ForAny( ufusm, 214> map2 -> CompositionMaps( map, map2 ) in comp ) );; 215gap> repr:= RepresentativesFusions( m, filt, t );; 216gap> Length( repr ); 2171 218gap> GetFusionMap( m, t ) in repr; 219true 220gap> b:= CharacterTable( "B" );; 221gap> n:= CharacterTable( "BN3A" ); 222CharacterTable( "S3xFi22.2" ) 223gap> nfusb:= PossibleClassFusions( n, b );; 224gap> Length( nfusb ); 2251 226gap> nfusb:= nfusb[1];; 227gap> fi222:= CharacterTable( "Fi22.2" );; 228gap> fi222n3a:= CharacterTable( "S3xU4(3).(2^2)_{122}" );; 229gap> s3:= CharacterTable( "S3" );; 230gap> inter:= s3 * fi222n3a;; 231gap> intermods3fusnmods3:= PossibleClassFusions( fi222n3a, fi222 );; 232gap> Length( intermods3fusnmods3 ); 2332 234gap> Length( RepresentativesFusions( fi222n3a, intermods3fusnmods3, fi222 ) ); 2351 236gap> interfusn:= CompositionMaps( InverseMap( GetFusionMap( n, fi222 ) ), 237> CompositionMaps( intermods3fusnmods3[1], 238> GetFusionMap( inter, fi222n3a ) ) );; 239gap> interfusn:= PossibleClassFusions( inter, n, 240> rec( fusionmap:= interfusn, quick:= true ) );; 241gap> Length( interfusn ); 2421 243gap> nccl:= NrConjugacyClasses( fi222 );; 244gap> interfusn[1] = Concatenation( List( [ 0 .. 2 ], 245> i -> intermods3fusnmods3[1] + i * nccl ) ); 246true 247gap> tblg:= CharacterTable( "BM14" ); 248CharacterTable( "(3^2:D8xU4(3).2^2).2" ) 249gap> interfusg:= PossibleClassFusions( inter, tblg );; 250gap> Length( interfusg ); 2512 252gap> Length( RepresentativesFusions( inter, interfusg, tblg ) ); 2531 254gap> interfusb:= CompositionMaps( nfusb, interfusn[1] );; 255gap> approx:= List( interfusg, 256> map -> CompositionMaps( interfusb, InverseMap( map ) ) );; 257gap> gfusb:= Set( Concatenation( List( approx, 258> map -> PossibleClassFusions( tblg, b, 259> rec( fusionmap:= map ) ) ) ) );; 260gap> Length( gfusb ); 2614 262gap> Length( RepresentativesFusions( tblg, gfusb, b ) ); 2631 264gap> GetFusionMap( tblg, b ) in gfusb; 265true 266gap> tblu:= CharacterTable( "7^(1+4):(3x2.S7)" );; 267gap> m:= CharacterTable( "M" );; 268gap> ufusm:= PossibleClassFusions( tblu, m );; 269gap> Length( RepresentativesFusions( tblu, ufusm, m ) ); 2702 271gap> LoadPackage( "atlasrep" ); 272true 273gap> g1:= AtlasGroup( "7^(2+1+2):GL2(7)" );; 274gap> s1:= SylowSubgroup( g1, 7 );; 275gap> n1:= Normalizer( g1, s1 );; 276gap> g2:= AtlasGroup( "7^(1+4):(3x2.S7)" );; 277gap> s2:= SylowSubgroup( g2, 7 );; 278gap> n2:= Normalizer( g2, s2 );; 279gap> Size( n1 ) = Size( n2 ); 280true 281gap> ( Size( m ) / Size( s1 ) ) mod 7 <> 0; 282true 283gap> tbln:= CharacterTable( Image( IsomorphismPcGroup( n1 ) ) );; 284gap> tbls:= CharacterTable( "7^(2+1+2):GL2(7)" );; 285gap> nfusm:= PossibleClassFusions( tbln, m );; 286gap> Length( RepresentativesFusions( tbln, nfusm, m ) ); 2872 288gap> nfuss:= PossibleClassFusions( tbln, tbls );; 289gap> sfusm:= PossibleClassFusions( tbls, m );; 290gap> nfusm:= SetOfComposedClassFusions( sfusm, nfuss );; 291gap> Length( nfusm ); 2921 293gap> nfusu:= PossibleClassFusions( tbln, tblu );; 294gap> ufusm:= Filtered( ufusm, map2 -> ForAny( nfusu, 295> map1 -> CompositionMaps( map2, map1 ) in nfusm ) );; 296gap> Length( RepresentativesFusions( tblu, ufusm, m ) ); 2971 298gap> tblc:= CharacterTable( "MC7B" ); 299CharacterTable( "7^1+4.2A7" ) 300gap> cfusm:= PossibleClassFusions( tblc, m );; 301gap> Length( RepresentativesFusions( tblc, cfusm, m ) ); 3022 303gap> cfusu:= PossibleClassFusions( tblc, tblu );; 304gap> cfusm:= SetOfComposedClassFusions( ufusm, cfusu );; 305gap> Length( RepresentativesFusions( tblc, cfusm, m ) ); 3061 307gap> m:= CharacterTable( "3^7.O7(3):2" );; 308gap> t:= CharacterTable( "F3+.2" );; 309gap> mfust:= PossibleClassFusions( m, t );; 310gap> Length( RepresentativesFusions( m, mfust, t ) ); 3112 312gap> nsg:= ClassPositionsOfNormalSubgroups( m ); 313[ [ 1 ], [ 1 .. 4 ], [ 1 .. 158 ], [ 1 .. 291 ] ] 314gap> Sum( SizesConjugacyClasses( m ){ nsg[2] } ); 3152187 316gap> 3^7; 3172187 318gap> rest:= Set( List( mfust, map -> map{ nsg[2] } ) ); 319[ [ 1, 4, 5, 6 ] ] 320gap> List( rest, l -> ClassNames( t, "Atlas" ){ l } ); 321[ [ "1A", "3A", "3B", "3C" ] ] 322gap> s:= CharacterTable( "F3+.2N3A" ); 323CharacterTable( "S3xO8+(3):S3" ) 324gap> PowerMap( m, 2 )[4]; 3254 326gap> size_u:= 2 * SizesCentralizers( m )[ 2 ]; 32753059069440 328gap> Size( s ) / size_u; 3293360 330gap> o8p3:= CharacterTable( "O8+(3)" );; 331gap> mx:= List( Maxes( o8p3 ), CharacterTable );; 332gap> filt:= Filtered( mx, x -> 3360 mod Index( o8p3, x ) = 0 ); 333[ CharacterTable( "3^6:L4(3)" ), CharacterTable( "O8+(3)M8" ), 334 CharacterTable( "O8+(3)M9" ) ] 335gap> List( filt, x -> Index( o8p3, x ) ); 336[ 1120, 1120, 1120 ] 337gap> uu:= filt[1];; 338gap> u:= CharacterTable( "Symmetric", 3 ) * uu; 339CharacterTable( "Sym(3)x3^6:L4(3)" ) 340gap> uufusm:= PossibleClassFusions( uu, m );; 341gap> Length( uufusm ); 3428 343gap> approx:= List( uufusm, map -> CompositionMaps( map, 344> InverseMap( GetFusionMap( uu, u ) ) ) );; 345gap> ufusm:= Concatenation( List( approx, map -> 346> PossibleClassFusions( u, m, rec( fusionmap:= map ) ) ) );; 347gap> Length( ufusm ); 3488 349gap> uufuss:= PossibleClassFusions( uu, s );; 350gap> Length( uufuss ); 3518 352gap> approx:= List( uufuss, map -> CompositionMaps( map, 353> InverseMap( GetFusionMap( uu, u ) ) ) );; 354gap> ufuss:= Concatenation( List( approx, map -> 355> PossibleClassFusions( u, s, rec( fusionmap:= map ) ) ) );; 356gap> Length( ufuss ); 3578 358gap> sfust:= PossibleClassFusions( s, t );; 359gap> comp:= SetOfComposedClassFusions( sfust, ufuss );; 360gap> Length( comp ); 3618 362gap> filt:= Filtered( mfust, map2 -> ForAny( ufusm, map1 -> 363> CompositionMaps( map2, map1 ) in comp ) );; 364gap> Length( filt ); 3654 366gap> Length( RepresentativesFusions( m, filt, t ) ); 3671 368gap> GetFusionMap( m, t ) in filt; 369true 370gap> t:= CharacterTable( "Suz" );; 371gap> 3t:= CharacterTable( "3.Suz" );; 372gap> s:= CharacterTable( "A7" );; 373gap> 3s:= CharacterTable( "3.A7" );; 374gap> PossibleClassFusions( s, 3t ); 375[ ] 376gap> 3sfus3t:= PossibleClassFusions( 3s, 3t );; 377gap> Length( 3sfus3t ); 3786 379gap> RepresentativesFusions( 3s, 3sfus3t, 3t ); 380[ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 49, 50, 381 48, 49, 50 ], 382 [ 1, 11, 12, 4, 36, 37, 13, 16, 23, 82, 83, 32, 100, 101, 44, 38, 41, 48, 383 112, 116, 48, 115, 113 ] ] 384gap> ClassPositionsOfCentre( 3t ); 385[ 1, 2, 3 ] 386gap> sfust:= PossibleClassFusions( s, t );; 387gap> Length( sfust ); 3881 389gap> filt:= Filtered( 3sfus3t, map -> CompositionMaps( GetFusionMap( 3t, t ), 390> map ) 391> = CompositionMaps( sfust[1], GetFusionMap( 3s, s ) ) ); 392[ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 49, 50, 393 48, 49, 50 ], 394 [ 1, 3, 2, 7, 9, 8, 16, 16, 26, 28, 27, 32, 34, 33, 47, 47, 47, 48, 50, 49, 395 48, 50, 49 ] ] 396gap> RepresentativesFusions( 3s, filt, 3t ); 397[ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 49, 50, 398 48, 49, 50 ] ] 399gap> GetFusionMap( 3s, 3t ) in filt; 400true 401gap> u:= CharacterTable( "3_2.U4(3)" );; 402gap> PossibleClassFusions( s, u ); 403[ ] 404gap> Length( PossibleClassFusions( 3s, u ) ); 4058 406gap> s:= CharacterTable( "S6" ); 407CharacterTable( "A6.2_1" ) 408gap> t:= CharacterTable( "U4(2)" ); 409CharacterTable( "U4(2)" ) 410gap> sfust:= PossibleClassFusions( s, t ); 411[ [ 1, 3, 6, 7, 9, 10, 3, 2, 9, 16, 15 ], 412 [ 1, 3, 7, 6, 9, 10, 2, 3, 9, 15, 16 ] ] 413gap> Length( RepresentativesFusions( s, sfust, t ) ); 4141 415gap> 2t:= CharacterTable( "2.U4(2)" ); 416CharacterTable( "2.U4(2)" ) 417gap> 2s:= CharacterTable( "2.A6.2_1" ); 418CharacterTable( "2.A6.2_1" ) 419gap> 2sfus2t:= PossibleClassFusions( 2s, 2t ); 420[ [ 1, 2, 4, 11, 12, 9, 10, 15, 16, 17, 3, 4, 15, 24, 25, 26, 26 ], 421 [ 1, 2, 4, 11, 12, 9, 10, 15, 16, 17, 3, 4, 15, 25, 24, 26, 26 ] ] 422gap> Length( RepresentativesFusions( 2s, 2sfus2t, 2t ) ); 4231 424gap> 2sfuss:= GetFusionMap( 2s, s ); 425[ 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 11 ] 426gap> 2tfust:= GetFusionMap( 2t, t );; 427gap> induced:= Set( List( 2sfus2t, x -> CompositionMaps( 2tfust, 428> CompositionMaps( x, InverseMap( 2sfuss ) ) ) ) ); 429[ [ 1, 3, 7, 6, 9, 10, 2, 3, 9, 15, 16 ] ] 430gap> auts:= AutomorphismsOfTable( s ); 431Group([ (3,4)(7,8)(10,11) ]) 432gap> other:= OnTuples( 2sfuss, GeneratorsOfGroup( auts )[1] ); 433[ 1, 1, 2, 4, 4, 3, 3, 5, 6, 6, 8, 7, 9, 11, 11, 10, 10 ] 434gap> Set( List( 2sfus2t, x -> CompositionMaps( 2tfust, 435> CompositionMaps( x, InverseMap( other ) ) ) ) ); 436[ [ 1, 3, 6, 7, 9, 10, 3, 2, 9, 16, 15 ] ] 437gap> GetFusionMap( s, t ) in induced; 438true 439gap> s:= CharacterTable( "U3(8).3_1" );; 440gap> t:= CharacterTable( "2E6(2)" );; 441gap> sfust:= PossibleClassFusions( s, t );; 442gap> Length( sfust ); 44324 444gap> Length( RepresentativesFusions( s, sfust, t ) ); 4452 446gap> s2:= CharacterTable( "U3(8).6" );; 447gap> t2:= CharacterTable( "2E6(2).2" );; 448gap> s2fust2:= PossibleClassFusions( s2, t2 );; 449gap> Length( s2fust2 ); 4502 451gap> Length( RepresentativesFusions( s2, s2fust2, t2 ) ); 4521 453gap> sfuss2:= PossibleClassFusions( s, s2 );; 454gap> comp:= SetOfComposedClassFusions( s2fust2, sfuss2 );; 455gap> tfust2:= PossibleClassFusions( t, t2 );; 456gap> filt:= Filtered( sfust, map -> ForAny( tfust2, 457> map2 -> CompositionMaps( map2, map ) in comp ) );; 458gap> Length( filt ); 45912 460gap> Length( RepresentativesFusions( s, filt, t ) ); 4611 462gap> Set( List( filt, x -> x{ [ 31 .. 36 ] } ) ); 463[ [ 74, 74, 81, 82, 81, 82 ], [ 74, 74, 82, 81, 82, 81 ], 464 [ 81, 82, 74, 74, 81, 82 ], [ 81, 82, 81, 82, 74, 74 ], 465 [ 82, 81, 74, 74, 82, 81 ], [ 82, 81, 82, 81, 74, 74 ] ] 466gap> Set( List( Difference( sfust, filt ), x -> x{ [ 31 .. 36 ] } ) ); 467[ [ 74, 74, 81, 82, 82, 81 ], [ 74, 74, 82, 81, 81, 82 ], 468 [ 81, 82, 74, 74, 82, 81 ], [ 81, 82, 82, 81, 74, 74 ], 469 [ 82, 81, 74, 74, 81, 82 ], [ 82, 81, 81, 82, 74, 74 ] ] 470gap> Set( List( sfuss2, x -> x{ [ 31 .. 36 ] } ) ); 471[ [ 28, 29, 30, 31, 30, 31 ], [ 29, 28, 31, 30, 31, 30 ], 472 [ 30, 31, 28, 29, 30, 31 ], [ 30, 31, 30, 31, 28, 29 ], 473 [ 31, 30, 29, 28, 31, 30 ], [ 31, 30, 31, 30, 29, 28 ] ] 474gap> List( tfust2, x -> x{ [ 74, 81, 82 ] } ); 475[ [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ], 476 [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ], 477 [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ] ] 478gap> List( s2fust2, x -> x{ [ 28 .. 31 ] } ); 479[ [ 65, 65, 70, 71 ], [ 65, 65, 71, 70 ] ] 480gap> GetFusionMap( s, t ) in filt; 481true 482gap> s:= CharacterTable( "L3(4).2_1" );; 483gap> t:= CharacterTable( "U6(2)" );; 484gap> sfust:= PossibleClassFusions( s, t );; 485gap> Length( sfust ); 48627 487gap> Length( RepresentativesFusions( s, sfust, t ) ); 4883 489gap> s3:= CharacterTable( "L3(4).6" );; 490gap> t3:= CharacterTable( "U6(2).3" );; 491gap> s3fust3:= PossibleClassFusions( s3, t3 );; 492gap> Length( s3fust3 ); 4932 494gap> Length( RepresentativesFusions( s3, s3fust3, t3 ) ); 4951 496gap> sfuss3:= PossibleClassFusions( s, s3 );; 497gap> comp:= SetOfComposedClassFusions( s3fust3, sfuss3 );; 498gap> tfust3:= PossibleClassFusions( t, t3 );; 499gap> sfust = Filtered( sfust, map -> ForAny( tfust3, 500> map2 -> CompositionMaps( map2, map ) in comp ) ); 501true 502gap> OrdersClassRepresentatives( s ); 503[ 1, 2, 3, 4, 4, 4, 5, 7, 2, 4, 6, 8, 8, 8 ] 504gap> sfuss3; 505[ [ 1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 10, 10, 10 ] ] 506gap> Set( List( sfust, map -> map{ [ 4 .. 6 ] } ) ); 507[ [ 10, 10, 10 ], [ 10, 10, 11 ], [ 10, 10, 12 ], [ 10, 11, 10 ], 508 [ 10, 11, 11 ], [ 10, 11, 12 ], [ 10, 12, 10 ], [ 10, 12, 11 ], 509 [ 10, 12, 12 ], [ 11, 10, 10 ], [ 11, 10, 11 ], [ 11, 10, 12 ], 510 [ 11, 11, 10 ], [ 11, 11, 11 ], [ 11, 11, 12 ], [ 11, 12, 10 ], 511 [ 11, 12, 11 ], [ 11, 12, 12 ], [ 12, 10, 10 ], [ 12, 10, 11 ], 512 [ 12, 10, 12 ], [ 12, 11, 10 ], [ 12, 11, 11 ], [ 12, 11, 12 ], 513 [ 12, 12, 10 ], [ 12, 12, 11 ], [ 12, 12, 12 ] ] 514gap> Set( List( tfust3, map -> map{ [ 10 .. 12 ] } ) ); 515[ [ 10, 10, 10 ] ] 516gap> Filtered( sfust, map -> Intersection( map, [ 10 .. 12 ] ) = [] ); 517[ ] 518gap> filt:= Filtered( sfust, map -> IsSubset( map, [ 10 .. 12 ] ) ); 519[ [ 1, 3, 7, 10, 11, 12, 15, 24, 4, 14, 23, 26, 27, 28 ], 520 [ 1, 3, 7, 10, 12, 11, 15, 24, 4, 14, 23, 26, 28, 27 ], 521 [ 1, 3, 7, 11, 10, 12, 15, 24, 4, 14, 23, 27, 26, 28 ], 522 [ 1, 3, 7, 11, 12, 10, 15, 24, 4, 14, 23, 27, 28, 26 ], 523 [ 1, 3, 7, 12, 10, 11, 15, 24, 4, 14, 23, 28, 26, 27 ], 524 [ 1, 3, 7, 12, 11, 10, 15, 24, 4, 14, 23, 28, 27, 26 ] ] 525gap> Length( RepresentativesFusions( s, filt, t ) ); 5261 527gap> GetFusionMap( s, t ) in filt; 528true 529gap> s:= CharacterTable( "L2(16).4" );; 530gap> t:= CharacterTable( "J3.2" );; 531gap> fus:= PossibleClassFusions( s, t ); 532[ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ], 533 [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ], 534 [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ], 535 [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ] 536gap> RepresentativesFusions( s, fus, t ); 537[ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ], 538 [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ] 539gap> j3:= CharacterTable( "J3" );; 540gap> PossibleClassFusions( s, j3 ); 541[ ] 542gap> GetFusionMap( j3, t ); 543[ 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 14, 15, 16, 17, 17 ] 544gap> filt:= Filtered( fus, 545> x -> not IsSubset( ClassPositionsOfDerivedSubgroup( t ), x ) ); 546[ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ], 547 [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ] 548gap> smod2:= s mod 2;; 549gap> tmod2:= t mod 2;; 550gap> admissible:= [];; 551gap> for map in filt do 552> modmap:= CompositionMaps( InverseMap( GetFusionMap( tmod2, t ) ), 553> CompositionMaps( map, GetFusionMap( smod2, s ) ) ); 554> if not fail in Decomposition( Irr( smod2 ), 555> List( Irr( tmod2 ), chi -> chi{ modmap } ), "nonnegative" ) then 556> AddSet( admissible, map ); 557> fi; 558> od; 559gap> admissible; 560[ [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ] 561gap> CTblLib.Test.Decompositions( s, fus, t ) = admissible; 562true 563gap> GetFusionMap( s, t ) in admissible; 564true 565gap> m:= CharacterTable( "L2(17)" );; 566gap> t:= CharacterTable( "S8(2)" );; 567gap> mfust:= PossibleClassFusions( m, t );; 568gap> Length( RepresentativesFusions( m, mfust, t ) ); 5694 570gap> filt:= CTblLib.Test.Decompositions( m, mfust, t );; 571gap> repr:= RepresentativesFusions( m, filt, t );; 572gap> Length( repr ); 5731 574gap> GetFusionMap( m, t ) in repr; 575true 576gap> s:= CharacterTable( "L2(19)" );; 577gap> t:= CharacterTable( "J3" );; 578gap> sfust:= PossibleClassFusions( s, t ); 579[ [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 20, 21 ], 580 [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 21, 20 ], 581 [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ], 582 [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 21, 20 ], 583 [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ], 584 [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 21, 20 ], 585 [ 1, 2, 4, 7, 6, 10, 11, 12, 14, 13, 20, 21 ], 586 [ 1, 2, 4, 7, 6, 10, 11, 12, 14, 13, 21, 20 ], 587 [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 20, 21 ], 588 [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 21, 20 ], 589 [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 20, 21 ], 590 [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 21, 20 ] ] 591gap> fusreps:= RepresentativesFusions( s, sfust, t ); 592[ [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 20, 21 ] ] 593gap> tmod19:= t mod 19; 594BrauerTable( "J3", 19 ) 595gap> deg110:= Filtered( Irr( tmod19 ), phi -> phi[1] = 110 ); 596[ Character( BrauerTable( "J3", 19 ), [ 110, -2, 5, 2, 2, 0, 0, 1, 0, 597 -2*E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6-2*E(9)^7, 598 E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6+E(9)^7, 599 E(9)^2+E(9)^3+2*E(9)^4+2*E(9)^5+E(9)^6+E(9)^7, -2, -2, -1, 0, 0, 600 E(17)+E(17)^2+E(17)^4+E(17)^8+E(17)^9+E(17)^13+E(17)^15+E(17)^16, 601 E(17)^3+E(17)^5+E(17)^6+E(17)^7+E(17)^10+E(17)^11+E(17)^12+E(17)^14 ] ) 602 ] 603gap> 9A:= Position( OrdersClassRepresentatives( tmod19 ), 9 ); 60410 605gap> deg110[1][ 9A ]; 606-2*E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6-2*E(9)^7 607gap> AtlasIrrationality( "-1+2y9+&4" ) = deg110[1][ 9A ]; 608true 609gap> smod19:= s mod 19; 610BrauerTable( "L2(19)", 19 ) 611gap> compatible:= [];; 612gap> for map in sfust do 613> comp:= CompositionMaps( InverseMap( GetFusionMap( tmod19, t ) ), 614> CompositionMaps( map, GetFusionMap( smod19, s ) ) ); 615> rest:= List( Irr( tmod19 ), phi -> phi{ comp } ); 616> if not fail in Decomposition( Irr( smod19 ), rest, "nonnegative" ) then 617> Add( compatible, map ); 618> fi; 619> od; 620gap> compatible; 621[ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ], 622 [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 21, 20 ], 623 [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ], 624 [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 21, 20 ], 625 [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 20, 21 ], 626 [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 21, 20 ], 627 [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 20, 21 ], 628 [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 21, 20 ] ] 629gap> reps:= RepresentativesFusions( s, compatible, t ); 630[ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ], 631 [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ] ] 632gap> compatiblemod19:= List( reps, map -> CompositionMaps( 633> InverseMap( GetFusionMap( tmod19, t ) ), 634> CompositionMaps( map, GetFusionMap( smod19, s ) ) ) ); 635[ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14 ], 636 [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14 ] ] 637gap> rest:= List( compatiblemod19, map -> Irr( tmod19 )[3]{ map } );; 638gap> dec:= Decomposition( Irr( smod19 ), rest, "nonnegative" ); 639[ [ 0, 0, 1, 2, 1, 2, 2, 1, 0, 1 ], [ 0, 2, 0, 2, 0, 1, 2, 0, 2, 1 ] ] 640gap> List( Irr( smod19 ), phi -> phi[1] ); 641[ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 ] 642gap> LoadPackage( "atlasrep" ); 643true 644gap> prog:= AtlasStraightLineProgram( "J3", "maxes", 2 ); 645rec( groupname := "J3", identifier := [ "J3", "J3G1-max2W1", 1 ], 646 program := <straight line program>, size := 3420, standardization := 1, 647 subgroupname := "L2(19)" ) 648gap> gens:= OneAtlasGeneratingSet( "J3", Characteristic, 19, Dimension, 110 ); 649rec( dim := 110, 650 generators := [ < immutable compressed matrix 110x110 over GF(19) >, 651 < immutable compressed matrix 110x110 over GF(19) > ], 652 groupname := "J3", id := "", 653 identifier := [ "J3", [ "J3G1-f19r110B0.m1", "J3G1-f19r110B0.m2" ], 1, 19 ], 654 repname := "J3G1-f19r110B0", repnr := 35, ring := GF(19), size := 50232960, 655 standardization := 1, type := "matff" ) 656gap> restgens:= ResultOfStraightLineProgram( prog.program, gens.generators ); 657[ < immutable compressed matrix 110x110 over GF(19) >, 658 < immutable compressed matrix 110x110 over GF(19) > ] 659gap> module:= GModuleByMats( restgens, GF( 19 ) );; 660gap> facts:= SMTX.CollectedFactors( module );; 661gap> Length( facts ); 6627 663gap> List( facts, x -> x[1].dimension ); 664[ 5, 7, 9, 11, 13, 15, 19 ] 665gap> List( facts, x -> x[2] ); 666[ 1, 2, 1, 2, 2, 1, 1 ] 667gap> GetFusionMap( s, t ) = reps[1]; 668true 669gap> LoadPackage( "atlasrep" ); 670true 671gap> t:= CharacterTable( "F3+" ); 672CharacterTable( "F3+" ) 673gap> s:= CharacterTable( "U3(3).2" ); 674CharacterTable( "U3(3).2" ) 675gap> tnames:= ClassNames( t, "ATLAS" ); 676[ "1A", "2A", "2B", "3A", "3B", "3C", "3D", "3E", "4A", "4B", "4C", "5A", 677 "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "7A", 678 "7B", "8A", "8B", "8C", "9A", "9B", "9C", "9D", "9E", "9F", "10A", "10B", 679 "11A", "12A", "12B", "12C", "12D", "12E", "12F", "12G", "12H", "12I", 680 "12J", "12K", "12L", "12M", "13A", "14A", "14B", "15A", "15B", "15C", 681 "16A", "17A", "18A", "18B", "18C", "18D", "18E", "18F", "18G", "18H", 682 "20A", "20B", "21A", "21B", "21C", "21D", "22A", "23A", "23B", "24A", 683 "24B", "24C", "24D", "24E", "24F", "24G", "26A", "27A", "27B", "27C", 684 "28A", "29A", "29B", "30A", "30B", "33A", "33B", "35A", "36A", "36B", 685 "36C", "36D", "39A", "39B", "39C", "39D", "42A", "42B", "42C", "45A", 686 "45B", "60A" ] 687gap> OrdersClassRepresentatives( s ); 688[ 1, 2, 3, 3, 4, 4, 6, 7, 8, 12, 2, 4, 6, 8, 12, 12 ] 689gap> sfust:= List( [ "1A", "2B", "3D", "3E", "4C", "4C", "6J", "7B", "8C", 690> "12M" ], x -> Position( tnames, x ) ); 691[ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50 ] 692gap> sfust:= PossibleClassFusions( s, t, rec( fusionmap:= sfust ) ); 693[ [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50, 3, 9, 23, 28, 43, 43 ], 694 [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50, 3, 11, 23, 28, 50, 50 ] ] 695gap> OrdersClassRepresentatives( s ); 696[ 1, 2, 3, 3, 4, 4, 6, 7, 8, 12, 2, 4, 6, 8, 12, 12 ] 697gap> Maxes( s ); 698[ "U3(3)", "3^(1+2):SD16", "L3(2).2", "2^(1+4).S3", "4^2:D12" ] 699gap> SizesCentralizers( s ); 700[ 12096, 192, 216, 18, 96, 32, 24, 7, 8, 12, 48, 48, 6, 8, 12, 12 ] 701gap> u:= CharacterTable( Maxes( s )[2] );; 702gap> ufuss:= GetFusionMap( u, s ); 703[ 1, 2, 11, 3, 4, 5, 12, 7, 13, 9, 9, 15, 16, 10 ] 704gap> 3Dcentralizer:= SizesCentralizers( t )[7]; 705153055008 706gap> cand:= [];; 707gap> for name in Maxes( t ) do 708> m:= CharacterTable( name ); 709> mfust:= GetFusionMap( m, t ); 710> if ForAny( [ 1 .. Length( mfust ) ], 711> i -> mfust[i] = 7 and SizesCentralizers( m )[i] = 3Dcentralizer ) 712> then 713> Add( cand, m ); 714> fi; 715> od; 716gap> cand; 717[ CharacterTable( "3^7.O7(3)" ), CharacterTable( "3^2.3^4.3^8.(A5x2A4).2" ) ] 718gap> possufust:= List( sfust, x -> CompositionMaps( x, ufuss ) ); 719[ [ 1, 3, 3, 7, 8, 11, 9, 22, 23, 28, 28, 43, 43, 50 ], 720 [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ] 721gap> m:= cand[1];; 722gap> ufusm:= PossibleClassFusions( u, m );; 723gap> Length( ufusm ); 724242 725gap> comp:= List( ufusm, x -> CompositionMaps( GetFusionMap( m, t ), x ) );; 726gap> Intersection( possufust, comp ); 727[ [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ] 728gap> m:= cand[2];; 729gap> ufusm:= PossibleClassFusions( u, m );; 730gap> Length( ufusm ); 731256 732gap> comp:= List( ufusm, x -> CompositionMaps( GetFusionMap( m, t ), x ) );; 733gap> Intersection( possufust, comp ); 734[ [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ] 735gap> GetFusionMap( s, t ) = sfust[2]; 736true 737gap> t:= CharacterTable( "F3+" );; 738gap> u:= CharacterTable( "L2(13).2" );; 739gap> fus:= PossibleClassFusions( u, t );; 740gap> repr:= RepresentativesFusions( u, fus, t );; 741gap> Length( repr ); 7423 743gap> filt:= Filtered( repr, x -> t.2b in x and t.3d in x and t.7b in x ); 744[ [ 1, 3, 7, 22, 25, 25, 25, 51, 3, 9, 43, 43, 53, 53, 53 ], 745 [ 1, 3, 7, 22, 25, 25, 25, 51, 3, 11, 50, 50, 53, 53, 53 ] ] 746gap> ClassNames( t ){ [ 43, 50 ] }; 747[ "12f", "12m" ] 748gap> pos:= Position( OrdersClassRepresentatives( t ), 13 ); 74951 750gap> SizesCentralizers( t )[ pos ]; 751234 752gap> ClassOrbit( t, pos ); 753[ 51 ] 754gap> cand:= [];; 755gap> for name in Maxes( t ) do 756> m:= CharacterTable( name ); 757> pos:= Position( OrdersClassRepresentatives( m ), 13 ); 758> if pos <> fail and 759> SizesCentralizers( m )[ pos ] = 234 760> and ClassOrbit( m, pos ) = [ pos ] then 761> Add( cand, m ); 762> fi; 763> od; 764gap> cand; 765[ CharacterTable( "(3^2:2xG2(3)).2" ) ] 766gap> s:= cand[1];; 767gap> sfust:= PossibleClassFusions( s, t );; 768gap> der:= ClassPositionsOfDerivedSubgroup( s );; 769gap> outer:= Difference( [ 1 .. NrConjugacyClasses( s ) ], der );; 770gap> sfust:= PossibleClassFusions( s, t );; 771gap> imgs:= Set( Flat( List( sfust, x -> x{ outer } ) ) ); 772[ 2, 3, 10, 11, 15, 17, 18, 19, 21, 22, 26, 44, 45, 49, 50, 52, 62, 83, 87, 773 98 ] 774gap> t.12f in imgs; 775false 776gap> t.12m in imgs; 777true 778gap> GetFusionMap( u, t ) = filt[2]; 779true 780gap> b:= CharacterTable( "B" );; 781gap> m11:= CharacterTable( "M11" );; 782gap> m11fusb:= PossibleClassFusions( m11, b );; 783gap> Length( m11fusb ); 78431 785gap> CompositionMaps( ClassNames( b, "ATLAS" ), Parametrized( m11fusb ) ); 786[ "1A", [ "2B", "2D" ], [ "3A", "3B" ], [ "4B", "4E", "4G", "4H", "4J" ], 787 [ "5A", "5B" ], [ "6C", "6E", "6H", "6I", "6J" ], 788 [ "8B", "8E", "8G", "8J", "8K", "8L", "8M", "8N" ], 789 [ "8B", "8E", "8G", "8J", "8K", "8L", "8M", "8N" ], "11A", "11A" ] 790gap> th:= CharacterTable( "Th" );; 791gap> s5:= CharacterTable( "S5" );; 792gap> s5fusth:= PossibleClassFusions( s5, th ); 793[ [ 1, 2, 4, 8, 2, 7, 11 ] ] 794gap> thfusb:= PossibleClassFusions( th, b );; 795gap> s5fusb:= Set( List( thfusb, x -> CompositionMaps( x, s5fusth[1] ) ) ); 796[ [ 1, 5, 7, 19, 5, 17, 29 ] ] 797gap> s5fusm11:= PossibleClassFusions( s5, m11 ); 798[ [ 1, 2, 3, 5, 2, 4, 6 ] ] 799gap> m11fusb:= Filtered( m11fusb, 800> map -> CompositionMaps( map, s5fusm11[1] ) = s5fusb[1] ); 801[ [ 1, 5, 7, 17, 19, 29, 45, 45, 54, 54 ] ] 802gap> CompositionMaps( ClassNames( b, "ATLAS" ), m11fusb[1] ); 803[ "1A", "2D", "3B", "4J", "5B", "6J", "8N", "8N", "11A", "11A" ] 804gap> b:= CharacterTable( "B" );; 805gap> l:= CharacterTable( "L2(11).2" );; 806gap> lfusb:= PossibleClassFusions( l, b );; 807gap> Length( lfusb ); 80816 809gap> CompositionMaps( ClassNames( b, "ATLAS" ), Parametrized( lfusb ) ); 810[ "1A", [ "2B", "2D" ], [ "3A", "3B" ], [ "5A", "5B" ], [ "5A", "5B" ], 811 [ "6C", "6H", "6I", "6J" ], "11A", [ "2C", "2D" ], 812 [ "4D", "4E", "4F", "4G", "4H", "4J" ], [ "10C", "10E", "10F" ], 813 [ "10C", "10E", "10F" ], 814 [ "12E", "12F", "12H", "12I", "12J", "12L", "12N", "12P", "12Q", "12R", 815 "12S" ], 816 [ "12E", "12F", "12H", "12I", "12J", "12L", "12N", "12P", "12Q", "12R", 817 "12S" ] ] 818gap> m:= CharacterTable( "M11" );; 819gap> u:= CharacterTable( "L2(11)" );; 820gap> ufusm:= PossibleClassFusions( u, m );; 821gap> mfusb:= GetFusionMap( m, b );; 822gap> ufusb:= Set( List( ufusm, x -> CompositionMaps( mfusb, x ) ) ); 823[ [ 1, 5, 7, 19, 19, 29, 54, 54 ] ] 824gap> ufusl:= PossibleClassFusions( u, l ); 825[ [ 1, 2, 3, 4, 5, 6, 7, 7 ], [ 1, 2, 3, 5, 4, 6, 7, 7 ] ] 826gap> lfusb:= Filtered( lfusb, 827> map2 -> ForAny( ufusl, 828> map1 -> CompositionMaps( map2, map1 ) in ufusb ) ); 829[ [ 1, 5, 7, 19, 19, 29, 54, 5, 15, 53, 53, 73, 73 ] ] 830gap> b:= CharacterTable( "B" );; 831gap> t:= CharacterTable( "L3(3)" );; 832gap> tfusb:= PossibleClassFusions( t, b );; 833gap> Length( tfusb ); 83436 835gap> m:= CharacterTable( "3^2.3^3.3^6.(S4x2S4)" );; 836gap> g:= PSL(3,3);; 837gap> mx:= MaximalSubgroupClassReps( g );; 838gap> u:= First( mx, x -> Size( x ) = 432 );; 839gap> u:= CharacterTable( u );; 840gap> ufusm:= PossibleClassFusions( u, m );; 841gap> ufust:= PossibleClassFusions( u, t );; 842gap> mfusb:= GetFusionMap( m, b );; 843gap> ufusb:= Set( List( ufusm, map -> CompositionMaps( mfusb, map ) ) );; 844gap> tfusb:= Filtered( tfusb, map -> ForAny( ufust, 845> map2 -> CompositionMaps( map, map2 ) in ufusb ) );; 846gap> tfusb; 847[ [ 1, 5, 6, 7, 12, 27, 41, 41, 75, 75, 75, 75 ], 848 [ 1, 5, 7, 6, 12, 28, 41, 41, 75, 75, 75, 75 ], 849 [ 1, 5, 7, 7, 12, 28, 41, 41, 75, 75, 75, 75 ], 850 [ 1, 5, 7, 7, 12, 29, 41, 41, 75, 75, 75, 75 ], 851 [ 1, 5, 7, 7, 17, 29, 45, 45, 75, 75, 75, 75 ] ] 852gap> ClassNames( b, "ATLAS" ){ [ 12, 17 ] }; 853[ "4E", "4J" ] 854gap> GetFusionMap( t, b ) = tfusb[5]; 855true 856gap> b:= CharacterTable( "B" );; 857gap> u:= CharacterTable( "L2(17).2" );; 858gap> ufusb:= PossibleClassFusions( u, b ); 859[ [ 1, 5, 7, 15, 42, 42, 47, 47, 47, 91, 4, 30, 89, 89, 89, 89, 97, 97, 97 ], 860 [ 1, 5, 7, 15, 44, 44, 46, 46, 46, 91, 5, 29, 90, 90, 90, 90, 96, 96, 96 ], 861 [ 1, 5, 7, 15, 44, 44, 47, 47, 47, 91, 5, 29, 90, 90, 90, 90, 95, 95, 95 ] ] 862gap> names:= ClassNames( b, "ATLAS" );; 863gap> pos:= List( [ "8M", "9A" ], x -> Position( names, x ) ); 864[ 44, 46 ] 865gap> ufusb:= Filtered( ufusb, map -> IsSubset( map, pos ) ); 866[ [ 1, 5, 7, 15, 44, 44, 46, 46, 46, 91, 5, 29, 90, 90, 90, 90, 96, 96, 96 ] ] 867gap> GetFusionMap( u, b ) = ufusb[1]; 868true 869gap> u:= CharacterTable( "L2(49).2_3" );; 870gap> b:= CharacterTable( "B" );; 871gap> ufusb:= PossibleClassFusions( u, b );; 872gap> Length( RepresentativesFusions( u, ufusb, b ) ); 8732 874gap> ufusb; 875[ [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 128, 128, 876 15, 71, 71, 89, 89, 89, 89 ], 877 [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 128, 128, 878 17, 72, 72, 89, 89, 89, 89 ] ] 879gap> g:= SL( 2, 49 );; 880gap> gens:= GeneratorsOfGroup( g );; 881gap> f:= GF(49);; 882gap> mats:= List( gens, x -> IdentityMat( 4, f ) );; 883gap> for i in [ 1 .. Length( gens ) ] do 884> mats[i]{ [ 1, 2 ] }{ [ 1, 2 ] }:= gens[i]; 885> mats[i]{ [ 3, 4 ] }{ [ 3, 4 ] }:= List( gens[i], 886> x -> List( x, y -> y^7 ) ); 887> od; 888gap> fieldaut:= PermutationMat( (1,3)(2,4), 4, f );; 889gap> diagaut:= IdentityMat( 4, f );; 890gap> diagaut[1][1]:= Z(49);; 891gap> diagaut[3][3]:= Z(49)^7;; 892gap> g:= Group( Concatenation( mats, [ fieldaut * diagaut ] ) );; 893gap> v:= [ 1, 0, 0, 0 ] * Z(7)^0;; 894gap> orb:= Orbit( g, v, OnLines );; 895gap> act:= Action( g, orb, OnLines );; 896gap> n:= Normalizer( act, SylowSubgroup( act, 7 ) );; 897gap> ntbl:= CharacterTable( n );; 898gap> bn7:= CharacterTable( "BN7" );; 899gap> nfusbn7:= PossibleClassFusions( ntbl, bn7 );; 900gap> Length( RepresentativesFusions( ntbl, nfusbn7, bn7 ) ); 9013 902gap> nfusb:= SetOfComposedClassFusions( PossibleClassFusions( bn7, b ), 903> nfusbn7 );; 904gap> Length( RepresentativesFusions( ntbl, nfusb, b ) ); 9055 906gap> nfusu:= PossibleClassFusions( ntbl, u );; 907gap> Length( nfusu ); 9084 909gap> filt:= Filtered( ufusb, 910> x -> ForAny( nfusu, y -> CompositionMaps( x, y ) in nfusb ) ); 911[ [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 128, 128, 912 17, 72, 72, 89, 89, 89, 89 ] ] 913gap> ClassNames( b, "ATLAS" ){ filt[1] }; 914[ "1A", "2D", "3B", "4H", "5B", "6I", "7A", "8K", "8K", "12Q", "24L", "24L", 915 "25A", "25A", "25A", "25A", "25A", "4J", "12R", "12R", "16G", "16G", "16G", 916 "16G" ] 917gap> GetFusionMap( u, b ) in filt; 918true 919gap> NrConjugacyClasses( u ); NrConjugacyClasses( act ); 92024 92124 922gap> u:= CharacterTable( "L2(49).2_1" );; 923gap> g:= Group( Concatenation( mats, [ diagaut ] ) );; 924gap> orb:= Orbit( g, v, OnLines );; 925gap> act:= Action( g, orb, OnLines );; 926gap> Size(act ); 927117600 928gap> NrConjugacyClasses( u ); NrConjugacyClasses( act ); 92951 93051 931gap> u:= CharacterTable( "L2(49).2_2" );; 932gap> g:= Group( Concatenation( mats, [ fieldaut ] ) );; 933gap> orb:= Orbit( g, v, OnLines );; 934gap> act:= Action( g, orb, OnLines );; 935gap> NrConjugacyClasses( u ); NrConjugacyClasses( act ); 93627 93727 938gap> PossibleClassFusions( CharacterTable( "L2(49).2_1" ), b ); 939[ ] 940gap> n:= Normalizer( act, SylowSubgroup( act, 7 ) );; 941gap> Length( PossibleClassFusions( CharacterTable( n ), bn7 ) ); 9420 943gap> t:= CharacterTable( "G2(5)" );; 944gap> s:= CharacterTable( "2^3.L3(2)" );; 945gap> sfust:= PossibleClassFusions( s, t );; 946gap> RepresentativesFusions( s, sfust, t ); 947[ [ 1, 2, 2, 5, 6, 4, 13, 16, 17, 15, 15 ], 948 [ 1, 2, 2, 5, 6, 4, 14, 16, 17, 15, 15 ] ] 949gap> OrdersClassRepresentatives( s ); 950[ 1, 2, 2, 4, 4, 3, 6, 8, 8, 7, 7 ] 951gap> g:= AtlasGroup( "G2(5)" );; 952gap> u:= AtlasSubgroup( "G2(5)", 7 );; 953gap> Size( u ); 9541344 955gap> repeat 956> x:= Random( u ); 957> until Order( x ) = 6; 958gap> siz:= Size( Centralizer( g, x ) ); 95936 960gap> Filtered( [ 1 .. NrConjugacyClasses( t ) ], 961> i -> SizesCentralizers( t )[i] = siz ); 962[ 14 ] 963gap> GetFusionMap( s, t ) in Filtered( sfust, map -> 14 in map ); 964true 965gap> b:= CharacterTable( "B" );; 966gap> m:= CharacterTable( "5^(1+4).2^(1+4).A5.4" );; 967gap> mfusb:= PossibleClassFusions( m, b );; 968gap> Length( mfusb ); 9694 970gap> repres:= RepresentativesFusions( m, mfusb, b );; 971gap> Length( repres ); 9722 973gap> char:= Filtered( Irr( b ), x -> x[1] = 4371 );; 974gap> Length( char ); 9751 976gap> rest:= List( repres, map -> char[1]{ map } );; 977gap> scprs:= MatScalarProducts( m, Irr( m ), rest );; 978gap> constit:= List( scprs, 979> x -> Filtered( [1 .. Length(x) ], i -> x[i] <> 0 ) ); 980[ [ 2, 27, 60, 63, 73, 74, 75, 79, 82 ], 981 [ 2, 27, 60, 63, 70, 72, 75, 79, 84 ] ] 982gap> List( constit, x -> List( Irr( m ){ x }, Degree ) ); 983[ [ 1, 6, 384, 480, 400, 400, 500, 1000, 1200 ], 984 [ 1, 6, 384, 480, 100, 300, 500, 1000, 1600 ] ] 985gap> g:= AtlasSubgroup( "B", Dimension, 4371, Ring, GF(3), 21 );; 986gap> module:= GModuleByMats( GeneratorsOfGroup( g ), GF(3) );; 987gap> dec:= MTX.CompositionFactors( module );; 988gap> SortedList( List( dec, x -> x.dimension ) ); 989[ 1, 6, 100, 384, 400, 400, 400, 480, 1000, 1200 ] 990gap> tbl:= CharacterTable( "7^2:2psl(2,7)" ); 991CharacterTable( "7^2:2psl(2,7)" ) 992gap> tom:= TableOfMarks( tbl ); 993TableOfMarks( "7^2:2L2(7)" ) 994gap> fus:= PossibleFusionsCharTableTom( tbl, tom ); 995[ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 10, 9, 16, 7, 10, 9, 8, 16 ], 996 [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 9, 8, 10, 16, 7, 8, 10, 9, 16 ], 997 [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 10, 9, 8, 16, 7, 9, 8, 10, 16 ], 998 [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ], 999 [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 10, 8, 9, 16, 7, 8, 9, 10, 16 ], 1000 [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 9, 10, 8, 16, 7, 10, 8, 9, 16 ] ] 1001gap> reps:= RepresentativesFusions( tbl, fus, Group(()) ); 1002[ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ], 1003 [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 10, 9, 16, 7, 10, 9, 8, 16 ] ] 1004gap> AutomorphismsOfTable( tbl ); 1005Group([ (9,14)(10,17)(11,15)(12,16)(13,18), (7,8), (10,11,12)(15,16,17) ]) 1006gap> OrdersClassRepresentatives( tbl ); 1007[ 1, 7, 2, 4, 3, 6, 8, 8, 7, 7, 7, 7, 14, 7, 7, 7, 7, 14 ] 1008gap> perms1:= PermCharsTom( reps[1], tom );; 1009gap> perms2:= PermCharsTom( reps[2], tom );; 1010gap> perms1 = perms2; 1011false 1012gap> Set( perms1 ) = Set( perms2 ); 1013true 1014gap> Display( tbl ); 10157^2:2psl(2,7) 1016 1017 2 4 . 4 3 1 1 3 3 1 . . . 1 1 . . . 1 1018 3 1 . 1 . 1 1 . . . . . . . . . . . . 1019 7 3 3 1 . . . . . 2 2 2 2 1 2 2 2 2 1 1020 1021 1a 7a 2a 4a 3a 6a 8a 8b 7b 7c 7d 7e 14a 7f 7g 7h 7i 14b 1022 2P 1a 7a 1a 2a 3a 3a 4a 4a 7b 7c 7d 7e 7b 7f 7g 7h 7i 7f 1023 3P 1a 7a 2a 4a 1a 2a 8b 8a 7f 7i 7g 7h 14b 7b 7d 7e 7c 14a 1024 5P 1a 7a 2a 4a 3a 6a 8b 8a 7f 7i 7g 7h 14b 7b 7d 7e 7c 14a 1025 7P 1a 1a 2a 4a 3a 6a 8a 8b 1a 1a 1a 1a 2a 1a 1a 1a 1a 2a 1026 11P 1a 7a 2a 4a 3a 6a 8b 8a 7b 7c 7d 7e 14a 7f 7g 7h 7i 14b 1027 13P 1a 7a 2a 4a 3a 6a 8b 8a 7f 7i 7g 7h 14b 7b 7d 7e 7c 14a 1028 1029X.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1030X.2 3 3 3 -1 . . 1 1 B B B B B /B /B /B /B /B 1031X.3 3 3 3 -1 . . 1 1 /B /B /B /B /B B B B B B 1032X.4 6 6 6 2 . . . . -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1033X.5 7 7 7 -1 1 1 -1 -1 . . . . . . . . . . 1034X.6 8 8 8 . -1 -1 . . 1 1 1 1 1 1 1 1 1 1 1035X.7 4 4 -4 . 1 -1 . . -B -B -B -B B -/B -/B -/B -/B /B 1036X.8 4 4 -4 . 1 -1 . . -/B -/B -/B -/B /B -B -B -B -B B 1037X.9 6 6 -6 . . . A -A -1 -1 -1 -1 1 -1 -1 -1 -1 1 1038X.10 6 6 -6 . . . -A A -1 -1 -1 -1 1 -1 -1 -1 -1 1 1039X.11 8 8 -8 . -1 1 . . 1 1 1 1 -1 1 1 1 1 -1 1040X.12 48 -1 . . . . . . 6 -1 -1 -1 . 6 -1 -1 -1 . 1041X.13 48 -1 . . . . . . C -1 /C /D . /C C D -1 . 1042X.14 48 -1 . . . . . . C /C /D -1 . /C D -1 C . 1043X.15 48 -1 . . . . . . /C D -1 C . C -1 /C /D . 1044X.16 48 -1 . . . . . . C /D -1 /C . /C -1 C D . 1045X.17 48 -1 . . . . . . /C C D -1 . C /D -1 /C . 1046X.18 48 -1 . . . . . . /C -1 C D . C /C /D -1 . 1047 1048A = E(8)-E(8)^3 1049 = Sqrt(2) = r2 1050B = E(7)+E(7)^2+E(7)^4 1051 = (-1+Sqrt(-7))/2 = b7 1052C = 2*E(7)+2*E(7)^2+2*E(7)^4 1053 = -1+Sqrt(-7) = 2b7 1054D = -3*E(7)-3*E(7)^2-2*E(7)^3-3*E(7)^4-2*E(7)^5-2*E(7)^6 1055 = (5-Sqrt(-7))/2 = 2-b7 1056gap> mat:= MatTom( tom );; 1057gap> mataut:= MatrixAutomorphisms( mat );; 1058gap> Print( mataut, "\n" ); 1059Group( [ (11,12)(23,24)(27,28)(46,47)(53,54)(56,57), 1060 ( 9,10)(20,21)(31,32)(38,39), ( 8, 9)(20,22)(31,33)(38,40) ] ) 1061gap> RepresentativesFusions( Group( () ), reps, mataut ); 1062[ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ] ] 1063gap> g:= UnderlyingGroup( tom );; 1064gap> tg:= CharacterTable( g );; 1065gap> tgfustom:= FusionCharTableTom( tg, tom );; 1066gap> trans:= TransformingPermutationsCharacterTables( tg, tbl );; 1067gap> tblfustom:= Permuted( tgfustom, trans.columns );; 1068gap> orbits:= List( reps, map -> OrbitFusions( AutomorphismsOfTable( tbl ), 1069> map, Group( () ) ) );; 1070gap> PositionProperty( orbits, orb -> tblfustom in orb ); 10712 1072gap> PositionProperty( orbits, orb -> FusionToTom( tbl ).map in orb ); 10732 1074gap> u42:= CharacterTable( "U4(2)" );; 1075gap> u43:= CharacterTable( "U4(3)" );; 1076gap> u42fusu43:= PossibleClassFusions( u42, u43 );; 1077gap> Length( u42fusu43 ); 10784 1079gap> Length( RepresentativesFusions( u42, u42fusu43, u43 ) ); 10801 1081gap> u43_21:= CharacterTable( "U4(3).2_1" );; 1082gap> fus1:= GetFusionMap( u43, u43_21 ); 1083[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 17, 18 ] 1084gap> act1:= Filtered( InverseMap( fus1 ), IsList ); 1085[ [ 16, 17 ], [ 18, 19 ] ] 1086gap> CompositionMaps( ClassNames( u43, "Atlas" ), act1 ); 1087[ [ "9A", "9B" ], [ "9C", "9D" ] ] 1088gap> u43_23:= CharacterTable( "U4(3).2_3" );; 1089gap> fus3:= GetFusionMap( u43, u43_23 ); 1090[ 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 10, 11, 11, 12, 13, 14, 13, 14, 15 ] 1091gap> act3:= Filtered( InverseMap( fus3 ), IsList ); 1092[ [ 4, 5 ], [ 11, 12 ], [ 13, 14 ], [ 16, 18 ], [ 17, 19 ] ] 1093gap> CompositionMaps( ClassNames( u43, "Atlas" ), act3 ); 1094[ [ "3B", "3C" ], [ "6B", "6C" ], [ "7A", "7B" ], [ "9A", "9C" ], 1095 [ "9B", "9D" ] ] 1096gap> firstfus:= First( u42fusu43, x -> IsSubset( x, [ 16, 17 ] ) ); 1097[ 1, 2, 2, 3, 3, 5, 4, 7, 8, 9, 10, 10, 12, 12, 11, 12, 16, 17, 20, 20 ] 1098gap> secondfus:= First( u42fusu43, x -> IsSubset( x, [ 18, 19 ] ) ); 1099[ 1, 2, 2, 3, 3, 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 11, 18, 19, 20, 20 ] 1100gap> 3u42:= CharacterTable( "Cyclic", 3 ) * u42; 1101CharacterTable( "C3xU4(2)" ) 1102gap> 3u43:= CharacterTable( "3_1.U4(3)" ); 1103CharacterTable( "3_1.U4(3)" ) 1104gap> 3u42fus3u43:= PossibleClassFusions( 3u42, 3u43 );; 1105gap> Length( 3u42fus3u43 ); 11068 1107gap> Length( RepresentativesFusions( 3u42, 3u42fus3u43, 3u43 ) ); 11082 1109gap> inducedmaps:= List( 3u42fus3u43, map -> CompositionMaps( 1110> GetFusionMap( 3u43, u43 ), CompositionMaps( map, 1111> InverseMap( GetFusionMap( 3u42, u42 ) ) ) ) );; 1112gap> List( inducedmaps, map -> Position( u42fusu43, map ) ); 1113[ 1, 1, 2, 2, 4, 4, 3, 3 ] 1114gap> rep:= RepresentativesFusions( 3u42, 3u42fus3u43, 3u43 ); 1115[ [ 1, 4, 4, 7, 7, 10, 13, 15, 18, 21, 24, 24, 27, 27, 30, 27, 48, 49, 50, 1116 50, 2, 5, 5, 8, 8, 11, 13, 16, 19, 22, 25, 25, 28, 28, 31, 28, 48, 49, 1117 51, 51, 3, 6, 6, 9, 9, 12, 13, 17, 20, 23, 26, 26, 29, 29, 32, 29, 48, 1118 49, 52, 52 ], 1119 [ 1, 4, 4, 8, 9, 13, 10, 15, 18, 21, 25, 26, 31, 32, 27, 30, 46, 44, 51, 1120 52, 2, 5, 5, 9, 7, 13, 11, 16, 19, 22, 26, 24, 32, 30, 28, 31, 47, 42, 1121 52, 50, 3, 6, 6, 7, 8, 13, 12, 17, 20, 23, 24, 25, 30, 31, 29, 32, 45, 1122 43, 50, 51 ] ] 1123gap> irr:= Irr( 3u42 );; 1124gap> ind:= InducedClassFunctionsByFusionMap( 3u42, 3u43, irr, rep[1] );; 1125gap> Intersection( ind, Irr( 3u43 ) ); 1126[ Character( CharacterTable( "3_1.U4(3)" ), [ 630, 630*E(3)^2, 630*E(3), 6, 1127 6*E(3)^2, 6*E(3), 9, 9*E(3)^2, 9*E(3), -9, -9*E(3)^2, -9*E(3), 0, 0, 2, 1128 2*E(3)^2, 2*E(3), -2, -2*E(3)^2, -2*E(3), 0, 0, 0, -3, -3*E(3)^2, 1129 -3*E(3), 3, 3*E(3)^2, 3*E(3), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1130 0, 0, 0, 0, 0, 0, -1, -E(3)^2, -E(3) ] ), 1131 Character( CharacterTable( "3_1.U4(3)" ), [ 630, 630*E(3), 630*E(3)^2, 6, 1132 6*E(3), 6*E(3)^2, 9, 9*E(3), 9*E(3)^2, -9, -9*E(3), -9*E(3)^2, 0, 0, 2, 1133 2*E(3), 2*E(3)^2, -2, -2*E(3), -2*E(3)^2, 0, 0, 0, -3, -3*E(3), 1134 -3*E(3)^2, 3, 3*E(3), 3*E(3)^2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1135 0, 0, 0, 0, 0, 0, 0, -1, -E(3), -E(3)^2 ] ) ] 1136gap> ind:= InducedClassFunctionsByFusionMap( 3u42, 3u43, irr, rep[2] );; 1137gap> Intersection( ind, Irr( 3u43 ) ); 1138[ ] 1139gap> 2a12:= CharacterTable( "2.A12" );; 1140gap> mtbl:= CharacterTable( "2.3^4.2^3.S4" );; 1141gap> mtblfus2a12:= PossibleClassFusions( mtbl, 2a12 );; 1142gap> Length( mtblfus2a12 ); 114332 1144gap> repres:= RepresentativesFusions( mtbl, mtblfus2a12, 2a12 );; 1145gap> Length( repres ); 11462 1147gap> g:= AtlasGroup( "A12" ); 1148Group([ (1,2,3), (2,3,4,5,6,7,8,9,10,11,12) ]) 1149gap> 2g:= AtlasGroup( "2.A12" ); 1150<matrix group of size 479001600 with 2 generators> 1151gap> f:= FreeGroup( 2 );; 1152gap> pi1:= GroupHomomorphismByImagesNC( f, 2g, GeneratorsOfGroup( f ), 1153> GeneratorsOfGroup( 2g ) );; 1154gap> pi2:= GroupHomomorphismByImagesNC( f, g, GeneratorsOfGroup( f ), 1155> GeneratorsOfGroup( g ) );; 1156gap> w:= WreathProduct( SymmetricGroup( 3 ), SymmetricGroup(4) ); 1157<permutation group of size 31104 with 10 generators> 1158gap> NrMovedPoints( w ); 115912 1160gap> s:= Intersection( w, g ); Size( s ); 1161<permutation group with 8 generators> 116215552 1163gap> m:= SubgroupNC( 2g, List( SmallGeneratingSet( s ), 1164> x -> ImagesRepresentative( pi1, 1165> PreImagesRepresentative( pi2, x ) ) ) );; 1166gap> iso:= IsomorphismPermGroup( m );; 1167gap> t:= CharacterTable( Image( iso ) );; 1168gap> Size( t ); 116931104 1170gap> trans:= TransformingPermutationsCharacterTables( mtbl, t );; 1171gap> IsRecord( trans ); 1172true 1173gap> para:= Parametrized( repres ); 1174[ 1, 2, 6, 10, 8, 12, 7, 11, 9, 13, 5, 5, 17, 17, 17, 17, 3, 4, 24, 22, 27, 1175 25, 12, 10, 13, 11, 28, 29, 35, 37, 39, 36, 38, 40, 5, 23, 28, 29, 26, 14, 1176 14, 16, 16, 33, 34, [ 33, 34 ], [ 33, 34 ], 49, 49, 48, 48 ] 1177gap> PositionsProperty( para, IsList ); 1178[ 46, 47 ] 1179gap> List( repres, map -> map{ [ 44 .. 47 ] } ); 1180[ [ 33, 34, 33, 34 ], [ 33, 34, 34, 33 ] ] 1181gap> positions:= OnTuples( [ 44 .. 47 ], trans.columns );; 1182gap> classreps:= List( ConjugacyClasses( t ){ positions }, 1183> c -> PreImagesRepresentative( iso, Representative( c ) ) );; 1184gap> List( classreps, TraceMat ); 1185[ Z(3)^0, Z(3), Z(3), Z(3)^0 ] 1186gap> good:= First( repres, 1187> map -> map{ [ 44 .. 47 ] } = [ 33, 34, 34, 33 ] );; 1188gap> GetFusionMap( mtbl, 2a12 ) = good; 1189true 1190gap> t:= CharacterTable( "L7(2)" );; 1191gap> s:= CharacterTable( "127:7" );; 1192gap> fus:= PossibleClassFusions( s, t );; 1193gap> repr:= RepresentativesFusions( s, fus, t ); 1194[ [ 1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 1195 114, 115, 117, 116, 76, 76, 77, 76, 77, 77 ], 1196 [ 1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 1197 114, 115, 117, 116, 83, 83, 83, 83, 83, 83 ] ] 1198gap> diff:= Filtered( [ 1 .. Length( repr[1] ) ], 1199> i -> repr[1][i] <> repr[2][i] ); 1200[ 20, 21, 22, 23, 24, 25 ] 1201gap> OrdersClassRepresentatives( s ){ diff }; 1202[ 7, 7, 7, 7, 7, 7 ] 1203gap> List( repr, l -> l{ diff } ); 1204[ [ 76, 76, 77, 76, 77, 77 ], [ 83, 83, 83, 83, 83, 83 ] ] 1205gap> SizesCentralizers( t ){ [ 76, 77, 83 ] }; 1206[ 3528, 3528, 49 ] 1207gap> g:= Image( IsomorphismPermGroup( GL(7,2) ) );; 1208gap> repeat x:= Random( g ); until Order(x) = 127; 1209gap> n:= Normalizer( g, SubgroupNC( g, [ x ] ) );; 1210gap> Size( n ) / 127; 12117 1212gap> repeat x:= Random( n ); until Order( x ) = 7; 1213gap> c:= Centralizer( g, x );; 1214gap> Size( c ); 121549 1216gap> GetFusionMap( s, t ) = repr[2]; 1217true 1218gap> t:= CharacterTable( "M" );; 1219gap> s:= CharacterTable( "L2(59)" );; 1220gap> fus:= PossibleClassFusions( s, t );; 1221gap> repr:= RepresentativesFusions( s, fus, t ); 1222[ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 1223 52, 32, 52, 14, 12, 98, 52, 32, 5, 98, 12, 98, 52, 3 ], 1224 [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 100, 1225 50, 30, 50, 15, 11, 100, 50, 30, 4, 100, 11, 100, 50, 3 ], 1226 [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 101, 1227 51, 30, 51, 14, 11, 101, 51, 30, 5, 101, 11, 101, 51, 3 ], 1228 [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 102, 1229 53, 32, 53, 18, 12, 102, 53, 32, 6, 102, 12, 102, 53, 3 ], 1230 [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104, 1231 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ] ] 1232gap> ord:= OrdersClassRepresentatives( s );; 1233gap> ord30:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 30 ); 1234[ 18, 24, 28, 30 ] 1235gap> List( repr, x -> x{ ord30 } ); 1236[ [ 98, 98, 98, 98 ], [ 100, 100, 100, 100 ], [ 101, 101, 101, 101 ], 1237 [ 102, 102, 102, 102 ], [ 104, 104, 104, 104 ] ] 1238gap> pos:= Position( ClassNames( t, "Atlas" ), "30G" );; 1239gap> good:= Filtered( fus, map -> pos in map ); 1240[ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104, 1241 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ], 1242 [ 1, 153, 152, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104, 1243 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ] ] 1244gap> repr:= RepresentativesFusions( s, good, t ); 1245[ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104, 1246 52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ] ] 1247gap> GetFusionMap( s, t ) = repr[1]; 1248true 1249gap> t:= CharacterTable( "M" );; 1250gap> s:= CharacterTable( "L2(71)" );; 1251gap> fus:= PossibleClassFusions( s, t );; 1252gap> repr:= RepresentativesFusions( s, fus, t ); 1253[ [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 112, 1254 112, 11, 19, 112, 112, 114, 60, 36, 27, 114, 17, 114, 27, 7, 60, 114, 1255 5, 114, 60, 36, 27, 114, 3 ], 1256 [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 112, 1257 112, 11, 19, 112, 112, 115, 61, 36, 28, 115, 17, 115, 28, 7, 61, 115, 1258 5, 115, 61, 36, 28, 115, 3 ], 1259 [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 112, 1260 112, 11, 19, 112, 112, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117, 1261 5, 117, 61, 43, 28, 117, 3 ], 1262 [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113, 1263 113, 12, 20, 113, 113, 114, 60, 36, 27, 114, 17, 114, 27, 7, 60, 114, 1264 5, 114, 60, 36, 27, 114, 3 ], 1265 [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113, 1266 113, 12, 20, 113, 113, 115, 61, 36, 28, 115, 17, 115, 28, 7, 61, 115, 1267 5, 115, 61, 36, 28, 115, 3 ], 1268 [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113, 1269 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117, 1270 5, 117, 61, 43, 28, 117, 3 ] ] 1271gap> ord:= OrdersClassRepresentatives( s );; 1272gap> ord36:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 36 ); 1273[ 21, 25, 27, 31, 33, 37 ] 1274gap> List( repr, x -> x{ ord36 } ); 1275[ [ 114, 114, 114, 114, 114, 114 ], [ 115, 115, 115, 115, 115, 115 ], 1276 [ 117, 117, 117, 117, 117, 117 ], [ 114, 114, 114, 114, 114, 114 ], 1277 [ 115, 115, 115, 115, 115, 115 ], [ 117, 117, 117, 117, 117, 117 ] ] 1278gap> pos1:= Position( ClassNames( t, "Atlas" ), "7B" );; 1279gap> pos2:= Position( ClassNames( t, "Atlas" ), "36D" );; 1280gap> pos:= [ pos1, pos2 ];; 1281gap> good:= Filtered( fus, map -> IsSubset( map, pos ) ); 1282[ [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113, 1283 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117, 1284 5, 117, 61, 43, 28, 117, 3 ], 1285 [ 1, 170, 169, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113, 1286 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117, 1287 5, 117, 61, 43, 28, 117, 3 ] ] 1288gap> repr:= RepresentativesFusions( s, good, t ); 1289[ [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113, 1290 113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117, 1291 5, 117, 61, 43, 28, 117, 3 ] ] 1292gap> GetFusionMap( s, t ) = repr[1]; 1293true 1294gap> t:= CharacterTable( "M" );; 1295gap> s:= CharacterTable( "L2(41)" );; 1296gap> fus:= PossibleClassFusions( s, t );; 1297gap> repr:= RepresentativesFusions( s, fus, t ); 1298[ [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 70, 70, 19, 70, 70, 1299 19, 4, 70, 19, 70 ], 1300 [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 72, 72, 19, 72, 72, 1301 19, 6, 72, 19, 72 ], 1302 [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 73, 73, 20, 73, 73, 1303 20, 5, 73, 20, 73 ], 1304 [ 1, 127, 127, 66, 33, 66, 12, 7, 33, 66, 12, 66, 3, 72, 72, 19, 72, 72, 1305 19, 6, 72, 19, 72 ], 1306 [ 1, 127, 127, 66, 33, 66, 12, 7, 33, 66, 12, 66, 3, 73, 73, 20, 73, 73, 1307 20, 5, 73, 20, 73 ], 1308 [ 1, 127, 127, 67, 30, 67, 11, 10, 30, 67, 11, 67, 3, 72, 72, 19, 72, 72, 1309 19, 6, 72, 19, 72 ], 1310 [ 1, 127, 127, 67, 30, 67, 11, 10, 30, 67, 11, 67, 3, 73, 73, 20, 73, 73, 1311 20, 5, 73, 20, 73 ], 1312 [ 1, 127, 127, 68, 32, 68, 12, 10, 32, 68, 12, 68, 3, 72, 72, 19, 72, 72, 1313 19, 6, 72, 19, 72 ], 1314 [ 1, 127, 127, 68, 32, 68, 12, 10, 32, 68, 12, 68, 3, 73, 73, 20, 73, 73, 1315 20, 5, 73, 20, 73 ], 1316 [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 72, 72, 19, 72, 72, 1317 19, 6, 72, 19, 72 ], 1318 [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 73, 73, 20, 73, 73, 1319 20, 5, 73, 20, 73 ] ] 1320gap> ambig:= Parametrized( repr );; 1321gap> ambigpos:= PositionsProperty( ambig, IsList ); 1322[ 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ] 1323gap> Set( OrdersClassRepresentatives( t ){ ambigpos } ); 1324[ 3, 4, 5, 6, 7, 8 ] 1325gap> pos1:= Position( ClassNames( t, "Atlas" ), "3B" );; 1326gap> pos2:= Position( ClassNames( t, "Atlas" ), "4C" );; 1327gap> pos:= [ pos1, pos2 ];; 1328gap> good:= Filtered( fus, map -> IsSubset( map, pos ) ); 1329[ [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 73, 73, 20, 73, 73, 1330 20, 5, 73, 20, 73 ] ] 1331gap> GetFusionMap( s, t ) = good[1]; 1332true 1333 1334gap> STOP_TEST( "ambigfus.tst", 6129230950 ); 1335 1336############################################################################# 1337## 1338#E 1339 1340