Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/ctbllib/tst/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 19.4.2025 mit Größe 155 kB image not shown  

Quelle  ctblcons.tst   Sprache: unbekannt

 
# This file was created automatically, do not edit!
#############################################################################
##
#W  ctblcons.tst            GAP 4 package CTblLib               Thomas Breuer
##
##  This file contains the GAP code of examples in the package
##  documentation files.
##  
##  In order to run the tests, one starts GAP from the 'tst' subdirectory
##  of the 'pkg/ctbllib' directory, and calls 'Test( "ctblcons.tst" );'.
##  
gap> LoadPackage( "CTblLib", false );
true
gap> save:= SizeScreen();;
gap> SizeScreen( [ 72 ] );;
gap> START_TEST( "ctblcons.tst" );

##
gap> if IsBound( BrowseData ) then
>      data:= BrowseData.defaults.dynamic.replayDefaults;
>      oldinterval:= data.replayInterval;
>      data.replayInterval:= 1;
>    fi;

##  doc2/ctblcons.xml (45-48)
gap> LoadPackage( "ctbllib", "1.1.4", false );
true

##  doc2/ctblcons.xml (172-187)
gap> RepresentativesCharacterTables:= function( list )
>    local reps, entry, r;

>    reps:= [];
>    for entry in list do
>      if ForAll( reps, r -> ( IsCharacterTable( r ) and
>             TransformingPermutationsCharacterTables( entry, r ) = fail )
>           or ( IsRecord( r ) and TransformingPermutationsCharacterTables(
>                                    entry.table, r.table ) = fail ) ) then
>        Add( reps, entry );
>      fi;
>    od;
>    return reps;
>    end;;

##  doc2/ctblcons.xml (513-526)
gap> t:= CharacterTable( "3.L3(4).3" );
CharacterTable( "3.L3(4).3" )
gap> iso1:= CharacterTableIsoclinic( t );
CharacterTable( "Isoclinic(3.L3(4).3,1)" )
gap> iso2:= CharacterTableIsoclinic( t, rec( k:= 2 ) );
CharacterTable( "Isoclinic(3.L3(4).3,2)" )
gap> TransformingPermutationsCharacterTables( t, iso1 );
fail
gap> TransformingPermutationsCharacterTables( t, iso2 );
fail
gap> TransformingPermutationsCharacterTables( iso1, iso2 );
fail

##  doc2/ctblcons.xml (535-539)
gap> IsRecord( TransformingPermutationsCharacterTables( t,
>                  CharacterTable( GL( 3, 4 ) ) ) );
true

##  doc2/ctblcons.xml (567-582)
gap> t:= CharacterTable( "2.A6.2_1" );
CharacterTable( "2.A6.2_1" )
gap> TransformingPermutationsCharacterTables( t,
>        CharacterTableIsoclinic( t ) );
rec( columns := (4,6)(5,7)(11,12)(14,16)(15,17), 
  group := Group([ (16,17), (14,15) ]), 
  rows := (3,5)(4,6)(10,11)(12,15,13,14) )
gap> t:= CharacterTable( "2.L2(25).2_2" );
CharacterTable( "2.L2(25).2_2" )
gap> TransformingPermutationsCharacterTables( t,
>        CharacterTableIsoclinic( t ) );
rec( columns := (7,9)(8,10)(20,21)(23,24)(25,27)(26,28), 
  group := <permutation group with 4 generators>, 
  rows := (3,5)(4,6)(14,15)(16,17)(19,22,20,21) )

##  doc2/ctblcons.xml (609-628)
gap> tbls:= [];;
gap> for m in [ "4_1", "4_2" ] do
>      for a in [ "2_1", "2_2", "2_3" ] do
>        Add( tbls, CharacterTable( Concatenation( m, ".L3(4).", a ) ) );
>      od;
>    od;
gap> tbls;
[ CharacterTable( "4_1.L3(4).2_1" ), CharacterTable( "4_1.L3(4).2_2" )
    , CharacterTable( "4_1.L3(4).2_3" ), 
  CharacterTable( "4_2.L3(4).2_1" ), CharacterTable( "4_2.L3(4).2_2" )
    , CharacterTable( "4_2.L3(4).2_3" ) ]
gap> case1:= Filtered( tbls, t -> Size( ClassPositionsOfCentre( t ) ) = 2 );
[ CharacterTable( "4_1.L3(4).2_1" ), CharacterTable( "4_1.L3(4).2_2" )
    , CharacterTable( "4_2.L3(4).2_1" ), 
  CharacterTable( "4_2.L3(4).2_3" ) ]
gap> case2:= Filtered( tbls, t -> Size( ClassPositionsOfCentre( t ) ) = 4 );
[ CharacterTable( "4_1.L3(4).2_3" ), 
  CharacterTable( "4_2.L3(4).2_2" ) ]

##  doc2/ctblcons.xml (640-647)
gap> isos1:= List( case1, CharacterTableIsoclinic );;
gap> List( [ 1 .. 4 ], i -> Irr( case1[i] ) = Irr( isos1[i] ) );
[ true, true, true, true ]
gap> List( [ 1 .. 4 ],
>      i -> TransformingPermutationsCharacterTables( case1[i], isos1[i] ) );
[ fail, fail, fail, fail ]

##  doc2/ctblcons.xml (656-673)
gap> isos2:= List( case2, CharacterTableIsoclinic );;
gap> List( [ 1, 2 ],
>      i -> TransformingPermutationsCharacterTables( case2[i], isos2[i] ) );
[ rec( columns := (26,27,28,29)(30,31,32,33)(38,39,40,41)(42,43,44,45)
        , group := <permutation group with 5 generators>, 
      rows := (16,17)(18,19)(20,21)(22,23)(28,29)(32,33)(36,37)(40,
        41) ), 
  rec( columns := (28,29,30,31)(32,33)(34,35,36,37)(38,39,40,41)(42,
        43,44,45)(46,47,48,49), group := <permutation group with 
        3 generators>, rows := (15,16)(17,18)(20,21)(22,23)(24,25)(26,
        27)(28,29)(34,35)(38,39)(42,43)(46,47) ) ]
gap> isos3:= List( case2, t -> CharacterTableIsoclinic( t,
>                                ClassPositionsOfCentre( t ) ) );;
gap> List( [ 1, 2 ],
>      i -> TransformingPermutationsCharacterTables( case2[i], isos3[i] ) );
[ fail, fail ]

##  doc2/ctblcons.xml (2049-2074)
gap> tblMG:= CharacterTable( "Cyclic", 3 );;
gap> tblG:= CharacterTable( "Cyclic", 1 );;
gap> tblGA:= CharacterTable( "Cyclic", 2 );;
gap> StoreFusion( tblMG, [ 1, 1, 1 ], tblG );
gap> StoreFusion( tblG, [ 1 ], tblGA );
gap> elms:= Elements( AutomorphismsOfTable( tblMG ) );
[ (), (2,3) ]
gap> orbs:= [ [ 1 ], [ 2, 3 ] ];;
gap> new:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, orbs,
>              "S3" );
[ rec( MGfusMGA := [ 1, 2, 2 ], table := CharacterTable( "S3" ) ) ]
gap> Display( new[1].table );
S3

     2  1  .  1
     3  1  1  .

       1a 3a 2a
    2P 1a 3a 1a
    3P 1a 1a 2a

X.1     1  1  1
X.2     1  1 -1
X.3     2 -1  .

##  doc2/ctblcons.xml (2087-2104)
gap> tblMG:= CharacterTable( "Cyclic", 4 );;
gap> tblG:= CharacterTable( "Cyclic", 2 );;
gap> tblGA:= CharacterTable( "2^2" );;           
gap> OrdersClassRepresentatives( tblMG );
[ 1, 4, 2, 4 ]
gap> StoreFusion( tblMG, [ 1, 2, 1, 2 ], tblG ); 
gap> StoreFusion( tblG, [ 1, 2 ], tblGA );      
gap> elms:= Elements( AutomorphismsOfTable( tblMG ) );
[ (), (2,4) ]
gap> orbs:= Orbits( Group( elms[2] ), [ 1 ..4 ] );;
gap> new:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, orbs,
>              "order8" );
[ rec( MGfusMGA := [ 1, 2, 3, 2 ], 
      table := CharacterTable( "order8" ) ), 
  rec( MGfusMGA := [ 1, 2, 3, 2 ], 
      table := CharacterTable( "order8" ) ) ]

##  doc2/ctblcons.xml (2113-2129)
gap> List( new, x -> OrdersClassRepresentatives( x.table ) );
[ [ 1, 4, 2, 2, 2 ], [ 1, 4, 2, 4, 4 ] ]
gap> Display( new[1].table );
order8

     2  3  2  3  2  2

       1a 4a 2a 2b 2c
    2P 1a 2a 1a 1a 1a

X.1     1  1  1  1  1
X.2     1  1  1 -1 -1
X.3     1 -1  1  1 -1
X.4     1 -1  1 -1  1
X.5     2  . -2  .  .

##  doc2/ctblcons.xml (2229-2254)
gap> tblMG:= CharacterTable( "7:3" ) * CharacterTable( "A5" );;
gap> nsg:= ClassPositionsOfNormalSubgroups( tblMG );
[ [ 1 ], [ 1, 6 .. 11 ], [ 1 .. 5 ], [ 1, 6 .. 21 ], [ 1 .. 15 ], 
  [ 1 .. 25 ] ]
gap> List( nsg, x -> Sum( SizesConjugacyClasses( tblMG ){ x } ) );
[ 1, 7, 60, 21, 420, 1260 ]
gap> tblG:= tblMG / nsg[2];;
gap> tblGA:= CharacterTable( "Cyclic", 3 ) * CharacterTable( "A5.2" );;
gap> GfusGA:= PossibleClassFusions( tblG, tblGA );
[ [ 1, 2, 3, 4, 4, 8, 9, 10, 11, 11, 15, 16, 17, 18, 18 ], 
  [ 1, 2, 3, 4, 4, 15, 16, 17, 18, 18, 8, 9, 10, 11, 11 ] ]
gap> reps:= RepresentativesFusions( Group(()), GfusGA, tblGA );
[ [ 1, 2, 3, 4, 4, 8, 9, 10, 11, 11, 15, 16, 17, 18, 18 ] ]
gap> StoreFusion( tblG, reps[1], tblGA );
gap> acts:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );
[ [ [ 1 ], [ 2 ], [ 3 ], [ 4, 5 ], [ 6, 11 ], [ 7, 12 ], [ 8, 13 ], 
      [ 9, 15 ], [ 10, 14 ], [ 16 ], [ 17 ], [ 18 ], [ 19, 20 ], 
      [ 21 ], [ 22 ], [ 23 ], [ 24, 25 ] ] ]
gap> poss:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA,
>               acts[1], "A12N7" );
[ rec( 
      MGfusMGA := [ 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 5, 6, 7, 9, 8, 10, 
          11, 12, 13, 13, 14, 15, 16, 17, 17 ], 
      table := CharacterTable( "A12N7" ) ) ]

