# Ambiguous Class Fusions in the GAP Character Table Library

### THOMAS BREUER
Lehrstuhl D für Mathematik
RWTH, 52056 Aachen, Germany

### January 11th, 2004

This is a collection of examples showing how class fusions between character tables can be determined using the GAP system [GAP04]. In each of these examples, the fusion is ambiguous in the sense that the character tables do not determine it up to table automorphisms. Our strategy is to compute first all possibilities with the GAP function `PossibleClassFusions`, and then to use either other character tables or information about the groups for excluding some of these candidates until only one (orbit under table automorphisms) remains.
The purpose of this writeup is twofold. On the one hand, the computations are documented this way. On the other hand, the GAP code shown for the examples can be used as test input for automatic checking of the data and the functions used; therefore, each example ends with a comparison of the result with the fusion that is actually stored in the GAP Character Table Library [Bre12].

# Contents

1 Some GAP Utilities
2 Fusions Determined by Factorization through Intermediate Subgroups
2.1 Co3N5 → Co3 (September 2002)
2.2 31:15 → B (March 2003)
2.3 SuzN3 → Suz (September 2002)
2.4 F3+N5 → F3+ (March 2002)
3 Fusions Determined Using Commutative Diagrams Involving Smaller Subgroups
3.1 BN7 → B (March 2002)
3.2 (A4 ×O8+(2).3).2 → Fi24′ (November 2002)
3.3 A6 ×L2(8).3 → Fi24′ (November 2002)
3.4 (32:D8 ×U4(3).22).2 → B (June 2007)
3.5 71+4:(3 ×2.S7) → M (May 2009)
3.6 37.O7(3):2 → Fi24 (November 2010)
4 Fusions Determined Using Commutative Diagrams Involving Factor Groups
4.1 3.A7 → 3.Suz (December 2010)
4.2 S6 → U4(2) (September 2011)
5 Fusions Determined Using Commutative Diagrams Involving Automorphic Extensions
5.1 U3(8).31 → 2E6(2) (December 2010)
5.2 L3(4).21 → U6(2) (December 2010)
6 Conditions Imposed by Brauer Tables
6.1 L2(16).4 → J3.2 (January 2004)
6.2 L2(17) → S8(2) (July 2004)
6.3 L2(19) → J3 (April 2003)
7 Fusions Determined by Information about the Groups
7.1 U3(3).2 → Fi24′ (November 2002)
7.2 L2(13).2 → Fi24′ (September 2002)
7.3 M11 → B (April 2009)
7.4 L2(11):2 → B (April 2009)
7.5 L3(3) → B (April 2009)
7.6 L2(17).2 → B (March 2004)
7.7 L2(49).23 → B (June 2006)
7.8 23.L3(2) → G2(5) (January 2004)
7.9 51+4.21+4.A5.4 → B (April 2009)
7.10 The fusion from the character table of 72:2L2(7).2 into the table of marks (January 2004)
7.11 3 ×U4(2) → 31.U4(3) (March 2010)
7.12 2.34.23.S4 → 2.A12 (September 2011)
7.13 127:7 → L7(2) (January 2012)
7.14 L2(59) → M (May 2009)
7.15 L2(71) → M (May 2009)
7.16 L2(41) → M (April 2012)
The examples use the GAP Character Table Library, so we first load this package.

        gap> LoadPackage( "ctbllib" );
        true

## 1 Some GAP Utilities

The function `SetOfComposedClassFusions` takes two list of class fusions, where the first list consists of fusions between the character tables of the groups H and G, say, and the second list consists of class fusions between the character tables of the groups U and H, say; the return value is the set of compositions of each map in the first list with each map in the second list (via `CompositionMaps`).
Note that the returned list may be a proper subset of the set of all possible class fusions between U and G, which can be computed with `PossibleClassFusions`.

        gap> SetOfComposedClassFusions:= function( hfusg, ufush )
        >     local result, map1, map2;
        >     result:= [];;
        >     for map2 in hfusg do
        >       for map1 in ufush do
        >         AddSet( result, CompositionMaps( map2, map1 ) );
        >       od;
        >     od;
        >     return result;
        > end;;

## 2 Fusions Determined by Factorization through Intermediate Subgroups

This situation clearly occurs only for nonmaximal subgroups. Interesting examples are Sylow normalizers.

### 2.1 Co3N5 → Co3 (September 2002)

Let H be the Sylow 5 normalizer in the sporadic simple group Co3. The class fusion of H into Co3 is not uniquely determined by the character tables of the two groups.

        gap> co3:= CharacterTable( "Co3" );
        CharacterTable( "Co3" )
        gap> h:= CharacterTable( "Co3N5" );
        CharacterTable( "5^(1+2):(24:2)" )
        gap> hfusco3:= PossibleClassFusions( h, co3 );;
        gap> Length( RepresentativesFusions( h, hfusco3, co3 ) );
        2

As H is not maximal in Co3, we look at those maximal subgroups of Co3 whose order is divisible by that of H.

        gap> mx:= Maxes( co3 );
        [ "McL.2", "HS", "U4(3).(2^2)_{133}", "M23", "3^5:(2xm11)", "2.S6(2)",
          "U3(5).3.2", "3^1+4:4s6", "2^4.a8", "L3(4).D12", "2xm12",
          "2^2.(2^7.3^2).s3", "s3xpsl(2,8).3", "a4xs5" ]
        gap> maxes:= List( mx, CharacterTable );;
        gap> filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 );
        [ CharacterTable( "McL.2" ), CharacterTable( "HS" ),
          CharacterTable( "U3(5).3.2" ) ]

According to the ATLAS (see [CCN+85,pp. 34 and 100]), H occurs as the Sylow 5 normalizer in U3(5).3.2 and in McL.2; however, H is not a subgroup of HS, since otherwise H would be contained in subgroups of type U3(5).2 (see [CCN+85,p. 80]), but the only possible subgroups in these groups are too small (see [CCN+85,p. 34]).
We compute the possible class fusions from H into McL.2 and from McL.2 to Co3, and then form the compositions of these maps.

        gap> max:= filt[1];;
        gap> hfusmax:= PossibleClassFusions( h, max );;
        gap> maxfusco3:= PossibleClassFusions( max, co3 );;
        gap> comp:= SetOfComposedClassFusions( maxfusco3, hfusmax );;
        gap> Length( comp );
        2
        gap> reps:= RepresentativesFusions( h, comp, co3 );
        [ [ 1, 2, 3, 4, 8, 8, 7, 9, 10, 11, 17, 17, 19, 19, 22, 23, 27, 27, 30, 33,
              34, 40, 40, 40, 40, 42 ] ]

So factoring through a maximal subgroup of type McL.2 determines the fusion from H to Co3 uniquely up to table automorphisms.
Alternatively, we can use the group U3(5).3.2 as intermediate subgroup, which leads to the same result.

        gap> max:= filt[3];;
        gap> hfusmax:= PossibleClassFusions( h, max );;
        gap> maxfusco3:= PossibleClassFusions( max, co3 );;
        gap> comp:= SetOfComposedClassFusions( maxfusco3, hfusmax );;
        gap> reps2:= RepresentativesFusions( h, comp, co3 );;
        gap> reps2 = reps;
        true

Finally, we compare the result with the map that is stored on the library table of H.

        gap> GetFusionMap( h, co3 ) in reps;
        true

### 2.2 31:15 → B (March 2003)

The Sylow 31 normalizer H in the sporadic simple group B has the structure 31:15.

        gap> b:= CharacterTable( "B" );;
        gap> h:= CharacterTable( "31:15" );;
        gap> hfusb:= PossibleClassFusions( h, b );;
        gap> Length( RepresentativesFusions( h, hfusb, b ) );
        2

We determine the correct fusion using the fact that H is contained in a (maximal) subgroup of type Th in B.

        gap> th:= CharacterTable( "Th" );;
        gap> hfusth:= PossibleClassFusions( h, th );;
        gap> thfusb:= PossibleClassFusions( th, b );;
        gap> comp:= SetOfComposedClassFusions( thfusb, hfusth );;
        gap> Length( comp );
        2
        gap> reps:= RepresentativesFusions( h, comp, b );
        [ [ 1, 145, 146, 82, 82, 19, 82, 7, 19, 82, 82, 19, 7, 82, 19, 82, 82 ] ]
        gap> GetFusionMap( h, b ) in reps;
        true

### 2.3 SuzN3 → Suz (September 2002)

The class fusion from the Sylow 3 normalizer into the sporadic simple group Suz is not uniquely determined by the character tables of these groups.

        gap> h:= CharacterTable( "SuzN3" );
        CharacterTable( "3^5:(3^2:SD16)" )
        gap> suz:= CharacterTable( "Suz" );
        CharacterTable( "Suz" )
        gap> hfussuz:= PossibleClassFusions( h, suz );;
        gap> Length( RepresentativesFusions( h, hfussuz, suz ) );
        2

Since H is not maximal in Suz, we try to factorize the fusion through a suitable maximal subgroup.

        gap> maxes:= List( Maxes( suz ), CharacterTable );;
        gap> filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 );
        [ CharacterTable( "3_2.U4(3).2_3'" ), CharacterTable( "3^5:M11" ),
          CharacterTable( "3^2+4:2(2^2xa4)2" ) ]

The group 32.U4(3).23′ does not admit a fusion from H.

        gap> PossibleClassFusions( h, filt[1] );
        [  ]

Definitely 35:M11 contains a group isomorphic with H, because the Sylow 3 normalizer in M11 has the structure 32:SD16; using 32+4:2(22 ×A4)2 would lead to the same result as we get below. We compute the compositions of possible class fusions.

        gap> max:= filt[2];;
        gap> hfusmax:= PossibleClassFusions( h, max );;
        gap> maxfussuz:= PossibleClassFusions( max, suz );;
        gap> comp:= SetOfComposedClassFusions( maxfussuz, hfusmax );;
        gap> repr:= RepresentativesFusions( h, comp, suz );
        [ [ 1, 2, 2, 4, 5, 4, 5, 5, 5, 5, 5, 6, 9, 9, 14, 15, 13, 16, 16, 14, 15, 13,
              13, 13, 16, 15, 14, 16, 16, 16, 21, 21, 23, 22, 29, 29, 29, 38, 39 ] ]

So the factorization determines the fusion map up to table automorphisms. We check that this map is equal to the stored one.

        gap> GetFusionMap( h, suz ) in repr;
        true

### 2.4 F3+N5 → F3+ (March 2002)

The class fusion from the table of the Sylow 5 normalizer H in the sporadic simple group F3+ into F3+ is ambiguous.

        gap> f3p:= CharacterTable( "F3+" );;
        gap> h:= CharacterTable( "F3+N5" );;
        gap> hfusf3p:= PossibleClassFusions( h, f3p );;
        gap> Length( RepresentativesFusions( h, hfusf3p, f3p ) );
        2

H is not maximal in F3+, so we look for tables of maximal subgroups that can contain H.

        gap> maxes:= List( Maxes( f3p ), CharacterTable );;
        gap> filt:= Filtered( maxes, x -> Size( x ) mod Size( h ) = 0 );
        [ CharacterTable( "Fi23" ), CharacterTable( "2.Fi22.2" ),
          CharacterTable( "(3xO8+(3):3):2" ), CharacterTable( "O10-(2)" ),
          CharacterTable( "(A4xO8+(2).3).2" ), CharacterTable( "He.2" ),
          CharacterTable( "F3+M14" ), CharacterTable( "(A5xA9):2" ) ]
        gap> possfus:= List( filt, x -> PossibleClassFusions( h, x ) );
        [ [  ], [  ], [  ], [  ],
          [ [ 1, 69, 110, 12, 80, 121, 4, 72, 113, 11, 11, 79, 79, 120, 120, 3, 71,
                  11, 79, 23, 91, 112, 120, 132, 29, 32, 97, 100, 37, 37, 105, 105,
                  139, 140, 145, 146, 155, 155, 156, 156, 44, 44, 167, 167, 48, 48,
                  171, 171, 57, 57, 180, 180, 66, 66, 189, 189 ],
              [ 1, 69, 110, 12, 80, 121, 4, 72, 113, 11, 11, 79, 79, 120, 120, 3, 71,
                  11, 79, 23, 91, 112, 120, 132, 29, 32, 97, 100, 37, 37, 105, 105,
                  140, 139, 146, 145, 156, 156, 155, 155, 44, 44, 167, 167, 48, 48,
                  171, 171, 57, 57, 180, 180, 66, 66, 189, 189 ] ], [  ], [  ], [  ] ]

We see that from the eight possible classes of maximal subgroups in F3+ that might contain H, only the group of type (A4 ×O8+(2).3).2 admits a class fusion from H. Hence we can compute the compositions of the possible fusions from H into this group with the possible fusions from this group into F3+.

        gap> max:= filt[5];
        CharacterTable( "(A4xO8+(2).3).2" )
        gap> hfusmax:= possfus[5];;
        gap> maxfusf3p:= PossibleClassFusions( max, f3p );;
        gap> comp:= SetOfComposedClassFusions( maxfusf3p, hfusmax );;
        gap> Length( comp );
        2
        gap> repr:= RepresentativesFusions( h, comp, f3p );
        [ [ 1, 2, 4, 12, 35, 54, 3, 3, 16, 9, 9, 11, 11, 40, 40, 2, 3, 9, 11, 35, 36,
              13, 40, 90, 7, 22, 19, 20, 43, 43, 50, 50, 8, 8, 23, 23, 46, 46, 47,
              47, 10, 10, 9, 9, 10, 10, 11, 11, 26, 26, 28, 28, 67, 67, 68, 68 ] ]

Finally, we check whether the map stored in the table library is correct.

        gap> GetFusionMap( h, f3p ) in repr;
        true

Note that we did not determine the class fusion from the maximal subgroup (A4 ×O8+(2).3).2 into F3+ up to table automorphisms (see Section 3.2 for this problem), since also the ambiguous result was enough for computing the fusion from H into F3+.

## 3 Fusions Determined Using Commutative Diagrams Involving Smaller Subgroups

In each of the following examples, the class fusion of a (not necessarily maximal) subgroup M of a group G into G is determined by considering a proper subgroup U of M whose class fusion into G can be computed, perhaps using another subgroup S of G that also contains U. |

### 3.1 BN7 → B (March 2002)

Let H be a Sylow 7 normalizer in the sporadic simple group B. The class fusion of H into B is not uniquely determined by the character tables of the two groups.

        gap> b:= CharacterTable( "B" );
        CharacterTable( "B" )
        gap> h:= CharacterTable( "BN7" );
        CharacterTable( "BN7" )
        gap> hfusb:= PossibleClassFusions( h, b );;
        gap> Length( RepresentativesFusions( h, hfusb, b ) );
        2

Let us consider a maximal subgroup of the type Th in B (cf. [CCN+85,p. 217]). By [CCN+85,p. 177], the Sylow 7 normalizers in Th are maximal subgroups of Th and have the structure 72:(3 ×2S4). Let U be such a subgroup.
Note that the only maximal subgroups of Th whose order is divisible by the order of a Sylow 7 subgroup of B have the types 3D4(2).3 and 72:(3 ×2S4), and the Sylow 7 normalizers in the former groups have the structure 72:(3 ×2A4), cf. [CCN+85,p. 89].

        gap> Number( Factors( Size( b ) ), x -> x = 7 );
        2
        gap> th:= CharacterTable( "Th" );
        CharacterTable( "Th" )
        gap> Filtered( Maxes( th ), x -> Size( CharacterTable( x ) ) mod 7^2 = 0 );
        [ "3D4(2).3", "7^2:(3x2S4)" ]

