Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

9 Ambiguous Class Fusions in the GAP Character Table Library
9.1 Some GAP Utilities
9.2 Fusions Determined by Factorization through Intermediate Subgroups
9.2-1 Co_3N5 → Co_3 (September 2002)
9.2-2 31:15 → B (March 2003)
9.2-3 SuzN3 → Suz (September 2002)
9.2-4 F_{3+}N5 → F_{3+} (March 2002)
9.3 Fusions Determined Using Commutative Diagrams Involving Smaller Subgroups
9.3-1 BN7 → B (March 2002)
9.3-2 (A_4 × O_8^+(2).3).2 → Fi_24^' (November 2002)
9.3-3 A_6 × L_2(8).3 → Fi_24^' (November 2002)
9.3-4 (3^2:D_8 × U_4(3).2^2).2 → B (June 2007)
9.3-5 7^1+4:(3 × 2.S_7) → M (May 2009)
9.3-6 3^7.O_7(3):2 → Fi_24 (November 2010)
9.3-7 ^2E_6(2)N3C → ^2E_6(2) (January 2019)
9.4 Fusions Determined Using Commutative Diagrams Involving Factor Groups
9.4-1 3.A_7 → 3.Suz (December 2010)
9.4-2 S_6 → U_4(2) (September 2011)
9.5 Fusions Determined Using Commutative Diagrams Involving Automorphic Extensions
9.5-1 U_3(8).3_1 → ^2E_6(2) (December 2010)
9.5-2 L_3(4).2_1 → U_6(2) (December 2010)
9.6 Conditions Imposed by Brauer Tables
9.6-1 L_2(16).4 → J_3.2 (January 2004)
9.6-2 L_2(17) → S_8(2) (July 2004)
9.6-3 L_2(19) → J_3 (April 2003)
9.7 Fusions Determined by Information about the Groups
9.7-1 U_3(3).2 → Fi_24^' (November 2002)
9.7-2 L_2(13).2 → Fi_24^' (September 2002)
9.7-3 M_11 → B (April 2009)
9.7-4 L_2(11):2 → B (April 2009)
9.7-5 L_3(3) → B (April 2009)
9.7-6 L_2(17).2 → B (March 2004)
9.7-7 L_2(49).2_3 → B (June 2006)
9.7-8 2^3.L_3(2) → G_2(5) (January 2004)
9.7-9 5^{1+4}.2^{1+4}.A_5.4 → B (April 2009)
9.7-10 The fusion from the character table of 7^2:2L_2(7).2 into the table of marks (January 2004)
9.7-11 3 × U_4(2) → 3_1.U_4(3) (March 2010)
9.7-12 2.3^4.2^3.S_4 → 2.A12 (September 2011)
9.7-13 127:7 → L_7(2) (January 2012)
9.7-14 L_2(59) → M (May 2009)
9.7-15 L_2(71) → M (May 2009)
9.7-16 L_2(41) → M (April 2012)

### 9 Ambiguous Class Fusions in the GAP Character Table Library

Date: January 11th, 2004