##  doc2/ctblcons.xml (2263-2268)
gap> g:= AlternatingGroup( 12 );;
gap> IsRecord( TransformingPermutationsCharacterTables( poss[1].table,
>                CharacterTable( Normalizer( g, SylowSubgroup( g, 7 ) ) ) ) );
true

##  doc2/ctblcons.xml (2280-2290)
gap> tblh1:= CharacterTable( "7:3" );;
gap> tblg1:= CharacterTable( "7:6" );;
gap> tblh2:= CharacterTable( "A5" );;
gap> tblg2:= CharacterTable( "A5.2" );;
gap> subdir:= CharacterTableOfIndexTwoSubdirectProduct( tblh1, tblg1,
>                 tblh2, tblg2, "(7:3xA5).2" );;
gap> IsRecord( TransformingPermutationsCharacterTables( poss[1].table,
>                subdir.table ) );
true

##  doc2/ctblcons.xml (2326-2376)
gap> listMGA:= [
> [ "3.A6",        "A6",        "A6.2_1",        "3.A6.2_1"       ],
> [ "3.A6",        "A6",        "A6.2_2",        "3.A6.2_2"       ],
> [ "6.A6",        "2.A6",      "2.A6.2_1",      "6.A6.2_1"       ],
> [ "6.A6",        "2.A6",      "2.A6.2_2",      "6.A6.2_2"       ],
> [ "3.A7",        "A7",        "A7.2",          "3.A7.2"         ],
> [ "6.A7",        "2.A7",      "2.A7.2",        "6.A7.2"         ],
> [ "3.L3(4)",     "L3(4)",     "L3(4).2_2",     "3.L3(4).2_2"    ],
> [ "3.L3(4)",     "L3(4)",     "L3(4).2_3",     "3.L3(4).2_3"    ],
> [ "6.L3(4)",     "2.L3(4)",   "2.L3(4).2_2",   "6.L3(4).2_2"    ],
> [ "6.L3(4)",     "2.L3(4)",   "2.L3(4).2_3",   "6.L3(4).2_3"    ],
> [ "12_1.L3(4)",  "4_1.L3(4)", "4_1.L3(4).2_2", "12_1.L3(4).2_2" ],
> [ "12_1.L3(4)",  "4_1.L3(4)", "4_1.L3(4).2_3", "12_1.L3(4).2_3" ],
> [ "12_2.L3(4)",  "4_2.L3(4)", "4_2.L3(4).2_2", "12_2.L3(4).2_2" ],
> [ "12_2.L3(4)",  "4_2.L3(4)", "4_2.L3(4).2_3", "12_2.L3(4).2_3" ],
> [ "3.U3(5)",     "U3(5)",     "U3(5).2",       "3.U3(5).2"      ],
> [ "3.M22",       "M22",       "M22.2",         "3.M22.2"        ],
> [ "6.M22",       "2.M22",     "2.M22.2",       "6.M22.2"        ],
> [ "12.M22",      "4.M22",     "4.M22.2",       "12.M22.2"       ],
> [ "3.L3(7)",     "L3(7)",     "L3(7).2",       "3.L3(7).2"      ],
> [ "3_1.U4(3)",   "U4(3)",     "U4(3).2_1",     "3_1.U4(3).2_1"  ],
> [ "3_1.U4(3)",   "U4(3)",     "U4(3).2_2'",    "3_1.U4(3).2_2'" ],
> [ "3_2.U4(3)",   "U4(3)",     "U4(3).2_1",     "3_2.U4(3).2_1"  ],
> [ "3_2.U4(3)",   "U4(3)",     "U4(3).2_3'",    "3_2.U4(3).2_3'" ],
> [ "6_1.U4(3)",   "2.U4(3)",   "2.U4(3).2_1",   "6_1.U4(3).2_1"  ],
> [ "6_1.U4(3)",   "2.U4(3)",   "2.U4(3).2_2'",  "6_1.U4(3).2_2'" ],
> [ "6_2.U4(3)",   "2.U4(3)",   "2.U4(3).2_1",   "6_2.U4(3).2_1"  ],
> [ "6_2.U4(3)",   "2.U4(3)",   "2.U4(3).2_3'",  "6_2.U4(3).2_3'" ],
> [ "12_1.U4(3)",  "4.U4(3)",   "4.U4(3).2_1",   "12_1.U4(3).2_1" ],
> [ "12_2.U4(3)",  "4.U4(3)",   "4.U4(3).2_1",   "12_2.U4(3).2_1" ],
> [ "3.G2(3)",     "G2(3)",     "G2(3).2",       "3.G2(3).2"      ],
> [ "3.U3(8)",     "U3(8)",     "U3(8).2",       "3.U3(8).2"      ],
> [ "3.U3(8).3_1", "U3(8).3_1", "U3(8).6",       "3.U3(8).6"      ],
> [ "3.J3",        "J3",        "J3.2",          "3.J3.2"         ],
> [ "3.U3(11)",    "U3(11)",    "U3(11).2",      "3.U3(11).2"     ],
> [ "3.McL",       "McL",       "McL.2",         "3.McL.2"        ],
> [ "3.O7(3)",     "O7(3)",     "O7(3).2",       "3.O7(3).2"      ],
> [ "6.O7(3)",     "2.O7(3)",   "2.O7(3).2",     "6.O7(3).2"      ],
> [ "3.U6(2)",     "U6(2)",     "U6(2).2",       "3.U6(2).2"      ],
> [ "6.U6(2)",     "2.U6(2)",   "2.U6(2).2",     "6.U6(2).2"      ],
> [ "3.Suz",       "Suz",       "Suz.2",         "3.Suz.2"        ],
> [ "6.Suz",       "2.Suz",     "2.Suz.2",       "6.Suz.2"        ],
> [ "3.ON",        "ON",        "ON.2",          "3.ON.2"         ],
> [ "3.Fi22",      "Fi22",      "Fi22.2",        "3.Fi22.2"       ],
> [ "6.Fi22",      "2.Fi22",    "2.Fi22.2",      "6.Fi22.2"       ],
> [ "3.2E6(2)",    "2E6(2)",    "2E6(2).2",      "3.2E6(2).2"     ],
> [ "6.2E6(2)",    "2.2E6(2)",  "2.2E6(2).2",    "6.2E6(2).2"     ],
> [ "3.F3+",       "F3+",       "F3+.2",         "3.F3+.2"        ],
> ];;

##  doc2/ctblcons.xml (2402-2409)
gap> Append( listMGA, [
> [ "(2^2x3).L3(4)",  "2^2.L3(4)",   "2^2.L3(4).2_2", "(2^2x3).L3(4).2_2" ],
> [ "(2^2x3).L3(4)",  "2^2.L3(4)",   "2^2.L3(4).2_3", "(2^2x3).L3(4).2_3" ],
> [ "(2^2x3).U6(2)",  "2^2.U6(2)",   "2^2.U6(2).2",   "(2^2x3).U6(2).2"   ],
> [ "(2^2x3).2E6(2)", "2^2.2E6(2)",  "2^2.2E6(2).2",  "(2^2x3).2E6(2).2"  ],
> ] );

##  doc2/ctblcons.xml (2420-2440)
gap> Append( listMGA, [
> [ "3.A6.2_3",       "A6.2_3",    "A6.2^2",      "3.A6.2^2"          ],
> [ "3.L3(4).2_1",    "L3(4).2_1", "L3(4).2^2",   "3.L3(4).2^2"       ],
> [ "3_1.U4(3).2_2",  "U4(3).2_2", "U4(3).(2^2)_{122}",
>                                             "3_1.U4(3).(2^2)_{122}" ],
> [ "3_2.U4(3).2_3",  "U4(3).2_3", "U4(3).(2^2)_{133}",
>                                             "3_2.U4(3).(2^2)_{133}" ],
> [ "3^2.U4(3).2_3'", "3_2.U4(3).2_3'", "3_2.U4(3).(2^2)_{133}",
>                                             "3^2.U4(3).(2^2)_{133}" ],
> [ "2^2.L3(4)",      "L3(4)",     "L3(4).3",     "2^2.L3(4).3"       ],
> [ "(2^2x3).L3(4)",  "3.L3(4)",   "3.L3(4).3",   "(2^2x3).L3(4).3"   ],
> [ "2^2.L3(4).2_1",  "L3(4).2_1", "L3(4).6",     "2^2.L3(4).6"       ],
> [ "2^2.Sz(8)",      "Sz(8)",     "Sz(8).3",     "2^2.Sz(8).3"       ],
> [ "2^2.U6(2)",      "U6(2)",     "U6(2).3",     "2^2.U6(2).3"       ],
> [ "(2^2x3).U6(2)",  "3.U6(2)",   "3.U6(2).3",   "(2^2x3).U6(2).3"   ],
> [ "2^2.O8+(2)",     "O8+(2)",    "O8+(2).3",    "2^2.O8+(2).3"      ],
> [ "2^2.O8+(3)",     "O8+(3)",    "O8+(3).3",    "2^2.O8+(3).3"      ],
> [ "2^2.2E6(2)",     "2E6(2)",    "2E6(2).3",    "2^2.2E6(2).3"      ],
> ] );

##  doc2/ctblcons.xml (2480-2515)
gap> ConstructOrdinaryMGATable:= function( tblMG, tblG, tblGA, name, lib )
>      local acts, poss, trans;

>      acts:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );
>      poss:= Concatenation( List( acts, pi ->
>                 PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, pi,
>                     name ) ) );
>      poss:= RepresentativesCharacterTables( poss );
>      if Length( poss ) = 1 then
>        # Compare the computed table with the library table.
>        if not IsCharacterTable( lib ) then
>          List( poss, x -> AutomorphismsOfTable( x.table ) );
>          Print( "#I  no library table for ", name, "\n" );
>        else
>          trans:= TransformingPermutationsCharacterTables( poss[1].table,
>                      lib );
>          if not IsRecord( trans ) then
>            Print( "#E  computed table and library table for ", name,
>                   " differ\n" );
>          fi;
>          # Compare the computed fusion with the stored one.
>          if OnTuples( poss[1].MGfusMGA, trans.columns )
>                 <> GetFusionMap( tblMG, lib ) then
>            Print( "#E  computed and stored fusion for ", name,
>                   " differ\n" );
>          fi;
>        fi;
>      elif Length( poss ) = 0 then
>        Print( "#E  no solution for ", name, "\n" );
>      else
>        Print( "#E  ", Length( poss ), " possibilities for ", name, "\n" );
>      fi;
>      return poss;
>    end;;

##  doc2/ctblcons.xml (2532-2564)
gap> ConstructModularMGATables:= function( tblMG, tblGA, ordtblMGA )
>    local name, poss, p, modtblMG, modtblGA, modtblMGA, modlib, trans;