The class fusion of U into B via Th is uniquely determined by the character tables of these groups.

        gap> thn7:= CharacterTable( "ThN7" );
        CharacterTable( "7^2:(3x2S4)" )
        gap> comp:= SetOfComposedClassFusions( PossibleClassFusions( th, b ),
        >               PossibleClassFusions( thn7, th ) );
        [ [ 1, 31, 7, 7, 5, 28, 28, 17, 72, 72, 6, 6, 7, 28, 27, 27, 109, 109, 17,
              45, 45, 72, 72, 127, 127, 127, 127 ] ]

The condition that the class fusion of U into B factors through H determines the class fusion of H into B up to table automorphisms.

        gap> thn7fush:= PossibleClassFusions( thn7, h );;
        gap> filt:= Filtered( hfusb, x ->
        >               ForAny( thn7fush, y -> CompositionMaps( x, y ) in comp ) );;
        gap> Length( RepresentativesFusions( h, filt, b ) );
        1

Finally, we compare the result with the map that is stored on the library table of H.

        gap> GetFusionMap( h, b ) in filt;
        true

### 3.2 (A4 ×O8+(2).3).2 → Fi24′ (November 2002)

The class fusion of the maximal subgroup M ≅ (A4 ×O8+(2).3).2 of G = Fi24′ is ambiguous.

        gap> m:= CharacterTable( "(A4xO8+(2).3).2" );;
        gap> t:= CharacterTable( "F3+" );;
        gap> mfust:= PossibleClassFusions( m, t );;
        gap> repr:= RepresentativesFusions( m, mfust, t );;
        gap> Length( repr );
        2

We first observe that the elements of order three in the normal subgroup of type A4 in M lie in the class `3A` of Fi24′.

        gap> a4inm:= Filtered( ClassPositionsOfNormalSubgroups( m ),
        >                      n -> Sum( SizesConjugacyClasses( m ){ n } ) = 12 );
        [ [ 1, 69, 110 ] ]
        gap> OrdersClassRepresentatives( m ){ a4inm[1] };
        [ 1, 2, 3 ]
        gap> List( repr, map -> map[110] );
        [ 4, 4 ]
        gap> OrdersClassRepresentatives( t ){ [ 1 .. 4 ] };
        [ 1, 2, 2, 3 ]

Let us take one such element g, say. Its normalizer S in G has the structure (3 ×O8+(3).3).2; this group is maximal in G, and its character table is available in GAP.

        gap> s:= CharacterTable( "F3+N3A" );
        CharacterTable( "(3xO8+(3):3):2" )

The intersection NM(g) = S ∩M contains a subgroup U of the type 3 ×O8+(2).3, and in the following we compute the class fusions of U into S and M, and then utilize the fact that only those class fusions from M into G are possible whose composition with the class fusion from U into M equals a composition of class fusions from U into S and from S into G.

        gap> u:= CharacterTable( "Cyclic", 3 ) * CharacterTable( "O8+(2).3" );
        CharacterTable( "C3xO8+(2).3" )
        gap> ufuss:= PossibleClassFusions( u, s );;
        gap> ufusm:= PossibleClassFusions( u, m );;
        gap> sfust:= PossibleClassFusions( s, t );;
        gap> comp:= SetOfComposedClassFusions( sfust, ufuss );;
        gap> Length( comp );
        6
        gap> filt:= Filtered( mfust,
        >     x -> ForAny( ufusm, map -> CompositionMaps( x, map ) in comp ) );;
        gap> repr:= RepresentativesFusions( m, filt, t );;
        gap> Length( repr );
        1
        gap> GetFusionMap( m, t ) in repr;
        true

So the class fusion from M into G is determined up to table automorphisms by the commutative diagram.

### 3.3 A6 ×L2(8).3 → Fi24′ (November 2002)

The class fusion of the maximal subgroup M ≅ A6 ×L2(8).3 of G = Fi24′ is ambiguous.

        gap> m:= CharacterTable( "A6xL2(8):3" );;
        gap> t:= CharacterTable( "F3+" );;
        gap> mfust:= PossibleClassFusions( m, t );;
        gap> Length( RepresentativesFusions( m, mfust, t ) );
        2

We will use the fact that the direct factor of the type A6 in M contains elements in the class `3A` of G. This fact can be shown as follows.

        gap> dppos:= ClassPositionsOfDirectProductDecompositions( m );
        [ [ [ 1, 12 .. 67 ], [ 1 .. 11 ] ] ]
        gap> List( dppos[1], l -> Sum( SizesConjugacyClasses( t ){ l } ) );
        [ 17733424133316996808705, 4545066196775803392 ]
        gap> List( dppos[1], l -> Sum( SizesConjugacyClasses( m ){ l } ) );
        [ 360, 1512 ]
        gap> 3Apos:= Position( OrdersClassRepresentatives( t ), 3 );
        4
        gap> 3Ainm:= List( mfust, map -> Position( map, 3Apos ) );
        [ 23, 23, 23, 23, 34, 34, 34, 34 ]
        gap> ForAll( 3Ainm, x -> x in dppos[1][1] );
        true

Since the normalizer of an element of order three in A6 has the form 32:2, such a `3A` element in M contains a subgroup U of the structure 32:2 ×L2(8).3 which is contained in the `3A` normalizer S in G, which has the structure (3 ×O8+(3).3).2.
(Note that all classes in the 32:2 type group are rational, and its character table is available in the GAP Character Table Library with the identifier `"3^2:2"`.)

        gap> u:= CharacterTable( "3^2:2" ) * CharacterTable( "L2(8).3" );
        CharacterTable( "3^2:2xL2(8).3" )
        gap> s:= CharacterTable( "F3+N3A" );
        CharacterTable( "(3xO8+(3):3):2" )
        gap> ufuss:= PossibleClassFusions( u, s );;
        gap> comp:= SetOfComposedClassFusions( sfust, ufuss );;
        gap> ufusm:= PossibleClassFusions( u, m );;
        gap> filt:= Filtered( mfust,
        >               map -> ForAny( ufusm,
        >                          map2 -> CompositionMaps( map, map2 ) in comp ) );;
        gap> repr:= RepresentativesFusions( m, filt, t );;
        gap> Length( repr );
        1
        gap> GetFusionMap( m, t ) in repr;
        true

### 3.4 (32:D8 ×U4(3).22).2 → B (June 2007)

Let G be a maximal subgroup of the type (32:D8 ×U4(3).22).2 in the sporadic simple group B, cf. [CCN+85,p. 217]. Computing the class fusion of G into B just from the character tables of the two groups takes extremely long. So we use additional information.
According to [CCN+85,p. 217], G is the normalizer in B of an elementary abelian group 〈x, y 〉 of order 9, with x, y in the class `3A` of B, and N = NB(〈x 〉) has the structure S3 ×Fi22.2. The intersection G ∩N has the structure S3 ×S3 ×U4(3).22, which is the direct product of S3 and the normalizer in Fi22.2 of a `3A` element of Fi22.2, see [CCN+85,p. 163]. Thus we may use that the class fusions from G ∩N into B through G or N coincide.
The class fusion from N into B is uniquely determined by the character tables.

        gap> b:= CharacterTable( "B" );;
        gap> n:= CharacterTable( "BN3A" );
        CharacterTable( "S3xFi22.2" )
        gap> nfusb:= PossibleClassFusions( n, b );;
        gap> Length( nfusb );
        1
        gap> nfusb:= nfusb[1];;

The computation of the class fusion from G ∩N into N is sped up by computing first the class fusion modulo the direct factor S3, and then lifting these fusion maps.

        gap> fi222:= CharacterTable( "Fi22.2" );;
        gap> fi222n3a:= CharacterTable( "S3xU4(3).(2^2)_{122}" );;
        gap> s3:= CharacterTable( "S3" );;
        gap> inter:= s3 * fi222n3a;;
        gap> intermods3fusnmods3:= PossibleClassFusions( fi222n3a, fi222 );;
        gap> Length( intermods3fusnmods3 );
        2
        gap> Length( RepresentativesFusions( fi222n3a, intermods3fusnmods3, fi222 ) );
        1

We get two equivalent possibilities, and need to consider only one of them. For lifting it to a map between G ∩N and N, the safe way is to use the fusion map between the two factors for computing an approximation. (Additionally, we could interpret the known maps as fusions between two subgroups, and use this for improving the approximation, but in this case the speedup is not worth the effort.)

        gap> interfusn:= CompositionMaps( InverseMap( GetFusionMap( n, fi222 ) ),
        >        CompositionMaps( intermods3fusnmods3[1],
        >            GetFusionMap( inter, fi222n3a ) ) );;
        gap> interfusn:= PossibleClassFusions( inter, n,
        >        rec( fusionmap:= interfusn, quick:= true ) );;
        gap> Length( interfusn );
        1

The lift is unique. Since we lift a class fusion to direct products, we could also "extend" the fusion directly. But note that this would assume the ordering of classes in character tables of direct products. This alternative would work as follows.

        gap> nccl:= NrConjugacyClasses( fi222 );;
        gap> interfusn[1] = Concatenation( List( [ 0 .. 2 ],
        >                       i -> intermods3fusnmods3[1] + i * nccl ) );
        true

Next we compute the class fusions from G ∩N to G. We get two equivalent solutions.

        gap> tblg:= CharacterTable( "BM14" );
        CharacterTable( "(3^2:D8xU4(3).2^2).2" )
        gap> interfusg:= PossibleClassFusions( inter, tblg );;
        gap> Length( interfusg );
        2
        gap> Length( RepresentativesFusions( inter, interfusg, tblg ) );
        1

The approximation of the class fusion from G to B is computed by composing the known maps. Because we have chosen one of the two possible maps from G ∩N to N, here we consider the two possibilities. From these approximations, we compute the possible class fusions.

        gap> interfusb:= CompositionMaps( nfusb, interfusn[1] );;
        gap> approx:= List( interfusg,
        >        map -> CompositionMaps( interfusb, InverseMap( map ) ) );;
        gap> gfusb:= Set( Concatenation( List( approx,
        >                     map -> PossibleClassFusions( tblg, b,
        >                                rec( fusionmap:= map ) ) ) ) );;
        gap> Length( gfusb );
        4
        gap> Length( RepresentativesFusions( tblg, gfusb, b ) );
        1

Finally, we compare the result with the class fusion that is stored on the library table.

        gap> GetFusionMap( tblg, b ) in gfusb;
        true

### 3.5 71+4:(3 ×2.S7) → M (May 2009)

The class fusion of the maximal subgroup U of type 71+4:(3 ×2.S7) of the Monster group M into M is ambiguous.

        gap> tblu:= CharacterTable( "7^(1+4):(3x2.S7)" );;
        gap> m:= CharacterTable( "M" );;
        gap> ufusm:= PossibleClassFusions( tblu, m );;
        gap> Length( RepresentativesFusions( tblu, ufusm, m ) );
        2

The subgroup U contains a Sylow 7-subgroup of M, and the only maximal subgroups of M with this property are the class of U and another class of subgroups, of the type 72+1+2:GL2(7). Moreover, it turns out that the Sylow 7 normalizers in the subgroups in both classes have the same order, hence they are the Sylow 7 normalizers in M.
For that, we use representations from the ATLAS of Group Representations [WWT+], and access these representations via the GAP package AtlasRep ([WPN+11]).

        gap> LoadPackage( "atlasrep" );
        true
        gap> g1:= AtlasGroup( "7^(2+1+2):GL2(7)" );;
        gap> s1:= SylowSubgroup( g1, 7 );;
        gap> n1:= Normalizer( g1, s1 );;
        gap> g2:= AtlasGroup( "7^(1+4):(3x2.S7)" );;
        gap> s2:= SylowSubgroup( g2, 7 );;
        gap> n2:= Normalizer( g2, s2 );;
        gap> Size( n1 ) = Size( n2 );
        true
        gap> ( Size( m ) / Size( s1 ) ) mod 7 <> 0;
        true

So let N be a Sylow 7 normalizer in U, and choose a subgroup S of the type 72+1+2:GL2(7) that contains N.
We compute the character table of N. Computing the possible class fusions of N into M directly yields two possibilities, but the class fusion of N into M via S is uniquely determined by the character tables.

        gap> tbln:= CharacterTable( Image( IsomorphismPcGroup( n1 ) ) );;
        gap> tbls:= CharacterTable( "7^(2+1+2):GL2(7)" );;
        gap> nfusm:= PossibleClassFusions( tbln, m );;
        gap> Length( RepresentativesFusions( tbln, nfusm, m ) );
        2
        gap> nfuss:= PossibleClassFusions( tbln, tbls );;
        gap> sfusm:= PossibleClassFusions( tbls, m );;
        gap> nfusm:= SetOfComposedClassFusions( sfusm, nfuss );;
        gap> Length( nfusm );
        1

Now we use the condition that the class fusions from N into M factors through U. This determines the class fusion of U into M up to table automorphisms.

        gap> nfusu:= PossibleClassFusions( tbln, tblu );;
        gap> ufusm:= Filtered( ufusm, map2 -> ForAny( nfusu,
        >        map1 -> CompositionMaps( map2, map1 ) in nfusm ) );;
        gap> Length( RepresentativesFusions( tblu, ufusm, m ) );
        1

Let C be the centralizer in U of the normal subgroup of order 7; note that C is the `7B` centralizer on M. We can use the information about the class fusion of U into M for determining the class fusion of C into M. The class fusion of C into M is not determined by the character tables, but the class fusion of C into U is determined up to table automorphisms, so the same holds for the class fusion of C into M.

        gap> tblc:= CharacterTable( "MC7B" );
        CharacterTable( "7^1+4.2A7" )
        gap> cfusm:= PossibleClassFusions( tblc, m );;
        gap> Length( RepresentativesFusions( tblc, cfusm, m ) );
        2
        gap> cfusu:= PossibleClassFusions( tblc, tblu );;
        gap> cfusm:= SetOfComposedClassFusions( ufusm, cfusu );;
        gap> Length( RepresentativesFusions( tblc, cfusm, m ) );
        1

### 3.6 37.O7(3):2 → Fi24 (November 2010)

The class fusion of the maximal subgroup M ≅ 37.O7(3):2 of G = Fi24 = F3+.2 is ambiguous.

        gap> m:= CharacterTable( "3^7.O7(3):2" );;
        gap> t:= CharacterTable( "F3+.2" );;
        gap> mfust:= PossibleClassFusions( m, t );;
        gap> Length( RepresentativesFusions( m, mfust, t ) );
        2

We will use the fact that the elementary abelian normal subgroup of order 37 in M contains an element x, say, in the class `3A` of G. This fact can be shown as follows.

        gap> nsg:= ClassPositionsOfNormalSubgroups( m );
        [ [ 1 ], [ 1 .. 4 ], [ 1 .. 158 ], [ 1 .. 291 ] ]
        gap> Sum( SizesConjugacyClasses( m ){ nsg[2] } );
        2187
        gap> 3^7;
        2187
        gap> rest:= Set( List( mfust, map -> map{ nsg[2] } ) );
        [ [ 1, 4, 5, 6 ] ]
        gap> List( rest, l -> ClassNames( t, "Atlas" ){ l } );
        [ [ "1A", "3A", "3B", "3C" ] ]