This is a collection of examples showing how class fusions between character tables can be determined using the GAP system [GAP21]. 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` (Reference: 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 [Bre22].

The examples use the GAP Character Table Library, so we first load this package.

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

#### 9.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` (Reference: 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` (Reference: 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;;

#### 9.2 Fusions Determined by Factorization through Intermediate Subgroups

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

##### 9.2-1 Co_3N5 → Co_3 (September 2002)

Let H be the Sylow 5 normalizer in the sporadic simple group Co_3. The class fusion of H into Co_3 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 Co_3, we look at those maximal subgroups of Co_3 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 U_3(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 U_3(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 Co_3, 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 Co_3 uniquely up to table automorphisms.

Alternatively, we can use the group U_3(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

##### 9.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

##### 9.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 3_2.U_4(3).2_3^' does not admit a fusion from H.

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

Definitely 3^5:M_11 contains a group isomorphic with H, because the Sylow 3 normalizer in M_11 has the structure 3^2:SD_16; using 3^2+4:2(2^2 × A_4)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

##### 9.2-4 F_{3+}N5 → F_{3+} (March 2002)

The class fusion from the table of the Sylow 5 normalizer H in the sporadic simple group F_{3+} into F_{3+} 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 F_{3+}, 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 F_{3+} that might contain H, only the group of type (A_4 × O_8^+(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 F_{3+}.

    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 (A_4 × O_8^+(2).3).2 into F_{3+} up to table automorphisms (see Section 9.3-2 for this problem), since also the ambiguous result was enough for computing the fusion from H into F_{3+}.

#### 9.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.

##### 9.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 7^2:(3 × 2S_4). 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 ^3D_4(2).3 and 7^2:(3 × 2S_4), and the Sylow 7 normalizers in the former groups have the structure 7^2:(3 × 2A_4), 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

##### 9.3-2 (A_4 × O_8^+(2).3).2 → Fi_24^' (November 2002)

The class fusion of the maximal subgroup M ≅ (A_4 × O_8^+(2).3).2 of G = Fi_24^' 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 A_4 in M lie in the class `3A` of Fi_24^'.

    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 × O_8^+(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 N_M(g) = S ∩ M contains a subgroup U of the type 3 × O_8^+(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.

##### 9.3-3 A_6 × L_2(8).3 → Fi_24^' (November 2002)

The class fusion of the maximal subgroup M ≅ A_6 × L_2(8).3 of G = Fi_24^' 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 A_6 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 A_6 has the form 3^2:2, such a `3A` element in M contains a subgroup U of the structure 3^2:2 × L_2(8).3 which is contained in the `3A` normalizer S in G, which has the structure (3 × O_8^+(3).3).2.

(Note that all classes in the 3^2: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

##### 9.3-4 (3^2:D_8 × U_4(3).2^2).2 → B (June 2007)

Let G be a maximal subgroup of the type (3^2:D_8 × U_4(3).2^2).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 = N_B(⟨ x ⟩) has the structure S_3 × Fi_22.2. The intersection G ∩ N has the structure S_3 × S_3 × U_4(3).2^2, which is the direct product of S_3 and the normalizer in Fi_22.2 of a `3A` element of Fi_22.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 S_3, 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

##### 9.3-5 7^1+4:(3 × 2.S_7) → M (May 2009)

The class fusion of the maximal subgroup U of type 7^1+4:(3 × 2.S_7) 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 7^2+1+2:GL_2(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+19]).

    gap> LoadPackage( "atlasrep", false );
    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 7^2+1+2:GL_2(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

##### 9.3-6 3^7.O_7(3):2 → Fi_24 (November 2010)

The class fusion of the maximal subgroup M ≅ 3^7.O_7(3):2 of G = Fi_24 = F_{3+}.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 3^7 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( 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 S_3 × O_8^+(3):S_3, and the order of U = S ∩ M = N_M( ⟨ 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 O_8^+(3), we see that only the maximal subgroups of the type 3^6:L_4(3) have index dividing 3360 in O_8^+(3). (There are three classes of such subgroups.) This implies that U contains a subgroup of the type S_3 × 3^6:L_4(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^'' ≅ 3^6:L_4(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

##### 9.3-7 ^2E_6(2)N3C → ^2E_6(2) (January 2019)

Let G = ^2E_6(2), and g ∈ G in the conjugacy class `3C`. Using a permutation representation of G, Frank Lübeck has computed a representation and the character table of the maximal subgroup N = N_G(⟨ g ⟩) of G.

    gap> t:= CharacterTable( "2E6(2)" );;
    gap> pos3CinG:= Position( ClassNames( t ), "3c" );
    7
    gap> n:= CharacterTable( "2E6(2)N3C" );;
    gap> nclasses:= SizesConjugacyClasses( n );;
    gap> pos3CinN:= Filtered( [ 1 .. NrConjugacyClasses( n ) ],
    >                         i -> nclasses[i] = 2 );
    [ 2 ]
    gap> nfust:= PossibleClassFusions( n, t );;
    gap> ForAll( nfust, x -> x[ pos3CinN[1] ] = pos3CinG );
    true
    gap> Size( n ) = 2 * SizesCentralizers( t )[ pos3CinG ];
    true
    gap> ForAll( Irr( n ), x -> IsInt( x[ pos3CinN[1] ] ) );
    true

The class fusion of N in G is ambiguous.

    gap> rep:= RepresentativesFusions( n, nfust, t );;
    gap> Length( rep );
    4

We use the fact that g is contained in a subgroup S ≅ Fi_22 of G, ...

    gap> s:= CharacterTable( "Fi22" );;
    gap> sfust:= PossibleClassFusions( s, t );;
    gap> ForAll( sfust, x -> x[6] = pos3CinG );
    true
    gap> pos3CinS:= 6;;

... and that U = N_S(⟨ g ⟩) ≅ 3^1+6:2^3+4:3^2:2 is a maximal subgroup of S whose character table is available. Thus U ≤ N, of index four.

    gap> u:= CharacterTable( Maxes( s )[11] );
    CharacterTable( "3^(1+6):2^(3+4):3^2:2" )
    gap> uclasses:= SizesConjugacyClasses( u );;
    gap> pos3CinU:= Filtered( [ 1 .. NrConjugacyClasses( u ) ],
    >                         i -> uclasses[i] = 2 );
    [ 2 ]
    gap> ufuss:= PossibleClassFusions( u, s );;
    gap> ForAll( ufuss, x -> x[ pos3CinU[1] ] = pos3CinS );
    true
    gap> Size( n ) / Size( u );
    4

Composing the class fusions of U in N and N in G must be equal to the composition of the class fusions of U in S and S in G. This reduces the number of candidates for the fusion of N in G from four to two.

    gap> ufusn:= PossibleClassFusions( u, n );;
    gap> comp:= SetOfComposedClassFusions( sfust, ufuss );;
    gap> good:= Filtered( nfust, map2 -> ForAny( ufusn,
    >               map1 -> CompositionMaps( map2, map1 ) in comp ) );;
    gap> Length( good );
    1728
    gap> goodrep:= RepresentativesFusions( n, good, t );;
    gap> Length( goodrep );
    2

Next we use the fact that g and thus N is invariant under an outer automorphism α, say, of order three of G. Note that such an automorphism acts nontrivially on the conjugacy classes of G, for example because the class fusion of G into G.3 = ⟨ G, α ⟩ shows the existence of orbits of length three, and that the permutation action of α on the classes of G is given by the unique subgroup of order three in the group of table automorphisms of G.

    gap> tfust3:= GetFusionMap( t, CharacterTable( "2E6(2).3" ) );;
    gap> Number( InverseMap( tfust3 ), IsList );
    14
    gap> autt:= AutomorphismsOfTable( t );;
    gap> ord3:= Filtered( autt, x -> Order( x ) = 3 );;
    gap> Length( ord3 );
    2
    gap> alpha:= ord3[1];;
    gap> pos3CinG ^ alpha = pos3CinG;
    true

The character table of N has 26 table automorphisms of order three. We do not know which of them (or perhaps the identity permutation) is induced by the restriction α_N of α to N, but the embedding ι: N → G satisfies α ∘ ι = ι ∘ α_N, and we can check each fusion candidate for the existence of a candidate for α_N such that this relation holds.

    gap> autn:= AutomorphismsOfTable( n );;
    gap> ord3:= Filtered( autn, x -> Order( x ) = 3 );;
    gap> Length( ord3 );
    26
    gap> Add( ord3, () );
    gap> filt:= Filtered( rep, map -> ForAny( ord3, beta ->
    > OnTuples( map, alpha ) = Permuted( map, beta ) ) );;
    gap> Length( filt );
    2

Again, the number of candidates for the fusion of N in G is reduced from four to two. Moreover, we are lucky because only one candidate satifies also the first criterion we have checked.

    gap> inter:= Intersection( good, filt );
    [ [ 1, 7, 5, 6, 7, 2, 3, 4, 27, 30, 24, 32, 25, 26, 9, 11, 12, 13,
          10, 14, 19, 19, 19, 16, 17, 18, 21, 58, 61, 62, 67, 68, 69, 57,
          72, 59, 75, 76, 77, 78, 79, 80, 64, 65, 66, 60, 81, 82, 5, 6,
          7, 6, 7, 7, 7, 7, 6, 7, 6, 7, 7, 24, 25, 27, 26, 28, 30, 29,
          31, 32, 31, 32, 32, 32, 32, 31, 32, 31, 32, 51, 52, 52, 52, 52,
          74, 76, 77, 77, 75, 74, 76, 74, 75, 99, 100, 101, 102, 4, 20,
          29, 31, 32, 36, 36, 42, 42, 39, 40, 41, 49, 49, 49, 49, 49, 49,
          71, 112, 112, 114, 115, 116 ] ]

The class fusion stored in the GAP Character Table Library is this candidate.

    gap> GetFusionMap( n, t ) = inter[1];
    true

Remark:

Note that the structure of N is 3^1+6:2^3+6:3^2:2, as is stated in [Nor]. The structure 3^1+6.2^3+6.(S_3 × 3) claimed in the Atlas [CCN+85, p. 191] is wrong, as we can read off for example from the fact that N has exactly two linear characters.

    gap> Length( LinearCharacters( n ) );
    2

#### 9.4 Fusions Determined Using Commutative Diagrams Involving Factor Groups

##### 9.4-1 3.A_7 → 3.Suz (December 2010)

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

    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.A_7 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 A_7 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.A_7, 3.Suz, and their factors A_7 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.A_7 type subgroups of 3.Suz is determined up to table automorphisms. One of these fusions is stored on the table of 3.A_7.

    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.A_7 in 3.Suz. Note that Suz contains maximal subgroups of the type 3_2.U_4(3).2_3^' (see [CCN+85, p. 131]), and the A_7 type subgroups of U_4(3) (see [CCN+85, p. 52]) lift to groups of the type 3.A_7 in 3_2.U_4(3) because 3_2.U_4(3) does not admit a class fusion from A_7. The preimages in 3.Suz of the 3.A_7 type subgroups of Suz have the structure 3 × 3.A_7.

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

##### 9.4-2 S_6 → U_4(2) (September 2011)

The simple group G = U_4(2) contains a maximal subgroup U of type S_6. 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( 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 S_6 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( 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

#### 9.5 Fusions Determined Using Commutative Diagrams Involving Automorphic Extensions

##### 9.5-1 U_3(8).3_1 → ^2E_6(2) (December 2010)

According to the Atlas (see [CCN+85, p. 191]), the group G = ^2E_6(2) contains a maximal subgroup U of the type U_3(8).3_1. 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 = ^2E_6(2).2 of G, the subgroup U extends to a group U.2 of the type U_3(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( 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( 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( 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

##### 9.5-2 L_3(4).2_1 → U_6(2) (December 2010)

According to the Atlas (see [CCN+85, p. 115]), the group G = U_6(2) contains a maximal subgroup U of the type L_3(4).2_1. 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 = U_6(2).3 of G, the subgroup U extends to a group U.3 of the type L_3(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 9.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^' ≅ L_3(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( 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( 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

#### 9.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 9.6-3 below.

##### 9.6-1 L_2(16).4 → J_3.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 L_2(16).4 into J_3.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 J_3, but J_3 does not contain a subgroup of type L_2(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 J_3.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 ([Bre22]).

    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

Remark:

In May 2015, the 19-modular character table of J_3 has been corrected, by swapping the two classes of element order 17. Since the class fusion of L_2(16).4 into J_3.2 is uniquely determined by the 2-modular tables of L_2(16).4 and J_3.2 and since this class fusion has been compatible with the previous version of the 19-modular table of J_3, the correction does not affect the above arguments.

##### 9.6-2 L_2(17) → S_8(2) (July 2004)

The class fusion of the maximal subgroup M ≅ L_2(17) of G = S_8(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

##### 9.6-3 L_2(19) → J_3 (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 L_2(19) and J_3 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 (L_2(19) and) J_3 does not live in characteristic 19. For example, the unique irreducible Brauer character of degree 110 in the 19-modular table of J_3 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)^3+E(17)^5+E(17)^6+E(17)^7+E(17)^10+E(17)^11+E(17)^12
             +E(17)^14,
          E(17)+E(17)^2+E(17)^4+E(17)^8+E(17)^9+E(17)^13+E(17)^15+E(17)^16
         ] ) ]
    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 J_3 that affords φ_3, restrict it to L_2(19), which is the second maximal subgroup of J_3, 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+19]).

    gap> LoadPackage( "atlasrep", false );
    true
    gap> prog:= AtlasProgram( "J3", "maxes", 2 );
    rec( groupname := "J3", identifier := [ "J3", "J3G1-max2W1", 1 ],
      program := <straight line program>, size := 3420,
      standardization := 1, subgroupname := "L2(19)", version := "1" )
    gap> gens:= OneAtlasGeneratingSetInfo( "J3", Characteristic, 19,
    >               Dimension, 110 );;
    gap> gens:= AtlasGenerators( gens );
    rec( contents := "core", 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

Remark:

In May 2015, the 19-modular character table of J_3 has been corrected, by swapping the two classes of element order 17. This affects the above computations only in one place, where the values of the character `deg110` are shown.

#### 9.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+19]).

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

##### 9.7-1 U_3(3).2 → Fi_24^' (November 2002)

The group G = Fi_24^' contains a maximal subgroup H of type U_3(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 U_3(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 = N_H(⟨ 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

##### 9.7-2 L_2(13).2 → Fi_24^' (September 2002)

The class fusion of maximal subgroups U of type L_2(13).2 in G = Fi_24^' 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 (3^2:2 × G_2(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 (3^2:2 × G_2(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 L_2(13).2 ∖ L_2(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

##### 9.7-3 M_11 → B (April 2009)

The sporadic simple group B contains a maximal subgroup M of the type M_11 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 S_5 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( 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 M_10 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.)

##### 9.7-4 L_2(11):2 → B (April 2009)

The sporadic simple group B contains a maximal subgroup L of the type L_2(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 L_2(11) type subgroups with this property. Hence the subgroup U of index two in L is contained in a maximal subgroup M of type M_11 in B, whose class fusion was determined in Section 9.7-3.

In the same way as we proceeded in Section 9.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( 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 ] ]

##### 9.7-5 L_3(3) → B (April 2009)

The sporadic simple group B contains a maximal subgroup T of the type L_3(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 3^2:2S_4 that is contained also in a maximal subgroup M of the type 3^2.3^3.3^6.(S_4 × 2S_4). 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( 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

##### 9.7-6 L_2(17).2 → B (March 2004)

The sporadic simple group B contains a maximal subgroup U of the type L_2(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

##### 9.7-7 L_2(49).2_3 → B (June 2006)

The sporadic simple group B contains a class of maximal subgroups of the type L_2(49).2_3 (a non-split extension of L_2(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 9.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 L_2(49) by the product of a diagonal automorphism and a field automorphism. In [Wil93b], the structure of N is described as 7^2:(3 × Q_16).

    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 L_2(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 L_2(49).2_1 and L_2(49).2_2 cannot occur as subgroups of B. First we show that L_2(49).2_1 is isomorphic with PGL(2,49), an extension of L_2(49) by a diagonal automorphism, and L_2(49).2_2 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 L_2(49).2_1 can be excluded because no class fusion into B is possible.

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

For L_2(49).2_2, it is not that easy. We would get several possible class fusions into B. However, the Sylow 7 normalizer of L_2(49).2_2 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

##### 9.7-8 2^3.L_3(2) → G_2(5) (January 2004)

The Chevalley group G = G_2(5) contains a maximal subgroup U of the type 2^3.L_3(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 G_2(5).

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

##### 9.7-9 5^{1+4}.2^{1+4}.A_5.4 → B (April 2009)

The sporadic simple group B contains a maximal subgroup M of the type 5^{1+4}.2^{1+4}.A_5.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 4371 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 4371 and also a straight line program for restricting this representation to M. We access these data via the GAP package AtlasRep (see [WPN+19]), 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.

##### 9.7-10 The fusion from the character table of 7^2:2L_2(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 = 7^2:2L_2(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 7^2, and the other three are preimages of the order 7 elements in the factor group L_2(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 S_3 on them.

Note that an S_3 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   .   .   .
          3  1  .  1  .  1  1  .  .   .   .   .   .   .   .   .   .   .
          7  3  3  1  .  .  .  .  .   2   2   2   2   1   2   2   2   2

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

    X.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
    X.3      3  3  3 -1  .  .  1  1  /B  /B  /B  /B  /B   B   B   B   B
    X.4      6  6  6  2  .  .  .  .  -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
    X.7      4  4 -4  .  1 -1  .  .  -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
    X.9      6  6 -6  .  .  .  A -A  -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
    X.11     8  8 -8  . -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

          2   1
          3   .
          7   1

            14b
         2P  7f
         3P 14a
         5P 14a
         7P  2a
        11P 14b
        13P 14a

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

    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.

##### 9.7-11 3 × U_4(2) → 3_1.U_4(3) (March 2010)

According to the Atlas (see [CCN+85, p. 52]), the simple group U_4(3) contains two classes of maximal subgroups of the type U_4(2). The class fusion of U_4(2) into U_4(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 U_4(3), which is a dihedral group of order eight, and consider the subgroup generated by its central involution (this automorphism is denoted by 2_1 in the Atlas) and another involution called 2_3 in the Atlas. This subgroup is a Klein four group that induces a permutation group on the classes of U_4(3) and thus acts on the four possible class fusions of U_4(2) into U_4(3). In fact, this action is transitive.

The automorphism 2_1 swaps each pair of mutually inverse classes of order nine, that is, `9A` is swapped with `9B` and `9C` is swapped with `9D`. All U_4(2) type subgroups of U_4(3) are invariant under this automorphism, they extend to subgroups of the type U_4(2).2 in U_4(3).2_1.

    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 2_3 swaps `6B` with `6C`, `9A` with `9C`, and `9B` with `9D`. The two classes of U_4(2) type subgroups of U_4(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 U_4(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 U_4(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 U_4(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 3_1.U_4(3). Since the Schur multiplier of U_4(2) has order two, the U_4(2) type subgroups of U_4(3) lift to groups of the structure 3 × U_4(2) in 3_1.U_4(3). There are eight possible class fusions from 3 × U_4(2) to 3_1.U_4(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 U_4(2) to U_4(3) has exactly two lifts. The four lifts of those fusions from U_4(2) to U_4(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 U_4(2) to U_4(3).

The reason for the asymmetry is that the automorphism 2_3 of U_4(3) does not lift to 3_1.U_4(3). Note that each of the classes `9A`, `9B` of U_4(3) has three preimages in 3_1.U_4(3), whereas each of the classes `9C`, `9D` has only one preimage.

In fact the two classes of 3 × U_4(2) type subgroups of 3_1.U_4(3) behave differently. For example, inducing the irreducible characters of a 3 × U_4(2) type subgroup in the first class of maximal subgroups of 3_1.U_4(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 6_1.U_4(3) and 12_1.U_4(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.U_4(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.

##### 9.7-12 2.3^4.2^3.S_4 → 2.A12 (September 2011)

The double cover G of the alternating group A_12 contains a maximal subgroup M of the type 2.3^4.2^3.S_4 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 A_12, and note that π(M) can be described as the intersection of a S_3 ℘ S_4 type subgroup of S_12 with A_12. Further note that the generators for G and A_12 provided by [WWT+] are compatible in the sense that π can be defined by mapping the generators of G to those of A_12.

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 A_12, respectively, in order to avoid that GAPprecomputes a lot of unnecessary information for G. This way, computing a preimage of an element of A_12 under π is cheap. However, computing the preimage of a subgroup of A_12 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> traces:= List( classreps, TraceMat );
    gap> List( traces, x -> Position( traces, x ) );
    [ 1, 2, 2, 1 ]

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

##### 9.7-13 127:7 → L_7(2) (January 2012)

The simple group G = L_7(2) contains a maximal subgroup M of the type 127:7 (the normalizer of an extension field type subgroup GL(1,2^7)) 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

##### 9.7-14 L_2(59) → M (May 2009)

The sporadic simple Monster group M contains a maximal subgroup G of the type L_2(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

##### 9.7-15 L_2(71) → M (May 2009)

The sporadic simple Monster group M contains a maximal subgroup G of the type L_2(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

##### 9.7-16 L_2(41) → M (April 2012)

The sporadic simple Monster group M contains a maximal subgroup G of the type L_2(41), see [NW13]. 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 [NW13, 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

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 Bib Ind

generated by GAPDoc2HTML