>    name:= Identifier( ordtblMGA );
>    poss:= [];
>    for p in PrimeDivisors( Size( ordtblMGA ) ) do
>      modtblMG := tblMG mod p;
>      modtblGA := tblGA mod p;
>      if ForAll( [ modtblMG, modtblGA ], IsCharacterTable ) then
>        modtblMGA:= BrauerTableOfTypeMGA( modtblMG, modtblGA, ordtblMGA );
>        Add( poss, modtblMGA );
>        modlib:= ordtblMGA mod p;
>        if IsCharacterTable( modlib ) then
>          trans:= TransformingPermutationsCharacterTables( modtblMGA.table,
>                      modlib );
>          if not IsRecord( trans ) then
>            Print( "#E  computed table and library table for ", name,
>                   " mod ", p, " differ\n" );
>          fi;
>        else
>          AutomorphismsOfTable( modtblMGA.table );
>          Print( "#I  no library table for ", name, " mod ", p, "\n" );
>        fi;
>      else
>        Print( "#I  not all input tables for ", name, " mod ", p,
>               " available\n" );
>      fi;
>    od;

>    return poss;
>    end;;

##  doc2/ctblcons.xml (2576-2637)
gap> for  input in listMGA do
>      tblMG := CharacterTable( input[1] );
>      tblG  := CharacterTable( input[2] );
>      tblGA := CharacterTable( input[3] );
>      name  := Concatenation( "new", input[4] );
>      lib   := CharacterTable( input[4] );
>      poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );
>      if 1 <> Length( poss ) then
>        Print( "#I  ", Length( poss ), " possibilities for ", name, "\n" );
>      elif lib = fail then
>        Print( "#I  no library table for ", input[4], "\n" );
>      else
>        ConstructModularMGATables( tblMG, tblGA, lib );
>      fi;
>    od;
#I  not all input tables for 3.2E6(2).2 mod 2 available
#I  not all input tables for 3.2E6(2).2 mod 3 available
#I  not all input tables for 3.2E6(2).2 mod 5 available
#I  not all input tables for 3.2E6(2).2 mod 7 available
#I  not all input tables for 3.2E6(2).2 mod 11 available
#I  not all input tables for 3.2E6(2).2 mod 13 available
#I  not all input tables for 3.2E6(2).2 mod 17 available
#I  not all input tables for 3.2E6(2).2 mod 19 available
#I  not all input tables for 6.2E6(2).2 mod 2 available
#I  not all input tables for 6.2E6(2).2 mod 3 available
#I  not all input tables for 6.2E6(2).2 mod 5 available
#I  not all input tables for 6.2E6(2).2 mod 7 available
#I  not all input tables for 6.2E6(2).2 mod 11 available
#I  not all input tables for 6.2E6(2).2 mod 13 available
#I  not all input tables for 6.2E6(2).2 mod 17 available
#I  not all input tables for 6.2E6(2).2 mod 19 available
#I  not all input tables for 3.F3+.2 mod 2 available
#I  not all input tables for 3.F3+.2 mod 3 available
#I  not all input tables for 3.F3+.2 mod 5 available
#I  not all input tables for 3.F3+.2 mod 7 available
#I  not all input tables for 3.F3+.2 mod 13 available
#I  not all input tables for 3.F3+.2 mod 17 available
#I  not all input tables for 3.F3+.2 mod 29 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 2 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 3 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 5 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 7 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 11 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 13 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 17 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 19 available
#I  not all input tables for 3^2.U4(3).(2^2)_{133} mod 2 available
#I  not all input tables for 3^2.U4(3).(2^2)_{133} mod 5 available
#I  not all input tables for 3^2.U4(3).(2^2)_{133} mod 7 available
#I  not all input tables for 2^2.O8+(3).3 mod 5 available
#I  not all input tables for 2^2.O8+(3).3 mod 7 available
#I  not all input tables for 2^2.O8+(3).3 mod 13 available
#I  not all input tables for 2^2.2E6(2).3 mod 2 available
#I  not all input tables for 2^2.2E6(2).3 mod 3 available
#I  not all input tables for 2^2.2E6(2).3 mod 5 available
#I  not all input tables for 2^2.2E6(2).3 mod 7 available
#I  not all input tables for 2^2.2E6(2).3 mod 11 available
#I  not all input tables for 2^2.2E6(2).3 mod 13 available
#I  not all input tables for 2^2.2E6(2).3 mod 17 available
#I  not all input tables for 2^2.2E6(2).3 mod 19 available

##  doc2/ctblcons.xml (2669-2678)
gap> listMGA2:= [
> [ "4_1.L3(4)",  "2.L3(4)",   "2.L3(4).2_1",   "4_1.L3(4).2_1"  ],
> [ "4_1.L3(4)",  "2.L3(4)",   "2.L3(4).2_2",   "4_1.L3(4).2_2"  ],
> [ "4_2.L3(4)",  "2.L3(4)",   "2.L3(4).2_1",   "4_2.L3(4).2_1"  ],
> [ "4.M22",      "2.M22",     "2.M22.2",       "4.M22.2"        ],
> [ "4.U4(3)",    "2.U4(3)",   "2.U4(3).2_2",   "4.U4(3).2_2"    ],
> [ "4.U4(3)",    "2.U4(3)",   "2.U4(3).2_3",   "4.U4(3).2_3"    ],
> ];;

##  doc2/ctblcons.xml (2697-2706)
gap> Append( listMGA2, [
> [ "2^2.L3(4)",     "2.L3(4)",     "2.L3(4).2_2",         "2^2.L3(4).2_2" ],
> [ "2^2.L3(4)",     "2.L3(4)",     "2.L3(4).2_3",         "2^2.L3(4).2_3" ],
> [ "2^2.L3(4).2_1", "2.L3(4).2_1", "2.L3(4).(2^2)_{123}", "2^2.L3(4).2^2" ],
> [ "2^2.O8+(2)",    "2.O8+(2)",    "2.O8+(2).2",          "2^2.O8+(2).2"  ],
> [ "2^2.U6(2)",     "2.U6(2)",     "2.U6(2).2",           "2^2.U6(2).2"   ],
> [ "2^2.2E6(2)",    "2.2E6(2)",    "2.2E6(2).2",          "2^2.2E6(2).2"  ],
> ] );

##  doc2/ctblcons.xml (2719-2724)
gap> Append( listMGA2, [
> [ "12_1.L3(4)", "6.L3(4)", "6.L3(4).2_1", "12_1.L3(4).2_1" ],
> [ "12_2.L3(4)", "6.L3(4)", "6.L3(4).2_1", "12_2.L3(4).2_1" ],
> ] );

##  doc2/ctblcons.xml (2743-2750)
gap> Append( listMGA2, [
> [ "12.M22",     "6.M22",     "6.M22.2",       "12.M22.2"       ],
> [ "12_1.L3(4)", "6.L3(4)",   "6.L3(4).2_2",   "12_1.L3(4).2_2" ],
> [ "12_1.U4(3)", "6_1.U4(3)", "6_1.U4(3).2_2", "12_1.U4(3).2_2" ],
> [ "12_2.U4(3)", "6_2.U4(3)", "6_2.U4(3).2_3", "12_2.U4(3).2_3" ],
> ] );

##  doc2/ctblcons.xml (2761-2768)
gap> Append( listMGA2, [
> [ "(2^2x3).L3(4)",  "6.L3(4)",   "6.L3(4).2_2", "(2^2x3).L3(4).2_2" ],
> [ "(2^2x3).L3(4)",  "6.L3(4)",   "6.L3(4).2_3", "(2^2x3).L3(4).2_3" ],
> [ "(2^2x3).U6(2)",  "6.U6(2)",   "6.U6(2).2",   "(2^2x3).U6(2).2"   ],
> [ "(2^2x3).2E6(2)", "6.2E6(2)",  "6.2E6(2).2",  "(2^2x3).2E6(2).2"  ],
> ] );

##  doc2/ctblcons.xml (2776-2835)
gap> for  input in listMGA2 do
>      tblMG := CharacterTable( input[1] );
>      tblG  := CharacterTable( input[2] );
>      tblGA := CharacterTable( input[3] );
>      name  := Concatenation( "new", input[4] );
>      lib   := CharacterTable( input[4] );
>      poss:= ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );
>      if Length( poss ) = 2 then
>        iso:= CharacterTableIsoclinic( poss[1].table );
>        if IsRecord( TransformingPermutationsCharacterTables( poss[2].table,
>                         iso ) ) then
>          Unbind( poss[2] );
>        fi;
>      elif Length( poss ) = 1 then
>        Print( "#I  unique up to permutation equivalence: ", name, "\n" );
>      fi;
>      if 1 <> Length( poss ) then
>        Print( "#I  ", Length( poss ), " possibilities for ", name, "\n" );
>      elif lib = fail then
>        Print( "#I  no library table for ", input[4], "\n" );
>      else
>        ConstructModularMGATables( tblMG, tblGA, lib );
>      fi;
>    od;
#E  2 possibilities for new4_1.L3(4).2_1
#E  2 possibilities for new4_1.L3(4).2_2
#E  2 possibilities for new4_2.L3(4).2_1
#E  2 possibilities for new4.M22.2
#E  2 possibilities for new4.U4(3).2_2
#E  2 possibilities for new4.U4(3).2_3
#I  unique up to permutation equivalence: new2^2.L3(4).2_2
#I  unique up to permutation equivalence: new2^2.L3(4).2_3
#I  unique up to permutation equivalence: new2^2.L3(4).2^2
#I  unique up to permutation equivalence: new2^2.O8+(2).2
#I  unique up to permutation equivalence: new2^2.U6(2).2
#I  unique up to permutation equivalence: new2^2.2E6(2).2
#I  not all input tables for 2^2.2E6(2).2 mod 2 available
#I  not all input tables for 2^2.2E6(2).2 mod 3 available
#I  not all input tables for 2^2.2E6(2).2 mod 5 available
#I  not all input tables for 2^2.2E6(2).2 mod 7 available
#E  2 possibilities for new12_1.L3(4).2_1
#E  2 possibilities for new12_2.L3(4).2_1
#E  2 possibilities for new12.M22.2
#E  2 possibilities for new12_1.L3(4).2_2
#E  2 possibilities for new12_1.U4(3).2_2
#E  2 possibilities for new12_2.U4(3).2_3
#I  unique up to permutation equivalence: new(2^2x3).L3(4).2_2
#I  unique up to permutation equivalence: new(2^2x3).L3(4).2_3
#I  unique up to permutation equivalence: new(2^2x3).U6(2).2
#I  unique up to permutation equivalence: new(2^2x3).2E6(2).2
#I  not all input tables for (2^2x3).2E6(2).2 mod 2 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 3 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 5 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 7 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 11 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 13 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 17 available
#I  not all input tables for (2^2x3).2E6(2).2 mod 19 available

##  doc2/ctblcons.xml (2857-2881)
gap> tblMG := CharacterTable( "4_2.L3(4)" );;
gap> tblG  := CharacterTable( "2.L3(4)" );;
gap> tblGA := CharacterTable( "2.L3(4).2_3" );;
gap> name  := "new4_2.L3(4).2_3";;
gap> lib   := CharacterTable( "4_2.L3(4).2_3" );;
gap> poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );
#E  4 possibilities for new4_2.L3(4).2_3
[ rec( 
      MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
          12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
          21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ), 
  rec( 
      MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
          12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
          21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ), 
  rec( 
      MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
          12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
          21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ), 
  rec( 
      MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 11, 10, 12, 
          12, 13, 14, 15, 14, 16, 17, 18, 17, 19, 20, 21, 22, 19, 22, 
          21, 20 ], table := CharacterTable( "new4_2.L3(4).2_3" ) ) ]