The normalizer S of 〈x 〉 in G has the form S3 ×O8+(3):S3, and the order of U = S ∩M = NM( 〈x 〉) is 53059069440, so U has index 3360 in S.

        gap> s:= CharacterTable( "F3+.2N3A" );
        CharacterTable( "S3xO8+(3):S3" )
        gap> PowerMap( m, 2 )[4];
        4
        gap> size_u:= 2 * SizesCentralizers( m )[ 2 ];
        53059069440
        gap> Size( s ) / size_u;
        3360

Using the list of maximal subgroups of O8+(3), we see that only the maximal subgroups of the type 36:L4(3) have index dividing 3360 in O8+(3). (There are three classes of such subgroups.) This implies that U contains a subgroup of the type S3 ×36:L4(3).

        gap> o8p3:= CharacterTable( "O8+(3)" );;
        gap> mx:= List( Maxes( o8p3 ), CharacterTable );;
        gap> filt:= Filtered( mx, x -> 3360 mod Index( o8p3, x ) = 0 );
        [ CharacterTable( "3^6:L4(3)" ), CharacterTable( "O8+(3)M8" ),
          CharacterTable( "O8+(3)M9" ) ]
        gap> List( filt, x -> Index( o8p3, x ) );
        [ 1120, 1120, 1120 ]

We compute the possible class fusions from U into M and S in two steps, because this is faster. First the possible class fusions from U′′ ≅ 36:L4(3) into M and S are computed, and then these fusions are used to derive approximations for the fusions from U into M and S.

        gap> uu:= filt[1];;
        gap> u:= CharacterTable( "Symmetric", 3 ) * uu;
        CharacterTable( "Sym(3)x3^6:L4(3)" )
        gap> uufusm:= PossibleClassFusions( uu, m );;
        gap> Length( uufusm );
        8
        gap> approx:= List( uufusm, map -> CompositionMaps( map,
        >                   InverseMap( GetFusionMap( uu, u ) ) ) );;
        gap> ufusm:= Concatenation( List( approx, map ->
        >        PossibleClassFusions( u, m, rec( fusionmap:= map ) ) ) );;
        gap> Length( ufusm );
        8
        gap> uufuss:= PossibleClassFusions( uu, s );;
        gap> Length( uufuss );
        8
        gap> approx:= List( uufuss, map -> CompositionMaps( map,
        >              InverseMap( GetFusionMap( uu, u ) ) ) );;
        gap> ufuss:= Concatenation( List( approx, map ->
        >   PossibleClassFusions( u, s, rec( fusionmap:= map ) ) ) );;
        gap> Length( ufuss );
        8

Now we compute the possible class fusions from S into G, and the compositions of these maps with the possible class fusions from U into S.

        gap> sfust:= PossibleClassFusions( s, t );;
        gap> comp:= SetOfComposedClassFusions( sfust, ufuss );;
        gap> Length( comp );
        8

It turns out that only one orbit of the possible class fusions from M to G is compatible with these possible class fusions from U to G.

        gap> filt:= Filtered( mfust, map2 -> ForAny( ufusm, map1 ->
        >        CompositionMaps( map2, map1 ) in comp ) );;
        gap> Length( filt );
        4
        gap> Length( RepresentativesFusions( m, filt, t ) );
        1

The class fusion stored in the GAP Character Table Library is one of them.

        gap> GetFusionMap( m, t ) in filt;
        true

## 4 Fusions Determined Using Commutative Diagrams Involving Factor Groups

### 4.1 3.A7 → 3.Suz (December 2010)

The maximal subgroups of type A7 in the sporadic simple Suzuki group Suz lift to groups of the type 3.A7 in 3.Suz. This can be seen from the fact that 3.Suz does not admit a class fusion from A7.

        gap> t:= CharacterTable( "Suz" );;
        gap> 3t:= CharacterTable( "3.Suz" );;
        gap> s:= CharacterTable( "A7" );;
        gap> 3s:= CharacterTable( "3.A7" );;
        gap> PossibleClassFusions( s, 3t );
        [  ]

The class fusion of 3.A7 into 3.Suz is ambiguous.

        gap> 3sfus3t:= PossibleClassFusions( 3s, 3t );;
        gap> Length( 3sfus3t );
        6
        gap> RepresentativesFusions( 3s, 3sfus3t, 3t );
        [ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 49, 50,
              48, 49, 50 ],
          [ 1, 11, 12, 4, 36, 37, 13, 16, 23, 82, 83, 32, 100, 101, 44, 38, 41, 48,
              112, 116, 48, 115, 113 ] ]
        gap> ClassPositionsOfCentre( 3t );
        [ 1, 2, 3 ]

We see that the possible fusions in the second orbit avoid the centre of 3.Suz. Since the preimages in 3.Suz of the A7 type subgroups of Suz contain the centre of 3.Suz, we know that the class fusion of these preimages belong to the first orbit. This can be formalized by checking the commutativity of the diagram of fusions between 3.A7, 3.Suz, and their factors A7 and Suz.

        gap> sfust:= PossibleClassFusions( s, t );;
        gap> Length( sfust );
        1
        gap> filt:= Filtered( 3sfus3t, map -> CompositionMaps( GetFusionMap( 3t, t ),
        >                                         map )
        >               = CompositionMaps( sfust[1], GetFusionMap( 3s, s ) ) );
        [ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 49, 50,
              48, 49, 50 ],
          [ 1, 3, 2, 7, 9, 8, 16, 16, 26, 28, 27, 32, 34, 33, 47, 47, 47, 48, 50, 49,
              48, 50, 49 ] ]

So the class fusion of maximal 3.A7 type subgroups of 3.Suz is determined up to table automorphisms. One of these fusions is stored on the table of 3.A7.

        gap> RepresentativesFusions( 3s, filt, 3t );
        [ [ 1, 2, 3, 7, 8, 9, 16, 16, 26, 27, 28, 32, 33, 34, 47, 47, 47, 48, 49, 50,
              48, 49, 50 ] ]
        gap> GetFusionMap( 3s, 3t ) in filt;
        true

Also the class fusions in the other orbit belong to subgroups of type 3.A7 in 3.Suz. Note that Suz contains maximal subgroups of the type 32.U4(3).23′ (see [CCN+85,p. 131]), and the A7 type subgroups of U4(3) (see [CCN+85,p. 52]) lift to groups of the type 3.A7 in 32.U4(3) because 32.U4(3) does not admit a class fusion from A7. The preimages in 3.Suz of the 3.A7 tape subgroups of Suz have the structure 3 ×3.A7.

        gap> u:= CharacterTable( "3_2.U4(3)" );;
        gap> PossibleClassFusions( s, u );
        [  ]
        gap> Length( PossibleClassFusions( 3s, u ) );
        8

### 4.2 S6 → U4(2) (September 2011)

The simple group G = U4(2) contains a maximal subgroup U of type S6. The class fusion from U to G is unique up to table automorphisms.

        gap> s:= CharacterTable( "S6" );
        CharacterTable( "A6.2_1" )
        gap> t:= CharacterTable( "U4(2)" );
        CharacterTable( "U4(2)" )
        gap> sfust:= PossibleClassFusions( s, t );
        [ [ 1, 3, 6, 7, 9, 10, 3, 2, 9, 16, 15 ],
          [ 1, 3, 7, 6, 9, 10, 2, 3, 9, 15, 16 ] ]
        gap> Length( RepresentativesFusions( s, sfust, t ) );
        1

In the double cover 2.G of G, U lifts to the double cover 2.U of U (which is unique up to isomorphism). Also the class fusion from 2.U to 2.G is unique up to table automorphisms.

        gap> 2t:= CharacterTable( "2.U4(2)" );
        CharacterTable( "2.U4(2)" )
        gap> 2s:= CharacterTable( "2.A6.2_1" );
        CharacterTable( "2.A6.2_1" )
        gap> 2sfus2t:= PossibleClassFusions( 2s, 2t );
        [ [ 1, 2, 4, 11, 12, 9, 10, 15, 16, 17, 3, 4, 15, 24, 25, 26, 26 ],
          [ 1, 2, 4, 11, 12, 9, 10, 15, 16, 17, 3, 4, 15, 25, 24, 26, 26 ] ]
        gap> Length( RepresentativesFusions( 2s, 2sfus2t, 2t ) );
        1

However, the two possible fusions from 2.U to 2.G are lifts of the same class fusion from U to G.

        gap> 2sfuss:= GetFusionMap( 2s, s );
        [ 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 11 ]
        gap> 2tfust:= GetFusionMap( 2t, t );;
        gap> induced:= Set( List( 2sfus2t, x -> CompositionMaps( 2tfust,
        >      CompositionMaps( x, InverseMap( 2sfuss ) ) ) ) );
        [ [ 1, 3, 7, 6, 9, 10, 2, 3, 9, 15, 16 ] ]

The point is that the outer automorphism of S6 that makes the two fusions from U to G equivalent does not lift to 2.U, and that we have silently assumed a fixed factor fusion from 2.U to U. Note that composing this factor fusion with the automorphism of U would also yield a factor fusion, and w. r. t. the commutative diagram involving this factor fusion, the other possible class fusion from U to G is induced by the possible fusions from 2.U to 2.G.

        gap> auts:= AutomorphismsOfTable( s );
        Group([ (3,4)(7,8)(10,11) ])
        gap> other:= OnTuples( 2sfuss, GeneratorsOfGroup( auts )[1] );
        [ 1, 1, 2, 4, 4, 3, 3, 5, 6, 6, 8, 7, 9, 11, 11, 10, 10 ]
        gap> Set( List( 2sfus2t, x -> CompositionMaps( 2tfust,
        >      CompositionMaps( x, InverseMap( other ) ) ) ) );
        [ [ 1, 3, 6, 7, 9, 10, 3, 2, 9, 16, 15 ] ]

The library table of U stores the class fusion to G that is compatible with the stored factor fusion from 2.U to U.

        gap> GetFusionMap( s, t ) in induced;
        true

## 5 Fusions Determined Using Commutative Diagrams Involving Automorphic Extensions

### 5.1 U3(8).31 → 2E6(2) (December 2010)

According to the ATLAS (see [CCN+85,p. 191]), the group G = 2E6(2) contains a maximal subgroup U of the type U3(8).31. The class fusion of U into G is ambiguous.

        gap> s:= CharacterTable( "U3(8).3_1" );;
        gap> t:= CharacterTable( "2E6(2)" );;
        gap> sfust:= PossibleClassFusions( s, t );;
        gap> Length( sfust );
        24
        gap> Length( RepresentativesFusions( s, sfust, t ) );
        2

In the automorphic extension G.2 = 2E6(2).2 of G, the subgroup U extends to a group U.2 of the type U3(8).6 (again, see [CCN+85,p. 191]). The class fusion of U.2 into G.2 is unique up to table automorphisms.

        gap> s2:= CharacterTable( "U3(8).6" );;
        gap> t2:= CharacterTable( "2E6(2).2" );;
        gap> s2fust2:= PossibleClassFusions( s2, t2 );;
        gap> Length( s2fust2 );
        2
        gap> Length( RepresentativesFusions( s2, s2fust2, t2 ) );
        1

Only half of the possible class fusions from U into G are compatible with the embeddings of U into G.2 via U.2 and G, and the compatible maps form one orbit under table automorphisms.

        gap> sfuss2:= PossibleClassFusions( s, s2 );;
        gap> comp:= SetOfComposedClassFusions( s2fust2, sfuss2 );;
        gap> tfust2:= PossibleClassFusions( t, t2 );;
        gap> filt:= Filtered( sfust, map -> ForAny( tfust2,
        >               map2 -> CompositionMaps( map2, map ) in comp ) );;
        gap> Length( filt );
        12
        gap> Length( RepresentativesFusions( s, filt, t ) );
        1

Let us see which classes of U and G are involved in the disambiguation of the class fusion. The "good" fusion candidates differ from the excluded ones on the classes at the positions 31 to 36: Under all possible class fusions, two pairs of classes are mapped to the classes 81 and 82 of G; from these classes, the excluded maps fuse classes at odd positions with classes at even positions, whereas the "good" class fusions do not have this property.

        gap> Set( List( filt, x -> x{ [ 31 .. 36 ] } ) );
        [ [ 74, 74, 81, 82, 81, 82 ], [ 74, 74, 82, 81, 82, 81 ],
          [ 81, 82, 74, 74, 81, 82 ], [ 81, 82, 81, 82, 74, 74 ],
          [ 82, 81, 74, 74, 82, 81 ], [ 82, 81, 82, 81, 74, 74 ] ]
        gap> Set( List( Difference( sfust, filt ), x -> x{ [ 31 .. 36 ] } ) );
        [ [ 74, 74, 81, 82, 82, 81 ], [ 74, 74, 82, 81, 81, 82 ],
          [ 81, 82, 74, 74, 82, 81 ], [ 81, 82, 82, 81, 74, 74 ],
          [ 82, 81, 74, 74, 81, 82 ], [ 82, 81, 81, 82, 74, 74 ] ]

None of the possible class fusions from U to U.2 fuses classes at odd positions in the interval from 31 to 36 with classes at even positions.

        gap> Set( List( sfuss2, x -> x{ [ 31 .. 36 ] } ) );
        [ [ 28, 29, 30, 31, 30, 31 ], [ 29, 28, 31, 30, 31, 30 ],
          [ 30, 31, 28, 29, 30, 31 ], [ 30, 31, 30, 31, 28, 29 ],
          [ 31, 30, 29, 28, 31, 30 ], [ 31, 30, 31, 30, 29, 28 ] ]

This suffices to exclude the "bad" fusion candidates because no further fusion of the relevant classes of G happens in G.2.

        gap> List( tfust2, x -> x{ [ 74, 81, 82 ] } );
        [ [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ],
          [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ],
          [ 65, 70, 71 ], [ 65, 70, 71 ], [ 65, 71, 70 ], [ 65, 71, 70 ] ]

(The same holds for the fusion of the relevant classes of U.2 in G.2.)

        gap> List( s2fust2, x -> x{ [ 28 .. 31 ] } );
        [ [ 65, 65, 70, 71 ], [ 65, 65, 71, 70 ] ]

Finally, we check that a correct map is stored on the library table.

        gap> GetFusionMap( s, t ) in filt;
        true

### 5.2 L3(4).21 → U6(2) (December 2010)

According to the ATLAS (see [CCN+85,p. 115]), the group G = U6(2) contains a maximal subgroup U of the type L3(4).21. The class fusion of U into G is ambiguous.

        gap> s:= CharacterTable( "L3(4).2_1" );;
        gap> t:= CharacterTable( "U6(2)" );;
        gap> sfust:= PossibleClassFusions( s, t );;
        gap> Length( sfust );
        27
        gap> Length( RepresentativesFusions( s, sfust, t ) );
        3

In the automorphic extension G.3 = U6(2).3 of G, the subgroup U extends to a group U.3 of the type L3(4).6 (again, see [CCN+85,p. 115]). The class fusion of U.3 into G.3 is unique up to table automorphisms.

        gap> s3:= CharacterTable( "L3(4).6" );;
        gap> t3:= CharacterTable( "U6(2).3" );;
        gap> s3fust3:= PossibleClassFusions( s3, t3 );;
        gap> Length( s3fust3 );
        2
        gap> Length( RepresentativesFusions( s3, s3fust3, t3 ) );
        1