##  doc2/ctblcons.xml (2901-2908)
gap> IsRecord( TransformingPermutationsCharacterTables( poss[1].table,
>                  CharacterTableIsoclinic( poss[4].table ) ) );
true
gap> IsRecord( TransformingPermutationsCharacterTables( poss[2].table,
>                  CharacterTableIsoclinic( poss[3].table ) ) );
true

##  doc2/ctblcons.xml (2919-2929)
gap> List( poss, x -> PowerMap( x.table, 2 ) );
[ [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
      21, 19, 21, 1, 1, 6, 6, 9, 9, 11, 11, 16, 16, 13, 13 ], 
  [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
      21, 19, 21, 1, 1, 6, 6, 11, 11, 9, 9, 16, 16, 13, 13 ], 
  [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
      21, 19, 21, 3, 3, 8, 8, 9, 9, 11, 11, 18, 18, 15, 15 ], 
  [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
      21, 19, 21, 3, 3, 8, 8, 11, 11, 9, 9, 18, 18, 15, 15 ] ]

##  doc2/ctblcons.xml (2946-2956)
gap> PossiblePowerMaps( poss[1].table, 2 );
[ [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
      21, 19, 21, 1, 1, 6, 6, 11, 11, 9, 9, 16, 16, 13, 13 ], 
  [ 1, 3, 1, 1, 3, 6, 8, 6, 4, 4, 4, 5, 16, 18, 16, 13, 15, 13, 19, 
      21, 19, 21, 1, 1, 6, 6, 9, 9, 11, 11, 16, 16, 13, 13 ] ]
gap> t:= CharacterTable( "4.U4(3)" );;
gap> List( [ "L3(4)", "2.L3(4)", "4_1.L3(4)", "4_2.L3(4)" ], name ->
>          Length( PossibleClassFusions( CharacterTable( name ), t ) ) );
[ 0, 0, 0, 4 ]

##  doc2/ctblcons.xml (2969-2973)
gap> t2:= CharacterTable( "4.U4(3).2_3" );;
gap> List( poss, x -> Length( PossibleClassFusions( x.table, t2 ) ) );
[ 0, 16, 0, 0 ]

##  doc2/ctblcons.xml (3010-3015)
gap> IsRecord( TransformingPermutationsCharacterTables( poss[2].table,
>                  lib ) );
true
gap> ConstructModularMGATables( tblMG, tblGA, lib );;

##  doc2/ctblcons.xml (3026-3049)
gap> tblMG := CharacterTable( "12_2.L3(4)" );;
gap> tblG  := CharacterTable( "6.L3(4)" );;
gap> tblGA := CharacterTable( "6.L3(4).2_3" );;
gap> name  := "new12_2.L3(4).2_3";;
gap> lib   := CharacterTable( "12_2.L3(4).2_3" );;
gap> poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );;
#E  4 possibilities for new12_2.L3(4).2_3
gap> Length( poss );
4
gap> nsg:= ClassPositionsOfNormalSubgroups( poss[1].table );
[ [ 1 ], [ 1, 5 ], [ 1, 7 ], [ 1, 4 .. 7 ], [ 1, 3 .. 7 ], 
  [ 1 .. 7 ], [ 1 .. 50 ], [ 1 .. 62 ] ]
gap> List( nsg, x -> Sum( SizesConjugacyClasses( poss[1].table ){ x } ) );
[ 1, 3, 2, 4, 6, 12, 241920, 483840 ]
gap> factlib:= CharacterTable( "4_2.L3(4).2_3" );;
gap> List( poss, x -> IsRecord( TransformingPermutationsCharacterTables(
>                         x.table / [ 1, 5 ], factlib ) ) );
[ false, true, false, false ]
gap> IsRecord( TransformingPermutationsCharacterTables( poss[2].table,
>                  lib ) );
true
gap> ConstructModularMGATables( tblMG, tblGA, lib );;

##  doc2/ctblcons.xml (3075-3084)
gap> tblMG := CharacterTable( "12_1.U4(3)" );;
gap> tblG  := CharacterTable( "2.U4(3)" );;
gap> tblGA := CharacterTable( "2.U4(3).2_2'" );;
gap> name  := "new12_1.U4(3).2_2'";;
gap> lib   := CharacterTable( "12_1.U4(3).2_2'" );;
gap> poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );;
#E  2 possibilities for new12_1.U4(3).2_2'
gap> ConstructModularMGATables( tblMG, tblGA, lib );;

##  doc2/ctblcons.xml (3096-3103)
gap> Irr( poss[1].table ) = Irr( poss[2].table );
true
gap> iso:= CharacterTableIsoclinic( poss[1].table );;
gap> TransformingPermutationsCharacterTables( iso, poss[2].table );
rec( columns := (), group := <permutation group with 5 generators>, 
  rows := () )

##  doc2/ctblcons.xml (3113-3126)
gap> tblMG := CharacterTable( "12_2.U4(3)" );;
gap> tblG  := CharacterTable( "2.U4(3)" );;
gap> tblGA := CharacterTable( "2.U4(3).2_3'" );;
gap> name  := "new12_2.U4(3).2_3'";;
gap> lib   := CharacterTable( "12_2.U4(3).2_3'" );;
gap> poss  := ConstructOrdinaryMGATable( tblMG, tblG, tblGA, name, lib );;
#E  2 possibilities for new12_2.U4(3).2_3'
gap> ConstructModularMGATables( tblMG, tblGA, lib );;
gap> iso:= CharacterTableIsoclinic( poss[1].table );;
gap> TransformingPermutationsCharacterTables( iso, poss[2].table );
rec( columns := (), group := <permutation group with 8 generators>, 
  rows := () )

##  doc2/ctblcons.xml (3177-3205)
gap> s:= SU(3,8);;
gap> gens:= GeneratorsOfGroup( s );;
gap> imgs1:= List( gens, m -> List( m, v -> List( v, x -> x^4 ) ) );;
gap> imgs2:= List( gens, m -> List( m, v -> List( v, x -> x^16 ) ) );;
gap> f:= GF(64);;
gap> mats:= List( gens, m -> IdentityMat( 9, f ) );;
gap> for i in [ 1 .. Length( gens ) ] do
>      mats[i]{ [ 1 .. 3 ] }{ [ 1 .. 3 ] }:= gens[i];
>      mats[i]{ [ 4 .. 6 ] }{ [ 4 .. 6 ] }:= imgs1[i];
>      mats[i]{ [ 7 .. 9 ] }{ [ 7 .. 9 ] }:= imgs2[i];
>    od;
gap> fieldaut:= NullMat( 9, 9, f );;
gap> fieldaut{ [ 4 .. 6 ] }{ [ 1 .. 3 ] }:= IdentityMat( 3, f );;
gap> fieldaut{ [ 7 .. 9 ] }{ [ 4 .. 6 ] }:= IdentityMat( 3, f );;
gap> fieldaut{ [ 1 .. 3 ] }{ [ 7 .. 9 ] }:= IdentityMat( 3, f );;
gap> v:= [ 1, 0, 0, 1, 0, 0, 1, 0, 0 ] * One( f );;
gap> g:= Group( Concatenation( mats, [ fieldaut ] ) );;
gap> orb:= Orbit( g, v );;
gap> Length( orb );
32319
gap> act:= Action( g, orb );;
gap> Size( act ) = 3 * Size( s );
true
gap> sm:= SmallerDegreePermutationRepresentation( act );;
gap> NrMovedPoints( Image( sm ) );
4617
gap> g:= Image( sm );;

##  doc2/ctblcons.xml (3221-3243)
gap> c:= CyclicGroup( IsPermGroup, 9 );;
gap> dp:= DirectProduct( g, c );;
gap> u:= Image( Embedding( dp, 1 ) );;
gap> c:= Image( Embedding( dp, 2 ) );;
gap> c3:= c.1^3;
(4618,4621,4624)(4619,4622,4625)(4620,4623,4626)
gap> z:= Centre( u );;
gap> Size( z );  Length( GeneratorsOfGroup( z ) );
3
1
gap> diag:= Subgroup( dp, [ c3 * z.1 ] );;
gap> orb:= Orbit( dp, [ 1, 4618 ], OnPairs );;
gap> Length( orb );
41553
gap> orb:= Set( orb );;
gap> orbs:= List( OrbitsDomain( diag, orb, OnSets ), Set );;
gap> Length( orbs );
13851
gap> cp:= Action( dp, orbs, OnSetsSets );;
gap> Size( cp );
148925952

##  doc2/ctblcons.xml (3254-3265)
gap> der:= DerivedSubgroup( cp );;
gap> Index( cp, der );
9
gap> inter:= IntermediateSubgroups( cp, der ).subgroups;;
gap> z:= Centre( cp );;
gap> Size( z );
9
gap> inter:= Filtered( inter, x -> not IsSubset( x, z ) );;
gap> List( inter, Size );
[ 49641984, 49641984, 49641984 ]

##  doc2/ctblcons.xml (3273-3278)
gap> IsomorphismGroups( inter[1], inter[2] ) <> fail;
true
gap> IsomorphismGroups( inter[1], inter[3] ) <> fail;
true

##  doc2/ctblcons.xml (3294-3302)
gap> t1:= CharacterTable( "3.U3(8).3_1" );;
gap> t2:= CharacterTableIsoclinic( t1, rec( k:= 1 ) );;
gap> t3:= CharacterTableIsoclinic( t1, rec( k:= 2 ) );;
gap> TransformingPermutationsCharacterTables( t1, t2 ) <> fail;
true
gap> TransformingPermutationsCharacterTables( t1, t3 ) <> fail;
true

##  doc2/ctblcons.xml (3398-3423)
gap> f42:= CharacterTable( "F4(2)" );;
gap> v4:= CharacterTable( "2^2" );;
gap> dp:= v4 * f42;
CharacterTable( "V4xF4(2)" )
gap> b:= CharacterTable( "B" );;
gap> f42fusb:= PossibleClassFusions( f42, b );;
gap> Length( f42fusb );
1
gap> f42fusdp:= GetFusionMap( f42, dp );;
gap> comp:= CompositionMaps( f42fusb[1], InverseMap( f42fusdp ) );
[ 1, 3, 3, 3, 5, 6, 6, 7, 9, 9, 9, 9, 14, 14, 13, 13, 10, 14, 14, 12, 
  14, 17, 15, 18, 22, 22, 22, 22, 26, 26, 22, 22, 27, 27, 28, 31, 31, 
  39, 39, 36, 36, 33, 33, 39, 39, 35, 41, 42, 47, 47, 49, 49, 49, 58, 
  58, 56, 56, 66, 66, 66, 66, 58, 58, 66, 66, 69, 69, 60, 72, 72, 75, 
  79, 79, 81, 81, 85, 86, 83, 83, 91, 91, 94, 94, 104, 104, 109, 109, 
  116, 116, 114, 114, 132, 132, 140, 140 ]