Here the argument used in Section 5.1 does not work, because all possible class fusions from U into G are compatible with the embeddings of U into G.3 via U.3 and G.

        gap> sfuss3:= PossibleClassFusions( s, s3 );;
        gap> comp:= SetOfComposedClassFusions( s3fust3, sfuss3 );;
        gap> tfust3:= PossibleClassFusions( t, t3 );;
        gap> sfust = Filtered( sfust, map -> ForAny( tfust3,
        >                map2 -> CompositionMaps( map2, map ) in comp ) );
        true

Consider the elements of order four in U. There are three such classes inside U′ ≅ L3(4), which fuse to one class of U.3.

        gap> OrdersClassRepresentatives( s );
        [ 1, 2, 3, 4, 4, 4, 5, 7, 2, 4, 6, 8, 8, 8 ]
        gap> sfuss3;
        [ [ 1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 10, 10, 10 ] ]

These classes of U fuse into some of the classes 10 to 12 of G. In G.3, these three classes fuse into one class.

        gap> Set( List( sfust, map -> map{ [ 4 .. 6 ] } ) );
        [ [ 10, 10, 10 ], [ 10, 10, 11 ], [ 10, 10, 12 ], [ 10, 11, 10 ],
          [ 10, 11, 11 ], [ 10, 11, 12 ], [ 10, 12, 10 ], [ 10, 12, 11 ],
          [ 10, 12, 12 ], [ 11, 10, 10 ], [ 11, 10, 11 ], [ 11, 10, 12 ],
          [ 11, 11, 10 ], [ 11, 11, 11 ], [ 11, 11, 12 ], [ 11, 12, 10 ],
          [ 11, 12, 11 ], [ 11, 12, 12 ], [ 12, 10, 10 ], [ 12, 10, 11 ],
          [ 12, 10, 12 ], [ 12, 11, 10 ], [ 12, 11, 11 ], [ 12, 11, 12 ],
          [ 12, 12, 10 ], [ 12, 12, 11 ], [ 12, 12, 12 ] ]
        gap> Set( List( tfust3, map -> map{ [ 10 .. 12 ] } ) );
        [ [ 10, 10, 10 ] ]

This means that the automorphism α of G that is induced by the action of G.3 permutes the classes 10 to 12 of G transitively. The fact that U extends to U.3 in G.3 means that U is invariant under α. This implies that U contains either no elements from the classes 10 to 12 or elements from all of these classes. The possible class fusions from U to G satisfying this condition form one orbit under table automprhisms.

        gap> Filtered( sfust, map -> Intersection( map, [ 10 .. 12 ] ) = [] );
        [  ]
        gap> filt:= Filtered( sfust, map -> IsSubset( map, [ 10 .. 12 ] ) );
        [ [ 1, 3, 7, 10, 11, 12, 15, 24, 4, 14, 23, 26, 27, 28 ],
          [ 1, 3, 7, 10, 12, 11, 15, 24, 4, 14, 23, 26, 28, 27 ],
          [ 1, 3, 7, 11, 10, 12, 15, 24, 4, 14, 23, 27, 26, 28 ],
          [ 1, 3, 7, 11, 12, 10, 15, 24, 4, 14, 23, 27, 28, 26 ],
          [ 1, 3, 7, 12, 10, 11, 15, 24, 4, 14, 23, 28, 26, 27 ],
          [ 1, 3, 7, 12, 11, 10, 15, 24, 4, 14, 23, 28, 27, 26 ] ]
        gap> Length( RepresentativesFusions( s, filt, t ) );
        1

Finally, we check that a correct map is stored on the library table.

        gap> GetFusionMap( s, t ) in filt;
        true

## 6 Conditions Imposed by Brauer Tables

The examples in this section show that symmetries can be broken as soon as the class fusions between two ordinary tables shall be compatible with the corresponding Brauer character tables. More precisely, we assume that the class fusion from each Brauer table to its ordinary table is already fixed; choosing these fusions consistently can be a nontrivial task, solving so-called "generality problems" may require the construction of certain modules, similar to the arguments used in 6.3 below.

### 6.1 L2(16).4 → J3.2 (January 2004)

It can happen that Brauer tables decide ambiguities of class fusions between the corresponding ordinary tables. An easy example is the class fusion of L2(16).4 into J3.2. The ordinary tables admit four possible class fusions, of which two are essentially different.

        gap> s:= CharacterTable( "L2(16).4" );;
        gap> t:= CharacterTable( "J3.2" );;
        gap> fus:= PossibleClassFusions( s, t );
        [ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ],
          [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ],
          [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ],
          [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]
        gap> RepresentativesFusions( s, fus, t );
        [ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 5, 5, 8, 8, 13, 13 ],
          [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]

Using Brauer tables, we will see that just one fusion is admissible.
We can exclude two possible fusions by the fact that their images all lie inside the normal subgroup J3, but J3 does not contain a subgroup of type L2(16).4; so still one orbit of length two remains.

        gap> j3:= CharacterTable( "J3" );;
        gap> PossibleClassFusions( s, j3 );
        [  ]
        gap> GetFusionMap( j3, t );
        [ 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 14, 15, 16, 17, 17 ]
        gap> filt:= Filtered( fus,
        >          x -> not IsSubset( ClassPositionsOfDerivedSubgroup( t ), x ) );
        [ [ 1, 2, 3, 6, 14, 15, 16, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ],
          [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]

Now the remaining wrong fusion is excluded by the fact that the table automorphism of J3.2 that swaps the two classes of element order 17 -which swaps two of the possible class fusions- does not live in the 2-modular table.

        gap> smod2:= s mod 2;;
        gap> tmod2:= t mod 2;;
        gap> admissible:= [];;
        gap> for map in filt do
        >      modmap:= CompositionMaps( InverseMap( GetFusionMap( tmod2, t ) ),
        >                   CompositionMaps( map, GetFusionMap( smod2, s ) ) );
        >      if not fail in Decomposition( Irr( smod2 ),
        >            List( Irr( tmod2 ), chi -> chi{ modmap } ), "nonnegative" ) then
        >        AddSet( admissible, map );
        >      fi;
        >    od;
        gap> admissible;
        [ [ 1, 2, 3, 6, 14, 16, 15, 2, 5, 7, 12, 19, 19, 22, 22, 23, 23 ] ]

The test of all available Brauer tables is implemented in the function `CTblLib.Test.Decompositions` of the GAP Character Table Library ([Bre12]).

        gap> CTblLib.Test.Decompositions( s, fus, t ) = admissible;
        true

We see that p-modular tables alone determine the class fusion uniquely; in fact the primes 2 and 3 suffice for that.

        gap> GetFusionMap( s, t ) in admissible;
        true

### 6.2 L2(17) → S8(2) (July 2004)

The class fusion of the maximal subgroup M ≅ L2(17) of G = S8(2) is ambiguous.

        gap> m:= CharacterTable( "L2(17)" );;
        gap> t:= CharacterTable( "S8(2)" );;
        gap> mfust:= PossibleClassFusions( m, t );;
        gap> Length( RepresentativesFusions( m, mfust, t ) );
        4

The Brauer tables for M and G determine the class fusion up to table automorphisms.

        gap> filt:= CTblLib.Test.Decompositions( m, mfust, t );;
        gap> repr:= RepresentativesFusions( m, filt, t );;
        gap> Length( repr );
        1
        gap> GetFusionMap( m, t ) in repr;
        true

### 6.3 L2(19) → J3 (April 2003)

It can happen that Brauer tables impose conditions such that ambiguities arise which are not visible if one considers only ordinary tables.
The class fusion between the ordinary character tables of L2(19) and J3 is unique up to table automorphisms.

        gap> s:= CharacterTable( "L2(19)" );;
        gap> t:= CharacterTable( "J3" );;
        gap> sfust:= PossibleClassFusions( s, t );
        [ [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 20, 21 ],
          [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 21, 20 ],
          [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ],
          [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 21, 20 ],
          [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ],
          [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 21, 20 ],
          [ 1, 2, 4, 7, 6, 10, 11, 12, 14, 13, 20, 21 ],
          [ 1, 2, 4, 7, 6, 10, 11, 12, 14, 13, 21, 20 ],
          [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 20, 21 ],
          [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 21, 20 ],
          [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 20, 21 ],
          [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 21, 20 ] ]
        gap> fusreps:= RepresentativesFusions( s, sfust, t );
        [ [ 1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 20, 21 ] ]

The Galois automorphism that permutes the three classes of element order 9 in the tables of (L2(19) and) J3 does not live in characteristic 19. For example, the unique irreducible Brauer character of degree 110 in the 19-modular table of J3 is ϕ3, and the value of this character on the class `9A` is `-1+2y9+&4`.

        gap> tmod19:= t mod 19;
        BrauerTable( "J3", 19 )
        gap> deg110:= Filtered( Irr( tmod19 ), phi -> phi[1] = 110 );
        [ Character( BrauerTable( "J3", 19 ), [ 110, -2, 5, 2, 2, 0, 0, 1, 0,
              -2*E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6-2*E(9)^7,
              E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6+E(9)^7,
              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,
              E(17)+E(17)^2+E(17)^4+E(17)^8+E(17)^9+E(17)^13+E(17)^15+E(17)^16,
              E(17)^3+E(17)^5+E(17)^6+E(17)^7+E(17)^10+E(17)^11+E(17)^12+E(17)^14 ] )
         ]
        gap> 9A:= Position( OrdersClassRepresentatives( tmod19 ), 9 );
        10
        gap> deg110[1][ 9A ];
        -2*E(9)^2+E(9)^3-E(9)^4-E(9)^5+E(9)^6-2*E(9)^7
        gap> AtlasIrrationality( "-1+2y9+&4" ) = deg110[1][ 9A ];
        true

It turns out that four of the twelve possible class fusions are not compatible with the 19-modular tables.

        gap> smod19:= s mod 19;
        BrauerTable( "L2(19)", 19 )
        gap> compatible:= [];;
        gap> for map in sfust do
        >      comp:= CompositionMaps( InverseMap( GetFusionMap( tmod19, t ) ),
        >      CompositionMaps( map, GetFusionMap( smod19, s ) ) );
        >      rest:= List( Irr( tmod19 ), phi -> phi{ comp } );
        >      if not fail in Decomposition( Irr( smod19 ), rest, "nonnegative" ) then
        >        Add( compatible, map );
        >      fi;
        >    od;
        gap> compatible;
        [ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ],
          [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 21, 20 ],
          [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ],
          [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 21, 20 ],
          [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 20, 21 ],
          [ 1, 2, 4, 7, 6, 11, 12, 10, 14, 13, 21, 20 ],
          [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 20, 21 ],
          [ 1, 2, 4, 7, 6, 12, 10, 11, 14, 13, 21, 20 ] ]

Moreover, the subgroups of those table automorphisms of the ordinary tables that leave the set of compatible fusions invariant make two orbits on this set. Indeed, the two orbits belong to essentially different decompositions of the restriction of ϕ3.

        gap> reps:= RepresentativesFusions( s, compatible, t );
        [ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14, 20, 21 ],
          [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14, 20, 21 ] ]
        gap> compatiblemod19:= List( reps, map -> CompositionMaps(
        >        InverseMap( GetFusionMap( tmod19, t ) ),
        >        CompositionMaps( map, GetFusionMap( smod19, s ) ) ) );
        [ [ 1, 2, 4, 6, 7, 11, 12, 10, 13, 14 ],
          [ 1, 2, 4, 6, 7, 12, 10, 11, 13, 14 ] ]
        gap> rest:= List( compatiblemod19, map -> Irr( tmod19 )[3]{ map } );;
        gap> dec:= Decomposition( Irr( smod19 ), rest, "nonnegative" );
        [ [ 0, 0, 1, 2, 1, 2, 2, 1, 0, 1 ], [ 0, 2, 0, 2, 0, 1, 2, 0, 2, 1 ] ]
        gap> List( Irr( smod19 ), phi -> phi[1] );
        [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 ]

In order to decide which class fusion is correct, we take the matrix representation of J3 that affords ϕ3, restrict it to L2(19), which is the second maximal subgroup of J3, and compute the composition factors. For that, we use a representation from the ATLAS of Group Representations [WWT+], and access it via the GAP package AtlasRep ([WPN+11]).

        gap> LoadPackage( "atlasrep" );
        true
        gap> prog:= AtlasStraightLineProgram( "J3", "maxes", 2 );
        rec( groupname := "J3", identifier := [ "J3", "J3G1-max2W1", 1 ],
          program := <straight line program>, size := 3420, standardization := 1,
          subgroupname := "L2(19)" )
        gap> gens:= OneAtlasGeneratingSet( "J3", Characteristic, 19, Dimension, 110 );
        rec( dim := 110,
          generators := [ < immutable compressed matrix 110x110 over GF(19) >,
              < immutable compressed matrix 110x110 over GF(19) > ],
          groupname := "J3", id := "",
          identifier := [ "J3", [ "J3G1-f19r110B0.m1", "J3G1-f19r110B0.m2" ], 1, 19 ],
          repname := "J3G1-f19r110B0", repnr := 35, ring := GF(19), size := 50232960,
          standardization := 1, type := "matff" )
        gap> restgens:= ResultOfStraightLineProgram( prog.program, gens.generators );
        [ < immutable compressed matrix 110x110 over GF(19) >,
          < immutable compressed matrix 110x110 over GF(19) > ]
        gap> module:= GModuleByMats( restgens, GF( 19 ) );;
        gap> facts:= SMTX.CollectedFactors( module );;
        gap> Length( facts );
        7
        gap> List( facts, x -> x[1].dimension );
        [ 5, 7, 9, 11, 13, 15, 19 ]
        gap> List( facts, x -> x[2] );
        [ 1, 2, 1, 2, 2, 1, 1 ]

This means that there are seven pairwise nonisomorphic composition factors, the smallest one of dimension five. In other words, the first of the two maps is the correct one. Let us check whether this map equals the one that is stored on the library table.

        gap> GetFusionMap( s, t ) = reps[1];
        true

## 7 Fusions Determined by Information about the Groups

In the examples in this section, character theoretic arguments do not suffice for determining the class fusions. So we use computations with the groups in question or information about these groups beyond the character table, and perhaps additionally character theoretic arguments.
The group representations are taken from the ATLAS of Group Representations [WWT+] and are accessed via the GAP package AtlasRep ([WPN+11]).

        gap> LoadPackage( "atlasrep" );
        true

### 7.1 U3(3).2 → Fi24′ (November 2002)

The group G = Fi24′ contains a maximal subgroup H of type U3(3).2. From the character tables of G and H, one gets a lot of essentially different possibilities (and additionally this takes quite some time). We use the description of H as the normalizer in G of a U3(3) type subgroup containing elements in the classes `2B`, `3D`, `3E`, `4C`, `4C`, `6J`, `7B`, `8C`, and `12M` (see [BN95]).

        gap> t:= CharacterTable( "F3+" );
        CharacterTable( "F3+" )
        gap> s:= CharacterTable( "U3(3).2" );
        CharacterTable( "U3(3).2" )
        gap> tnames:= ClassNames( t, "ATLAS" );
        [ "1A", "2A", "2B", "3A", "3B", "3C", "3D", "3E", "4A", "4B", "4C", "5A",
          "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "7A",
          "7B", "8A", "8B", "8C", "9A", "9B", "9C", "9D", "9E", "9F", "10A", "10B",
          "11A", "12A", "12B", "12C", "12D", "12E", "12F", "12G", "12H", "12I",
          "12J", "12K", "12L", "12M", "13A", "14A", "14B", "15A", "15B", "15C",
          "16A", "17A", "18A", "18B", "18C", "18D", "18E", "18F", "18G", "18H",
          "20A", "20B", "21A", "21B", "21C", "21D", "22A", "23A", "23B", "24A",
          "24B", "24C", "24D", "24E", "24F", "24G", "26A", "27A", "27B", "27C",
          "28A", "29A", "29B", "30A", "30B", "33A", "33B", "35A", "36A", "36B",
          "36C", "36D", "39A", "39B", "39C", "39D", "42A", "42B", "42C", "45A",
          "45B", "60A" ]
        gap> OrdersClassRepresentatives( s );
        [ 1, 2, 3, 3, 4, 4, 6, 7, 8, 12, 2, 4, 6, 8, 12, 12 ]
        gap> sfust:= List( [ "1A", "2B", "3D", "3E", "4C", "4C", "6J", "7B", "8C",
        >                    "12M" ], x -> Position( tnames, x ) );
        [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50 ]
        gap> sfust:= PossibleClassFusions( s, t, rec( fusionmap:= sfust ) );
        [ [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50, 3, 9, 23, 28, 43, 43 ],
          [ 1, 3, 7, 8, 11, 11, 22, 25, 28, 50, 3, 11, 23, 28, 50, 50 ] ]
        gap> OrdersClassRepresentatives( s );
        [ 1, 2, 3, 3, 4, 4, 6, 7, 8, 12, 2, 4, 6, 8, 12, 12 ]

So we still have two possibilities, which differ on the outer classes of element order 4 and 12.
Our idea is to take a subgroup U of H that contains such elements, and to compute the possible class fusions of U into G, via the factorization through a suitable maximal subgroup M of G.
We take U = NH(〈g 〉) where g is an element in the first class of order three elements of H; this is a maximal subgroup of H, of order 216.

        gap> Maxes( s );
        [ "U3(3)", "3^(1+2):SD16", "L3(2).2", "2^(1+4).S3", "4^2:D12" ]
        gap> SizesCentralizers( s );
        [ 12096, 192, 216, 18, 96, 32, 24, 7, 8, 12, 48, 48, 6, 8, 12, 12 ]
        gap> u:= CharacterTable( Maxes( s )[2] );;
        gap> ufuss:= GetFusionMap( u, s );
        [ 1, 2, 11, 3, 4, 5, 12, 7, 13, 9, 9, 15, 16, 10 ]

Candidates for M are those subgroups of G that contain elements in the class `3D` of G whose centralizer is the full `3D` centralizer in G.

        gap> 3Dcentralizer:= SizesCentralizers( t )[7];
        153055008
        gap> cand:= [];;
        gap> for name in Maxes( t ) do
        >      m:= CharacterTable( name );
        >      mfust:= GetFusionMap( m, t );
        >      if ForAny( [ 1 .. Length( mfust ) ],
        >          i -> mfust[i] = 7 and SizesCentralizers( m )[i] = 3Dcentralizer )
        >      then
        >        Add( cand, m );
        >      fi;
        >    od;
        gap> cand;
        [ CharacterTable( "3^7.O7(3)" ), CharacterTable( "3^2.3^4.3^8.(A5x2A4).2" ) ]