gap> v4fusdp:= GetFusionMap( v4, dp );
[ 1, 96 .. 286 ]
gap> comp[ v4fusdp[2] ]:= 4;;
gap> dpfusb:= PossibleClassFusions( dp, b, rec( fusionmap:= comp ) );;
gap> Length( dpfusb );
4
gap> Set( dpfusb, x -> x{ v4fusdp } );
[ [ 1, 4, 2, 2 ] ]

##  doc2/ctblcons.xml (3440-3451)
gap> tblG:= dp / v4fusdp{ [ 1, 2 ] };;
gap> tblMG:= dp;;
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> tblGA:= c2 * CharacterTable( "F4(2).2" );
CharacterTable( "C2xF4(2).2" )
gap> GfusGA:= PossibleClassFusions( tblG, tblGA );;
gap> Length( GfusGA );
4
gap> Length( RepresentativesFusions( tblG, GfusGA, tblGA ) );
1

##  doc2/ctblcons.xml (3468-3472)
gap> Length( RepresentativesFusions( Group( () ), GfusGA, tblGA ) );
1
gap> StoreFusion( tblG, GfusGA[1], tblGA );

##  doc2/ctblcons.xml (3477-3486)
gap> elms:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );;
gap> Length( elms );
1
gap> poss:= PossibleCharacterTablesOfTypeMGA( tblMG, tblG, tblGA, elms[1],
>               "(2^2xF4(2)):2" );;
gap> Length( poss );
1
gap> tblMGA:= poss[1].table;;

##  doc2/ctblcons.xml (3498-3502)
gap> IsRecord( TransformingPermutationsCharacterTables( tblMGA,
>                  CharacterTable( "(2^2xF4(2)):2" ) ) );
true

##  doc2/ctblcons.xml (3565-3573)
gap> s3:= CharacterTable( "Dihedral", 6 );;
gap> fi222:= CharacterTable( "Fi22.2" );;
gap> tblMbar:= s3 * fi222;;
gap> b:= CharacterTable( "B" );;
gap> Mbarfusb:= PossibleClassFusions( tblMbar, b );;
gap> Length( Mbarfusb );
1

##  doc2/ctblcons.xml (3584-3588)
gap> 2b:= CharacterTable( "2.B" );;
gap> PossibleClassFusions( CharacterTable( "Fi22" ), 2b );
[  ]

##  doc2/ctblcons.xml (3607-3612)
gap> c3:= CharacterTable( "Cyclic", 3 );;
gap> 2fi222:= CharacterTable( "2.Fi22.2" );;
gap> PossibleClassFusions( c3 * CharacterTableIsoclinic( 2fi222 ), 2b );
[  ]

##  doc2/ctblcons.xml (3621-3631)
gap> s3inMbar:= GetFusionMap( s3, tblMbar );
[ 1, 113 .. 225 ]
gap> s3inb:= Mbarfusb[1]{ s3inMbar };
[ 1, 6, 2 ]
gap> 2bfusb:= GetFusionMap( 2b, b );;
gap> 2s3in2B:= InverseMap( 2bfusb ){ s3inb };
[ [ 1, 2 ], [ 8, 9 ], 3 ]
gap> CompositionMaps( OrdersClassRepresentatives( 2b ), 2s3in2B );
[ [ 1, 2 ], [ 3, 6 ], 2 ]

##  doc2/ctblcons.xml (3650-3653)
gap> PossibleClassFusions( s3 * 2fi222, 2b );
[  ]

##  doc2/ctblcons.xml (3759-3781)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> 2fi22:= CharacterTable( "2.Fi22" );;
gap> tblNmodY:= c2 * 2fi22;;
gap> centre:= GetFusionMap( 2fi22, tblNmodY ){
>                 ClassPositionsOfCentre( 2fi22 ) };
[ 1, 2 ]
gap> tblNmod6:= tblNmodY / centre;;
gap> tblMmod6:= c2 * fi222;;
gap> fus:= PossibleClassFusions( tblNmod6, tblMmod6 );;
gap> Length( fus );
1
gap> StoreFusion( tblNmod6, fus[1], tblMmod6 );
gap> elms:= PossibleActionsForTypeMGA( tblNmodY, tblNmod6, tblMmod6 );;
gap> Length( elms );
1
gap> poss:= PossibleCharacterTablesOfTypeMGA( tblNmodY, tblNmod6, tblMmod6,
>               elms[1], "2^2.Fi22.2" );;
gap> Length( poss );
1
gap> tblMmodY:= poss[1].table;
CharacterTable( "2^2.Fi22.2" )

##  doc2/ctblcons.xml (3792-3811)
gap> tblU:= c3 * 2fi222;;
gap> tblUmodY:= tblU / GetFusionMap( c3, tblU );;
gap> fus:= PossibleClassFusions( tblUmodY, tblMmodY );;
gap> Length( RepresentativesFusions( Group( () ), fus, tblMmodY ) );
1
gap> StoreFusion( tblUmodY, fus[1], tblMmodY );
gap> elms:= PossibleActionsForTypeMGA( tblU, tblUmodY, tblMmodY );;
gap> Length( elms );
1
gap> poss:= PossibleCharacterTablesOfTypeMGA( tblU, tblUmodY, tblMmodY,
>               elms[1], "(S3x2.Fi22).2" );;
gap> Length( poss );
1
gap> tblM:= poss[1].table;
CharacterTable( "(S3x2.Fi22).2" )
gap> mfus2b:= PossibleClassFusions( tblM, 2b );;
gap> Length( RepresentativesFusions( tblM, mfus2b, 2b ) );
1

##  doc2/ctblcons.xml (3821-3824)
gap> Irr( tblM / ClassPositionsOfCentre( tblM ) ) = Irr( tblMbar );
true

##  doc2/ctblcons.xml (3833-3837)
gap> IsRecord( TransformingPermutationsCharacterTables( tblM,
>                  CharacterTable( "(S3x2.Fi22).2" ) ) );
true

##  doc2/ctblcons.xml (3939-3947)
gap> fi24:= CharacterTable( "Fi24" );;
gap> t:= CharacterTable( "2^2.Fi22.2" );;
gap> fus:= PossibleClassFusions( t, fi24 );;
gap> Length( fus );
4
gap> Length( RepresentativesFusions( t, fus, fi24 ) );
1

##  doc2/ctblcons.xml (3976-3986)
gap> t:= CharacterTable( "(S3x2.Fi22).2" );;
gap> 3fi24:= CharacterTable( "3.Fi24" );;                        
gap> fus:= PossibleClassFusions( t, 3fi24 );;
gap> Length( fus );
16
gap> Length( RepresentativesFusions( t, fus, 3fi24 ) );
1
gap> GetFusionMap( t, 3fi24 ) in fus; 
true

##  doc2/ctblcons.xml (3995-4013)
gap> m:= CharacterTable( "M" );;
gap> tfusm:= PossibleClassFusions( t, m );;
gap> Length( tfusm );
4
gap> Length( RepresentativesFusions( t, tfusm, m ) );
1
gap> nsg:= Filtered( ClassPositionsOfNormalSubgroups( t ),
>        x -> Sum( SizesConjugacyClasses( t ){ x } ) = 6 );
[ [ 1, 2, 142, 143 ] ]
gap> Set( tfusm, x -> x{ nsg[1] } );
[ [ 1, 2, 4, 13 ] ]
gap> OrdersClassRepresentatives( t ){ nsg[1] };
[ 1, 2, 3, 6 ]
gap> PowerMap( m, -1 )[13];
13
gap> Size( t ) = 2 * SizesCentralizers( m )[13];
true

##  doc2/ctblcons.xml (4096-4102)
gap> 2Fi22:= CharacterTable( "2.Fi22" );;
gap> ClassPositionsOfCentre( 2Fi22 );
[ 1, 2 ]
gap> 2 in PowerMap( 2Fi22, 2 );
false

##  doc2/ctblcons.xml (4114-4122)
gap> PossibleClassFusions( CharacterTable( "U4(3)" ), 2Fi22 );
[  ]
gap> tblU:= CharacterTable( "2.U4(3).2_2" );;
gap> iso:= CharacterTableIsoclinic( tblU );
CharacterTable( "Isoclinic(2.U4(3).2_2)" )
gap> PossibleClassFusions( iso, 2Fi22 );                      
[  ]

##  doc2/ctblcons.xml (4148-4153)
gap> derpos:= ClassPositionsOfDerivedSubgroup( tblU );;
gap> outer:= Difference( [ 1 .. NrConjugacyClasses( tblU ) ], derpos );;
gap> 2 in OrdersClassRepresentatives( tblU ){ outer };
true

##  doc2/ctblcons.xml (4169-4177)
gap> tblM:= CharacterTable( "Dihedral", 6 ) * tblU;;
gap> fus:= PossibleClassFusions( tblM, 2Fi22 );;
gap> Length( RepresentativesFusions( tblM, fus, 2Fi22 ) );
1
gap> IsRecord( TransformingPermutationsCharacterTables( tblM,
>                  CharacterTable( "2.Fi22M8" ) ) );
true

##  doc2/ctblcons.xml (4275-4278)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> tblC:= CharacterTableIsoclinic( CharacterTable( "2.HS" ) * c2 );;

##  doc2/ctblcons.xml (4287-4292)
gap> ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),
>               x -> Length( x ) = 2 );
[ [ 1, 3 ] ]
gap> tblCbar:= tblC / ord2[1];;

##  doc2/ctblcons.xml (4302-4309)
gap> tblNbar:= CharacterTable( "HS.2" ) * c2;;
gap> fus:= PossibleClassFusions( tblCbar, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
      19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 29, 30, 31, 32, 
      33, 34, 35, 36, 35, 36, 37, 38, 39, 40, 41, 42, 41, 42 ] ]
gap> StoreFusion( tblCbar, fus[1], tblNbar );

##  doc2/ctblcons.xml (4318-4340)
gap> elms:= PossibleActionsForTypeMGA( tblC, tblCbar, tblNbar );
[ [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6, 8 ], [ 7 ], [ 9 ], [ 10 ], 
      [ 11 ], [ 12, 14 ], [ 13 ], [ 15 ], [ 16, 18 ], [ 17 ], [ 19 ], 
      [ 20 ], [ 21 ], [ 22 ], [ 23 ], [ 24, 26 ], [ 25 ], [ 27 ], 
      [ 28, 30 ], [ 29 ], [ 31 ], [ 32, 34 ], [ 33 ], [ 35 ], 
      [ 36, 38 ], [ 37 ], [ 39 ], [ 40, 42 ], [ 41 ], [ 43 ], 
      [ 44, 46 ], [ 45 ], [ 47 ], [ 48, 50 ], [ 49 ], [ 51, 53 ], 
      [ 52, 54 ], [ 55 ], [ 56, 58 ], [ 57 ], [ 59 ], [ 60 ], 
      [ 61, 65 ], [ 62, 68 ], [ 63, 67 ], [ 64, 66 ], [ 69 ], 
      [ 70, 72 ], [ 71 ], [ 73 ], [ 74, 76 ], [ 75 ], [ 77, 81 ], 
      [ 78, 84 ], [ 79, 83 ], [ 80, 82 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6, 8 ], [ 7 ], [ 9 ], [ 10 ], 
      [ 11 ], [ 12, 14 ], [ 13 ], [ 15, 17 ], [ 16 ], [ 18 ], [ 19 ], 
      [ 20 ], [ 21 ], [ 22 ], [ 23 ], [ 24, 26 ], [ 25 ], [ 27 ], 
      [ 28, 30 ], [ 29 ], [ 31 ], [ 32, 34 ], [ 33 ], [ 35, 37 ], 
      [ 36 ], [ 38 ], [ 39 ], [ 40, 42 ], [ 41 ], [ 43 ], [ 44, 46 ], 
      [ 45 ], [ 47, 49 ], [ 48 ], [ 50 ], [ 51, 53 ], [ 52, 54 ], 
      [ 55 ], [ 56, 58 ], [ 57 ], [ 59 ], [ 60 ], [ 61, 65 ], 
      [ 62, 68 ], [ 63, 67 ], [ 64, 66 ], [ 69, 71 ], [ 70 ], [ 72 ], 
      [ 73 ], [ 74, 76 ], [ 75 ], [ 77, 83 ], [ 78, 82 ], [ 79, 81 ], 
      [ 80, 84 ] ] ]

##  doc2/ctblcons.xml (4348-4353)
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblCbar, tblNbar, pi, "4.HS.2" ) );;
gap> List( poss, Length );
[ 0, 2 ]

##  doc2/ctblcons.xml (4376-4389)
gap> result:= poss[2];;
gap> hn2:= CharacterTable( "HN.2" );;
gap> possfus:= List( result, r -> PossibleClassFusions( r.table, hn2 ) );;
gap> List( possfus, Length );
[ 32, 0 ]
gap> RepresentativesFusions( result[1].table, possfus[1], hn2 );
[ [ 1, 46, 2, 2, 47, 3, 7, 45, 4, 58, 13, 6, 46, 47, 6, 47, 7, 48, 
      10, 62, 20, 9, 63, 21, 12, 64, 24, 27, 49, 50, 13, 59, 14, 16, 
      70, 30, 18, 53, 52, 17, 54, 20, 65, 22, 36, 56, 26, 76, 39, 77, 
      28, 59, 58, 31, 78, 41, 34, 62, 35, 65, 2, 45, 3, 45, 6, 48, 7, 
      47, 17, 54, 13, 49, 13, 50, 14, 50, 18, 53, 18, 52, 21, 56, 25, 
      57, 27, 59, 30, 60, 44, 72, 34, 66, 35, 66, 41, 71 ] ]

##  doc2/ctblcons.xml (4404-4409)
gap> libtbl:= CharacterTable( "4.HS.2" );;
gap> IsRecord( TransformingPermutationsCharacterTables( result[1].table,
>                  libtbl ) );
true

##  doc2/ctblcons.xml (4427-4434)
gap> StoreFusion( tblC, result[1].MGfusMGA, result[1].table );
gap> ForAll( PrimeDivisors( Size( result[1].table ) ),
>            p -> IsRecord( TransformingPermutationsCharacterTables(
>                     BrauerTableOfTypeMGA( tblC mod p, tblNbar mod p,
>                         result[1].table ).table, libtbl mod p ) ) );
true

##  doc2/ctblcons.xml (4571-4601)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> 2a6:= CharacterTable( "2.A6" );;
gap> tblC:= CharacterTableIsoclinic( 2a6 * c2 );;
gap> ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),
>               x -> Length( x ) = 2 );
[ [ 1, 3 ] ]
gap> tblG:= tblC / ord2[1];;
gap> tblNbar:= CharacterTableIsoclinic( CharacterTable( "A6.2_3" ) * c2 );;
gap> fus:= PossibleClassFusions( tblG, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 9, 10, 9, 10 ] ]
gap> StoreFusion( tblG, fus[1], tblNbar );
gap> elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );
[ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 12 ], 
      [ 9, 13 ], [ 10, 14 ], [ 15, 17 ], [ 16, 18 ], [ 19, 23 ], 
      [ 20, 24 ], [ 21, 25 ], [ 22, 26 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
      [ 9, 13 ], [ 10, 12 ], [ 15 ], [ 16, 18 ], [ 17 ], [ 19, 23 ], 
      [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
      [ 9, 13 ], [ 10, 12 ], [ 15, 17 ], [ 16 ], [ 18 ], [ 19, 23 ], 
      [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ] ]
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblG, tblNbar, pi, "4.A6.2_3" ) );
[ [  ], [  ], 
  [ 
      rec( 
          MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 9, 6, 9, 8, 7, 10, 
              11, 10, 12, 13, 14, 15, 16, 13, 16, 15, 14 ], 
          table := CharacterTable( "4.A6.2_3" ) ) ] ]

##  doc2/ctblcons.xml (4611-4616)
gap> t:= poss[3][1].table;;
gap> IsRecord( TransformingPermutationsCharacterTables( t,
>                  CharacterTable( "4.A6.2_3" ) ) );
true

##  doc2/ctblcons.xml (4645-4664)
gap> g:= GammaL(2,9);;
gap> phi:= IsomorphismPermGroup( g );;
gap> img:= Image( phi );;
gap> der:= DerivedSubgroup( img );;
gap> derder:= DerivedSubgroup( der );;
gap> Index( img, derder );
16
gap> inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,
>                s -> Size( s ) = 4 * Size( derder ) and
>                     IsCyclic( CommutatorFactorGroup( s ) ) and
>                     Size( Centre( s ) ) = 2 );;
gap> Length( inter );
2
gap> ForAll( inter, x -> IsConjugate( img, inter[1], x ) );
true
gap> IsRecord( TransformingPermutationsCharacterTables( t,
>                  CharacterTable( inter[1] ) ) );
true

##  doc2/ctblcons.xml (4752-4779)
gap> tblC:= 2a6 * c2;;
gap> z:= GetFusionMap( 2a6, tblC ){ ClassPositionsOfCentre( 2a6 ) };
[ 1, 3 ]
gap> tblG:= tblC / z;;
gap> tblNbar:= CharacterTableIsoclinic( CharacterTable( "A6.2_3" ) * c2 );;
gap> fus:= PossibleClassFusions( tblG, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 9, 10, 9, 10 ] ]
gap> StoreFusion( tblG, fus[1], tblNbar );
gap> elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );
[ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 12 ], 
      [ 9, 13 ], [ 10, 14 ], [ 15, 17 ], [ 16, 18 ], [ 19, 23 ], 
      [ 20, 24 ], [ 21, 25 ], [ 22, 26 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
      [ 9, 13 ], [ 10, 12 ], [ 15 ], [ 16, 18 ], [ 17 ], [ 19, 23 ], 
      [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7, 11 ], [ 8, 14 ], 
      [ 9, 13 ], [ 10, 12 ], [ 15, 17 ], [ 16 ], [ 18 ], [ 19, 23 ], 
      [ 20, 26 ], [ 21, 25 ], [ 22, 24 ] ] ]
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblG, tblNbar, pi, "2^2.A6.2_3" ) );
[ [  ], [  ], 
  [ 
      rec( 
          MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 9, 6, 9, 8, 7, 10, 
              11, 10, 12, 13, 14, 15, 16, 13, 16, 15, 14 ], 
          table := CharacterTable( "2^2.A6.2_3" ) ) ] ]

##  doc2/ctblcons.xml (4878-4931)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> tblC:= CharacterTableIsoclinic( CharacterTable( "6.A6" ) * c2 );;
gap> ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),
>               x -> Length( x ) = 2 );
[ [ 1, 7 ] ]
gap> tblG:= tblC / ord2[1];;
gap> tblNbar:= CharacterTableIsoclinic( CharacterTable( "3.A6.2_3" ) * c2 );;
gap> fus:= PossibleClassFusions( tblG, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 13, 14, 15, 16, 
      17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, 22, 23, 24, 25, 26 ]
    , 
  [ 1, 2, 5, 6, 3, 4, 7, 8, 11, 12, 9, 10, 13, 14, 13, 14, 15, 16, 
      19, 20, 17, 18, 21, 22, 25, 26, 23, 24, 21, 22, 25, 26, 23, 24 
     ] ]
gap> rep:= RepresentativesFusions( Group( () ), fus, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 13, 14, 15, 16, 
      17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, 22, 23, 24, 25, 26 
     ] ]
gap> StoreFusion( tblG, rep[1], tblNbar );
gap> elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );
[ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], 
      [ 10 ], [ 11 ], [ 12 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ], 
      [ 18 ], [ 19, 23 ], [ 20, 24 ], [ 21, 25 ], [ 22, 26 ], 
      [ 27, 33 ], [ 28, 34 ], [ 29, 35 ], [ 30, 36 ], [ 31, 37 ], 
      [ 32, 38 ], [ 39, 51 ], [ 40, 52 ], [ 41, 53 ], [ 42, 54 ], 
      [ 43, 55 ], [ 44, 56 ], [ 45, 57 ], [ 46, 58 ], [ 47, 59 ], 
      [ 48, 60 ], [ 49, 61 ], [ 50, 62 ] ], 
  [ [ 1 ], [ 2, 8 ], [ 3 ], [ 4, 10 ], [ 5 ], [ 6, 12 ], [ 7 ], 
      [ 9 ], [ 11 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ], [ 18 ], 
      [ 19, 23 ], [ 20, 26 ], [ 21, 25 ], [ 22, 24 ], [ 27 ], 
      [ 28, 34 ], [ 29 ], [ 30, 36 ], [ 31 ], [ 32, 38 ], [ 33 ], 
      [ 35 ], [ 37 ], [ 39, 51 ], [ 40, 58 ], [ 41, 53 ], [ 42, 60 ], 
      [ 43, 55 ], [ 44, 62 ], [ 45, 57 ], [ 46, 52 ], [ 47, 59 ], 
      [ 48, 54 ], [ 49, 61 ], [ 50, 56 ] ], 
  [ [ 1 ], [ 2, 8 ], [ 3 ], [ 4, 10 ], [ 5 ], [ 6, 12 ], [ 7 ], 
      [ 9 ], [ 11 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ], [ 18 ], 
      [ 19, 23 ], [ 20, 26 ], [ 21, 25 ], [ 22, 24 ], [ 27, 33 ], 
      [ 28 ], [ 29, 35 ], [ 30 ], [ 31, 37 ], [ 32 ], [ 34 ], [ 36 ], 
      [ 38 ], [ 39, 51 ], [ 40, 58 ], [ 41, 53 ], [ 42, 60 ], 
      [ 43, 55 ], [ 44, 62 ], [ 45, 57 ], [ 46, 52 ], [ 47, 59 ], 
      [ 48, 54 ], [ 49, 61 ], [ 50, 56 ] ] ]
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblG, tblNbar, pi, "12.A6.2_3" ) );
[ [  ], [  ], 
  [ 
      rec( 
          MGfusMGA := [ 1, 2, 3, 4, 5, 6, 7, 2, 8, 4, 9, 6, 10, 11, 12, 
              13, 14, 15, 16, 17, 18, 19, 16, 19, 18, 17, 20, 21, 22, 
              23, 24, 25, 20, 26, 22, 27, 24, 28, 29, 30, 31, 32, 33, 
              34, 35, 36, 37, 38, 39, 40, 29, 36, 31, 38, 33, 40, 35, 
              30, 37, 32, 39, 34 ], 
          table := CharacterTable( "12.A6.2_3" ) ) ] ]