For these two groups M, we show that the possible class fusions from U to G via M factorize through H only if the second possible class fusion from H to G is chosen.

        gap> possufust:= List( sfust, x -> CompositionMaps( x, ufuss ) );
        [ [ 1, 3, 3, 7, 8, 11, 9, 22, 23, 28, 28, 43, 43, 50 ],
          [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ]
        gap> m:= cand[1];;
        gap> ufusm:= PossibleClassFusions( u, m );;
        gap> Length( ufusm );
        242
        gap> comp:= List( ufusm, x -> CompositionMaps( GetFusionMap( m, t ), x ) );;
        gap> Intersection( possufust, comp );
        [ [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ]
        gap> m:= cand[2];;
        gap> ufusm:= PossibleClassFusions( u, m );;
        gap> Length( ufusm );
        256
        gap> comp:= List( ufusm, x -> CompositionMaps( GetFusionMap( m, t ), x ) );;
        gap> Intersection( possufust, comp );
        [ [ 1, 3, 3, 7, 8, 11, 11, 22, 23, 28, 28, 50, 50, 50 ] ]

Finally, we check that the correct fusion is stored in the GAP Character Table Library.

        gap> GetFusionMap( s, t ) = sfust[2];
        true

### 7.2 L2(13).2 → Fi24′ (September 2002)

The class fusion of maximal subgroups U of type L2(13).2 in G = Fi24′ is ambiguous.

        gap> t:= CharacterTable( "F3+" );;
        gap> u:= CharacterTable( "L2(13).2" );;
        gap> fus:= PossibleClassFusions( u, t );;
        gap> repr:= RepresentativesFusions( u, fus, t );;
        gap> Length( repr );
        3

In [LW91,p. 155], it is stated that U′ contains elements in the classes `2B`, `3D`, and `7B` of G. (Note that the two conjugacy classes of groups isomorphic to U have the same class fusion because the outer automorphism of G fixes the relevant classes.)

        gap> filt:= Filtered( repr, x -> t.2b in x and t.3d in x and t.7b in x );
        [ [ 1, 3, 7, 22, 25, 25, 25, 51, 3, 9, 43, 43, 53, 53, 53 ],
          [ 1, 3, 7, 22, 25, 25, 25, 51, 3, 11, 50, 50, 53, 53, 53 ] ]
        gap> ClassNames( t ){ [ 43, 50 ] };
        [ "12f", "12m" ]

So we have to decide whether U contains elements in the class `12F` or in `12M` of G.
The order 12 elements in question lie inside subgroups of type 13 : 12 in U. These subgroups are clearly contained in the Sylow 13 normalizers of G, which are contained in maximal subgroups of type (32:2 ×G2(3)).2 in G; the class fusion of the latter groups is unique up to table automorphisms.

        gap> pos:= Position( OrdersClassRepresentatives( t ), 13 );
        51
        gap> SizesCentralizers( t )[ pos ];
        234
        gap> ClassOrbit( t, pos );
        [ 51 ]
        gap> cand:= [];;
        gap> for name in Maxes( t ) do
        >      m:= CharacterTable( name );
        >      pos:= Position( OrdersClassRepresentatives( m ), 13 );
        >      if pos <> fail and
        >         SizesCentralizers( m )[ pos ] = 234
        >         and ClassOrbit( m, pos ) = [ pos ] then
        >        Add( cand, m );
        >      fi;
        >    od;
        gap> cand;
        [ CharacterTable( "(3^2:2xG2(3)).2" ) ]
        gap> s:= cand[1];;
        gap> sfust:= PossibleClassFusions( s, t );;

As no 13:12 type subgroup is contained in the derived subgroup of (32:2 ×G2(3)).2, we look at the elements of order 12 in the outer half.

        gap> der:= ClassPositionsOfDerivedSubgroup( s );;
        gap> outer:= Difference( [ 1 .. NrConjugacyClasses( s ) ], der );;
        gap> sfust:= PossibleClassFusions( s, t );;
        gap> imgs:= Set( Flat( List( sfust, x -> x{ outer } ) ) );
        [ 2, 3, 10, 11, 15, 17, 18, 19, 21, 22, 26, 44, 45, 49, 50, 52, 62, 83, 87,
          98 ]
        gap> t.12f in imgs;
        false
        gap> t.12m in imgs;
        true

So L2(13).2 \L2(13) does not contain `12F` elements of G, i. e., we have determined the class fusion of U in G.
Finally, we check whether the correct fusion is stored in the GAP Character Table Library.

        gap> GetFusionMap( u, t ) = filt[2];
        true

### 7.3 M11 → B (April 2009)

The sporadic simple group B contains a maximal subgroup M of the type M11 whose class fusion is ambiguous.

        gap> b:= CharacterTable( "B" );;
        gap> m11:= CharacterTable( "M11" );;
        gap> m11fusb:= PossibleClassFusions( m11, b );;
        gap> Length( m11fusb );
        31
        gap> CompositionMaps( ClassNames( b, "ATLAS" ), Parametrized( m11fusb ) );
        [ "1A", [ "2B", "2D" ], [ "3A", "3B" ], [ "4B", "4E", "4G", "4H", "4J" ],
          [ "5A", "5B" ], [ "6C", "6E", "6H", "6I", "6J" ],
          [ "8B", "8E", "8G", "8J", "8K", "8L", "8M", "8N" ],
          [ "8B", "8E", "8G", "8J", "8K", "8L", "8M", "8N" ], "11A", "11A" ]

According to [Wil93a,Thm. 12.1], M contains no `5A` elements of B. By the proof of [Wil99,Prop. 4.1], the involutions in any S5 type subgroup U of M lie in the class `2C` or `2D` of B, and since the possible class fusions of M computed above admit only involutions in the class `2B` or `2D`, all involutions of U lie in the class `2D`. Again by the proof of [Wil99,Prop. 4.1], U is contained in a maximal subgroup of type Th in B.
Now we use the embedding of U into B via M and Th for determining the class fusion of M into B. The class fusion of the embedding of U via Th is uniquely determined.

        gap> th:= CharacterTable( "Th" );;
        gap> s5:= CharacterTable( "S5" );;
        gap> s5fusth:= PossibleClassFusions( s5, th );
        [ [ 1, 2, 4, 8, 2, 7, 11 ] ]
        gap> thfusb:= PossibleClassFusions( th, b );;
        gap> s5fusb:= Set( List( thfusb, x -> CompositionMaps( x, s5fusth[1] ) ) );
        [ [ 1, 5, 7, 19, 5, 17, 29 ] ]

Also the class fusion of U into M is unique, and this determines the class fusion of M into B.

        gap> s5fusm11:= PossibleClassFusions( s5, m11 );
        [ [ 1, 2, 3, 5, 2, 4, 6 ] ]
        gap> m11fusb:= Filtered( m11fusb,
        >                  map -> CompositionMaps( map, s5fusm11[1] ) = s5fusb[1] );
        [ [ 1, 5, 7, 17, 19, 29, 45, 45, 54, 54 ] ]
        gap> CompositionMaps( ClassNames( b, "ATLAS" ), m11fusb[1] );
        [ "1A", "2D", "3B", "4J", "5B", "6J", "8N", "8N", "11A", "11A" ]

(Using the information that the M10 type subgroups of M are also contained in Th type subgroups would not have helped us, since these subgroups do not contain elements of order 6, and two possibilities would have remained.)

### 7.4 L2(11):2 → B (April 2009)

The sporadic simple group B contains a maximal subgroup L of the type L2(11):2 whose class fusion is ambiguous.

        gap> b:= CharacterTable( "B" );;
        gap> l:= CharacterTable( "L2(11).2" );;
        gap> lfusb:= PossibleClassFusions( l, b );;
        gap> Length( lfusb );
        16
        gap> CompositionMaps( ClassNames( b, "ATLAS" ), Parametrized( lfusb ) );
        [ "1A", [ "2B", "2D" ], [ "3A", "3B" ], [ "5A", "5B" ], [ "5A", "5B" ],
          [ "6C", "6H", "6I", "6J" ], "11A", [ "2C", "2D" ],
          [ "4D", "4E", "4F", "4G", "4H", "4J" ], [ "10C", "10E", "10F" ],
          [ "10C", "10E", "10F" ],
          [ "12E", "12F", "12H", "12I", "12J", "12L", "12N", "12P", "12Q", "12R",
              "12S" ],
          [ "12E", "12F", "12H", "12I", "12J", "12L", "12N", "12P", "12Q", "12R",
              "12S" ] ]

According to [Wil93a,Thm. 12.1], L contains no `5A` elements of B. By the proof of [Wil99,Prop. 4.1], B contains exactly one class of L2(11) type subgroups with this property. Hence the subgroup U of index two in L is contained in a maximal subgroup M of type M11 in B, whose class fusion was determined in Section 7.3.
In the same way as we proceeded in Section 7.3, we use the embedding of U into B via L and M for determining the class fusion of L into B.

        gap> m:= CharacterTable( "M11" );;
        gap> u:= CharacterTable( "L2(11)" );;
        gap> ufusm:= PossibleClassFusions( u, m );;
        gap> mfusb:= GetFusionMap( m, b );;
        gap> ufusb:= Set( List( ufusm, x -> CompositionMaps( mfusb, x ) ) );
        [ [ 1, 5, 7, 19, 19, 29, 54, 54 ] ]
        gap> ufusl:= PossibleClassFusions( u, l );
        [ [ 1, 2, 3, 4, 5, 6, 7, 7 ], [ 1, 2, 3, 5, 4, 6, 7, 7 ] ]
        gap> lfusb:= Filtered( lfusb,
        >              map2 -> ForAny( ufusl,
        >                        map1 -> CompositionMaps( map2, map1 ) in ufusb ) );
        [ [ 1, 5, 7, 19, 19, 29, 54, 5, 15, 53, 53, 73, 73 ] ]

### 7.5 L3(3) → B (April 2009)

The sporadic simple group B contains a maximal subgroup T of the type L3(3) whose class fusion is ambiguous.

        gap> b:= CharacterTable( "B" );;
        gap> t:= CharacterTable( "L3(3)" );;
        gap> tfusb:= PossibleClassFusions( t, b );;
        gap> Length( tfusb );
        36

According to [Wil99,Section 9], T contains a subgroup U of the type 32:2S4 that is contained also in a maximal subgroup M of the type 32.33.36.(S4 ×2S4). So we throw away the possible fusions from T to B that are not compatible with the compositions of the embeddings of U into B via T and M.

        gap> m:= CharacterTable( "3^2.3^3.3^6.(S4x2S4)" );;
        gap> g:= PSL(3,3);;
        gap> mx:= MaximalSubgroupClassReps( g );;
        gap> u:= First( mx, x -> Size( x ) = 432 );;
        gap> u:= CharacterTable( u );;
        gap> ufusm:= PossibleClassFusions( u, m );;
        gap> ufust:= PossibleClassFusions( u, t );;
        gap> mfusb:= GetFusionMap( m, b );;
        gap> ufusb:= Set( List( ufusm, map -> CompositionMaps( mfusb, map ) ) );;
        gap> tfusb:= Filtered( tfusb, map -> ForAny( ufust,
        >        map2 -> CompositionMaps( map, map2 ) in ufusb ) );;
        gap> tfusb;
        [ [ 1, 5, 6, 7, 12, 27, 41, 41, 75, 75, 75, 75 ],
          [ 1, 5, 7, 6, 12, 28, 41, 41, 75, 75, 75, 75 ],
          [ 1, 5, 7, 7, 12, 28, 41, 41, 75, 75, 75, 75 ],
          [ 1, 5, 7, 7, 12, 29, 41, 41, 75, 75, 75, 75 ],
          [ 1, 5, 7, 7, 17, 29, 45, 45, 75, 75, 75, 75 ] ]

Now we use that T does not contain `4E` elements of B (again see [Wil99,Section 9]). Thus the last of the five candidates is the correct class fusion.

        gap> ClassNames( b, "ATLAS" ){ [ 12, 17 ] };
        [ "4E", "4J" ]

We check that this map is stored on the library table.

        gap> GetFusionMap( t, b ) = tfusb[5];
        true

### 7.6 L2(17).2 → B (March 2004)

The sporadic simple group B contains a maximal subgroup U of the type L2(17).2 whose class fusion is ambiguous.

        gap> b:= CharacterTable( "B" );;
        gap> u:= CharacterTable( "L2(17).2" );;
        gap> ufusb:= PossibleClassFusions( u, b );
        [ [ 1, 5, 7, 15, 42, 42, 47, 47, 47, 91, 4, 30, 89, 89, 89, 89, 97, 97, 97 ],
          [ 1, 5, 7, 15, 44, 44, 46, 46, 46, 91, 5, 29, 90, 90, 90, 90, 96, 96, 96 ],
          [ 1, 5, 7, 15, 44, 44, 47, 47, 47, 91, 5, 29, 90, 90, 90, 90, 95, 95, 95 ] ]

According to [Wil99,Prop. 11.1], U contains elements in the classes `8M` and `9A` of B. This determines the fusion map.

        gap> names:= ClassNames( b, "ATLAS" );;
        gap> pos:= List( [ "8M", "9A" ], x -> Position( names, x ) );
        [ 44, 46 ]
        gap> ufusb:= Filtered( ufusb, map -> IsSubset( map, pos ) );
        [ [ 1, 5, 7, 15, 44, 44, 46, 46, 46, 91, 5, 29, 90, 90, 90, 90, 96, 96, 96 ] ]

We check that this map is stored on the library table.

        gap> GetFusionMap( u, b ) = ufusb[1];
        true

### 7.7 L2(49).23 → B (June 2006)

The sporadic simple group B contains a class of maximal subgroups of the type L2(49).23 (a non-split extension of L2(49), see [Wil93b,Theorem 2]). Let U be such a subgroup. The class fusion of U in B is not determined by the character tables of U and B.

        gap> u:= CharacterTable( "L2(49).2_3" );;
        gap> b:= CharacterTable( "B" );;
        gap> ufusb:= PossibleClassFusions( u, b );;
        gap> Length( RepresentativesFusions( u, ufusb, b ) );
        2
        gap> ufusb;
        [ [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 128, 128,
              15, 71, 71, 89, 89, 89, 89 ],
          [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 128, 128,
              17, 72, 72, 89, 89, 89, 89 ] ]

We show that the fusion is determined by the embeddings of the Sylow 7 normalizer N, say, of U into U and into the Sylow 7 normalizer of B. (Note that the fusion of the latter group into B has been determined in Section 3.1.)
For that, we compute the character table of N from a representation of U. Note that U is a non-split extension of the simple group L2(49) by the product of a diagonal automorphism and a field automorphism. In [Wil93b], the structure of N is described as 72:(3 ×Q16).

        gap> g:= SL( 2, 49 );;
        gap> gens:= GeneratorsOfGroup( g );;
        gap> f:= GF(49);;
        gap> mats:= List( gens, x -> IdentityMat( 4, f ) );;
        gap> for i in [ 1 .. Length( gens ) ] do
        >      mats[i]{ [ 1, 2 ] }{ [ 1, 2 ] }:= gens[i];
        >      mats[i]{ [ 3, 4 ] }{ [ 3, 4 ] }:= List( gens[i],
        >                                              x -> List( x, y -> y^7 ) );
        >    od;
        gap> fieldaut:= PermutationMat( (1,3)(2,4), 4, f );;
        gap> diagaut:= IdentityMat( 4, f );;
        gap> diagaut[1][1]:= Z(49);;
        gap> diagaut[3][3]:= Z(49)^7;;
        gap> g:= Group( Concatenation( mats, [ fieldaut * diagaut ] ) );;
        gap> v:= [ 1, 0, 0, 0 ] * Z(7)^0;;
        gap> orb:= Orbit( g, v, OnLines );;
        gap> act:= Action( g, orb, OnLines );;
        gap> n:= Normalizer( act, SylowSubgroup( act, 7 ) );;
        gap> ntbl:= CharacterTable( n );;

Now we compute the possible class fusions of N into B, via the Sylow 7 normalizer in B.

        gap> bn7:= CharacterTable( "BN7" );;
        gap> nfusbn7:= PossibleClassFusions( ntbl, bn7 );;
        gap> Length( RepresentativesFusions( ntbl, nfusbn7, bn7 ) );
        3
        gap> nfusb:= SetOfComposedClassFusions( PossibleClassFusions( bn7, b ),
        >                                       nfusbn7 );;
        gap> Length( RepresentativesFusions( ntbl, nfusb, b ) );
        5

Although there are several possibilities, this information is enough to exclude one of the possible fusions of U into B.

        gap> nfusu:= PossibleClassFusions( ntbl, u );;
        gap> Length( nfusu );
        4
        gap> filt:= Filtered( ufusb,
        >              x -> ForAny( nfusu, y -> CompositionMaps( x, y ) in nfusb ) );
        [ [ 1, 5, 7, 15, 19, 28, 31, 42, 42, 71, 125, 125, 128, 128, 128, 128, 128,
              17, 72, 72, 89, 89, 89, 89 ] ]
        gap> ClassNames( b, "ATLAS" ){ filt[1] };
        [ "1A", "2D", "3B", "4H", "5B", "6I", "7A", "8K", "8K", "12Q", "24L", "24L",
          "25A", "25A", "25A", "25A", "25A", "4J", "12R", "12R", "16G", "16G", "16G",
          "16G" ]

So the class fusion of U into B can be described by the property that the elements of order four inside and outside the simple subgroup L2(49) are not conjugate in B.
We check that the correct map is stored on the library table.

        gap> GetFusionMap( u, b ) in filt;
        true

Let us confirm that the two groups of the types L2(49).21 and L2(49).22 cannot occur as subgroups of B. First we show that L2(49).21 is isomorphic with PGL(2,49), an extension of L2(49) by a diagonal automorphism, and L2(49).22 is an extension by a field automorphism.

        gap> NrConjugacyClasses( u );  NrConjugacyClasses( act );
        24
        24
        gap> u:= CharacterTable( "L2(49).2_1" );;
        gap> g:= Group( Concatenation( mats, [ diagaut ] ) );;
        gap> orb:= Orbit( g, v, OnLines );;
        gap> act:= Action( g, orb, OnLines );;
        gap> Size(act );
        117600
        gap> NrConjugacyClasses( u );  NrConjugacyClasses( act );
        51
        51
        gap> u:= CharacterTable( "L2(49).2_2" );;
        gap> g:= Group( Concatenation( mats, [ fieldaut ] ) );;
        gap> orb:= Orbit( g, v, OnLines );;
        gap> act:= Action( g, orb, OnLines );;
        gap> NrConjugacyClasses( u );  NrConjugacyClasses( act );
        27
        27

The group L2(49).21 can be excluded because no class fusion into B is possible.

        gap> PossibleClassFusions( CharacterTable( "L2(49).2_1" ), b );
        [  ]

For L2(49).22, it is not that easy. We would get several possible class fusions into B. However, the Sylow 7 normalizer of L2(49).22 does not admit a class fusion into the Sylow 7 normalizer of B.

        gap> n:= Normalizer( act, SylowSubgroup( act, 7 ) );;
        gap> Length( PossibleClassFusions( CharacterTable( n ), bn7 ) );
        0

### 7.8 23.L3(2) → G2(5) (January 2004)

The Chevalley group G = G2(5) contains a maximal subgroup U of the type 23.L3(2) whose class fusion is ambiguous.

        gap> t:= CharacterTable( "G2(5)" );;
        gap> s:= CharacterTable( "2^3.L3(2)" );;
        gap> sfust:= PossibleClassFusions( s, t );;
        gap> RepresentativesFusions( s, sfust, t );
        [ [ 1, 2, 2, 5, 6, 4, 13, 16, 17, 15, 15 ],
          [ 1, 2, 2, 5, 6, 4, 14, 16, 17, 15, 15 ] ]
        gap> OrdersClassRepresentatives( s );
        [ 1, 2, 2, 4, 4, 3, 6, 8, 8, 7, 7 ]

So the question is whether U contains elements in the class `6B` or `6C` of G (position 13 or 14 in the ATLAS table). We use a permutation representation of G, restrict it to U, and compute the centralizer in G of a suitable element of order 6 in U.

        gap> g:= AtlasGroup( "G2(5)" );;
        gap> u:= AtlasSubgroup( "G2(5)", 7 );;
        gap> Size( u );
        1344
        gap> repeat
        >      x:= Random( u );
        >    until Order( x ) = 6;
        gap> siz:= Size( Centralizer( g, x ) );
        36
        gap> Filtered( [ 1 .. NrConjugacyClasses( t ) ],
        >              i -> SizesCentralizers( t )[i] = siz );
        [ 14 ]

So U contains `6C` elements in G2(5).

        gap> GetFusionMap( s, t ) in Filtered( sfust, map -> 14 in map );
        true

### 7.9 51+4.21+4.A5.4 → B (April 2009)

The sporadic simple group B contains a maximal subgroup M of the type 51+4.21+4.A5.4 whose class fusion is ambiguous.

        gap> b:= CharacterTable( "B" );;
        gap> m:= CharacterTable( "5^(1+4).2^(1+4).A5.4" );;
        gap> mfusb:= PossibleClassFusions( m, b );;
        gap> Length( mfusb );
        4
        gap> repres:= RepresentativesFusions( m, mfusb, b );;
        gap> Length( repres );
        2

The restriction of the unique irreducible character of degree 4 371 distinguishes the two possibilities,

        gap> char:= Filtered( Irr( b ), x -> x[1] = 4371 );;
        gap> Length( char );
        1
        gap> rest:= List( repres, map -> char[1]{ map } );;
        gap> scprs:= MatScalarProducts( m, Irr( m ), rest );;
        gap> constit:= List( scprs,
        >                x -> Filtered( [1 .. Length(x) ], i -> x[i] <> 0 ) );
        [ [ 2, 27, 60, 63, 73, 74, 75, 79, 82 ],
          [ 2, 27, 60, 63, 70, 72, 75, 79, 84 ] ]
        gap> List( constit, x -> List( Irr( m ){ x }, Degree ) );
        [ [ 1, 6, 384, 480, 400, 400, 500, 1000, 1200 ],
          [ 1, 6, 384, 480, 100, 300, 500, 1000, 1600 ] ]

The database [WWT+] contains the 3-modular reduction of the irreducible representation of degree 4 371 and also a straight line program for restricting this representation to M. We access these data via the GAP package AtlasRep (see [WPN+11]), and compute the composition factors of the natural module of this restriction.

        gap> g:= AtlasSubgroup( "B", Dimension, 4371, Ring, GF(3), 21 );;
        gap> module:= GModuleByMats( GeneratorsOfGroup( g ), GF(3) );;
        gap> dec:= MTX.CompositionFactors( module );;
        gap> SortedList( List( dec, x -> x.dimension ) );
        [ 1, 6, 100, 384, 400, 400, 400, 480, 1000, 1200 ]

We see that exactly one ordinary constituent does not stay irreducible upon restriction to characteristic 3. Thus the first of the two possible class fusions is the correct one.

### 7.10 The fusion from the character table of 72:2L2(7).2 into the table of marks (January 2004)

It can happen that the class fusion from the ordinary character table of a group G into the table of marks of G is not unique up to table automorphisms of the character table of G.
As an example, consider G = 72:2L2(7).2, a maximal subgroup in the sporadic simple group He.
G contains four classes of cyclic subgroups of order 7. One contains the elements in the normal subgroup of type 72, and the other three are preimages of the order 7 elements in the factor group L2(7). The conjugacy classes of nonidentity elements in the latter three classes split into two Galois conjugates each, which are permuted cyclicly by the table automorphisms of the character table of G, but on which the stabilizer of one class acts trivially. This means that determining one of the three classes determines also the other two.

        gap> tbl:= CharacterTable( "7^2:2psl(2,7)" );
        CharacterTable( "7^2:2psl(2,7)" )
        gap> tom:= TableOfMarks( tbl );
        TableOfMarks( "7^2:2L2(7)" )
        gap> fus:= PossibleFusionsCharTableTom( tbl, tom );
        [ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 10, 9, 16, 7, 10, 9, 8, 16 ],
          [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 9, 8, 10, 16, 7, 8, 10, 9, 16 ],
          [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 10, 9, 8, 16, 7, 9, 8, 10, 16 ],
          [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ],
          [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 10, 8, 9, 16, 7, 8, 9, 10, 16 ],
          [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 9, 10, 8, 16, 7, 10, 8, 9, 16 ] ]
        gap> reps:= RepresentativesFusions( tbl, fus, Group(()) );
        [ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ],
          [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 10, 9, 16, 7, 10, 9, 8, 16 ] ]
        gap> AutomorphismsOfTable( tbl );
        Group([ (9,14)(10,17)(11,15)(12,16)(13,18), (7,8), (10,11,12)(15,16,17) ])
        gap> OrdersClassRepresentatives( tbl );
        [ 1, 7, 2, 4, 3, 6, 8, 8, 7, 7, 7, 7, 14, 7, 7, 7, 7, 14 ]
        gap> perms1:= PermCharsTom( reps[1], tom );;
        gap> perms2:= PermCharsTom( reps[2], tom );;
        gap> perms1 = perms2;
        false
        gap> Set( perms1 ) = Set( perms2 );
        true