##  doc2/ctblcons.xml (4941-4945)
gap> IsRecord( TransformingPermutationsCharacterTables( poss[3][1].table,
>                  CharacterTable( "12.A6.2_3" ) ) );
true

##  doc2/ctblcons.xml (4955-5006)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> tblC:= CharacterTableIsoclinic( CharacterTable( "2.L2(25)" ) * c2 );;
gap> ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),
>               x -> Length( x ) = 2 );
[ [ 1, 3 ] ]
gap> tblG:= tblC / ord2[1];;
gap> tblNbar:= CharacterTableIsoclinic( CharacterTable( "L2(25).2_3" ) * c2 );;
gap> fus:= PossibleClassFusions( tblG, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 15, 
      16, 15, 16, 17, 18, 17, 18, 19, 20, 19, 20 ], 
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 17, 
      18, 17, 18, 19, 20, 19, 20, 15, 16, 15, 16 ], 
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 19, 
      20, 19, 20, 15, 16, 15, 16, 17, 18, 17, 18 ] ]
gap> rep:= RepresentativesFusions( Group( () ), fus, tblNbar );
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 10, 11, 12, 13, 14, 13, 14, 15, 
      16, 15, 16, 17, 18, 17, 18, 19, 20, 19, 20 ] ]
gap> StoreFusion( tblG, rep[1], tblNbar );
gap> elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );
[ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], 
      [ 10 ], [ 11, 13 ], [ 12, 14 ], [ 15, 19 ], [ 16, 20 ], 
      [ 17, 21 ], [ 18, 22 ], [ 23, 25 ], [ 24, 26 ], [ 27, 33 ], 
      [ 28, 34 ], [ 29, 31 ], [ 30, 32 ], [ 35, 39 ], [ 36, 40 ], 
      [ 37, 41 ], [ 38, 42 ], [ 43, 47 ], [ 44, 48 ], [ 45, 49 ], 
      [ 46, 50 ], [ 51, 55 ], [ 52, 56 ], [ 53, 57 ], [ 54, 58 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7 ], [ 8, 10 ], [ 9 ], 
      [ 11 ], [ 12, 14 ], [ 13 ], [ 15, 19 ], [ 16, 22 ], [ 17, 21 ], 
      [ 18, 20 ], [ 23, 25 ], [ 24 ], [ 26 ], [ 27, 31 ], [ 28, 34 ], 
      [ 29, 33 ], [ 30, 32 ], [ 35, 39 ], [ 36, 42 ], [ 37, 41 ], 
      [ 38, 40 ], [ 43, 47 ], [ 44, 50 ], [ 45, 49 ], [ 46, 48 ], 
      [ 51, 55 ], [ 52, 58 ], [ 53, 57 ], [ 54, 56 ] ], 
  [ [ 1 ], [ 2, 4 ], [ 3 ], [ 5 ], [ 6 ], [ 7 ], [ 8, 10 ], [ 9 ], 
      [ 11, 13 ], [ 12 ], [ 14 ], [ 15, 19 ], [ 16, 22 ], [ 17, 21 ], 
      [ 18, 20 ], [ 23, 25 ], [ 24 ], [ 26 ], [ 27, 33 ], [ 28, 32 ], 
      [ 29, 31 ], [ 30, 34 ], [ 35, 39 ], [ 36, 42 ], [ 37, 41 ], 
      [ 38, 40 ], [ 43, 47 ], [ 44, 50 ], [ 45, 49 ], [ 46, 48 ], 
      [ 51, 55 ], [ 52, 58 ], [ 53, 57 ], [ 54, 56 ] ] ]
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblG, tblNbar, pi, "4.L2(25).2_3" ) );
[ [  ], [  ], 
  [ 
      rec( 
          MGfusMGA := [ 1, 2, 3, 2, 4, 5, 6, 7, 8, 7, 9, 10, 9, 11, 12, 
              13, 14, 15, 12, 15, 14, 13, 16, 17, 16, 18, 19, 20, 21, 
              22, 21, 20, 19, 22, 23, 24, 25, 26, 23, 26, 25, 24, 27, 
              28, 29, 30, 27, 30, 29, 28, 31, 32, 33, 34, 31, 34, 33, 
              32 ], table := CharacterTable( "4.L2(25).2_3" ) ) ] ]
gap> IsRecord( TransformingPermutationsCharacterTables( poss[3][1].table,
>                  CharacterTable( "4.L2(25).2_3" ) ) );
true

##  doc2/ctblcons.xml (5019-5032)
gap> g:= GammaL(2,25);;
gap> phi:= IsomorphismPermGroup( g );;
gap> img:= Image( phi );;
gap> der:= DerivedSubgroup( img );;
gap> derder:= DerivedSubgroup( der );;
gap> Index( img, derder );
48
gap> inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,
>                s -> Size( s ) = 4 * Size( derder ) and
>                     IsCyclic( CommutatorFactorGroup( s ) ) and
>                     Size( Centre( s ) ) = 2 );
[  ]

##  doc2/ctblcons.xml (5048-5065)
gap> c:= Centralizer( img, derder );;
gap> Size( c );  IsCyclic( c );
24
true
gap> cgen:= MinimalGeneratingSet( c );;
gap> four:= cgen[1]^6;;
gap> s:= ClosureGroup( derder, four );;
gap> LoadPackage( "GrpConst", false );
true
gap> filt:= Filtered( CyclicExtensions( s, 2 ),
>               x -> Size( Centre( x ) ) = 2 and
>                    IsCyclic( CommutatorFactorGroup( x ) ) );;
gap> Length( filt );
2
gap> IsomorphismGroups( filt[1], filt[2] ) <> fail;
true

##  doc2/ctblcons.xml (5073-5077)
gap> TransformingPermutationsCharacterTables( CharacterTable( filt[1] ),
>        CharacterTable( "4.L2(25).2_3" ) ) <> fail;
true

##  doc2/ctblcons.xml (5115-5136)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> 2l:= CharacterTable( "2.L2(49)" );;
gap> tblC:= CharacterTableIsoclinic( 2l * c2 );;
gap> ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),
>               x -> Length( x ) = 2 );
[ [ 1, 3 ] ]
gap> tblG:= tblC / ord2[1];;
gap> tblNbar:= CharacterTableIsoclinic(
>                  CharacterTable( "L2(49).2_3" ) * c2 );;
gap> fus:= PossibleClassFusions( tblG, tblNbar );;
gap> Length( fus );
10
gap> StoreFusion( tblG, fus[1], tblNbar );
gap> elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );;
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblG, tblNbar, pi, "4.L2(49).2_3" ) );;
gap> List( poss, Length );
[ 0, 0, 1 ]
gap> t:= poss[3][1].table;
CharacterTable( "4.L2(49).2_3" )

##  doc2/ctblcons.xml (5149-5165)
gap> g:= GammaL(2,49);;
gap> phi:= IsomorphismPermGroup( g );;
gap> img:= Image( phi );;
gap> der:= DerivedSubgroup( img );;
gap> derder:= DerivedSubgroup( der );;
gap> Index( img, derder );
96
gap> inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,
>                s -> Size( s ) = 4 * Size( derder ) and
>                     IsCyclic( CommutatorFactorGroup( s ) ) and
>                     Size( Centre( s ) ) = 2 );;
gap> Length( inter );                                        
4
gap> ForAll( inter, x -> IsConjugate( img, inter[1], x ) );
true

##  doc2/ctblcons.xml (5174-5181)
gap> TransformingPermutationsCharacterTables( t,
>        CharacterTable( inter[1] ) ) <> fail;
true
gap> TransformingPermutationsCharacterTables( t,
>        CharacterTable( "4.L2(49).2_3" ) ) <> fail;
true

##  doc2/ctblcons.xml (5195-5220)
gap> c2:= CharacterTable( "Cyclic", 2 );;
gap> 2l:= CharacterTable( "2.L2(81)" );;
gap> tblC:= CharacterTableIsoclinic( 2l * c2 );;
gap> ord2:= Filtered( ClassPositionsOfNormalSubgroups( tblC ),
>               x -> Length( x ) = 2 );
[ [ 1, 3 ] ]
gap> tblG:= tblC / ord2[1];;
gap> tblNbar:= CharacterTableIsoclinic(
>                  CharacterTable( "L2(81).2_3" ) * c2 );;
gap> fus:= PossibleClassFusions( tblG, tblNbar );;
gap> Length( fus );
40
gap> fusreps:= RepresentativesFusions( tblG, fus, tblNbar );;
gap> Length( fusreps );
1
gap> StoreFusion( tblG, fusreps[1], tblNbar );
gap> elms:= PossibleActionsForTypeMGA( tblC, tblG, tblNbar );;
gap> poss:= List( elms, pi -> PossibleCharacterTablesOfTypeMGA(
>                 tblC, tblG, tblNbar, pi, "4.L2(81).2_3" ) );;
gap> List( poss, Length );
[ 0, 0, 1 ]
gap> TransformingPermutationsCharacterTables( poss[3][1].table,
>        CharacterTable( "4.L2(81).2_3" ) ) <> fail;
true

##  doc2/ctblcons.xml (5230-5248)
gap> g:= GammaL(2,81);;
gap> phi:= IsomorphismPermGroup( g );;
gap> img:= Image( phi );;
gap> der:= DerivedSubgroup( img );;
gap> derder:= DerivedSubgroup( der );;
gap> Index( img, derder );
320
gap> inter:= Filtered( IntermediateSubgroups( img, derder ).subgroups,
>                s -> Size( s ) = 4 * Size( derder ) and
>                     IsCyclic( CommutatorFactorGroup( s ) ) and
>                     Size( Centre( s ) ) = 2 );;
gap> ForAll( inter, x -> IsConjugate( img, inter[1], x ) );
true
gap> NrConjugacyClasses( inter[1] );
52
gap> NrConjugacyClasses( CharacterTable( "4.L2(81).2_3" ) );
112

##  doc2/ctblcons.xml (5257-5264)
gap> t:= CharacterTable( "2.L2(81).4_1" );;
gap> NrConjugacyClasses( t );
52
gap> TransformingPermutationsCharacterTables( t,
>        CharacterTable( inter[1] ) ) <> fail;
true

##  doc2/ctblcons.xml (5275-5295)
gap> c:= Centralizer( img, derder );;
gap> Size( c );  IsCyclic( c );
80
true
gap> cgen:= MinimalGeneratingSet( c );;
gap> four:= cgen[1]^20;;
gap> s:= ClosureGroup( derder, four );;
gap> LoadPackage( "GrpConst", false );
true
gap> filt:= Filtered( CyclicExtensions( s, 2 ),
>               x -> Size( Centre( x ) ) = 2 and
>                    IsCyclic( CommutatorFactorGroup( x ) ) );;
gap> Length( filt );
2
gap> IsomorphismGroups( filt[1], filt[2] ) <> fail;
true
gap> TransformingPermutationsCharacterTables( CharacterTable( filt[1] ),
>        CharacterTable( "4.L2(81).2_3" ) ) <> fail;
true