The table of marks of G does not distinguish the three classes of cyclic subgroups, there are permutations of rows and columns that act as an S3 on them.
Note that an S3 acts on the classes in question in the rational character table. So it is due to the irrationalities in the character table that it contains more information.

        gap> Display( tbl );
        7^2:2psl(2,7)

              2  4  .  4  3  1  1  3  3   1   .   .   .   1   1   .   .   .   1
              3  1  .  1  .  1  1  .  .   .   .   .   .   .   .   .   .   .   .
              7  3  3  1  .  .  .  .  .   2   2   2   2   1   2   2   2   2   1

                1a 7a 2a 4a 3a 6a 8a 8b  7b  7c  7d  7e 14a  7f  7g  7h  7i 14b
             2P 1a 7a 1a 2a 3a 3a 4a 4a  7b  7c  7d  7e  7b  7f  7g  7h  7i  7f
             3P 1a 7a 2a 4a 1a 2a 8b 8a  7f  7i  7g  7h 14b  7b  7d  7e  7c 14a
             5P 1a 7a 2a 4a 3a 6a 8b 8a  7f  7i  7g  7h 14b  7b  7d  7e  7c 14a
             7P 1a 1a 2a 4a 3a 6a 8a 8b  1a  1a  1a  1a  2a  1a  1a  1a  1a  2a
            11P 1a 7a 2a 4a 3a 6a 8b 8a  7b  7c  7d  7e 14a  7f  7g  7h  7i 14b
            13P 1a 7a 2a 4a 3a 6a 8b 8a  7f  7i  7g  7h 14b  7b  7d  7e  7c 14a

        X.1      1  1  1  1  1  1  1  1   1   1   1   1   1   1   1   1   1   1
        X.2      3  3  3 -1  .  .  1  1   B   B   B   B   B  /B  /B  /B  /B  /B
        X.3      3  3  3 -1  .  .  1  1  /B  /B  /B  /B  /B   B   B   B   B   B
        X.4      6  6  6  2  .  .  .  .  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
        X.5      7  7  7 -1  1  1 -1 -1   .   .   .   .   .   .   .   .   .   .
        X.6      8  8  8  . -1 -1  .  .   1   1   1   1   1   1   1   1   1   1
        X.7      4  4 -4  .  1 -1  .  .  -B  -B  -B  -B   B -/B -/B -/B -/B  /B
        X.8      4  4 -4  .  1 -1  .  . -/B -/B -/B -/B  /B  -B  -B  -B  -B   B
        X.9      6  6 -6  .  .  .  A -A  -1  -1  -1  -1   1  -1  -1  -1  -1   1
        X.10     6  6 -6  .  .  . -A  A  -1  -1  -1  -1   1  -1  -1  -1  -1   1
        X.11     8  8 -8  . -1  1  .  .   1   1   1   1  -1   1   1   1   1  -1
        X.12    48 -1  .  .  .  .  .  .   6  -1  -1  -1   .   6  -1  -1  -1   .
        X.13    48 -1  .  .  .  .  .  .   C  -1  /C  /D   .  /C   C   D  -1   .
        X.14    48 -1  .  .  .  .  .  .   C  /C  /D  -1   .  /C   D  -1   C   .
        X.15    48 -1  .  .  .  .  .  .  /C   D  -1   C   .   C  -1  /C  /D   .
        X.16    48 -1  .  .  .  .  .  .   C  /D  -1  /C   .  /C  -1   C   D   .
        X.17    48 -1  .  .  .  .  .  .  /C   C   D  -1   .   C  /D  -1  /C   .
        X.18    48 -1  .  .  .  .  .  .  /C  -1   C   D   .   C  /C  /D  -1   .

        A = E(8)-E(8)^3
          = Sqrt(2) = r2
        B = E(7)+E(7)^2+E(7)^4
          = (-1+Sqrt(-7))/2 = b7
        C = 2*E(7)+2*E(7)^2+2*E(7)^4
          = -1+Sqrt(-7) = 2b7
        D = -3*E(7)-3*E(7)^2-2*E(7)^3-3*E(7)^4-2*E(7)^5-2*E(7)^6
          = (5-Sqrt(-7))/2 = 2-b7
        gap> mat:= MatTom( tom );;
        gap> mataut:= MatrixAutomorphisms( mat );;
        gap> Print( mataut, "\n" );
        Group( [ (11,12)(23,24)(27,28)(46,47)(53,54)(56,57),
          ( 9,10)(20,21)(31,32)(38,39), ( 8, 9)(20,22)(31,33)(38,40) ] )
        gap> RepresentativesFusions( Group( () ), reps, mataut );
        [ [ 1, 6, 2, 4, 3, 5, 13, 13, 7, 8, 9, 10, 16, 7, 9, 10, 8, 16 ] ]

We could say that thus the fusion is unique up to table automorphisms and automorphisms of the table of marks. But since a group is associated with the table of marks, we compute the character table from the group, and decide which class fusion is correct.

        gap> g:= UnderlyingGroup( tom );;
        gap> tg:= CharacterTable( g );;
        gap> tgfustom:= FusionCharTableTom( tg, tom );;
        gap> trans:= TransformingPermutationsCharacterTables( tg, tbl );;
        gap> tblfustom:= Permuted( tgfustom, trans.columns );;
        gap> orbits:= List( reps, map -> OrbitFusions( AutomorphismsOfTable( tbl ),
        >                                              map, Group( () ) ) );;
        gap> PositionProperty( orbits, orb -> tblfustom in orb );
        2
        gap> PositionProperty( orbits, orb -> FusionToTom( tbl ).map in orb );
        2

So we see that the second one of the possibilities above is the right one.

### 7.11 3 ×U4(2) → 31.U4(3) (March 2010)

According to the ATLAS (see [CCN+85,p. 52]), the simple group U4(3) contains two classes of maximal subgroups of the type U4(2). The class fusion of U4(2) into U4(3) is unique up to table automorphisms.

        gap> u42:= CharacterTable( "U4(2)" );;
        gap> u43:= CharacterTable( "U4(3)" );;
        gap> u42fusu43:= PossibleClassFusions( u42, u43 );;
        gap> Length( u42fusu43 );
        4
        gap> Length( RepresentativesFusions( u42, u42fusu43, u43 ) );
        1

More precisely, take the outer automorphism group of U4(3), which is a dihedral group of order eight, and consider the subgroup generated by its central involution (this automorphism is denoted by 21 in the ATLAS) and another involution called 23 in the ATLAS. This subgroup is a Klein four group that induces a permutation group on the classes of U4(3) and thus acts on the four possible class fusions of U4(2) into U4(3). In fact, this action is transitive.
The automorphism 21 swaps each pair of mutually inverse classes of order nine, that is, `9A` is swapped with `9B` and `9C` is swapped with `9D`. All U4(2) type subgroups of U4(3) are invariant under this automorphism, they extend to subgroups of the type U4(2).2 in U4(3).21.

        gap> u43_21:= CharacterTable( "U4(3).2_1" );;
        gap> fus1:= GetFusionMap( u43, u43_21 );
        [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 17, 18 ]
        gap> act1:= Filtered( InverseMap( fus1 ), IsList );
        [ [ 16, 17 ], [ 18, 19 ] ]
        gap> CompositionMaps( ClassNames( u43, "Atlas" ), act1 );
        [ [ "9A", "9B" ], [ "9C", "9D" ] ]

The automorphism 23 swaps `6B` with `6C`, `9A` with `9C`, and `9B` with `9D`. The two classes of U4(2) type subgroups of U4(3) are swapped by this automorphism.

        gap> u43_23:= CharacterTable( "U4(3).2_3" );;
        gap> fus3:= GetFusionMap( u43, u43_23 );
        [ 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 10, 11, 11, 12, 13, 14, 13, 14, 15 ]
        gap> act3:= Filtered( InverseMap( fus3 ), IsList );
        [ [ 4, 5 ], [ 11, 12 ], [ 13, 14 ], [ 16, 18 ], [ 17, 19 ] ]
        gap> CompositionMaps( ClassNames( u43, "Atlas" ), act3 );
        [ [ "3B", "3C" ], [ "6B", "6C" ], [ "7A", "7B" ], [ "9A", "9C" ],
          [ "9B", "9D" ] ]

The ATLAS states that the permutation character induced by the first class of U4(2) type subgroups is `1a+35a+90a`, which means that the subgroups in this class contain `9A` and `9B` elements. Then the permutation character induced by the second class of U4(2) type subgroups is `1a+35b+90a`, and the subgroups in this class contain `9C` and `9D` elements.
So we choose appropriate fusions for the two classes of maximal U4(2) type subgroups.

        gap> firstfus:= First( u42fusu43, x -> IsSubset( x, [ 16, 17 ] ) );
        [ 1, 2, 2, 3, 3, 5, 4, 7, 8, 9, 10, 10, 12, 12, 11, 12, 16, 17, 20, 20 ]
        gap> secondfus:= First( u42fusu43, x -> IsSubset( x, [ 18, 19 ] ) );
        [ 1, 2, 2, 3, 3, 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 11, 18, 19, 20, 20 ]

Let us now consider the central extension 31.U4(3). Since the Schur multiplier of U4(2) has order two, the U4(2) type subgroups of U4(3) lift to groups of the structure 3 ×U4(2) in 31.U4(3). There are eight possible class fusions from 3 ×U4(2) to 31.U4(3), in two orbits of length four under the action of table automorphisms.

        gap> 3u42:= CharacterTable( "Cyclic", 3 ) * u42;
        CharacterTable( "C3xU4(2)" )
        gap> 3u43:= CharacterTable( "3_1.U4(3)" );
        CharacterTable( "3_1.U4(3)" )
        gap> 3u42fus3u43:= PossibleClassFusions( 3u42, 3u43 );;
        gap> Length( 3u42fus3u43 );
        8
        gap> Length( RepresentativesFusions( 3u42, 3u42fus3u43, 3u43 ) );
        2

More precisely, each of the four fusions from U4(2) to U4(3) has exactly two lifts. The four lifts of those fusions from U4(2) to U4(3) with `9A` and `9B` in their image form one orbit under the action of table automorphisms. The other orbit consists of the lifts of those fusions with `9C` and `9D` in their image.

        gap> inducedmaps:= List( 3u42fus3u43, map -> CompositionMaps(
        >        GetFusionMap( 3u43, u43 ), CompositionMaps( map,
        >        InverseMap( GetFusionMap( 3u42, u42 ) ) ) ) );;
        gap> List( inducedmaps, map -> Position( u42fusu43, map ) );
        [ 1, 1, 2, 2, 4, 4, 3, 3 ]

This solves the ambiguity: Fusions from each of the two orbits occur, and we can assign them to the two classes of subgroups by the choice of the fusions from U4(2) to U4(3).
The reason for the asymmetry is that the automorphism 23 of U4(3) does not lift to 31.U4(3). Note that each of the classes `9A`, `9B` of U4(3) has three preimages in 31.U4(3), whereas each of the classes `9C`, `9D` has only one preimage.
In fact the two classes of 3 ×U4(2) type subgroups of 31.U4(3) behave differently. For example, inducing the irreducible characters of a 3 ×U4(2) type subgroup in the first class of maximal subgroups of 31.U4(3) yields no irreducible character, whereas the two irreducible characters of degree 630 are obtained by inducing the irreducible characters of a subgroup in the second class.

        gap> rep:= RepresentativesFusions( 3u42, 3u42fus3u43, 3u43 );
        [ [ 1, 4, 4, 7, 7, 10, 13, 15, 18, 21, 24, 24, 27, 27, 30, 27, 48, 49, 50,
              50, 2, 5, 5, 8, 8, 11, 13, 16, 19, 22, 25, 25, 28, 28, 31, 28, 48, 49,
              51, 51, 3, 6, 6, 9, 9, 12, 13, 17, 20, 23, 26, 26, 29, 29, 32, 29, 48,
              49, 52, 52 ],
          [ 1, 4, 4, 8, 9, 13, 10, 15, 18, 21, 25, 26, 31, 32, 27, 30, 46, 44, 51,
              52, 2, 5, 5, 9, 7, 13, 11, 16, 19, 22, 26, 24, 32, 30, 28, 31, 47, 42,
              52, 50, 3, 6, 6, 7, 8, 13, 12, 17, 20, 23, 24, 25, 30, 31, 29, 32, 45,
              43, 50, 51 ] ]
        gap> irr:= Irr( 3u42 );;
        gap> ind:= InducedClassFunctionsByFusionMap( 3u42, 3u43, irr, rep[1] );;
        gap> Intersection( ind, Irr( 3u43 ) );
        [ Character( CharacterTable( "3_1.U4(3)" ), [ 630, 630*E(3)^2, 630*E(3), 6,
              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,
              2*E(3)^2, 2*E(3), -2, -2*E(3)^2, -2*E(3), 0, 0, 0, -3, -3*E(3)^2,
              -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,
              0, 0, 0, 0, 0, 0, -1, -E(3)^2, -E(3) ] ),
          Character( CharacterTable( "3_1.U4(3)" ), [ 630, 630*E(3), 630*E(3)^2, 6,
              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,
              2*E(3), 2*E(3)^2, -2, -2*E(3), -2*E(3)^2, 0, 0, 0, -3, -3*E(3),
              -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,
              0, 0, 0, 0, 0, 0, 0, -1, -E(3), -E(3)^2 ] ) ]
        gap> ind:= InducedClassFunctionsByFusionMap( 3u42, 3u43, irr, rep[2] );;
        gap> Intersection( ind, Irr( 3u43 ) );
        [  ]

For 61.U4(3) and 121.U4(3), one gets the same phenomenon: We have two orbits of class fusions, one corresponding to each of the two classes of subgroups of the type 3 ×4 Y 2.U4(2). We get 10 irreducible induced characters from a subgroup in the second class (four faithful ones, four with kernel of order two, and the two abovementioned degree 630 characters with kernel of order four) and no irreducible character from a subgroup in the first class.

### 7.12 2.34.23.S4 → 2.A12 (September 2011)

The double cover G of the alternating group A12 contains a maximal subgroup M of the type 2.34.23.S4 whose class fusion is ambiguous.

        gap> 2a12:= CharacterTable( "2.A12" );;
        gap> mtbl:= CharacterTable( "2.3^4.2^3.S4" );;
        gap> mtblfus2a12:= PossibleClassFusions( mtbl, 2a12 );;
        gap> Length( mtblfus2a12 );
        32
        gap> repres:= RepresentativesFusions( mtbl, mtblfus2a12, 2a12 );;
        gap> Length( repres );
        2

We decide the question which of the essentially different two possible class fusion is the right one, by explicitly constructing M as a subgroup of G.
For that, let π denote the natural epimorphism from G to A12, and note that π(M) can be described as the intersection of a S3 ℘S4 type subgroup of S12 with A12. Further note that the generators for G and A12 provided by [WWT+] are compatible in the sense that π can be defined by mapping the generators of G to those of A12.
We need π only for computing one preimage of each given element. Therefore, we represent π implicitly by two epimorphisms from a free group to G and A12, respectively, in order to avoid that GAPprecomputes a lot of unnecessary information for G. This way, computing a preimage of an element of A12 under π is cheap. However, computing the preimage of a subgroup of A12 would be very expensive. So we construct the subgroup of G that is generated by preimages of a set of generators of π(M); later we see that this subgroup is in fact equal to M.

        gap> g:= AtlasGroup( "A12" );
        Group([ (1,2,3), (2,3,4,5,6,7,8,9,10,11,12) ])
        gap> 2g:= AtlasGroup( "2.A12" );
        <matrix group of size 479001600 with 2 generators>
        gap> f:= FreeGroup( 2 );;
        gap> pi1:= GroupHomomorphismByImagesNC( f, 2g, GeneratorsOfGroup( f ),
        >              GeneratorsOfGroup( 2g ) );;
        gap> pi2:= GroupHomomorphismByImagesNC( f, g, GeneratorsOfGroup( f ),
        >              GeneratorsOfGroup( g ) );;
        gap> w:= WreathProduct( SymmetricGroup( 3 ), SymmetricGroup(4) );
        <permutation group of size 31104 with 10 generators>
        gap> NrMovedPoints( w );
        12
        gap> s:= Intersection( w, g );  Size( s );
        <permutation group with 8 generators>
        15552
        gap> m:= SubgroupNC( 2g, List( SmallGeneratingSet( s ),
        >            x -> ImagesRepresentative( pi1,
        >                   PreImagesRepresentative( pi2, x ) ) ) );;

Now we compute the character table of M, using a faithful permutation representation of M.

        gap> iso:= IsomorphismPermGroup( m );;
        gap> t:= CharacterTable( Image( iso ) );;
        gap> Size( t );
        31104
        gap> trans:= TransformingPermutationsCharacterTables( mtbl, t );;
        gap> IsRecord( trans );
        true

Now let us see where the two fusion candidates differ.

        gap> para:= Parametrized( repres );
        [ 1, 2, 6, 10, 8, 12, 7, 11, 9, 13, 5, 5, 17, 17, 17, 17, 3, 4, 24, 22, 27,
          25, 12, 10, 13, 11, 28, 29, 35, 37, 39, 36, 38, 40, 5, 23, 28, 29, 26, 14,
          14, 16, 16, 33, 34, [ 33, 34 ], [ 33, 34 ], 49, 49, 48, 48 ]
        gap> PositionsProperty( para, IsList );
        [ 46, 47 ]
        gap> List( repres, map -> map{ [ 44 .. 47 ] } );
        [ [ 33, 34, 33, 34 ], [ 33, 34, 34, 33 ] ]

So the question is whether the elements in class 44 are conjugate in G to the elements in class 46 or in class 47. In order to answer this question, we compute preimages of the relevant class representatives in the matrix group M.

        gap> positions:= OnTuples( [ 44 .. 47 ], trans.columns );;
        gap> classreps:= List( ConjugacyClasses( t ){ positions },
        >        c -> PreImagesRepresentative( iso, Representative( c ) ) );;
        gap> List( classreps, TraceMat );
        [ Z(3)^0, Z(3), Z(3), Z(3)^0 ]

We are lucky, already the traces of the elements allow us to decide which pairs of elements are G-conjugate; there is no need for an explicit (and expensive) conjugacy test in the matrix group G.
Finally, we check whether the stored fusion is correct.

        gap> good:= First( repres,
        >                  map -> map{ [ 44 .. 47 ] } = [ 33, 34, 34, 33 ] );;
        gap> GetFusionMap( mtbl, 2a12 ) = good;
        true

### 7.13 127:7 → L7(2) (January 2012)

The simple group G = L7(2) contains a maximal subgroup M of the type 127:7 (the normalizer of an extension field type subgroup GL(1,27)) whose class fusion is ambiguous.

        gap> t:= CharacterTable( "L7(2)" );;
        gap> s:= CharacterTable( "127:7" );;
        gap> fus:= PossibleClassFusions( s, t );;
        gap> repr:= RepresentativesFusions( s, fus, t );
        [ [ 1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
              114, 115, 117, 116, 76, 76, 77, 76, 77, 77 ],
          [ 1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
              114, 115, 117, 116, 83, 83, 83, 83, 83, 83 ] ]

The two fusion candidates differ only for elements of order 7.

        gap> diff:= Filtered( [ 1 .. Length( repr[1] ) ],
        >                     i -> repr[1][i] <> repr[2][i] );
        [ 20, 21, 22, 23, 24, 25 ]
        gap> OrdersClassRepresentatives( s ){ diff };
        [ 7, 7, 7, 7, 7, 7 ]
        gap> List( repr, l -> l{ diff } );
        [ [ 76, 76, 77, 76, 77, 77 ], [ 83, 83, 83, 83, 83, 83 ] ]
        gap> SizesCentralizers( t ){ [ 76, 77, 83 ] };
        [ 3528, 3528, 49 ]

We can decide which candidate is the correct one if we know the centralizer order in G of the elements of order 7 in M. So we compute this centralizer order.

        gap> g:= Image( IsomorphismPermGroup( GL(7,2) ) );;
        gap> repeat x:= Random( g ); until Order(x) = 127;
        gap> n:= Normalizer( g, SubgroupNC( g, [ x ] ) );;
        gap> Size( n ) / 127;
        7
        gap> repeat x:= Random( n ); until Order( x ) = 7;
        gap> c:= Centralizer( g, x );;
        gap> Size( c );
        49

We see that the second candidate is the fusion from M into G.

        gap> GetFusionMap( s, t ) = repr[2];
        true

### 7.14 L2(59) → M (May 2009)

The sporadic simple Monster group M contains a maximal subgroup G of the type L2(59), see [HW04]. The class fusion of G into M is ambiguous.

        gap> t:= CharacterTable( "M" );;
        gap> s:= CharacterTable( "L2(59)" );;
        gap> fus:= PossibleClassFusions( s, t );;
        gap> repr:= RepresentativesFusions( s, fus, t );
        [ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98,
              52, 32, 52, 14, 12, 98, 52, 32, 5, 98, 12, 98, 52, 3 ],
          [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 100,
              50, 30, 50, 15, 11, 100, 50, 30, 4, 100, 11, 100, 50, 3 ],
          [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 101,
              51, 30, 51, 14, 11, 101, 51, 30, 5, 101, 11, 101, 51, 3 ],
          [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 102,
              53, 32, 53, 18, 12, 102, 53, 32, 6, 102, 12, 102, 53, 3 ],
          [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104,
              52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ] ]

The candidates differ on the classes of element order 30.

        gap> ord:= OrdersClassRepresentatives( s );;
        gap> ord30:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 30 );
        [ 18, 24, 28, 30 ]
        gap> List( repr, x -> x{ ord30 } );
        [ [ 98, 98, 98, 98 ], [ 100, 100, 100, 100 ], [ 101, 101, 101, 101 ],
          [ 102, 102, 102, 102 ], [ 104, 104, 104, 104 ] ]

According to [HW04], G contains elements in the class `30G` of M. This determines the class fusion up to Galois automorphisms.

        gap> pos:= Position( ClassNames( t, "Atlas" ), "30G" );;
        gap> good:= Filtered( fus, map -> pos in map );
        [ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104,
              52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ],
          [ 1, 153, 152, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104,
              52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ] ]
        gap> repr:= RepresentativesFusions( s, good, t );
        [ [ 1, 152, 153, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104,
              52, 33, 52, 17, 12, 104, 52, 33, 5, 104, 12, 104, 52, 3 ] ]
        gap> GetFusionMap( s, t ) = repr[1];
        true

### 7.15 L2(71) → M (May 2009)

The sporadic simple Monster group M contains a maximal subgroup G of the type L2(71), see [HW08]. The class fusion of G into M is ambiguous.

        gap> t:= CharacterTable( "M" );;
        gap> s:= CharacterTable( "L2(71)" );;
        gap> fus:= PossibleClassFusions( s, t );;
        gap> repr:= RepresentativesFusions( s, fus, t );
        [ [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 112,
              112, 11, 19, 112, 112, 114, 60, 36, 27, 114, 17, 114, 27, 7, 60, 114,
              5, 114, 60, 36, 27, 114, 3 ],
          [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 112,
              112, 11, 19, 112, 112, 115, 61, 36, 28, 115, 17, 115, 28, 7, 61, 115,
              5, 115, 61, 36, 28, 115, 3 ],
          [ 1, 169, 170, 112, 112, 112, 112, 19, 112, 11, 112, 112, 19, 112, 112,
              112, 11, 19, 112, 112, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117,
              5, 117, 61, 43, 28, 117, 3 ],
          [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113,
              113, 12, 20, 113, 113, 114, 60, 36, 27, 114, 17, 114, 27, 7, 60, 114,
              5, 114, 60, 36, 27, 114, 3 ],
          [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113,
              113, 12, 20, 113, 113, 115, 61, 36, 28, 115, 17, 115, 28, 7, 61, 115,
              5, 115, 61, 36, 28, 115, 3 ],
          [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113,
              113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117,
              5, 117, 61, 43, 28, 117, 3 ] ]

The candidates differ on the classes of the element orders 7 and 36.

        gap> ord:= OrdersClassRepresentatives( s );;
        gap> ord36:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 36 );
        [ 21, 25, 27, 31, 33, 37 ]
        gap> List( repr, x -> x{ ord36 } );
        [ [ 114, 114, 114, 114, 114, 114 ], [ 115, 115, 115, 115, 115, 115 ],
          [ 117, 117, 117, 117, 117, 117 ], [ 114, 114, 114, 114, 114, 114 ],
          [ 115, 115, 115, 115, 115, 115 ], [ 117, 117, 117, 117, 117, 117 ] ]

According to [NW02,Table 3], G contains elements in the classes `7B` and `36D` of M. This determines the class fusion up to Galois automorphisms.

        gap> pos1:= Position( ClassNames( t, "Atlas" ), "7B" );;
        gap> pos2:= Position( ClassNames( t, "Atlas" ), "36D" );;
        gap> pos:= [ pos1, pos2 ];;
        gap> good:= Filtered( fus, map -> IsSubset( map, pos ) );
        [ [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113,
              113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117,
              5, 117, 61, 43, 28, 117, 3 ],
          [ 1, 170, 169, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113,
              113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117,
              5, 117, 61, 43, 28, 117, 3 ] ]
        gap> repr:= RepresentativesFusions( s, good, t );
        [ [ 1, 169, 170, 113, 113, 113, 113, 20, 113, 12, 113, 113, 20, 113, 113,
              113, 12, 20, 113, 113, 117, 61, 43, 28, 117, 17, 117, 28, 9, 61, 117,
              5, 117, 61, 43, 28, 117, 3 ] ]
        gap> GetFusionMap( s, t ) = repr[1];
        true

### 7.16 L2(41) → M (April 2012)

The sporadic simple Monster group M contains a maximal subgroup G of the type L2(41), see [NW]. The class fusion of G into M is ambiguous.

        gap> t:= CharacterTable( "M" );;
        gap> s:= CharacterTable( "L2(41)" );;
        gap> fus:= PossibleClassFusions( s, t );;
        gap> repr:= RepresentativesFusions( s, fus, t );
        [ [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 70, 70, 19, 70, 70,
              19, 4, 70, 19, 70 ],
          [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 72, 72, 19, 72, 72,
              19, 6, 72, 19, 72 ],
          [ 1, 127, 127, 64, 30, 64, 11, 7, 30, 64, 11, 64, 3, 73, 73, 20, 73, 73,
              20, 5, 73, 20, 73 ],
          [ 1, 127, 127, 66, 33, 66, 12, 7, 33, 66, 12, 66, 3, 72, 72, 19, 72, 72,
              19, 6, 72, 19, 72 ],
          [ 1, 127, 127, 66, 33, 66, 12, 7, 33, 66, 12, 66, 3, 73, 73, 20, 73, 73,
              20, 5, 73, 20, 73 ],
          [ 1, 127, 127, 67, 30, 67, 11, 10, 30, 67, 11, 67, 3, 72, 72, 19, 72, 72,
              19, 6, 72, 19, 72 ],
          [ 1, 127, 127, 67, 30, 67, 11, 10, 30, 67, 11, 67, 3, 73, 73, 20, 73, 73,
              20, 5, 73, 20, 73 ],
          [ 1, 127, 127, 68, 32, 68, 12, 10, 32, 68, 12, 68, 3, 72, 72, 19, 72, 72,
              19, 6, 72, 19, 72 ],
          [ 1, 127, 127, 68, 32, 68, 12, 10, 32, 68, 12, 68, 3, 73, 73, 20, 73, 73,
              20, 5, 73, 20, 73 ],
          [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 72, 72, 19, 72, 72,
              19, 6, 72, 19, 72 ],
          [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 73, 73, 20, 73, 73,
              20, 5, 73, 20, 73 ] ]

The candidates differ on the classes of the element orders 3-8.

        gap> ambig:= Parametrized( repr );;
        gap> ambigpos:= PositionsProperty( ambig, IsList );
        [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ]
        gap> Set( OrdersClassRepresentatives( t ){ ambigpos } );
        [ 3, 4, 5, 6, 7, 8 ]

According to [NW,Theorem 3], G contains elements in the classes `3B` and `4C` of M. This determines the class fusion uniquely.

        gap> pos1:= Position( ClassNames( t, "Atlas" ), "3B" );;
        gap> pos2:= Position( ClassNames( t, "Atlas" ), "4C" );;
        gap> pos:= [ pos1, pos2 ];;
        gap> good:= Filtered( fus, map -> IsSubset( map, pos ) );
        [ [ 1, 127, 127, 69, 33, 69, 12, 9, 33, 69, 12, 69, 3, 73, 73, 20, 73, 73,
              20, 5, 73, 20, 73 ] ]
        gap> GetFusionMap( s, t ) = good[1];
        true

## References

[BN95]
  T. Breuer and S. P. Norton, Improvements to the Atlas, p. 297-327, vol. 11 of London Mathematical Society Monographs. New Series [JLPW95], 1995, Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications. MR 1367961 (96k:20016)
[Bre12]
  T. Breuer, The GAP Character Table Library, Version 1.2, `http://www.math.rwth-aachen.de/` ``~`Thomas.Breuer/` `ctbllib`, Mar 2012, GAP package.
[CCN+85]
  J. H. Conway, R. T. Curtis, S. P. Norton, R. A. Parker, and R. A. Wilson, Atlas of finite groups, Oxford University Press, Eynsham, 1985, Maximal subgroups and ordinary characters for simple groups, With computational assistance from J. G. Thackray. MR 827219 (88g:20025)
[GAP04]
  The GAP Group, GAP-Groups, Algorithms, and Programming, Version 4.4, 2004, `http://www.gap-system.org`.
[HW04]
  P. E. Holmes and R. A. Wilson, PSL2(59) is a subgroup of the Monster, J. London Math. Soc. 69 (2004), no. 1, 141-152. MR 2025332 (2004k:20035)
[HW08]

  , On subgroups of the Monster containing A5's, J. Algebra 319 (2008), no. 7, 2653-2667. MR 2397402 (2009a:20028)
[JLPW95]
  C. Jansen, K. Lux, R. Parker, and R. Wilson, An atlas of Brauer characters, London Mathematical Society Monographs. New Series, vol. 11, The Clarendon Press Oxford University Press, New York, 1995, Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications. MR 1367961 (96k:20016)
[LW91]
  S. A. Linton and R. A. Wilson, The maximal subgroups of the Fischer groups Fi24 and Fi′24, Proc. London Math. Soc. (3) 63 (1991), no. 1, 113-164. MR 1105720 (92h:20031)
[NW]
  S. P. Norton and R. A. Wilson, A correction to the 41-structure of the Monster, a construction of a new maximal subgroup L2(41), and a new Moonshine phenomenon, `http://www.maths.qmul.ac.uk/` ``~`raw/` `pubs files/` `ML241sub.pdf`.
[NW02]

  , Anatomy of the Monster. II, Proc. London Math. Soc. (3) 84 (2002), no. 3, 581-598. MR 1888424 (2003b:20023)
[Wil93a]
  R. A. Wilson, More on maximal subgroups of the Baby Monster, Arch. Math. (Basel) 61 (1993), no. 6, 497-507. MR 1254061 (95i:20021)
[Wil93b]

  , Some new subgroups of the Baby Monster, Bull. London Math. Soc. 25 (1993), no. 1, 23-28. MR 1190359 (93j:20041)
[Wil99]

  , The maximal subgroups of the Baby Monster. I, J. Algebra 211 (1999), no. 1, 1-14. MR 1656568 (2000b:20016)
[WPN+11]
  R. A. Wilson, R. A. Parker, S. Nickerson, J. N. Bray, and T. Breuer, AtlasRep, a GAP Interface to the Atlas of Group Representations, Version 1.5, `http://www.math.rwth-aachen.de/` ``~`Thomas.Breuer/` `atlasrep`, Jul 2011, Refereed GAP package.
[WWT+]
  R. A. Wilson, P. Walsh, J. Tripp, I. Suleiman, R. A. Parker, S. P. Norton, S. Nickerson, S. Linton, J. Bray, and R. Abbott, ATLAS of Finite Group Representations, `http://brauer.maths.qmul.ac.uk/` `Atlas/`.

File translated from TEX by TTH, version 3.59.
On 5 May 2012, 08:52.