##  doc2/ctblcons.xml (5834-5855)
gap> s:= CharacterTable( "U3(8)" );;
gap> s3:= CharacterTable( "U3(8).3_3" );;
gap> poss:= PossibleClassFusions( s, s3 );;
gap> Length( poss );
4
gap> Length( RepresentativesFusions( s, poss, s3 ) );
1
gap> smod2:= s mod 2;;
gap> s3mod2:= s3 mod 2;;
gap> good:= [];;  modmap:= 0;;
gap> for map in poss do
>      modmap:= CompositionMaps( InverseMap( GetFusionMap( s3mod2, s3 ) ),
>                   CompositionMaps( map, GetFusionMap( smod2, s ) ) );
>      rest:= List( Irr( s3mod2 ), x -> x{ modmap } );
>      if not fail in Decomposition( Irr( smod2 ), rest, "nonnegative" ) then
>        Add( good, map );
>      fi;
>    od;
gap> Length( good );
2

##  doc2/ctblcons.xml (5865-5871)
gap> good[2] = CompositionMaps( PowerMap( s3, -1 ), good[1] );
true
gap> GetFusionMap( s, s3 ) in good;
true
gap> sfuss3:= GetFusionMap( s, s3 );;

##  doc2/ctblcons.xml (5903-5931)
gap> c3:= CharacterTable( "Cyclic", 3 );;
gap> tblG:= s * c3;;
gap> dp:= s3 * c3;;
gap> tblGA1:= CharacterTableIsoclinic( dp, rec( k:= 1 ) );;
gap> tblGA2:= CharacterTableIsoclinic( dp, rec( k:= 2 ) );;
gap> good:= [];;
gap> tblGmod2:= tblG mod 2;;
gap> for tblGA in [ tblGA1, tblGA2 ] do
>      tblGAmod2:= tblGA mod 2;
>      for map in PossibleClassFusions( tblG, tblGA ) do
>        modmap:= CompositionMaps(
>            InverseMap( GetFusionMap( tblGAmod2, tblGA ) ),
>            CompositionMaps( map, GetFusionMap( tblGmod2, tblG ) ) );
>        rest:= List( Irr( tblGAmod2 ), x -> x{ modmap } );
>        if not fail in Decomposition( Irr( tblGmod2 ), rest,
>                           "nonnegative" ) and
>           CompositionMaps( GetFusionMap( tblGA, s3 ), map ) =
>           CompositionMaps( sfuss3, GetFusionMap( tblG, s ) ) then
>          Add( good, [ tblGA, map ] );
>        fi;
>      od;
>    od;
gap> List( good, x -> x[1] );
[ CharacterTable( "Isoclinic(U3(8).3_3xC3,1)" ), 
  CharacterTable( "Isoclinic(U3(8).3_3xC3,1)" ), 
  CharacterTable( "Isoclinic(U3(8).3_3xC3,2)" ), 
  CharacterTable( "Isoclinic(U3(8).3_3xC3,2)" ) ]

##  doc2/ctblcons.xml (5944-5948)
gap> 3s:= CharacterTable( "3.U3(8)" );;
gap> dp:= 3s * c3;;
gap> tblMG:= CharacterTableIsoclinic( dp );;

##  doc2/ctblcons.xml (5959-5972)
gap> GetFusionMap( tblMG, tblG );
fail
gap> cen:= ClassPositionsOfCentre( tblMG );
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
gap> OrdersClassRepresentatives( tblMG ){ cen };
[ 1, 9, 9, 3, 9, 9, 3, 9, 9 ]
gap> facttbl:= tblMG / [ 1, 4, 7 ];;
gap> tr:= TransformingPermutationsCharacterTables( facttbl, tblG );;
gap> tr.rows;  tr.columns;
()
()
gap> StoreFusion( tblMG, GetFusionMap( tblMG, facttbl ), tblG );

##  doc2/ctblcons.xml (5982-5998)
gap> posstbls:= [];;
gap> for pair in good do
>      tblGA:= pair[1];
>      GfusGA:= pair[2];
>      tblG:= s * c3;
>      StoreFusion( tblG, GfusGA, tblGA );
>      for pi in PossibleActionsForTypeMGA( tblMG, tblG, tblGA ) do
>        for cand in PossibleCharacterTablesOfTypeMGA(
>                        tblMG, tblG, tblGA, pi, "test" ) do
>          Add( posstbls, [ tblGA, cand ] );
>        od;
>      od;
>    od;
gap> Length( posstbls );
32

##  doc2/ctblcons.xml (6007-6030)
gap> compatible:= [];;  r:= 0;;  modr:= 0;;
gap> for pair in posstbls do
>      tblGA:= pair[1];
>      r:= pair[2];
>      comp:= ComputedClassFusions( tblMG );
>      pos:= PositionProperty( comp, x -> x.name = Identifier( r.table ) );
>      if pos = fail then
>        StoreFusion( tblMG, r.MGfusMGA, r.table );
>      else
>        comp[ pos ]:= ShallowCopy( comp[ pos ] );
>        comp[ pos ].map:= r.MGfusMGA;
>      fi;
>      Unbind( ComputedBrauerTables( tblMG )[2] );
>      modr:= BrauerTableOfTypeMGA( tblMG mod 2, tblGA mod 2, r.table );
>      rest:= List( Irr( modr.table ), x -> x{ modr.MGfusMGA } );
>      dec:= Decomposition( Irr( tblMG mod 2 ), rest, "nonnegative" );
>      if not fail in dec then
>        Add( compatible, pair );
>      fi;
>    od;
gap> Length( compatible );
8

##  doc2/ctblcons.xml (6038-6048)
gap> tbls:= [];;
gap> for pair in compatible do
>      if ForAll( tbls, t -> TransformingPermutationsCharacterTables(
>                                t, pair[2].table ) = fail ) then
>        Add( tbls, pair[2].table );
>      fi;
>    od;
gap> Length( tbls );
2

##  doc2/ctblcons.xml (6061-6074)
gap> Set( OrdersClassRepresentatives( tbls[1] ) );
[ 1, 2, 3, 4, 6, 7, 9, 12, 18, 19, 21, 27, 36, 54, 57, 63, 171 ]
gap> Set( OrdersClassRepresentatives( tbls[2] ) );
[ 1, 2, 3, 4, 6, 7, 9, 12, 18, 19, 21, 27, 36, 57, 63, 171 ]
gap> pos171:= Positions( OrdersClassRepresentatives( tbls[1] ), 171 );;
gap> pow4:= PowerMap( tbls[1], 4 );;
gap> ForAny( [ 1 .. Length( pos171 ) ],
>            i -> pos171[i] = pow4[ pos171[i] ] );
false
gap> pos171:= Positions( OrdersClassRepresentatives( tbls[2] ), 171 );;
gap> PowerMap( tbls[2], 4 ){ pos171 } = pos171;
true

##  doc2/ctblcons.xml (6083-6100)
gap> gu:= GU(3,8);;
gap> orbs:= OrbitsDomain( gu, Elements( GF(64)^3 ) );;
gap> List( orbs, Length );
[ 1, 32319, 32832, 32832, 32832, 32832, 32832, 32832, 32832 ]
gap> orb:= SortedList( First( orbs, x -> Length( x ) = 32319 ) );;
gap> actgu:= Action( gu, orb, OnRight );;
gap> Size( actgu ) = Size( gu );
true
gap> cen:= Centre( actgu );;
gap> Size( cen );
9
gap> u:= ClosureGroup( DerivedSubgroup( actgu ), cen );;
gap> aut:= v -> List( v, x -> x^4 );;
gap> pi:= PermList( List( orb, v -> PositionSorted( orb, aut( v ) ) ) );;
gap> outer:= First( GeneratorsOfGroup( actgu ), x -> not x in u );;
gap> g:= ClosureGroup( u, pi * outer );;

##  doc2/ctblcons.xml (6109-6120)
gap> g:= Group( SmallGeneratingSet( g ) );;
gap> allbl:= AllBlocks( g );;
gap> List( allbl, Length );
[ 3, 21, 63, 9, 7 ]
gap> orb:= Orbit( g, First( allbl, x -> Length( x ) = 7 ), OnSets );;
gap> act:= Action( g, orb, OnSets );;
gap> Size( act ) = Size( g );
true
gap> NrMovedPoints( act );
4617

##  doc2/ctblcons.xml (6129-6133)
gap> repeat x:= PseudoRandom( act ); until Order( x ) = 171;
gap> IsConjugate( act, x, x^4 );
true

##  doc2/ctblcons.xml (6144-6148)
gap> lib:= CharacterTable( "9.U3(8).3_3" );;
gap> IsRecord( TransformingPermutationsCharacterTables( tbls[2], lib ) );
true

##  doc2/ctblcons.xml (6190-6202)
gap> tblMG := CharacterTable( "3.A6" );;
gap> tblG  := CharacterTable( "A6" );;
gap> tblGA := CharacterTable( "A6.2_3" );;
gap> elms:= PossibleActionsForTypeMGA( tblMG, tblG, tblGA );  
[ [ [ 1 ], [ 2, 3 ], [ 4 ], [ 5, 6 ], [ 7, 8 ], [ 9 ], [ 10, 11 ], 
      [ 12, 15 ], [ 13, 17 ], [ 14, 16 ] ] ]
gap> poss:= PossibleCharacterTablesOfTypeMGA(                  
>                 tblMG, tblG, tblGA, elms[1], "pseudo" );    
[ rec( 
      MGfusMGA := [ 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 10, 8, 10, 
          9 ], table := CharacterTable( "pseudo" ) ) ]

##  doc2/ctblcons.xml (6232-6278)
gap> pseudo:= poss[1].table;
CharacterTable( "pseudo" )
gap> Display( pseudo );
pseudo

      2  4   3  4  3  .  3   2  .   .   .  2  3  3
      3  3   3  1  1  2  1   1  1   1   1  .  .  .
      5  1   1  .  .  .  .   .  1   1   1  .  .  .

        1a  3a 2a 6a 3b 4a 12a 5a 15a 15b 4b 8a 8b
     2P 1a  3a 1a 3a 3b 2a  6a 5a 15a 15b 2a 4a 4a
     3P 1a  1a 2a 2a 1a 4a  4a 5a  5a  5a 4b 8a 8b
     5P 1a  3a 2a 6a 3b 4a 12a 1a  3a  3a 4b 8b 8a

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

A = -E(15)-E(15)^2-E(15)^4-E(15)^8
  = (-1-Sqrt(-15))/2 = -1-b15
B = E(8)+E(8)^3
  = Sqrt(-2) = i2
gap> IsInternallyConsistent( pseudo );
true
gap> irr:= Irr( pseudo );;
gap> test:= Concatenation( List( [ 2 .. 5 ],
>               n -> Symmetrizations( pseudo, irr, n ) ) );;
gap> Append( test, Set( Tensored( irr, irr ) ) );
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.29 Sekunden  (vorverarbeitet)  ]