  
  [1X73 [33X[0;0YMaps Concerning Character Tables[133X[101X
  
  [33X[0;0YBesides  the  characters,  [13Xpower  maps[113X  are an important part of a character
  table,  see  Section [14X73.1[114X.  Often  their computation is not easy, and if the
  table  has  no access to the underlying group then in general they cannot be
  obtained from the matrix of irreducible characters; so it is useful to store
  them on the table.[133X
  
  [33X[0;0YIf not only a single table is considered but different tables of a group and
  a subgroup or of a group and a factor group are used, also [13Xclass fusion maps[113X
  (see  Section [14X73.3[114X)  must be known to get information about the embedding or
  simply to induce or restrict characters, see Section [14X72.9[114X).[133X
  
  [33X[0;0YThese  are examples of functions from conjugacy classes which will be called
  [13Xmaps[113X  in  the following. (This should not be confused with the term mapping,
  cf. Chapter [14X32[114X.) In [5XGAP[105X, maps are represented by lists. Also each character,
  each  list of element orders, of centralizer orders, or of class lengths are
  maps,  and  the  list  returned  by [2XListPerm[102X ([14X42.5-1[114X), when this function is
  called with a permutation of classes, is a map.[133X
  
  [33X[0;0YWhen  maps  are  constructed without access to a group, often one only knows
  that the image of a given class is contained in a set of possible images, e.
  g.,  that  the image of a class under a subgroup fusion is in the set of all
  classes  with  the  same  element  order. Using further information, such as
  centralizer  orders,  power maps and the restriction of characters, the sets
  of  possible images can be restricted further. In many cases, at the end the
  images are uniquely determined.[133X
  
  [33X[0;0YBecause  of this approach, many functions in this chapter work not only with
  maps  but  with  [13Xparametrized  maps[113X  (or  [13Xparamaps[113X  for  short).  More about
  parametrized maps can be found in Section [14X73.5[114X.[133X
  
  [33X[0;0YThe implementation follows [Bre91], a description of the main ideas together
  with several examples can be found in [Bre99].[133X
  
  [33X[0;0YSeveral  examples in this chapter require the [5XGAP[105X Character Table Library to
  be available. If it is not yet loaded then we load it now.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XLoadPackage( "ctbllib" );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X73.1 [33X[0;0YPower Maps[133X[101X
  
  [33X[0;0YThe [22Xn[122X-th power map of a character table is represented by a list that stores
  at  position  [22Xi[122X  the position of the class containing the [22Xn[122X-th powers of the
  elements  in  the  [22Xi[122X-th  class.  The [22Xn[122X-th power map can be composed from the
  power maps of the prime divisors of [22Xn[122X, so usually only power maps for primes
  are actually stored in the character table.[133X
  
  [33X[0;0YFor  an  ordinary character table [3Xtbl[103X with access to its underlying group [22XG[122X,
  the  [22Xp[122X-th  power  map of [3Xtbl[103X can be computed using the identification of the
  conjugacy  classes  of  [22XG[122X with the classes of [3Xtbl[103X. For an ordinary character
  table  without  access to a group, in general the [22Xp[122X-th power maps (and hence
  also  the  element  orders)  for prime divisors [22Xp[122X of the group order are not
  uniquely  determined  by  the  matrix  of  irreducible  characters.  So only
  necessary  conditions  can  be checked in this case, which in general yields
  only  a  list  of several possibilities for the desired power map. Character
  tables  of  the  [5XGAP[105X  character  table library store all [22Xp[122X-th power maps for
  prime divisors [22Xp[122X of the group order.[133X
  
  [33X[0;0YPower  maps  of  Brauer  tables  can  be  derived from the power maps of the
  underlying ordinary tables.[133X
  
  [33X[0;0YFor  (computing  and)  accessing  the  [22Xn[122X-th  power map of a character table,
  [2XPowerMap[102X  ([14X73.1-1[114X)  can  be  used;  if the [22Xn[122X-th power map cannot be uniquely
  determined then [2XPowerMap[102X ([14X73.1-1[114X) returns [9Xfail[109X.[133X
  
  [33X[0;0YThe  list  of  all  possible  [22Xp[122X-th  power  maps of a table in the sense that
  certain   necessary   conditions   are   satisfied   can  be  computed  with
  [2XPossiblePowerMaps[102X   ([14X73.1-2[114X).   This   provides   a  default  strategy,  the
  subroutines are listed in Section [14X73.6[114X.[133X
  
  [1X73.1-1 PowerMap[101X
  
  [29X[2XPowerMap[102X( [3Xtbl[103X, [3Xn[103X[, [3Xclass[103X] ) [32X operation
  [29X[2XPowerMapOp[102X( [3Xtbl[103X, [3Xn[103X[, [3Xclass[103X] ) [32X operation
  [29X[2XComputedPowerMaps[102X( [3Xtbl[103X ) [32X attribute
  
  [33X[0;0YCalled  with  first  argument  a  character table [3Xtbl[103X and second argument an
  integer  [3Xn[103X,  [2XPowerMap[102X  returns  the  [3Xn[103X-th  power  map of [3Xtbl[103X. This is a list
  containing  at  position  [22Xi[122X  the position of the class of [3Xn[103X-th powers of the
  elements in the [22Xi[122X-th class of [3Xtbl[103X.[133X
  
  [33X[0;0YIf  the additional third argument [3Xclass[103X is present then the position of [3Xn[103X-th
  powers of the [3Xclass[103X-th class is returned.[133X
  
  [33X[0;0YIf  the  [3Xn[103X-th  power  map  is  not  uniquely  determined by [3Xtbl[103X then [9Xfail[109X is
  returned. This can happen only if [3Xtbl[103X has no access to its underlying group.[133X
  
  [33X[0;0YThe  power  maps of [3Xtbl[103X that were computed already by [2XPowerMap[102X are stored in
  [3Xtbl[103X  as  value  of  the  attribute  [2XComputedPowerMaps[102X, the [22Xn[122X-th power map at
  position [22Xn[122X. [2XPowerMap[102X checks whether the desired power map is already stored,
  computes  it  using  the  operation  [2XPowerMapOp[102X  if it is not yet known, and
  stores it. So methods for the computation of power maps can be installed for
  the operation [2XPowerMapOp[102X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "L3(2)" );;[127X[104X
    [4X[25Xgap>[125X [27XComputedPowerMaps( tbl );[127X[104X
    [4X[28X[ , [ 1, 1, 3, 2, 5, 6 ], [ 1, 2, 1, 4, 6, 5 ],,,, [128X[104X
    [4X[28X  [ 1, 2, 3, 4, 1, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27XPowerMap( tbl, 5 );[127X[104X
    [4X[28X[ 1, 2, 3, 4, 6, 5 ][128X[104X
    [4X[25Xgap>[125X [27XComputedPowerMaps( tbl );[127X[104X
    [4X[28X[ , [ 1, 1, 3, 2, 5, 6 ], [ 1, 2, 1, 4, 6, 5 ],, [ 1, 2, 3, 4, 6, 5 ],[128X[104X
    [4X[28X  , [ 1, 2, 3, 4, 1, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27XPowerMap( tbl, 137, 2 );[127X[104X
    [4X[28X2[128X[104X
  [4X[32X[104X
  
  [1X73.1-2 PossiblePowerMaps[101X
  
  [29X[2XPossiblePowerMaps[102X( [3Xtbl[103X, [3Xp[103X[, [3Xoptions[103X] ) [32X operation
  
  [33X[0;0YFor  the  ordinary  character  table  [3Xtbl[103X  of  the group [22XG[122X, say, and a prime
  integer  [3Xp[103X,  [2XPossiblePowerMaps[102X  returns  the  list of all maps that have the
  following  properties  of  the [22Xp[122X-th power map of [3Xtbl[103X. (Representative orders
  are  used  only  if  the [2XOrdersClassRepresentatives[102X ([14X71.9-1[114X) value of [3Xtbl[103X is
  known.[133X
  
  [31X1[131X   [33X[0;6YFor  class  [22Xi[122X, the centralizer order of the image is a multiple of the
        [22Xi[122X-th  centralizer  order; if the elements in the [22Xi[122X-th class have order
        coprime  to [22Xp[122X then the centralizer orders of class [22Xi[122X and its image are
        equal.[133X
  
  [31X2[131X   [33X[0;6YLet [22Xn[122X be the order of elements in class [22Xi[122X. If [3Xprime[103X divides [22Xn[122X then the
        images  have  order  [22Xn/p[122X;  otherwise  the  images  have order [22Xn[122X. These
        criteria are checked in [2XInitPowerMap[102X ([14X73.6-1[114X).[133X
  
  [31X3[131X   [33X[0;6YFor  each  character [22Xχ[122X of [22XG[122X and each element [22Xg[122X in [22XG[122X, the values [22Xχ(g^p)[122X
        and  [10XGaloisCyc[110X[22X(  χ(g),  p  )[122X are algebraic integers that are congruent
        modulo  [22Xp[122X;  if  [22Xp[122X  does not divide the element order of [22Xg[122X then the two
        values  are  equal.  This  congruence  is  checked  for the characters
        specified  below in the discussion of the [3Xoptions[103X argument; For linear
        characters  [22Xλ[122X among these characters, the condition [22Xχ(g)^p = χ(g^p)[122X is
        checked. The corresponding function is [2XCongruences[102X ([14X73.6-2[114X).[133X
  
  [31X4[131X   [33X[0;6YFor  each character [22Xχ[122X of [22XG[122X, the kernel is a normal subgroup [22XN[122X, and [22Xg^p
        ∈  N[122X  for  all [22Xg ∈ N[122X; moreover, if [22XN[122X has index [22Xp[122X in [22XG[122X then [22Xg^p ∈ N[122X for
        all [22Xg ∈ G[122X, and if the index of [22XN[122X in [22XG[122X is coprime to [22Xp[122X then [22Xg^p not ∈ N[122X
        for  each  [22Xg  not ∈ N[122X. These conditions are checked for the kernels of
        all  characters  [22Xχ[122X  specified  below,  the  corresponding  function is
        [2XConsiderKernels[102X ([14X73.6-3[114X).[133X
  
  [31X5[131X   [33X[0;6YIf  [22Xp[122X is larger than the order [22Xm[122X of an element [22Xg ∈ G[122X then the class of
        [22Xg^p[122X is determined by the power maps for primes dividing the residue of
        [22Xp[122X  modulo  [22Xm[122X.  If these power maps are stored in the [2XComputedPowerMaps[102X
        ([14X73.1-1[114X) value of [3Xtbl[103X then this information is used. This criterion is
        checked in [2XConsiderSmallerPowerMaps[102X ([14X73.6-4[114X).[133X
  
  [31X6[131X   [33X[0;6YFor  each  character  [22Xχ[122X  of  [22XG[122X, the symmetrization [22Xψ[122X defined by [22Xψ(g) =
        (χ(g)^p  - χ(g^p))/p[122X is a character. This condition is checked for the
        kernels  of  all  characters  [22Xχ[122X  specified  below,  the  corresponding
        function is [2XPowerMapsAllowedBySymmetrizations[102X ([14X73.6-6[114X).[133X
  
  [33X[0;0YIf  [3Xtbl[103X is a Brauer table, the possibilities are computed from those for the
  underlying ordinary table.[133X
  
  [33X[0;0YThe  optional argument [3Xoptions[103X, if given, must be a record that may have the
  following components:[133X
  
  [8X[10Xchars[110X:[108X
        [33X[0;6Ya  list of characters which are used for the check of the criteria 3.,
        4., and 6.; the default is [10XIrr( [3Xtbl[103X[10X )[110X,[133X
  
  [8X[10Xpowermap[110X:[108X
        [33X[0;6Ya parametrized map which is an approximation of the desired map[133X
  
  [8X[10Xdecompose[110X:[108X
        [33X[0;6Ya  Boolean;  a  [9Xtrue[109X  value  indicates  that  all  constituents of the
        symmetrizations  of  [10Xchars[110X  computed for criterion 6. lie in [10Xchars[110X, so
        the  symmetrizations  can  be  decomposed  into elements of [10Xchars[110X; the
        default  value of [10Xdecompose[110X is [9Xtrue[109X if [10Xchars[110X is not bound and [10XIrr( [3Xtbl[103X[10X
        )[110X is known, otherwise [9Xfalse[109X,[133X
  
  [8X[10Xquick[110X:[108X
        [33X[0;6Ya Boolean; if [9Xtrue[109X then the subroutines are called with value [9Xtrue[109X for
        the  argument [3Xquick[103X; especially, as soon as only one candidate remains
        this candidate is returned immediately; the default value is [9Xfalse[109X,[133X
  
  [8X[10Xparameters[110X:[108X
        [33X[0;6Ya  record  with components [10Xmaxamb[110X, [10Xminamb[110X and [10Xmaxlen[110X which control the
        subroutine  [2XPowerMapsAllowedBySymmetrizations[102X  ([14X73.6-6[114X);  it only uses
        characters   with   current  indeterminateness  up  to  [10Xmaxamb[110X,  tests
        decomposability  only for characters with current indeterminateness at
        least  [10Xminamb[110X,  and  admits  a branch according to a character only if
        there is one with at most [10Xmaxlen[110X possible symmetrizations.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "U4(3).4" );;[127X[104X
    [4X[25Xgap>[125X [27XPossiblePowerMaps( tbl, 2 );[127X[104X
    [4X[28X[ [ 1, 1, 3, 4, 5, 2, 2, 8, 3, 4, 11, 12, 6, 14, 9, 1, 1, 2, 2, 3, 4, [128X[104X
    [4X[28X      5, 6, 8, 9, 9, 10, 11, 12, 16, 16, 16, 16, 17, 17, 18, 18, 18, [128X[104X
    [4X[28X      18, 20, 20, 20, 20, 22, 22, 24, 24, 25, 26, 28, 28, 29, 29 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.1-3 ElementOrdersPowerMap[101X
  
  [29X[2XElementOrdersPowerMap[102X( [3Xpowermap[103X ) [32X function
  
  [33X[0;0YLet [3Xpowermap[103X be a nonempty list containing at position [22Xp[122X, if bound, the [22Xp[122X-th
  power  map  of  a  character table or group. [2XElementOrdersPowerMap[102X returns a
  list  of the same length as each entry in [3Xpowermap[103X, with entry at position [22Xi[122X
  equal  to  the  order  of  elements  in  class  [22Xi[122X  if this order is uniquely
  determined by [3Xpowermap[103X, and equal to an unknown (see Chapter [14X74[114X) otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "U4(3).4" );;[127X[104X
    [4X[25Xgap>[125X [27Xknown:= ComputedPowerMaps( tbl );;[127X[104X
    [4X[25Xgap>[125X [27XLength( known );[127X[104X
    [4X[28X7[128X[104X
    [4X[25Xgap>[125X [27Xsub:= ShallowCopy( known );;  Unbind( sub[7] );[127X[104X
    [4X[25Xgap>[125X [27XElementOrdersPowerMap( sub );[127X[104X
    [4X[28X[ 1, 2, 3, 3, 3, 4, 4, 5, 6, 6, Unknown(1), Unknown(2), 8, 9, 12, 2, [128X[104X
    [4X[28X  2, 4, 4, 6, 6, 6, 8, 10, 12, 12, 12, Unknown(3), Unknown(4), 4, 4, [128X[104X
    [4X[28X  4, 4, 4, 4, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 20, 20, 24, 24, [128X[104X
    [4X[28X  Unknown(5), Unknown(6), Unknown(7), Unknown(8) ][128X[104X
    [4X[25Xgap>[125X [27Xord:= ElementOrdersPowerMap( known );[127X[104X
    [4X[28X[ 1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 12, 2, 2, 4, 4, 6, 6, 6, [128X[104X
    [4X[28X  8, 10, 12, 12, 12, 14, 14, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 12, 12, [128X[104X
    [4X[28X  12, 12, 12, 12, 20, 20, 24, 24, 28, 28, 28, 28 ][128X[104X
    [4X[25Xgap>[125X [27Xord = OrdersClassRepresentatives( tbl );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X73.1-4 PowerMapByComposition[101X
  
  [29X[2XPowerMapByComposition[102X( [3Xtbl[103X, [3Xn[103X ) [32X function
  
  [33X[0;0Y[3Xtbl[103X must be a nearly character table, and [3Xn[103X a positive integer. If the power
  maps  for  all  prime  divisors  of  [3Xn[103X  are  stored in the [2XComputedPowerMaps[102X
  ([14X73.1-1[114X)  list  of [3Xtbl[103X then [2XPowerMapByComposition[102X returns the [3Xn[103X-th power map
  of [3Xtbl[103X. Otherwise [9Xfail[109X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "U4(3).4" );;  exp:= Exponent( tbl );[127X[104X
    [4X[28X2520[128X[104X
    [4X[25Xgap>[125X [27XPowerMapByComposition( tbl, exp );[127X[104X
    [4X[28X[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, [128X[104X
    [4X[28X  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, [128X[104X
    [4X[28X  1, 1, 1, 1, 1, 1, 1, 1, 1 ][128X[104X
    [4X[25Xgap>[125X [27XLength( ComputedPowerMaps( tbl ) );[127X[104X
    [4X[28X7[128X[104X
    [4X[25Xgap>[125X [27XPowerMapByComposition( tbl, 11 );[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XPowerMap( tbl, 11 );;[127X[104X
    [4X[25Xgap>[125X [27XPowerMapByComposition( tbl, 11 );[127X[104X
    [4X[28X[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, [128X[104X
    [4X[28X  20, 21, 22, 23, 24, 26, 25, 27, 28, 29, 31, 30, 33, 32, 35, 34, 37, [128X[104X
    [4X[28X  36, 39, 38, 41, 40, 43, 42, 45, 44, 47, 46, 49, 48, 51, 50, 53, 52 ][128X[104X
  [4X[32X[104X
  
  
  [1X73.2 [33X[0;0YOrbits on Sets of Possible Power Maps[133X[101X
  
  [33X[0;0YThe  permutation  group  of  matrix  automorphisms  (see [2XMatrixAutomorphisms[102X
  ([14X71.22-1[114X))  acts  on  the  possible power maps returned by [2XPossiblePowerMaps[102X
  ([14X73.1-2[114X)  by  permuting  a list via [2XPermuted[102X ([14X21.20-18[114X) and then mapping the
  images  via  [2XOnPoints[102X  ([14X41.2-1[114X). Note that by definition, the group of [13Xtable[113X
  automorphisms acts trivially.[133X
  
  [1X73.2-1 OrbitPowerMaps[101X
  
  [29X[2XOrbitPowerMaps[102X( [3Xmap[103X, [3Xpermgrp[103X ) [32X function
  
  [33X[0;0Yreturns  the  orbit of the power map [3Xmap[103X under the action of the permutation
  group  [3Xpermgrp[103X  via  a  combination  of  [2XPermuted[102X  ([14X21.20-18[114X)  and  [2XOnPoints[102X
  ([14X41.2-1[114X).[133X
  
  [1X73.2-2 RepresentativesPowerMaps[101X
  
  [29X[2XRepresentativesPowerMaps[102X( [3Xlistofmaps[103X, [3Xpermgrp[103X ) [32X function
  
  [33X[0;0Yreturns  a  list  of  orbit  representatives  of  the power maps in the list
  [3Xlistofmaps[103X  under  the  action  of  the  permutation  group  [3Xpermgrp[103X  via  a
  combination of [2XPermuted[102X ([14X21.20-18[114X) and [2XOnPoints[102X ([14X41.2-1[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "3.McL" );;[127X[104X
    [4X[25Xgap>[125X [27Xgrp:= MatrixAutomorphisms( Irr( tbl ) );  Size( grp );[127X[104X
    [4X[28X<permutation group with 5 generators>[128X[104X
    [4X[28X32[128X[104X
    [4X[25Xgap>[125X [27Xposs:= PossiblePowerMaps( CharacterTable( "3.McL" ), 3 );[127X[104X
    [4X[28X[ [ 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 11, 11, 11, 14, 14, 14, 17, 17, 17, [128X[104X
    [4X[28X      4, 4, 4, 4, 4, 4, 29, 29, 29, 26, 26, 26, 32, 32, 32, 9, 8, 37, [128X[104X
    [4X[28X      37, 37, 40, 40, 40, 43, 43, 43, 11, 11, 11, 52, 52, 52, 49, 49, [128X[104X
    [4X[28X      49, 14, 14, 14, 14, 14, 14, 37, 37, 37, 37, 37, 37 ], [128X[104X
    [4X[28X  [ 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 11, 11, 11, 14, 14, 14, 17, 17, 17, [128X[104X
    [4X[28X      4, 4, 4, 4, 4, 4, 29, 29, 29, 26, 26, 26, 32, 32, 32, 8, 9, 37, [128X[104X
    [4X[28X      37, 37, 40, 40, 40, 43, 43, 43, 11, 11, 11, 52, 52, 52, 49, 49, [128X[104X
    [4X[28X      49, 14, 14, 14, 14, 14, 14, 37, 37, 37, 37, 37, 37 ] ][128X[104X
    [4X[25Xgap>[125X [27Xreps:= RepresentativesPowerMaps( poss, grp );[127X[104X
    [4X[28X[ [ 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 11, 11, 11, 14, 14, 14, 17, 17, 17, [128X[104X
    [4X[28X      4, 4, 4, 4, 4, 4, 29, 29, 29, 26, 26, 26, 32, 32, 32, 8, 9, 37, [128X[104X
    [4X[28X      37, 37, 40, 40, 40, 43, 43, 43, 11, 11, 11, 52, 52, 52, 49, 49, [128X[104X
    [4X[28X      49, 14, 14, 14, 14, 14, 14, 37, 37, 37, 37, 37, 37 ] ][128X[104X
    [4X[25Xgap>[125X [27Xorb:= OrbitPowerMaps( reps[1], grp );[127X[104X
    [4X[28X[ [ 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 11, 11, 11, 14, 14, 14, 17, 17, 17, [128X[104X
    [4X[28X      4, 4, 4, 4, 4, 4, 29, 29, 29, 26, 26, 26, 32, 32, 32, 8, 9, 37, [128X[104X
    [4X[28X      37, 37, 40, 40, 40, 43, 43, 43, 11, 11, 11, 52, 52, 52, 49, 49, [128X[104X
    [4X[28X      49, 14, 14, 14, 14, 14, 14, 37, 37, 37, 37, 37, 37 ], [128X[104X
    [4X[28X  [ 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 11, 11, 11, 14, 14, 14, 17, 17, 17, [128X[104X
    [4X[28X      4, 4, 4, 4, 4, 4, 29, 29, 29, 26, 26, 26, 32, 32, 32, 9, 8, 37, [128X[104X
    [4X[28X      37, 37, 40, 40, 40, 43, 43, 43, 11, 11, 11, 52, 52, 52, 49, 49, [128X[104X
    [4X[28X      49, 14, 14, 14, 14, 14, 14, 37, 37, 37, 37, 37, 37 ] ][128X[104X
    [4X[25Xgap>[125X [27XParametrized( orb );[127X[104X
    [4X[28X[ 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 11, 11, 11, 14, 14, 14, 17, 17, 17, [128X[104X
    [4X[28X  4, 4, 4, 4, 4, 4, 29, 29, 29, 26, 26, 26, 32, 32, 32, [ 8, 9 ], [128X[104X
    [4X[28X  [ 8, 9 ], 37, 37, 37, 40, 40, 40, 43, 43, 43, 11, 11, 11, 52, 52, [128X[104X
    [4X[28X  52, 49, 49, 49, 14, 14, 14, 14, 14, 14, 37, 37, 37, 37, 37, 37 ][128X[104X
  [4X[32X[104X
  
  
  [1X73.3 [33X[0;0YClass Fusions between Character Tables[133X[101X
  
  [33X[0;0YFor  a  group  [22XG[122X and a subgroup [22XH[122X of [22XG[122X, the fusion map between the character
  table of [22XH[122X and the character table of [22XG[122X is represented by a list that stores
  at  position  [22Xi[122X  the  position  of  the  [22Xi[122X-th class of the table of [22XH[122X in the
  classes list of the table of [22XG[122X.[133X
  
  [33X[0;0YFor  ordinary  character tables [3Xtbl1[103X and [3Xtbl2[103X of [22XH[122X and [22XG[122X, with access to the
  groups [22XH[122X and [22XG[122X, the class fusion between [3Xtbl1[103X and [3Xtbl2[103X can be computed using
  the  identifications  of the conjugacy classes of [22XH[122X with the classes of [3Xtbl1[103X
  and  the  conjugacy  classes of [22XG[122X with the classes of [3Xtbl2[103X. For two ordinary
  character  tables without access to an underlying group, or in the situation
  that  the  group  stored  in  [3Xtbl1[103X is not physically a subgroup of the group
  stored  in  [3Xtbl2[103X  but an isomorphic copy, in general the class fusion is not
  uniquely  determined  by  the  information  stored  on  the  tables  such as
  irreducible  characters  and power maps. So only necessary conditions can be
  checked  in  this  case,  which  in  general  yields  only a list of several
  possibilities  for  the  desired  class  fusion. Character tables of the [5XGAP[105X
  character  table  library  store  various class fusions that are regarded as
  important,     for     example     fusions     from     maximal    subgroups
  (see [2XComputedClassFusions[102X  ([14X73.3-2[114X) and [2XMaxes[102X ([14XCTblLib: Maxes[114X) in the manual
  for the [5XGAP[105X Character Table Library).[133X
  
  [33X[0;0YClass  fusions  between  Brauer tables can be derived from the class fusions
  between the underlying ordinary tables. The class fusion from a Brauer table
  to  the  underlying  ordinary  table  is  stored  when  the  Brauer table is
  constructed  from the ordinary table, so no method is needed to compute such
  a fusion.[133X
  
  [33X[0;0YFor (computing and) accessing the class fusion between two character tables,
  [2XFusionConjugacyClasses[102X  ([14X73.3-1[114X)  can be used; if the class fusion cannot be
  uniquely determined then [2XFusionConjugacyClasses[102X ([14X73.3-1[114X) returns [9Xfail[109X.[133X
  
  [33X[0;0YThe  list  of all possible class fusion between two tables in the sense that
  certain   necessary   conditions   are   satisfied   can  be  computed  with
  [2XPossibleClassFusions[102X   ([14X73.3-6[114X).  This  provides  a  default  strategy,  the
  subroutines are listed in Section [14X73.7[114X.[133X
  
  [33X[0;0YIt   should   be   noted   that   all   the   following   functions   except
  [2XFusionConjugacyClasses[102X  ([14X73.3-1[114X)  deal  only  with  the  situation  of class
  fusions  from  subgroups. The computation of [13Xfactor fusions[113X from a character
  table  to  the  table  of  a  factor group is not dealt with here. Since the
  ordinary character table of a group [22XG[122X determines the character tables of all
  factor groups of [22XG[122X, the factor fusion to a given character table of a factor
  group of [22XG[122X is determined up to table automorphisms (see [2XAutomorphismsOfTable[102X
  ([14X71.9-4[114X))  once the class positions of the kernel of the natural epimorphism
  have been fixed.[133X
  
  
  [1X73.3-1 [33X[0;0YFusionConjugacyClasses[133X[101X
  
  [29X[2XFusionConjugacyClasses[102X( [3Xtbl1[103X, [3Xtbl2[103X ) [32X operation
  [29X[2XFusionConjugacyClasses[102X( [3XH[103X, [3XG[103X ) [32X operation
  [29X[2XFusionConjugacyClasses[102X( [3Xhom[103X[, [3Xtbl1[103X, [3Xtbl2[103X] ) [32X operation
  [29X[2XFusionConjugacyClassesOp[102X( [3Xtbl1[103X, [3Xtbl2[103X ) [32X operation
  [29X[2XFusionConjugacyClassesOp[102X( [3Xhom[103X ) [32X attribute
  
  [33X[0;0YCalled  with  two  character  tables  [3Xtbl1[103X  and [3Xtbl2[103X, [2XFusionConjugacyClasses[102X
  returns  the  fusion  of conjugacy classes between [3Xtbl1[103X and [3Xtbl2[103X. (If one of
  the  tables  is a Brauer table, it will delegate this task to the underlying
  ordinary table.)[133X
  
  [33X[0;0YCalled   with   two   groups   [3XH[103X   and  [3XG[103X  where  [3XH[103X  is  a  subgroup  of  [3XG[103X,
  [2XFusionConjugacyClasses[102X returns the fusion of conjugacy classes between [3XH[103X and
  [3XG[103X.  This  is done by delegating to the ordinary character tables of [3XH[103X and [3XG[103X,
  since class fusions are stored only for character tables and not for groups.[133X
  
  [33X[0;0YNote  that  the  returned  class  fusion refers to the ordering of conjugacy
  classes in the character tables if the arguments are character tables and to
  the  ordering of conjugacy classes in the groups if the arguments are groups
  (see [2XConjugacyClasses[102X ([14X71.6-2[114X)).[133X
  
  [33X[0;0YCalled  with  a  group  homomorphism [3Xhom[103X, [2XFusionConjugacyClasses[102X returns the
  fusion  of  conjugacy  classes  between  the  preimage and the image of [3Xhom[103X;
  contrary  to the two cases above, also factor fusions can be handled by this
  variant.  If  [3Xhom[103X  is  the only argument then the class fusion refers to the
  ordering  of  conjugacy  classes  in  the groups. If the character tables of
  preimage and image are given as [3Xtbl1[103X and [3Xtbl2[103X, respectively (each table with
  its  group  stored),  then  the  fusion refers to the ordering of classes in
  these tables.[133X
  
  [33X[0;0YIf no class fusion exists or if the class fusion is not uniquely determined,
  [9Xfail[109X is returned; this may happen when [2XFusionConjugacyClasses[102X is called with
  two character tables that do not know compatible underlying groups.[133X
  
  [33X[0;0YMethods  for  the  computation  of  class  fusions  can be installed for the
  operation [2XFusionConjugacyClassesOp[102X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs4:= SymmetricGroup( 4 );[127X[104X
    [4X[28XSym( [ 1 .. 4 ] )[128X[104X
    [4X[25Xgap>[125X [27Xtbls4:= CharacterTable( s4 );;[127X[104X
    [4X[25Xgap>[125X [27Xd8:= SylowSubgroup( s4, 2 );[127X[104X
    [4X[28XGroup([ (1,2), (3,4), (1,3)(2,4) ])[128X[104X
    [4X[25Xgap>[125X [27XFusionConjugacyClasses( d8, s4 );[127X[104X
    [4X[28X[ 1, 2, 3, 3, 5 ][128X[104X
    [4X[25Xgap>[125X [27Xtbls5:= CharacterTable( "S5" );;[127X[104X
    [4X[25Xgap>[125X [27XFusionConjugacyClasses( CharacterTable( "A5" ), tbls5 );[127X[104X
    [4X[28X[ 1, 2, 3, 4, 4 ][128X[104X
    [4X[25Xgap>[125X [27XFusionConjugacyClasses(CharacterTable("A5"), CharacterTable("J1"));[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XPossibleClassFusions(CharacterTable("A5"), CharacterTable("J1"));[127X[104X
    [4X[28X[ [ 1, 2, 3, 4, 5 ], [ 1, 2, 3, 5, 4 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.3-2 ComputedClassFusions[101X
  
  [29X[2XComputedClassFusions[102X( [3Xtbl[103X ) [32X attribute
  
  [33X[0;0YThe  class  fusions  from  the  character  table [3Xtbl[103X that have been computed
  already   by   [2XFusionConjugacyClasses[102X   ([14X73.3-1[114X)  or  explicitly  stored  by
  [2XStoreFusion[102X  ([14X73.3-4[114X)  are  stored in the [2XComputedClassFusions[102X list of [3Xtbl1[103X.
  Each entry of this list is a record with the following components.[133X
  
  [8X[10Xname[110X[108X
        [33X[0;6Ythe  [2XIdentifier[102X  ([14X71.9-8[114X)  value  of  the character table to which the
        fusion maps,[133X
  
  [8X[10Xmap[110X[108X
        [33X[0;6Ythe list of positions of image classes,[133X
  
  [8X[10Xtext[110X (optional)[108X
        [33X[0;6Ya  string  giving  additional  information  about  the fusion map, for
        example  whether  the  map  is  uniquely  determined  by the character
        tables,[133X
  
  [8X[10Xspecification[110X (optional, rarely used)[108X
        [33X[0;6Ya value that distinguishes different fusions between the same tables.[133X
  
  [33X[0;0YNote  that  stored  fusion  maps  may  differ  from  the  maps  returned  by
  [2XGetFusionMap[102X  ([14X73.3-3[114X)  and  the maps entered by [2XStoreFusion[102X ([14X73.3-4[114X) if the
  table  [3Xdestination[103X has a nonidentity [2XClassPermutation[102X ([14X71.21-5[114X) value. So if
  one fetches a fusion map from a table [3Xtbl1[103X to a table [3Xtbl2[103X via access to the
  data  in the [2XComputedClassFusions[102X list of [3Xtbl1[103X then the stored value must be
  composed  with  the  [2XClassPermutation[102X  ([14X71.21-5[114X)  value  of [3Xtbl2[103X in order to
  obtain   the  correct  class  fusion.  (If  one  handles  fusions  only  via
  [2XGetFusionMap[102X  ([14X73.3-3[114X) and [2XStoreFusion[102X ([14X73.3-4[114X) then this adjustment is made
  automatically.)[133X
  
  [33X[0;0YFusions  are identified via the [2XIdentifier[102X ([14X71.9-8[114X) value of the destination
  table  and  not  by this table itself because many fusions between character
  tables  in the [5XGAP[105X character table library are stored on library tables, and
  it  is  not  desirable  to load together with a library table also all those
  character tables that occur as destinations of fusions from this table.[133X
  
  [33X[0;0YFor  storing  fusions  and  accessing  stored fusions, see also [2XGetFusionMap[102X
  ([14X73.3-3[114X), [2XStoreFusion[102X ([14X73.3-4[114X). For accessing the identifiers of tables that
  store  a  fusion  into  a  given  character  table, see [2XNamesOfFusionSources[102X
  ([14X73.3-5[114X).[133X
  
  [1X73.3-3 GetFusionMap[101X
  
  [29X[2XGetFusionMap[102X( [3Xsource[103X, [3Xdestination[103X[, [3Xspecification[103X] ) [32X function
  
  [33X[0;0YFor  two  ordinary  character  tables  [3Xsource[103X  and [3Xdestination[103X, [2XGetFusionMap[102X
  checks  whether  the [2XComputedClassFusions[102X ([14X73.3-2[114X) list of [3Xsource[103X contains a
  record  with  [10Xname[110X  component [10XIdentifier( [3Xdestination[103X[10X )[110X, and returns returns
  the   [10Xmap[110X   component  of  the  first  such  record.  [10XGetFusionMap(  [3Xsource[103X[10X,
  [3Xdestination[103X[10X,  [3Xspecification[103X[10X  )[110X  fetches that fusion map for which the record
  additionally has the [10Xspecification[110X component [3Xspecification[103X.[133X
  
  [33X[0;0YIf  both  [3Xsource[103X  and [3Xdestination[103X are Brauer tables, first the same is done,
  and  if no fusion map was found then [2XGetFusionMap[102X looks whether a fusion map
  between  the  ordinary  tables  is stored; if so then the fusion map between
  [3Xsource[103X and [3Xdestination[103X is stored on [3Xsource[103X, and then returned.[133X
  
  [33X[0;0YIf  no  appropriate  fusion  is  found,  [2XGetFusionMap[102X  returns [9Xfail[109X. For the
  computation of class fusions, see [2XFusionConjugacyClasses[102X ([14X73.3-1[114X).[133X
  
  [1X73.3-4 StoreFusion[101X
  
  [29X[2XStoreFusion[102X( [3Xsource[103X, [3Xfusion[103X, [3Xdestination[103X ) [32X function
  
  [33X[0;0YFor  two  character  tables  [3Xsource[103X  and [3Xdestination[103X, [2XStoreFusion[102X stores the
  fusion  [3Xfusion[103X  from  [3Xsource[103X  to  [3Xdestination[103X  in  the  [2XComputedClassFusions[102X
  ([14X73.3-2[114X)  list  of  [3Xsource[103X,  and  adds  the  [2XIdentifier[102X  ([14X71.9-8[114X)  string of
  [3Xdestination[103X to the [2XNamesOfFusionSources[102X ([14X73.3-5[114X) list of [3Xdestination[103X.[133X
  
  [33X[0;0Y[3Xfusion[103X  can  either  be  a fusion map (that is, the list of positions of the
  image classes) or a record as described in [2XComputedClassFusions[102X ([14X73.3-2[114X).[133X
  
  [33X[0;0YIf  fusions  to [3Xdestination[103X are already stored on [3Xsource[103X then another fusion
  can  be  stored  only  if  it  has  a  record  component  [10Xspecification[110X that
  distinguishes  it from the stored fusions. In the case of such an ambiguity,
  [2XStoreFusion[102X raises an error.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbld8:= CharacterTable( d8 );;[127X[104X
    [4X[25Xgap>[125X [27XComputedClassFusions( tbld8 );[127X[104X
    [4X[28X[ rec( map := [ 1, 2, 3, 3, 5 ], name := "CT1" ) ][128X[104X
    [4X[25Xgap>[125X [27XIdentifier( tbls4 );[127X[104X
    [4X[28X"CT1"[128X[104X
    [4X[25Xgap>[125X [27XGetFusionMap( tbld8, tbls4 );[127X[104X
    [4X[28X[ 1, 2, 3, 3, 5 ][128X[104X
    [4X[25Xgap>[125X [27XGetFusionMap( tbls4, tbls5 );[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27Xposs:= PossibleClassFusions( tbls4, tbls5 );[127X[104X
    [4X[28X[ [ 1, 5, 2, 3, 6 ] ][128X[104X
    [4X[25Xgap>[125X [27XStoreFusion( tbls4, poss[1], tbls5 );[127X[104X
    [4X[25Xgap>[125X [27XGetFusionMap( tbls4, tbls5 );[127X[104X
    [4X[28X[ 1, 5, 2, 3, 6 ][128X[104X
  [4X[32X[104X
  
  [1X73.3-5 NamesOfFusionSources[101X
  
  [29X[2XNamesOfFusionSources[102X( [3Xtbl[103X ) [32X attribute
  
  [33X[0;0YFor  a  character  table  [3Xtbl[103X,  [2XNamesOfFusionSources[102X  returns  the  list  of
  identifiers  of all those character tables that are known to have fusions to
  [3Xtbl[103X  stored.  The [2XNamesOfFusionSources[102X value is updated whenever a fusion to
  [3Xtbl[103X is stored using [2XStoreFusion[102X ([14X73.3-4[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNamesOfFusionSources( tbls4 );[127X[104X
    [4X[28X[ "CT2" ][128X[104X
    [4X[25Xgap>[125X [27XIdentifier( CharacterTable( d8 ) );[127X[104X
    [4X[28X"CT2"[128X[104X
  [4X[32X[104X
  
  [1X73.3-6 PossibleClassFusions[101X
  
  [29X[2XPossibleClassFusions[102X( [3Xsubtbl[103X, [3Xtbl[103X[, [3Xoptions[103X] ) [32X operation
  
  [33X[0;0YFor two ordinary character tables [3Xsubtbl[103X and [3Xtbl[103X of the groups [22XH[122X and [22XG[122X, say,
  [2XPossibleClassFusions[102X  returns  the  list of all maps that have the following
  properties of class fusions from [3Xsubtbl[103X to [3Xtbl[103X.[133X
  
  [31X1[131X   [33X[0;6YFor  class [22Xi[122X, the centralizer order of the image in [22XG[122X is a multiple of
        the  [22Xi[122X-th  centralizer  order in [22XH[122X, and the element orders in the [22Xi[122X-th
        class  and  its  image  are  equal.  These  criteria  are  checked  in
        [2XInitFusion[102X ([14X73.7-1[114X).[133X
  
  [31X2[131X   [33X[0;6YThe  class  fusion  commutes  with  power  maps. This is checked using
        [2XTestConsistencyMaps[102X ([14X73.5-12[114X).[133X
  
  [31X3[131X   [33X[0;6YIf  the permutation character of [22XG[122X corresponding to the action of [22XG[122X on
        the  cosets  of  [22XH[122X  is  specified  (see  the discussion of the [3Xoptions[103X
        argument below) then it prescribes for each class [22XC[122X of [22XG[122X the number of
        elements   of   [22XH[122X   fusing  into  [22XC[122X.  The  corresponding  function  is
        [2XCheckPermChar[102X ([14X73.7-2[114X).[133X
  
  [31X4[131X   [33X[0;6YThe table automorphisms of [3Xtbl[103X (see [2XAutomorphismsOfTable[102X ([14X71.9-4[114X)) are
        used  in  order  to compute only orbit representatives. (But note that
        the list returned by [2XPossibleClassFusions[102X contains the full orbits.)[133X
  
  [31X5[131X   [33X[0;6YFor  each  character [22Xχ[122X of [22XG[122X, the restriction to [22XH[122X via the class fusion
        is  a  character  of  [22XH[122X.  This condition is checked for all characters
        specified      below,      the      corresponding      function     is
        [2XFusionsAllowedByRestrictions[102X ([14X73.7-4[114X).[133X
  
  [31X6[131X   [33X[0;6YThe  class  multiplication  coefficients  in  [3Xsubtbl[103X do not exceed the
        corresponding    coefficients    in    [3Xtbl[103X.   This   is   checked   in
        [2XConsiderStructureConstants[102X  ([14X73.3-7[114X),  see  also  the  comment  on the
        parameter [10Xverify[110X below.[133X
  
  [33X[0;0YIf [3Xsubtbl[103X and [3Xtbl[103X are Brauer tables then the possibilities are computed from
  those for the underlying ordinary tables.[133X
  
  [33X[0;0YThe  optional  argument [3Xoptions[103X must be a record that may have the following
  components:[133X
  
  [8X[10Xchars[110X[108X
        [33X[0;6Ya  list  of  characters of [3Xtbl[103X which are used for the check of 5.; the
        default is [10XIrr( [3Xtbl[103X[10X )[110X,[133X
  
  [8X[10Xsubchars[110X[108X
        [33X[0;6Ya  list  of  characters  of  [3Xsubtbl[103X  which  are  constituents  of  the
        restrictions of [10Xchars[110X, the default is [10XIrr( [3Xsubtbl[103X[10X )[110X,[133X
  
  [8X[10Xfusionmap[110X[108X
        [33X[0;6Ya parametrized map which is an approximation of the desired map,[133X
  
  [8X[10Xdecompose[110X[108X
        [33X[0;6Ya  Boolean;  a  [9Xtrue[109X  value  indicates  that  all  constituents of the
        restrictions  of  [10Xchars[110X  computed for criterion 5. lie in [10Xsubchars[110X, so
        the  restrictions  can  be  decomposed  into elements of [10Xsubchars[110X; the
        default  value  of [10Xdecompose[110X is [9Xtrue[109X if [10Xsubchars[110X is not bound and [10XIrr(
        [3Xsubtbl[103X[10X )[110X is known, otherwise [9Xfalse[109X,[133X
  
  [8X[10Xpermchar[110X[108X
        [33X[0;6Y(a  values  list  of)  a  permutation  character;  only  those fusions
        affording that permutation character are computed,[133X
  
  [8X[10Xquick[110X[108X
        [33X[0;6Ya Boolean; if [9Xtrue[109X then the subroutines are called with value [9Xtrue[109X for
        the  argument  [3Xquick[103X;  especially,  as  soon  as  only one possibility
        remains  then  this  possibility  is returned immediately; the default
        value is [9Xfalse[109X,[133X
  
  [8X[10Xverify[110X[108X
        [33X[0;6Ya Boolean; if [9Xfalse[109X then [2XConsiderStructureConstants[102X ([14X73.3-7[114X) is called
        only  if  more  than one orbit of possible class fusions exists, under
        the  action of the groups of table automorphisms; the default value is
        [9Xfalse[109X  (because  the computation of the structure constants is usually
        very time consuming, compared with checking the other criteria),[133X
  
  [8X[10Xparameters[110X[108X
        [33X[0;6Ya  record  with components [10Xmaxamb[110X, [10Xminamb[110X and [10Xmaxlen[110X which control the
        subroutine   [2XFusionsAllowedByRestrictions[102X   ([14X73.7-4[114X);   it  only  uses
        characters   with   current  indeterminateness  up  to  [10Xmaxamb[110X,  tests
        decomposability  only for characters with current indeterminateness at
        least  [10Xminamb[110X,  and  admits  a branch according to a character only if
        there is one with at most [10Xmaxlen[110X possible restrictions.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "U3(3)" );;  tbl:= CharacterTable( "J4" );;[127X[104X
    [4X[25Xgap>[125X [27XPossibleClassFusions( subtbl, tbl );[127X[104X
    [4X[28X[ [ 1, 2, 4, 4, 5, 5, 6, 10, 12, 13, 14, 14, 21, 21 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 5, 5, 6, 10, 13, 12, 14, 14, 21, 21 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 6, 6, 6, 10, 12, 13, 15, 15, 22, 22 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 6, 6, 6, 10, 12, 13, 16, 16, 22, 22 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 6, 6, 6, 10, 13, 12, 15, 15, 22, 22 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 6, 6, 6, 10, 13, 12, 16, 16, 22, 22 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.3-7 ConsiderStructureConstants[101X
  
  [29X[2XConsiderStructureConstants[102X( [3Xsubtbl[103X, [3Xtbl[103X, [3Xfusions[103X, [3Xquick[103X ) [32X function
  
  [33X[0;0YLet  [3Xsubtbl[103X  and  [3Xtbl[103X  be ordinary character tables and [3Xfusions[103X be a list of
  possible  class  fusions  from  [3Xsubtbl[103X  to  [3Xtbl[103X.  [2XConsiderStructureConstants[102X
  returns  the  list of those maps [22Xσ[122X in [3Xfusions[103X with the property that for all
  triples  [22X(i,j,k)[122X of class positions, [10XClassMultiplicationCoefficient[110X[22X( [3Xsubtbl[103X,
  i,  j,  k  )[122X  is  not bigger than [10XClassMultiplicationCoefficient[110X[22X( [3Xtbl[103X, σ[i],
  σ[j],   σ[k]   )[122X;   see [2XClassMultiplicationCoefficient[102X   ([14X71.12-7[114X)  for  the
  definition of class multiplication coefficients/structure constants.[133X
  
  [33X[0;0YThe  argument [3Xquick[103X must be a Boolean; if it is [9Xtrue[109X then only those triples
  are  checked  for  which  for  which  at  least  two entries in [3Xfusions[103X have
  different images.[133X
  
  
  [1X73.4 [33X[0;0YOrbits on Sets of Possible Class Fusions[133X[101X
  
  [33X[0;0YThe  permutation  groups  of  table  automorphisms (see [2XAutomorphismsOfTable[102X
  ([14X71.9-4[114X))  of  the subgroup table [3Xsubtbl[103X and the supergroup table [3Xtbl[103X act on
  the  possible  class  fusions  from  [3Xsubtbl[103X  to  [3Xtbl[103X  that  are  returned by
  [2XPossibleClassFusions[102X  ([14X73.3-6[114X),  the former by permuting a list via [2XPermuted[102X
  ([14X21.20-18[114X), the latter by mapping the images via [2XOnPoints[102X ([14X41.2-1[114X).[133X
  
  [33X[0;0YIf  a  set of possible fusions with certain properties was computed that are
  not  invariant  under  the  full  groups  of table automorphisms then only a
  smaller group acts on this set. This may happen for example if a permutation
  character  or  if an explicit approximation of the fusion map was prescribed
  in the call of [2XPossibleClassFusions[102X ([14X73.3-6[114X).[133X
  
  [1X73.4-1 OrbitFusions[101X
  
  [29X[2XOrbitFusions[102X( [3Xsubtblautomorphisms[103X, [3Xfusionmap[103X, [3Xtblautomorphisms[103X ) [32X function
  
  [33X[0;0Yreturns the orbit of the class fusion map [3Xfusionmap[103X under the actions of the
  permutation groups [3Xsubtblautomorphisms[103X and [3Xtblautomorphisms[103X of automorphisms
  of the character table of the subgroup and the supergroup, respectively.[133X
  
  [1X73.4-2 RepresentativesFusions[101X
  
  [29X[2XRepresentativesFusions[102X( [3Xsubtbl[103X, [3Xlistofmaps[103X, [3Xtbl[103X ) [32X function
  
  [33X[0;0YLet [3Xlistofmaps[103X be a list of class fusions from the character table [3Xsubtbl[103X to
  the  character  table  [3Xtbl[103X.  [2XRepresentativesFusions[102X  returns a list of orbit
  representatives  of the class fusions under the action of maximal admissible
  subgroups of the table automorphism groups of these character tables.[133X
  
  [33X[0;0YInstead  of the character tables [3Xsubtbl[103X and [3Xtbl[103X, also the permutation groups
  of  their  table  automorphisms  (see  [2XAutomorphismsOfTable[102X ([14X71.9-4[114X)) may be
  entered.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xfus:= GetFusionMap( subtbl, tbl );[127X[104X
    [4X[28X[ 1, 2, 4, 4, 5, 5, 6, 10, 12, 13, 14, 14, 21, 21 ][128X[104X
    [4X[25Xgap>[125X [27Xorb:= OrbitFusions( AutomorphismsOfTable( subtbl ), fus,[127X[104X
    [4X[25X>[125X [27X             AutomorphismsOfTable( tbl ) );[127X[104X
    [4X[28X[ [ 1, 2, 4, 4, 5, 5, 6, 10, 12, 13, 14, 14, 21, 21 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 5, 5, 6, 10, 13, 12, 14, 14, 21, 21 ] ][128X[104X
    [4X[25Xgap>[125X [27Xrep:= RepresentativesFusions( subtbl, orb, tbl );[127X[104X
    [4X[28X[ [ 1, 2, 4, 4, 5, 5, 6, 10, 12, 13, 14, 14, 21, 21 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X73.5 [33X[0;0YParametrized Maps[133X[101X
  
  [33X[0;0YA [13Xparametrized map[113X is a list whose [22Xi[122X-th entry is either unbound (which means
  that  nothing is known about the image(s) of the [22Xi[122X-th class) or the image of
  the [22Xi[122X-th class (i.e., an integer for fusion maps, power maps, element orders
  etc.,  and a cyclotomic for characters), or a list of possible images of the
  [22Xi[122X-th  class.  In  this  sense,  maps are special parametrized maps. We often
  identify  a  parametrized  map [3Xparamap[103X with the set of all maps [3Xmap[103X with the
  property  that either [10X[3Xmap[103X[10X[i] = [3Xparamap[103X[10X[i][110X or [10X[3Xmap[103X[10X[i][110X is contained in the list
  [10X[3Xparamap[103X[10X[i][110X; we say then that [3Xmap[103X is contained in [3Xparamap[103X.[133X
  
  [33X[0;0YThis  definition  implies  that parametrized maps cannot be used to describe
  sets of maps where lists are possible images. An exception are strings which
  naturally  arise  as  images when class names are considered. So strings and
  lists  of  strings are allowed in parametrized maps, and character constants
  (see Chapter [14X27[114X) are not allowed in maps.[133X
  
  [1X73.5-1 CompositionMaps[101X
  
  [29X[2XCompositionMaps[102X( [3Xparamap2[103X, [3Xparamap1[103X[, [3Xclass[103X] ) [32X function
  
  [33X[0;0YThe  composition  of  two parametrized maps [3Xparamap1[103X, [3Xparamap2[103X is defined as
  the  parametrized  map  [3Xcomp[103X  that  contains  all  compositions [22Xf_2 ∘ f_1[122X of
  elements  [22Xf_1[122X  of [3Xparamap1[103X and [22Xf_2[122X of [3Xparamap2[103X. For example, the composition
  of  a  character  [22Xχ[122X  of  a group [22XG[122X by a parametrized class fusion map from a
  subgroup  [22XH[122X to [22XG[122X is the parametrized map that contains all restrictions of [22Xχ[122X
  by elements of the parametrized fusion map.[133X
  
  [33X[0;0Y[10XCompositionMaps([3Xparamap2[103X[10X,   [3Xparamap1[103X[10X)[110X  is  a  parametrized  map  with  entry
  [10XCompositionMaps([3Xparamap2[103X[10X,   [3Xparamap1[103X[10X,   [3Xclass[103X[10X)[110X   at   position   [3Xclass[103X.   If
  [10X[3Xparamap1[103X[10X[[3Xclass[103X[10X][110X  is  an  integer  then  [10XCompositionMaps([3Xparamap2[103X[10X,  [3Xparamap1[103X[10X,
  [3Xclass[103X[10X)[110X  is equal to [10X[3Xparamap2[103X[10X[ [3Xparamap1[103X[10X[ [3Xclass[103X[10X ] ][110X. Otherwise it is the union
  of [10X[3Xparamap2[103X[10X[[3Xi[103X[10X][110X for [3Xi[103X in [10X[3Xparamap1[103X[10X[ [3Xclass[103X[10X ][110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xmap1:= [ 1, [ 2 .. 4 ], [ 4, 5 ], 1 ];;[127X[104X
    [4X[25Xgap>[125X [27Xmap2:= [ [ 1, 2 ], 2, 2, 3, 3 ];;[127X[104X
    [4X[25Xgap>[125X [27XCompositionMaps( map2, map1 );[127X[104X
    [4X[28X[ [ 1, 2 ], [ 2, 3 ], 3, [ 1, 2 ] ][128X[104X
    [4X[25Xgap>[125X [27XCompositionMaps( map1, map2 );[127X[104X
    [4X[28X[ [ 1, 2, 3, 4 ], [ 2, 3, 4 ], [ 2, 3, 4 ], [ 4, 5 ], [ 4, 5 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-2 InverseMap[101X
  
  [29X[2XInverseMap[102X( [3Xparamap[103X ) [32X function
  
  [33X[0;0YFor  a  parametrized  map [3Xparamap[103X, [2XInverseMap[102X returns a mutable parametrized
  map  whose  [22Xi[122X-th entry is unbound if [22Xi[122X is not in the image of [3Xparamap[103X, equal
  to  [22Xj[122X  if  [22Xi[122X is (in) the image of [10X[3Xparamap[103X[10X[[3Xj[103X[10X][110X exactly for [22Xj[122X, and equal to the
  set of all preimages of [22Xi[122X under [3Xparamap[103X otherwise.[133X
  
  [33X[0;0YWe have [10XCompositionMaps( [3Xparamap[103X[10X, InverseMap( [3Xparamap[103X[10X ) )[110X the identity map.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "2.A5" );;  f:= CharacterTable( "A5" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= GetFusionMap( tbl, f );[127X[104X
    [4X[28X[ 1, 1, 2, 3, 3, 4, 4, 5, 5 ][128X[104X
    [4X[25Xgap>[125X [27Xinv:= InverseMap( fus );[127X[104X
    [4X[28X[ [ 1, 2 ], 3, [ 4, 5 ], [ 6, 7 ], [ 8, 9 ] ][128X[104X
    [4X[25Xgap>[125X [27XCompositionMaps( fus, inv );[127X[104X
    [4X[28X[ 1, 2, 3, 4, 5 ][128X[104X
    [4X[25Xgap>[125X [27X# transfer a power map ``up'' to the factor group[127X[104X
    [4X[25Xgap>[125X [27Xpow:= PowerMap( tbl, 2 );[127X[104X
    [4X[28X[ 1, 1, 2, 4, 4, 8, 8, 6, 6 ][128X[104X
    [4X[25Xgap>[125X [27XCompositionMaps( fus, CompositionMaps( pow, inv ) );[127X[104X
    [4X[28X[ 1, 1, 3, 5, 4 ][128X[104X
    [4X[25Xgap>[125X [27Xlast = PowerMap( f, 2 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27X# transfer a power map of the factor group ``down'' to the group[127X[104X
    [4X[25Xgap>[125X [27XCompositionMaps( inv, CompositionMaps( PowerMap( f, 2 ), fus ) );[127X[104X
    [4X[28X[ [ 1, 2 ], [ 1, 2 ], [ 1, 2 ], [ 4, 5 ], [ 4, 5 ], [ 8, 9 ], [128X[104X
    [4X[28X  [ 8, 9 ], [ 6, 7 ], [ 6, 7 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-3 ProjectionMap[101X
  
  [29X[2XProjectionMap[102X( [3Xfusionmap[103X ) [32X function
  
  [33X[0;0YFor  a  map  [3Xfusionmap[103X,  [2XProjectionMap[102X returns a parametrized map whose [22Xi[122X-th
  entry  is unbound if [22Xi[122X is not in the image of [3Xfusionmap[103X, and equal to [22Xj[122X if [22Xj[122X
  is the smallest position such that [22Xi[122X is the image of [3Xfusionmap[103X[10X[[110X[22Xj[122X[10X][110X.[133X
  
  [33X[0;0YWe  have  [10XCompositionMaps(  [3Xfusionmap[103X[10X,  ProjectionMap(  [3Xfusionmap[103X[10X  )  )[110X  the
  identity  map,  i.e.,  first projecting and then fusing yields the identity.
  Note that [3Xfusionmap[103X must [13Xnot[113X be a parametrized map.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XProjectionMap( [ 1, 1, 1, 2, 2, 2, 3, 4, 5, 5, 5, 6, 6, 6 ] );[127X[104X
    [4X[28X[ 1, 4, 7, 8, 9, 12 ][128X[104X
  [4X[32X[104X
  
  [1X73.5-4 Indirected[101X
  
  [29X[2XIndirected[102X( [3Xcharacter[103X, [3Xparamap[103X ) [32X function
  
  [33X[0;0YFor  a  map  [3Xcharacter[103X  and a parametrized map [3Xparamap[103X, [2XIndirected[102X returns a
  parametrized  map  whose  entry  at position [22Xi[122X is [3Xcharacter[103X[10X[ [110X[3Xparamap[103X[10X[[110X[22Xi[122X[10X] ][110X if
  [3Xparamap[103X[10X[[110X[22Xi[122X[10X][110X is an integer, and an unknown (see Chapter [14X74[114X) otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "M12" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= [ 1, 3, 4, [ 6, 7 ], 8, 10, [ 11, 12 ], [ 11, 12 ],[127X[104X
    [4X[25X>[125X [27X           [ 14, 15 ], [ 14, 15 ] ];;[127X[104X
    [4X[25Xgap>[125X [27XList( Irr( tbl ){ [ 1 .. 6 ] }, x -> Indirected( x, fus ) );[127X[104X
    [4X[28X[ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [128X[104X
    [4X[28X  [ 11, 3, 2, Unknown(9), 1, 0, Unknown(10), Unknown(11), 0, 0 ], [128X[104X
    [4X[28X  [ 11, 3, 2, Unknown(12), 1, 0, Unknown(13), Unknown(14), 0, 0 ], [128X[104X
    [4X[28X  [ 16, 0, -2, 0, 1, 0, 0, 0, Unknown(15), Unknown(16) ], [128X[104X
    [4X[28X  [ 16, 0, -2, 0, 1, 0, 0, 0, Unknown(17), Unknown(18) ], [128X[104X
    [4X[28X  [ 45, -3, 0, 1, 0, 0, -1, -1, 1, 1 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-5 Parametrized[101X
  
  [29X[2XParametrized[102X( [3Xlist[103X ) [32X function
  
  [33X[0;0YFor  a  list  [3Xlist[103X  of  (parametrized) maps of the same length, [2XParametrized[102X
  returns the smallest parametrized map containing all elements of [3Xlist[103X.[133X
  
  [33X[0;0Y[2XParametrized[102X is the inverse function to [2XContainedMaps[102X ([14X73.5-6[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XParametrized( [ [ 1, 2, 3, 4, 5 ], [ 1, 3, 2, 4, 5 ],[127X[104X
    [4X[25X>[125X [27X                   [ 1, 2, 3, 4, 6 ] ] );[127X[104X
    [4X[28X[ 1, [ 2, 3 ], [ 2, 3 ], 4, [ 5, 6 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-6 ContainedMaps[101X
  
  [29X[2XContainedMaps[102X( [3Xparamap[103X ) [32X function
  
  [33X[0;0YFor  a  parametrized  map [3Xparamap[103X, [2XContainedMaps[102X returns the set of all maps
  contained in [3Xparamap[103X.[133X
  
  [33X[0;0Y[2XContainedMaps[102X  is the inverse function to [2XParametrized[102X ([14X73.5-5[114X) in the sense
  that [10XParametrized( ContainedMaps( [3Xparamap[103X[10X ) )[110X is equal to [3Xparamap[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XContainedMaps( [ 1, [ 2, 3 ], [ 2, 3 ], 4, [ 5, 6 ] ] );[127X[104X
    [4X[28X[ [ 1, 2, 2, 4, 5 ], [ 1, 2, 2, 4, 6 ], [ 1, 2, 3, 4, 5 ], [128X[104X
    [4X[28X  [ 1, 2, 3, 4, 6 ], [ 1, 3, 2, 4, 5 ], [ 1, 3, 2, 4, 6 ], [128X[104X
    [4X[28X  [ 1, 3, 3, 4, 5 ], [ 1, 3, 3, 4, 6 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-7 UpdateMap[101X
  
  [29X[2XUpdateMap[102X( [3Xcharacter[103X, [3Xparamap[103X, [3Xindirected[103X ) [32X function
  
  [33X[0;0YLet  [3Xcharacter[103X  be  a  map,  [3Xparamap[103X  a  parametrized  map, and [3Xindirected[103X a
  parametrized map that is contained in [10XCompositionMaps( [3Xcharacter[103X[10X, [3Xparamap[103X[10X )[110X.[133X
  
  [33X[0;0YThen  [2XUpdateMap[102X  changes  [3Xparamap[103X to the parametrized map containing exactly
  the maps whose composition with [3Xcharacter[103X is equal to [3Xindirected[103X.[133X
  
  [33X[0;0YIf a contradiction is detected then [9Xfalse[109X is returned immediately, otherwise
  [9Xtrue[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable("S4(4).2");; tbl:= CharacterTable("He");;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;[127X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 2, [ 2, 3 ], 4, 4, [ 7, 8 ], [ 7, 8 ], 9, 9, 9, [ 10, 11 ], [128X[104X
    [4X[28X  [ 10, 11 ], 18, 18, 25, 25, [ 26, 27 ], [ 26, 27 ], 2, [ 6, 7 ], [128X[104X
    [4X[28X  [ 6, 7 ], [ 6, 7, 8 ], 10, 10, 17, 17, 18, [ 19, 20 ], [ 19, 20 ] ][128X[104X
    [4X[25Xgap>[125X [27Xchi:= Irr( tbl )[2];[127X[104X
    [4X[28XCharacter( CharacterTable( "He" ), [ 51, 11, 3, 6, 0, 3, 3, -1, 1, 2, [128X[104X
    [4X[28X  0, 3*E(7)+3*E(7)^2+3*E(7)^4, 3*E(7)^3+3*E(7)^5+3*E(7)^6, 2, [128X[104X
    [4X[28X  E(7)+E(7)^2+2*E(7)^3+E(7)^4+2*E(7)^5+2*E(7)^6, [128X[104X
    [4X[28X  2*E(7)+2*E(7)^2+E(7)^3+2*E(7)^4+E(7)^5+E(7)^6, 1, 1, 0, 0, [128X[104X
    [4X[28X  -E(7)-E(7)^2-E(7)^4, -E(7)^3-E(7)^5-E(7)^6, E(7)+E(7)^2+E(7)^4, [128X[104X
    [4X[28X  E(7)^3+E(7)^5+E(7)^6, 1, 0, 0, -1, -1, 0, 0, E(7)+E(7)^2+E(7)^4, [128X[104X
    [4X[28X  E(7)^3+E(7)^5+E(7)^6 ] )[128X[104X
    [4X[25Xgap>[125X [27Xfilt:= Filtered( Irr( subtbl ), x -> x[1] = 50 );[127X[104X
    [4X[28X[ Character( CharacterTable( "S4(4).2" ), [128X[104X
    [4X[28X    [ 50, 10, 10, 2, 5, 5, -2, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, -1, [128X[104X
    [4X[28X      10, 2, 2, 2, 1, 1, 0, 0, 0, -1, -1 ] ), [128X[104X
    [4X[28X  Character( CharacterTable( "S4(4).2" ), [128X[104X
    [4X[28X    [ 50, 10, 10, 2, 5, 5, -2, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, -1, [128X[104X
    [4X[28X      -10, -2, -2, -2, -1, -1, 0, 0, 0, 1, 1 ] ) ][128X[104X
    [4X[25Xgap>[125X [27XUpdateMap( chi, fus, filt[1] + TrivialCharacter( subtbl ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 2, 3, 4, 4, 8, 7, 9, 9, 9, 10, 10, 18, 18, 25, 25, [128X[104X
    [4X[28X  [ 26, 27 ], [ 26, 27 ], 2, [ 6, 7 ], [ 6, 7 ], [ 6, 7 ], 10, 10, [128X[104X
    [4X[28X  17, 17, 18, [ 19, 20 ], [ 19, 20 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-8 MeetMaps[101X
  
  [29X[2XMeetMaps[102X( [3Xparamap1[103X, [3Xparamap2[103X ) [32X function
  
  [33X[0;0YFor  two  parametrized maps [3Xparamap1[103X and [3Xparamap2[103X, [2XMeetMaps[102X changes [3Xparamap1[103X
  such  that  the  image  of  class  [22Xi[122X  is the intersection of [3Xparamap1[103X[10X[[110X[22Xi[122X[10X][110X and
  [3Xparamap2[103X[10X[[110X[22Xi[122X[10X][110X.[133X
  
  [33X[0;0YIf  this  implies  that no images remain for a class, the position of such a
  class is returned. If no such inconsistency occurs, [2XMeetMaps[102X returns [9Xtrue[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xmap1:= [ [ 1, 2 ], [ 3, 4 ], 5, 6, [ 7, 8, 9 ] ];;[127X[104X
    [4X[25Xgap>[125X [27Xmap2:= [ [ 1, 3 ], [ 3, 4 ], [ 5, 6 ], 6, [ 8, 9, 10 ] ];;[127X[104X
    [4X[25Xgap>[125X [27XMeetMaps( map1, map2 );  map1;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[ 1, [ 3, 4 ], 5, 6, [ 8, 9 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-9 CommutativeDiagram[101X
  
  [29X[2XCommutativeDiagram[102X( [3Xparamap1[103X, [3Xparamap2[103X, [3Xparamap3[103X, [3Xparamap4[103X[, [3Ximprovements[103X] ) [32X function
  
  [33X[0;0YLet  [3Xparamap1[103X,  [3Xparamap2[103X,  [3Xparamap3[103X,  [3Xparamap4[103X be parametrized maps covering
  parametrized maps [22Xf_1[122X, [22Xf_2[122X, [22Xf_3[122X, [22Xf_4[122X with the property that [10XCompositionMaps[110X[22X(
  f_2, f_1 )[122X is equal to [10XCompositionMaps[110X[22X( f_4, f_3 )[122X.[133X
  
  [33X[0;0Y[2XCommutativeDiagram[102X  checks  this consistency, and changes the arguments such
  that  all  possible images are removed that cannot occur in the parametrized
  maps [22Xf_i[122X.[133X
  
  [33X[0;0YThe  return  value is [9Xfail[109X if an inconsistency was found. Otherwise a record
  with  the  components  [10Ximp1[110X, [10Ximp2[110X, [10Ximp3[110X, [10Ximp4[110X is returned, each bound to the
  list of positions where the corresponding parametrized map was changed,[133X
  
  [33X[0;0YThe  optional  argument  [3Ximprovements[103X must be a record with components [10Ximp1[110X,
  [10Ximp2[110X,  [10Ximp3[110X,  [10Ximp4[110X.  If  such  a  record is specified then only diagrams are
  considered  where  entries  of  the [22Xi[122X-th component occur as preimages of the
  [22Xi[122X-th parametrized map.[133X
  
  [33X[0;0YWhen  an  inconsistency  is detected, [2XCommutativeDiagram[102X immediately returns
  [9Xfail[109X.  Otherwise  a  record  is returned that contains four lists [10Ximp1[110X, [22X...[122X,
  [10Ximp4[110X:  The [22Xi[122X-th component is the list of classes where the [22Xi[122X-th argument was
  changed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xmap1:= [[ 1, 2, 3 ], [ 1, 3 ]];; map2:= [[ 1, 2 ], 1, [ 1, 3 ]];;[127X[104X
    [4X[25Xgap>[125X [27Xmap3:= [ [ 2, 3 ], 3 ];;  map4:= [ , 1, 2, [ 1, 2 ] ];;[127X[104X
    [4X[25Xgap>[125X [27Ximp:= CommutativeDiagram( map1, map2, map3, map4 );[127X[104X
    [4X[28Xrec( imp1 := [ 2 ], imp2 := [ 1 ], imp3 := [  ], imp4 := [  ] )[128X[104X
    [4X[25Xgap>[125X [27Xmap1;  map2;  map3;  map4;[127X[104X
    [4X[28X[ [ 1, 2, 3 ], 1 ][128X[104X
    [4X[28X[ 2, 1, [ 1, 3 ] ][128X[104X
    [4X[28X[ [ 2, 3 ], 3 ][128X[104X
    [4X[28X[ , 1, 2, [ 1, 2 ] ][128X[104X
    [4X[25Xgap>[125X [27Ximp2:= CommutativeDiagram( map1, map2, map3, map4, imp );[127X[104X
    [4X[28Xrec( imp1 := [  ], imp2 := [  ], imp3 := [  ], imp4 := [  ] )[128X[104X
  [4X[32X[104X
  
  [1X73.5-10 CheckFixedPoints[101X
  
  [29X[2XCheckFixedPoints[102X( [3Xinside1[103X, [3Xbetween[103X, [3Xinside2[103X ) [32X function
  
  [33X[0;0YLet [3Xinside1[103X, [3Xbetween[103X, [3Xinside2[103X be parametrized maps, where [3Xbetween[103X is assumed
  to  map  each  fixed  point  of [3Xinside1[103X (that is, [3Xinside1[103X[10X[[110X[22Xi[122X[10X] = [110X[3Xi[103X) to a fixed
  point  of [3Xinside2[103X (that is, [3Xbetween[103X[10X[[110X[22Xi[122X[10X][110X is either an integer that is fixed by
  [3Xinside2[103X  or  a  list  that  has  nonempty intersection with the union of its
  images  under  [3Xinside2[103X).  [2XCheckFixedPoints[102X  changes  [3Xbetween[103X  and [3Xinside2[103X by
  removing all those entries violate this condition.[133X
  
  [33X[0;0YWhen  an  inconsistency  is  detected,  [2XCheckFixedPoints[102X immediately returns
  [9Xfail[109X. Otherwise the list of positions is returned where changes occurred.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "L4(3).2_2" );;[127X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "O7(3)" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;  fus{ [ 48, 49 ] };[127X[104X
    [4X[28X[ [ 54, 55, 56, 57 ], [ 54, 55, 56, 57 ] ][128X[104X
    [4X[25Xgap>[125X [27XCheckFixedPoints( ComputedPowerMaps( subtbl )[5], fus,[127X[104X
    [4X[25X>[125X [27X       ComputedPowerMaps( tbl )[5] );[127X[104X
    [4X[28X[ 48, 49 ][128X[104X
    [4X[25Xgap>[125X [27Xfus{ [ 48, 49 ] };[127X[104X
    [4X[28X[ [ 56, 57 ], [ 56, 57 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.5-11 TransferDiagram[101X
  
  [29X[2XTransferDiagram[102X( [3Xinside1[103X, [3Xbetween[103X, [3Xinside2[103X[, [3Ximprovements[103X] ) [32X function
  
  [33X[0;0YLet  [3Xinside1[103X,  [3Xbetween[103X,  [3Xinside2[103X  be parametrized maps covering parametrized
  maps  [22Xm_1[122X,  [22Xf[122X, [22Xm_2[122X with the property that [10XCompositionMaps[110X[22X( m_2, f )[122X is equal
  to [10XCompositionMaps[110X[22X( f, m_1 )[122X.[133X
  
  [33X[0;0Y[2XTransferDiagram[102X checks this consistency, and changes the arguments such that
  all  possible  images are removed that cannot occur in the parametrized maps
  [22Xm_i[122X and [22Xf[122X.[133X
  
  [33X[0;0YSo  [2XTransferDiagram[102X  is  similar to [2XCommutativeDiagram[102X ([14X73.5-9[114X), but [3Xbetween[103X
  occurs twice in each diagram checked.[133X
  
  [33X[0;0YIf  a record [3Ximprovements[103X with fields [10Ximpinside1[110X, [10Ximpbetween[110X, and [10Ximpinside2[110X
  is  specified,  only those diagrams with elements of [10Ximpinside1[110X as preimages
  of  [3Xinside1[103X,  elements  of [10Ximpbetween[110X as preimages of [3Xbetween[103X or elements of
  [10Ximpinside2[110X as preimages of [3Xinside2[103X are considered.[133X
  
  [33X[0;0YWhen an inconsistency is detected, [2XTransferDiagram[102X immediately returns [9Xfail[109X.
  Otherwise  a  record  is  returned  that  contains  three  lists [10Ximpinside1[110X,
  [10Ximpbetween[110X, and [10Ximpinside2[110X of positions where the arguments were changed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "2F4(2)" );;  tbl:= CharacterTable( "Ru" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;[127X[104X
    [4X[25Xgap>[125X [27Xpermchar:= Sum( Irr( tbl ){ [ 1, 5, 6 ] } );;[127X[104X
    [4X[25Xgap>[125X [27XCheckPermChar( subtbl, tbl, fus, permchar );; fus;[127X[104X
    [4X[28X[ 1, 2, 2, 4, 5, 7, 8, 9, 11, 14, 14, [ 13, 15 ], 16, [ 18, 19 ], 20, [128X[104X
    [4X[28X  [ 25, 26 ], [ 25, 26 ], 5, 5, 6, 8, 14, [ 13, 15 ], [ 18, 19 ], [128X[104X
    [4X[28X  [ 18, 19 ], [ 25, 26 ], [ 25, 26 ], 27, 27 ][128X[104X
    [4X[25Xgap>[125X [27Xtr:= TransferDiagram(PowerMap( subtbl, 2), fus, PowerMap(tbl, 2));[127X[104X
    [4X[28Xrec( impbetween := [ 12, 23 ], impinside1 := [  ], impinside2 := [  ] [128X[104X
    [4X[28X )[128X[104X
    [4X[25Xgap>[125X [27Xtr:= TransferDiagram(PowerMap(subtbl, 3), fus, PowerMap( tbl, 3 ));[127X[104X
    [4X[28Xrec( impbetween := [ 14, 24, 25 ], impinside1 := [  ], [128X[104X
    [4X[28X  impinside2 := [  ] )[128X[104X
    [4X[25Xgap>[125X [27Xtr:= TransferDiagram( PowerMap(subtbl, 3), fus, PowerMap(tbl, 3),[127X[104X
    [4X[25X>[125X [27X            tr );[127X[104X
    [4X[28Xrec( impbetween := [  ], impinside1 := [  ], impinside2 := [  ] )[128X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 2, 4, 5, 7, 8, 9, 11, 14, 14, 15, 16, 18, 20, [ 25, 26 ], [128X[104X
    [4X[28X  [ 25, 26 ], 5, 5, 6, 8, 14, 13, 19, 19, [ 25, 26 ], [ 25, 26 ], 27, [128X[104X
    [4X[28X  27 ][128X[104X
  [4X[32X[104X
  
  [1X73.5-12 TestConsistencyMaps[101X
  
  [29X[2XTestConsistencyMaps[102X( [3Xpowermap1[103X, [3Xfusionmap[103X, [3Xpowermap2[103X[, [3Xfusimp[103X] ) [32X function
  
  [33X[0;0YLet  [3Xpowermap1[103X  and [3Xpowermap2[103X be lists of parametrized maps, and [3Xfusionmap[103X a
  parametrized  map,  such  that  for  each  [22Xi[122X,  the  [22Xi[122X-th entry in [3Xpowermap1[103X,
  [3Xfusionmap[103X,  and  the  [22Xi[122X-th entry in [3Xpowermap2[103X (if bound) are valid arguments
  for   [2XTransferDiagram[102X   ([14X73.5-11[114X).  So  a  typical  situation  for  applying
  [2XTestConsistencyMaps[102X is that [3Xfusionmap[103X is an approximation of a class fusion,
  and [3Xpowermap1[103X, [3Xpowermap2[103X are the lists of power maps of the subgroup and the
  group.[133X
  
  [33X[0;0Y[2XTestConsistencyMaps[102X  repeatedly  applies  [2XTransferDiagram[102X ([14X73.5-11[114X) to these
  arguments for all [22Xi[122X until no more changes occur.[133X
  
  [33X[0;0YIf  a  list  [3Xfusimp[103X  is  specified then only those diagrams with elements of
  [3Xfusimp[103X as preimages of [3Xfusionmap[103X are considered.[133X
  
  [33X[0;0YWhen  an  inconsistency is detected, [2XTestConsistencyMaps[102X immediately returns
  [9Xfalse[109X. Otherwise [9Xtrue[109X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "2F4(2)" );;  tbl:= CharacterTable( "Ru" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;[127X[104X
    [4X[25Xgap>[125X [27Xpermchar:= Sum( Irr( tbl ){ [ 1, 5, 6 ] } );;[127X[104X
    [4X[25Xgap>[125X [27XCheckPermChar( subtbl, tbl, fus, permchar );; fus;[127X[104X
    [4X[28X[ 1, 2, 2, 4, 5, 7, 8, 9, 11, 14, 14, [ 13, 15 ], 16, [ 18, 19 ], 20, [128X[104X
    [4X[28X  [ 25, 26 ], [ 25, 26 ], 5, 5, 6, 8, 14, [ 13, 15 ], [ 18, 19 ], [128X[104X
    [4X[28X  [ 18, 19 ], [ 25, 26 ], [ 25, 26 ], 27, 27 ][128X[104X
    [4X[25Xgap>[125X [27XTestConsistencyMaps( ComputedPowerMaps( subtbl ), fus,[127X[104X
    [4X[25X>[125X [27X       ComputedPowerMaps( tbl ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 2, 4, 5, 7, 8, 9, 11, 14, 14, 15, 16, 18, 20, [ 25, 26 ], [128X[104X
    [4X[28X  [ 25, 26 ], 5, 5, 6, 8, 14, 13, 19, 19, [ 25, 26 ], [ 25, 26 ], 27, [128X[104X
    [4X[28X  27 ][128X[104X
    [4X[25Xgap>[125X [27XIndeterminateness( fus );[127X[104X
    [4X[28X16[128X[104X
  [4X[32X[104X
  
  [1X73.5-13 Indeterminateness[101X
  
  [29X[2XIndeterminateness[102X( [3Xparamap[103X ) [32X function
  
  [33X[0;0YFor a parametrized map [3Xparamap[103X, [2XIndeterminateness[102X returns the number of maps
  contained  in  [3Xparamap[103X,  that is, the product of lengths of lists in [3Xparamap[103X
  denoting lists of several images.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIndeterminateness([ 1, [ 2, 3 ], [ 4, 5 ], [ 6, 7, 8, 9, 10 ], 11 ]);[127X[104X
    [4X[28X20[128X[104X
  [4X[32X[104X
  
  [1X73.5-14 PrintAmbiguity[101X
  
  [29X[2XPrintAmbiguity[102X( [3Xlist[103X, [3Xparamap[103X ) [32X function
  
  [33X[0;0YFor  each  map in the list [3Xlist[103X, [2XPrintAmbiguity[102X prints its position in [3Xlist[103X,
  the  indeterminateness  (see [2XIndeterminateness[102X ([14X73.5-13[114X)) of the composition
  with the parametrized map [3Xparamap[103X, and the list of positions where a list of
  images occurs in this composition.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xparamap:= [ 1, [ 2, 3 ], [ 3, 4 ], [ 2, 3, 4 ], 5 ];;[127X[104X
    [4X[25Xgap>[125X [27Xlist:= [ [ 1, 1, 1, 1, 1 ], [ 1, 1, 2, 2, 3 ], [ 1, 2, 3, 4, 5 ] ];;[127X[104X
    [4X[25Xgap>[125X [27XPrintAmbiguity( list, paramap );[127X[104X
    [4X[28X1 1 [  ][128X[104X
    [4X[28X2 4 [ 2, 4 ][128X[104X
    [4X[28X3 12 [ 2, 3, 4 ][128X[104X
  [4X[32X[104X
  
  [1X73.5-15 ContainedSpecialVectors[101X
  
  [29X[2XContainedSpecialVectors[102X( [3Xtbl[103X, [3Xchars[103X, [3Xparacharacter[103X, [3Xfunc[103X ) [32X function
  [29X[2XIntScalarProducts[102X( [3Xtbl[103X, [3Xchars[103X, [3Xcandidate[103X ) [32X function
  [29X[2XNonnegIntScalarProducts[102X( [3Xtbl[103X, [3Xchars[103X, [3Xcandidate[103X ) [32X function
  [29X[2XContainedPossibleVirtualCharacters[102X( [3Xtbl[103X, [3Xchars[103X, [3Xparacharacter[103X ) [32X function
  [29X[2XContainedPossibleCharacters[102X( [3Xtbl[103X, [3Xchars[103X, [3Xparacharacter[103X ) [32X function
  
  [33X[0;0YLet  [3Xtbl[103X be an ordinary character table, [3Xchars[103X a list of class functions (or
  values  lists), [3Xparacharacter[103X a parametrized class function of [3Xtbl[103X, and [3Xfunc[103X
  a function that expects the three arguments [3Xtbl[103X, [3Xchars[103X, and a values list of
  a class function, and that returns either [9Xtrue[109X or [9Xfalse[109X.[133X
  
  [33X[0;0Y[2XContainedSpecialVectors[102X  returns  the  list  of  all  those  elements [3Xvec[103X of
  [3Xparacharacter[103X that have integral norm, have integral scalar product with the
  principal character of [3Xtbl[103X, and that satisfy [3Xfunc[103X[10X( [110X[3Xtbl[103X, [3Xchars[103X, [3Xvec[103X [10X) = [110X[9Xtrue[109X.[133X
  
  [33X[0;0YTwo  special  cases of [3Xfunc[103X are the check whether the scalar products in [3Xtbl[103X
  between  the  vector  [3Xvec[103X and all lists in [3Xchars[103X are integers or nonnegative
  integers,  respectively.  These functions are accessible as global variables
  [2XIntScalarProducts[102X          and          [2XNonnegIntScalarProducts[102X,         and
  [2XContainedPossibleVirtualCharacters[102X  and  [2XContainedPossibleCharacters[102X provide
  access to these special cases of [2XContainedSpecialVectors[102X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "HSM12" );;  tbl:= CharacterTable( "HS" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;[127X[104X
    [4X[25Xgap>[125X [27Xrest:= CompositionMaps( Irr( tbl )[8], fus );[127X[104X
    [4X[28X[ 231, [ -9, 7 ], [ -9, 7 ], [ -9, 7 ], 6, 15, 15, [ -1, 15 ], [128X[104X
    [4X[28X  [ -1, 15 ], 1, [ 1, 6 ], [ 1, 6 ], [ 1, 6 ], [ 1, 6 ], [ -2, 0 ], [128X[104X
    [4X[28X  [ 1, 2 ], [ 1, 2 ], [ 1, 2 ], 0, 0, 1, 0, 0, 0, 0 ][128X[104X
    [4X[25Xgap>[125X [27Xirr:= Irr( subtbl );;[127X[104X
    [4X[25Xgap>[125X [27X# no further condition[127X[104X
    [4X[25Xgap>[125X [27Xcont1:= ContainedSpecialVectors( subtbl, irr, rest,[127X[104X
    [4X[25X>[125X [27X               function( tbl, chars, vec ) return true; end );;[127X[104X
    [4X[25Xgap>[125X [27XLength( cont1 );[127X[104X
    [4X[28X24[128X[104X
    [4X[25Xgap>[125X [27X# require scalar products to be integral[127X[104X
    [4X[25Xgap>[125X [27Xcont2:= ContainedSpecialVectors( subtbl, irr, rest,[127X[104X
    [4X[25X>[125X [27X               IntScalarProducts );[127X[104X
    [4X[28X[ [ 231, 7, -9, -9, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, 7, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, -9, 6, 15, 15, 15, 15, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, 7, 6, 15, 15, 15, 15, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ] ][128X[104X
    [4X[25Xgap>[125X [27X# additionally require scalar products to be nonnegative[127X[104X
    [4X[25Xgap>[125X [27Xcont3:= ContainedSpecialVectors( subtbl, irr, rest,[127X[104X
    [4X[25X>[125X [27X               NonnegIntScalarProducts );[127X[104X
    [4X[28X[ [ 231, 7, -9, -9, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, 7, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ] ][128X[104X
    [4X[25Xgap>[125X [27Xcont2 = ContainedPossibleVirtualCharacters( subtbl, irr, rest );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xcont3 = ContainedPossibleCharacters( subtbl, irr, rest );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X73.5-16 CollapsedMat[101X
  
  [29X[2XCollapsedMat[102X( [3Xmat[103X, [3Xmaps[103X ) [32X function
  
  [33X[0;0Yis a record with the components[133X
  
  [8X[10Xfusion[110X[108X
        [33X[0;6Yfusion  that  collapses those columns of [3Xmat[103X that are equal in [3Xmat[103X and
        also for all maps in the list [3Xmaps[103X,[133X
  
  [8X[10Xmat[110X[108X
        [33X[0;6Ythe image of [3Xmat[103X under that fusion.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xmat:= [ [ 1, 1, 1, 1 ], [ 2, -1, 0, 0 ], [ 4, 4, 1, 1 ] ];;[127X[104X
    [4X[25Xgap>[125X [27Xcoll:= CollapsedMat( mat, [] );[127X[104X
    [4X[28Xrec( fusion := [ 1, 2, 3, 3 ], [128X[104X
    [4X[28X  mat := [ [ 1, 1, 1 ], [ 2, -1, 0 ], [ 4, 4, 1 ] ] )[128X[104X
    [4X[25Xgap>[125X [27XList( last.mat, x -> x{ last.fusion } ) = mat;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xcoll:= CollapsedMat( mat, [ [ 1, 1, 1, 2 ] ] );[127X[104X
    [4X[28Xrec( fusion := [ 1, 2, 3, 4 ], [128X[104X
    [4X[28X  mat := [ [ 1, 1, 1, 1 ], [ 2, -1, 0, 0 ], [ 4, 4, 1, 1 ] ] )[128X[104X
  [4X[32X[104X
  
  [1X73.5-17 ContainedDecomposables[101X
  
  [29X[2XContainedDecomposables[102X( [3Xconstituents[103X, [3Xmoduls[103X, [3Xparachar[103X, [3Xfunc[103X ) [32X function
  [29X[2XContainedCharacters[102X( [3Xtbl[103X, [3Xconstituents[103X, [3Xparachar[103X ) [32X function
  
  [33X[0;0YFor these functions, let [3Xconstituents[103X be a list of [13Xrational[113X class functions,
  [3Xmoduls[103X  a  list of positive integers, [3Xparachar[103X a parametrized rational class
  function, [3Xfunc[103X a function that returns either [9Xtrue[109X or [9Xfalse[109X when called with
  (a values list of) a class function, and [3Xtbl[103X a character table.[133X
  
  [33X[0;0Y[2XContainedDecomposables[102X  returns  the  set of all elements [22Xχ[122X of [3Xparachar[103X that
  satisfy  [3Xfunc[103X[22X(  χ  )  =[122X  [9Xtrue[109X  and  that  lie  in  the  [22Xℤ[122X-lattice spanned by
  [3Xconstituents[103X,  modulo  [3Xmoduls[103X.  The  latter  means they lie in the [22Xℤ[122X-lattice
  spanned  by  [3Xconstituents[103X and the set [22X{ [3Xmoduls[103X[i] ⋅ e_i; 1 ≤ i ≤ n }[122X where [22Xn[122X
  is the length of [3Xparachar[103X and [22Xe_i[122X is the [22Xi[122X-th standard basis vector.[133X
  
  [33X[0;0YOne  application of [2XContainedDecomposables[102X is the following. [3Xconstituents[103X is
  a  list  of  (values  lists of) rational characters of an ordinary character
  table   [3Xtbl[103X,   [3Xmoduls[103X   is   the   list   of   centralizer   orders  of  [3Xtbl[103X
  (see [2XSizesCentralizers[102X  ([14X71.9-2[114X)),  and  [3Xfunc[103X checks whether a vector in the
  lattice  mentioned above has nonnegative integral scalar product in [3Xtbl[103X with
  all    entries    of    [3Xconstituents[103X.   This   situation   is   handled   by
  [2XContainedCharacters[102X.  Note  that  the  entries  of  the  result list are [13Xnot[113X
  necessary  linear combinations of [3Xconstituents[103X, and they are [13Xnot[113X necessarily
  characters of [3Xtbl[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "HSM12" );;  tbl:= CharacterTable( "HS" );;[127X[104X
    [4X[25Xgap>[125X [27Xrat:= RationalizedMat( Irr( subtbl ) );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;[127X[104X
    [4X[25Xgap>[125X [27Xrest:= CompositionMaps( Irr( tbl )[8], fus );[127X[104X
    [4X[28X[ 231, [ -9, 7 ], [ -9, 7 ], [ -9, 7 ], 6, 15, 15, [ -1, 15 ], [128X[104X
    [4X[28X  [ -1, 15 ], 1, [ 1, 6 ], [ 1, 6 ], [ 1, 6 ], [ 1, 6 ], [ -2, 0 ], [128X[104X
    [4X[28X  [ 1, 2 ], [ 1, 2 ], [ 1, 2 ], 0, 0, 1, 0, 0, 0, 0 ][128X[104X
    [4X[25Xgap>[125X [27X# compute all vectors in the lattice[127X[104X
    [4X[25Xgap>[125X [27XContainedDecomposables( rat, SizesCentralizers( subtbl ), rest,[127X[104X
    [4X[25X>[125X [27X       ReturnTrue );[127X[104X
    [4X[28X[ [ 231, 7, -9, -9, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, -9, 6, 15, 15, 15, 15, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, 7, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, 7, 6, 15, 15, 15, 15, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ] ][128X[104X
    [4X[25Xgap>[125X [27X# compute only those vectors that are characters[127X[104X
    [4X[25Xgap>[125X [27XContainedDecomposables( rat, SizesCentralizers( subtbl ), rest,[127X[104X
    [4X[25X>[125X [27X       x -> NonnegIntScalarProducts( subtbl, Irr( subtbl ), x ) );[127X[104X
    [4X[28X[ [ 231, 7, -9, -9, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ], [128X[104X
    [4X[28X  [ 231, 7, -9, 7, 6, 15, 15, -1, -1, 1, 6, 6, 1, 1, -2, 1, 2, 2, 0, [128X[104X
    [4X[28X      0, 1, 0, 0, 0, 0 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X73.6 [33X[0;0YSubroutines for the Construction of Power Maps[133X[101X
  
  [33X[0;0YIn the argument lists of the functions [2XCongruences[102X ([14X73.6-2[114X), [2XConsiderKernels[102X
  ([14X73.6-3[114X),   and   [2XConsiderSmallerPowerMaps[102X  ([14X73.6-4[114X),  [3Xtbl[103X  is  an  ordinary
  character  table, [3Xchars[103X a list of (values lists of) characters of [3Xtbl[103X, [3Xprime[103X
  a  prime  integer, [3Xapproxmap[103X a parametrized map that is an approximation for
  the  [3Xprime[103X-th  power  map  of  [3Xtbl[103X  (e.g.,  a  list returned by [2XInitPowerMap[102X
  ([14X73.6-1[114X), and [3Xquick[103X a Boolean.[133X
  
  [33X[0;0YThe  [3Xquick[103X value [9Xtrue[109X means that only those classes are considered for which
  [3Xapproxmap[103X lists more than one possible image.[133X
  
  [1X73.6-1 InitPowerMap[101X
  
  [29X[2XInitPowerMap[102X( [3Xtbl[103X, [3Xprime[103X ) [32X function
  
  [33X[0;0YFor  an ordinary character table [3Xtbl[103X and a prime [3Xprime[103X, [2XInitPowerMap[102X returns
  a parametrized map that is a first approximation of the [3Xprime[103X-th powermap of
  [3Xtbl[103X,   using   the   conditions  1. and  2. listed  in  the  description  of
  [2XPossiblePowerMaps[102X ([14X73.1-2[114X).[133X
  
  [33X[0;0YIf  there  are  classes for which no images are possible, according to these
  criteria, then [9Xfail[109X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xt:= CharacterTable( "U4(3).4" );;[127X[104X
    [4X[25Xgap>[125X [27Xpow:= InitPowerMap( t, 2 );[127X[104X
    [4X[28X[ 1, 1, 3, 4, 5, [ 2, 16 ], [ 2, 16, 17 ], 8, 3, [ 3, 4 ], [128X[104X
    [4X[28X  [ 11, 12 ], [ 11, 12 ], [ 6, 7, 18, 19, 30, 31, 32, 33 ], 14, [128X[104X
    [4X[28X  [ 9, 20 ], 1, 1, 2, 2, 3, [ 3, 4, 5 ], [ 3, 4, 5 ], [128X[104X
    [4X[28X  [ 6, 7, 18, 19, 30, 31, 32, 33 ], 8, 9, 9, [ 9, 10, 20, 21, 22 ], [128X[104X
    [4X[28X  [ 11, 12 ], [ 11, 12 ], 16, 16, [ 2, 16 ], [ 2, 16 ], 17, 17, [128X[104X
    [4X[28X  [ 6, 18, 30, 31, 32, 33 ], [ 6, 18, 30, 31, 32, 33 ], [128X[104X
    [4X[28X  [ 6, 7, 18, 19, 30, 31, 32, 33 ], [ 6, 7, 18, 19, 30, 31, 32, 33 ], [128X[104X
    [4X[28X  20, 20, [ 9, 20 ], [ 9, 20 ], [ 9, 10, 20, 21, 22 ], [128X[104X
    [4X[28X  [ 9, 10, 20, 21, 22 ], 24, 24, [ 15, 25, 26, 40, 41, 42, 43 ], [128X[104X
    [4X[28X  [ 15, 25, 26, 40, 41, 42, 43 ], [ 28, 29 ], [ 28, 29 ], [ 28, 29 ], [128X[104X
    [4X[28X  [ 28, 29 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.6-2 Congruences[101X
  
  [29X[2XCongruences[102X( [3Xtbl[103X, [3Xchars[103X, [3Xapproxmap[103X, [3Xprime[103X, [3Xquick[103X ) [32X function
  
  [33X[0;0Y[2XCongruences[102X  replaces the entries of [3Xapproxmap[103X by improved values, according
  to condition 3. listed in the description of [2XPossiblePowerMaps[102X ([14X73.1-2[114X).[133X
  
  [33X[0;0YFor  each class for which no images are possible according to the tests, the
  new value of [3Xapproxmap[103X is an empty list. [2XCongruences[102X returns [9Xtrue[109X if no such
  inconsistencies occur, and [9Xfalse[109X otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCongruences( t, Irr( t ), pow, 2, false );  pow;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[ 1, 1, 3, 4, 5, 2, 2, 8, 3, 4, 11, 12, [ 6, 7 ], 14, 9, 1, 1, 2, 2, [128X[104X
    [4X[28X  3, 4, 5, [ 6, 7 ], 8, 9, 9, 10, 11, 12, 16, 16, 16, 16, 17, 17, 18, [128X[104X
    [4X[28X  18, [ 18, 19 ], [ 18, 19 ], 20, 20, 20, 20, 22, 22, 24, 24, [128X[104X
    [4X[28X  [ 25, 26 ], [ 25, 26 ], 28, 28, 29, 29 ][128X[104X
  [4X[32X[104X
  
  [1X73.6-3 ConsiderKernels[101X
  
  [29X[2XConsiderKernels[102X( [3Xtbl[103X, [3Xchars[103X, [3Xapproxmap[103X, [3Xprime[103X, [3Xquick[103X ) [32X function
  
  [33X[0;0Y[2XConsiderKernels[102X  replaces  the  entries  of  [3Xapproxmap[103X  by  improved values,
  according  to  condition  4. listed  in the description of [2XPossiblePowerMaps[102X
  ([14X73.1-2[114X).[133X
  
  [33X[0;0Y[2XCongruences[102X  ([14X73.6-2[114X)  returns  [9Xtrue[109X  if  the  orders  of the kernels of all
  characters  in  [3Xchars[103X  divide  the  order  of  the  group  of [3Xtbl[103X, and [9Xfalse[109X
  otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xt:= CharacterTable( "A7.2" );;  init:= InitPowerMap( t, 2 );[127X[104X
    [4X[28X[ 1, 1, 3, 4, [ 2, 9, 10 ], 6, 3, 8, 1, 1, [ 2, 9, 10 ], 3, [ 3, 4 ], [128X[104X
    [4X[28X  6, [ 7, 12 ] ][128X[104X
    [4X[25Xgap>[125X [27XConsiderKernels( t, Irr( t ), init, 2, false );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xinit;[127X[104X
    [4X[28X[ 1, 1, 3, 4, 2, 6, 3, 8, 1, 1, 2, 3, [ 3, 4 ], 6, 7 ][128X[104X
  [4X[32X[104X
  
  [1X73.6-4 ConsiderSmallerPowerMaps[101X
  
  [29X[2XConsiderSmallerPowerMaps[102X( [3Xtbl[103X, [3Xapproxmap[103X, [3Xprime[103X, [3Xquick[103X ) [32X function
  
  [33X[0;0Y[2XConsiderSmallerPowerMaps[102X  replaces  the  entries  of  [3Xapproxmap[103X  by improved
  values,   according   to   condition   5. listed   in   the  description  of
  [2XPossiblePowerMaps[102X ([14X73.1-2[114X).[133X
  
  [33X[0;0Y[2XConsiderSmallerPowerMaps[102X  returns  [9Xtrue[109X  if  each  class admits at least one
  image after the checks, otherwise [9Xfalse[109X is returned. If no element orders of
  [3Xtbl[103X  are  stored  (see [2XOrdersClassRepresentatives[102X  ([14X71.9-1[114X))  then  [9Xtrue[109X  is
  returned without any tests.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xt:= CharacterTable( "3.A6" );;  init:= InitPowerMap( t, 5 );[127X[104X
    [4X[28X[ 1, [ 2, 3 ], [ 2, 3 ], 4, [ 5, 6 ], [ 5, 6 ], [ 7, 8 ], [ 7, 8 ], [128X[104X
    [4X[28X  9, [ 10, 11 ], [ 10, 11 ], 1, [ 2, 3 ], [ 2, 3 ], 1, [ 2, 3 ], [128X[104X
    [4X[28X  [ 2, 3 ] ][128X[104X
    [4X[25Xgap>[125X [27XIndeterminateness( init );[127X[104X
    [4X[28X4096[128X[104X
    [4X[25Xgap>[125X [27XConsiderSmallerPowerMaps( t, init, 5, false );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIndeterminateness( init );[127X[104X
    [4X[28X256[128X[104X
  [4X[32X[104X
  
  [1X73.6-5 MinusCharacter[101X
  
  [29X[2XMinusCharacter[102X( [3Xcharacter[103X, [3Xprimepowermap[103X, [3Xprime[103X ) [32X function
  
  [33X[0;0YLet  [3Xcharacter[103X  be (the list of values of) a class function [22Xχ[122X, [3Xprime[103X a prime
  integer  [22Xp[122X, and [3Xprimepowermap[103X a parametrized map that is an approximation of
  the  [22Xp[122X-th power map for the character table of [22Xχ[122X. [2XMinusCharacter[102X returns the
  parametrized  map  of  values  of  [22Xχ^{p-}[122X, which is defined by [22Xχ^{p-}(g) = (
  χ(g)^p - χ(g^p) ) / p[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "S7" );;  pow:= InitPowerMap( tbl, 2 );;[127X[104X
    [4X[25Xgap>[125X [27Xpow;[127X[104X
    [4X[28X[ 1, 1, 3, 4, [ 2, 9, 10 ], 6, 3, 8, 1, 1, [ 2, 9, 10 ], 3, [ 3, 4 ], [128X[104X
    [4X[28X  6, [ 7, 12 ] ][128X[104X
    [4X[25Xgap>[125X [27Xchars:= Irr( tbl ){ [ 2 .. 5 ] };;[127X[104X
    [4X[25Xgap>[125X [27XList( chars, x -> MinusCharacter( x, pow, 2 ) );[127X[104X
    [4X[28X[ [ 0, 0, 0, 0, [ 0, 1 ], 0, 0, 0, 0, 0, [ 0, 1 ], 0, 0, 0, [ 0, 1 ] ][128X[104X
    [4X[28X    , [128X[104X
    [4X[28X  [ 15, -1, 3, 0, [ -2, -1, 0 ], 0, -1, 1, 5, -3, [ 0, 1, 2 ], -1, 0, [128X[104X
    [4X[28X      0, [ 0, 1 ] ], [128X[104X
    [4X[28X  [ 15, -1, 3, 0, [ -1, 0, 2 ], 0, -1, 1, 5, -3, [ 1, 2, 4 ], -1, 0, [128X[104X
    [4X[28X      0, 1 ], [128X[104X
    [4X[28X  [ 190, -2, 1, 1, [ 0, 2 ], 0, 1, 1, -10, -10, [ 0, 2 ], -1, -1, 0, [128X[104X
    [4X[28X      [ -1, 0 ] ] ][128X[104X
  [4X[32X[104X
  
  [1X73.6-6 PowerMapsAllowedBySymmetrizations[101X
  
  [29X[2XPowerMapsAllowedBySymmetrizations[102X( [3Xtbl[103X, [3Xsubchars[103X, [3Xchars[103X, [3Xapproxmap[103X, [3Xprime[103X, [3Xparameters[103X ) [32X function
  
  [33X[0;0YLet  [3Xtbl[103X  be an ordinary character table, [3Xprime[103X a prime integer, [3Xapproxmap[103X a
  parametrized  map  that is an approximation of the [3Xprime[103X-th power map of [3Xtbl[103X
  (e.g.,  a  list  returned  by  [2XInitPowerMap[102X ([14X73.6-1[114X), [3Xchars[103X and [3Xsubchars[103X two
  lists  of  (values lists of) characters of [3Xtbl[103X, and [3Xparameters[103X a record with
  components  [10Xmaxlen[110X,  [10Xminamb[110X, [10Xmaxamb[110X (three integers), [10Xquick[110X (a Boolean), and
  [10Xcontained[110X  (a  function).  Usual values of [10Xcontained[110X are [2XContainedCharacters[102X
  ([14X73.5-17[114X) or [2XContainedPossibleCharacters[102X ([14X73.5-15[114X).[133X
  
  [33X[0;0Y[2XPowerMapsAllowedBySymmetrizations[102X  replaces  the  entries  of  [3Xapproxmap[103X  by
  improved  values,  according  to  condition  6. listed in the description of
  [2XPossiblePowerMaps[102X ([14X73.1-2[114X).[133X
  
  [33X[0;0YMore precisely, the strategy used is as follows.[133X
  
  [33X[0;0YFirst, for each [22Xχ ∈ [3Xchars[103X[122X, let [10Xminus:= MinusCharacter([110X[22Xχ[122X[10X, [3Xapproxmap[103X[10X, [3Xprime[103X[10X)[110X.[133X
  
  [30X    [33X[0;6YIf [10XIndeterminateness( minus )[110X[22X= 1[122X and [10X[3Xparameters[103X[10X.quick = false[110X then the
        scalar  products of [10Xminus[110X with [3Xsubchars[103X are checked; if not all scalar
        products  are  nonnegative  integers  then  an empty list is returned,
        otherwise [22Xχ[122X is deleted from the list of characters to inspect.[133X
  
  [30X    [33X[0;6YOtherwise    if   [10XIndeterminateness(   minus   )[110X   is   smaller   than
        [10X[3Xparameters[103X[10X.minamb[110X then [22Xχ[122X is deleted from the list of characters.[133X
  
  [30X    [33X[0;6YIf  [10X[3Xparameters[103X[10X.minamb[110X [22X≤[122X [10XIndeterminateness( minus )[110X [22X≤[122X [10X[3Xparameters[103X[10X.maxamb[110X
        then   construct   the   list  of  contained  class  functions  [10Xposs:=
        [3Xparameters[103X[10X.contained([3Xtbl[103X[10X,  [3Xsubchars[103X[10X,  minus)[110X and [10XParametrized( poss )[110X,
        and  improve  the  approximation  of  the  power  map  using [2XUpdateMap[102X
        ([14X73.5-7[114X).[133X
  
  [33X[0;0YIf this yields no further immediate improvements then we branch. If there is
  a  character  from  [3Xchars[103X left with less or equal [10X[3Xparameters[103X[10X.maxlen[110X possible
  symmetrizations,   compute   the  union  of  power  maps  allowed  by  these
  possibilities.  Otherwise  we  choose  a  class  [22XC[122X  such  that  the possible
  symmetrizations of a character in [3Xchars[103X differ at [22XC[122X, and compute recursively
  the  union  of all allowed power maps with image at [22XC[122X fixed in the set given
  by the current approximation of the power map.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtbl:= CharacterTable( "U4(3).4" );;[127X[104X
    [4X[25Xgap>[125X [27Xpow:= InitPowerMap( tbl, 2 );;[127X[104X
    [4X[25Xgap>[125X [27XCongruences( tbl, Irr( tbl ), pow, 2 );;  pow;[127X[104X
    [4X[28X[ 1, 1, 3, 4, 5, 2, 2, 8, 3, 4, 11, 12, [ 6, 7 ], 14, 9, 1, 1, 2, 2, [128X[104X
    [4X[28X  3, 4, 5, [ 6, 7 ], 8, 9, 9, 10, 11, 12, 16, 16, 16, 16, 17, 17, 18, [128X[104X
    [4X[28X  18, [ 18, 19 ], [ 18, 19 ], 20, 20, 20, 20, 22, 22, 24, 24, [128X[104X
    [4X[28X  [ 25, 26 ], [ 25, 26 ], 28, 28, 29, 29 ][128X[104X
    [4X[25Xgap>[125X [27XPowerMapsAllowedBySymmetrizations( tbl, Irr( tbl ), Irr( tbl ),[127X[104X
    [4X[25X>[125X [27X      pow, 2, rec( maxlen:= 10, contained:= ContainedPossibleCharacters,[127X[104X
    [4X[25X>[125X [27X      minamb:= 2, maxamb:= infinity, quick:= false ) );[127X[104X
    [4X[28X[ [ 1, 1, 3, 4, 5, 2, 2, 8, 3, 4, 11, 12, 6, 14, 9, 1, 1, 2, 2, 3, 4, [128X[104X
    [4X[28X      5, 6, 8, 9, 9, 10, 11, 12, 16, 16, 16, 16, 17, 17, 18, 18, 18, [128X[104X
    [4X[28X      18, 20, 20, 20, 20, 22, 22, 24, 24, 25, 26, 28, 28, 29, 29 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X73.7 [33X[0;0YSubroutines for the Construction of Class Fusions[133X[101X
  
  [1X73.7-1 InitFusion[101X
  
  [29X[2XInitFusion[102X( [3Xsubtbl[103X, [3Xtbl[103X ) [32X function
  
  [33X[0;0YFor  two  ordinary  character  tables  [3Xsubtbl[103X  and [3Xtbl[103X, [2XInitFusion[102X returns a
  parametrized  map  that  is  a  first approximation of the class fusion from
  [3Xsubtbl[103X   to   [3Xtbl[103X,   using   condition 1. listed   in   the  description  of
  [2XPossibleClassFusions[102X ([14X73.3-6[114X).[133X
  
  [33X[0;0YIf  there  are  classes  for which no images are possible, according to this
  criterion, then [9Xfail[109X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "2F4(2)" );;  tbl:= CharacterTable( "Ru" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );[127X[104X
    [4X[28X[ 1, 2, 2, 4, [ 5, 6 ], [ 5, 6, 7, 8 ], [ 5, 6, 7, 8 ], [ 9, 10 ], [128X[104X
    [4X[28X  11, 14, 14, [ 13, 14, 15 ], [ 16, 17 ], [ 18, 19 ], 20, [ 25, 26 ], [128X[104X
    [4X[28X  [ 25, 26 ], [ 5, 6 ], [ 5, 6 ], [ 5, 6 ], [ 5, 6, 7, 8 ], [128X[104X
    [4X[28X  [ 13, 14, 15 ], [ 13, 14, 15 ], [ 18, 19 ], [ 18, 19 ], [ 25, 26 ], [128X[104X
    [4X[28X  [ 25, 26 ], [ 27, 28, 29 ], [ 27, 28, 29 ] ][128X[104X
  [4X[32X[104X
  
  [1X73.7-2 CheckPermChar[101X
  
  [29X[2XCheckPermChar[102X( [3Xsubtbl[103X, [3Xtbl[103X, [3Xapproxmap[103X, [3Xpermchar[103X ) [32X function
  
  [33X[0;0Y[2XCheckPermChar[102X  replaces  the  entries  of  the parametrized map [3Xapproxmap[103X by
  improved  values,  according  to  condition 3. listed  in the description of
  [2XPossibleClassFusions[102X ([14X73.3-6[114X).[133X
  
  [33X[0;0Y[2XCheckPermChar[102X   returns   [9Xtrue[109X  if  no  inconsistency  occurred,  and  [9Xfalse[109X
  otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpermchar:= Sum( Irr( tbl ){ [ 1, 5, 6 ] } );;[127X[104X
    [4X[25Xgap>[125X [27XCheckPermChar( subtbl, tbl, fus, permchar ); fus;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[ 1, 2, 2, 4, 5, 7, 8, 9, 11, 14, 14, [ 13, 15 ], 16, [ 18, 19 ], 20, [128X[104X
    [4X[28X  [ 25, 26 ], [ 25, 26 ], 5, 5, 6, 8, 14, [ 13, 15 ], [ 18, 19 ], [128X[104X
    [4X[28X  [ 18, 19 ], [ 25, 26 ], [ 25, 26 ], 27, 27 ][128X[104X
  [4X[32X[104X
  
  [1X73.7-3 ConsiderTableAutomorphisms[101X
  
  [29X[2XConsiderTableAutomorphisms[102X( [3Xapproxmap[103X, [3Xgrp[103X ) [32X function
  
  [33X[0;0Y[2XConsiderTableAutomorphisms[102X  replaces  the  entries  of  the parametrized map
  [3Xapproxmap[103X  by  improved  values,  according  to  condition 4. listed  in the
  description of [2XPossibleClassFusions[102X ([14X73.3-6[114X).[133X
  
  [33X[0;0YAfterwards   exactly   one  representative  of  fusion  maps  (contained  in
  [3Xapproxmap[103X)  in  each  orbit under the action of the permutation group [3Xgrp[103X is
  contained in the modified parametrized map.[133X
  
  [33X[0;0Y[2XConsiderTableAutomorphisms[102X returns the list of positions where [3Xapproxmap[103X was
  changed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XConsiderTableAutomorphisms( fus, AutomorphismsOfTable( tbl ) );[127X[104X
    [4X[28X[ 16 ][128X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 2, 4, 5, 7, 8, 9, 11, 14, 14, [ 13, 15 ], 16, [ 18, 19 ], 20, [128X[104X
    [4X[28X  25, [ 25, 26 ], 5, 5, 6, 8, 14, [ 13, 15 ], [ 18, 19 ], [ 18, 19 ], [128X[104X
    [4X[28X  [ 25, 26 ], [ 25, 26 ], 27, 27 ][128X[104X
  [4X[32X[104X
  
  [1X73.7-4 FusionsAllowedByRestrictions[101X
  
  [29X[2XFusionsAllowedByRestrictions[102X( [3Xsubtbl[103X, [3Xtbl[103X, [3Xsubchars[103X, [3Xchars[103X, [3Xapproxmap[103X, [3Xparameters[103X ) [32X function
  
  [33X[0;0YLet  [3Xsubtbl[103X  and  [3Xtbl[103X  be  ordinary character tables, [3Xsubchars[103X and [3Xchars[103X two
  lists  of  (values  lists  of)  characters  of [3Xsubtbl[103X and [3Xtbl[103X, respectively,
  [3Xapproxmap[103X a parametrized map that is an approximation of the class fusion of
  [3Xsubtbl[103X  in  [3Xtbl[103X,  and  [3Xparameters[103X  a  record with components [10Xmaxlen[110X, [10Xminamb[110X,
  [10Xmaxamb[110X  (three  integers),  [10Xquick[110X  (a  Boolean), and [10Xcontained[110X (a function).
  Usual   values   of   [10Xcontained[110X   are   [2XContainedCharacters[102X   ([14X73.5-17[114X)   or
  [2XContainedPossibleCharacters[102X ([14X73.5-15[114X).[133X
  
  [33X[0;0Y[2XFusionsAllowedByRestrictions[102X  replaces  the entries of [3Xapproxmap[103X by improved
  values,   according   to   condition   5. listed   in   the  description  of
  [2XPossibleClassFusions[102X ([14X73.3-6[114X).[133X
  
  [33X[0;0YMore precisely, the strategy used is as follows.[133X
  
  [33X[0;0YFirst, for each [22Xχ ∈ [3Xchars[103X[122X, let [10Xrestricted:= CompositionMaps( [110X[22Xχ[122X[10X, [3Xapproxmap[103X[10X )[110X.[133X
  
  [30X    [33X[0;6YIf  [10XIndeterminateness(  restricted  )[110X[22X=  1[122X and [10X[3Xparameters[103X[10X.quick = false[110X
        then  the  scalar products of [10Xrestricted[110X with [3Xsubchars[103X are checked; if
        not all scalar products are nonnegative integers then an empty list is
        returned,  otherwise  [22Xχ[122X  is  deleted  from  the  list of characters to
        inspect.[133X
  
  [30X    [33X[0;6YOtherwise    if   [10XIndeterminateness(   minus   )[110X   is   smaller   than
        [10X[3Xparameters[103X[10X.minamb[110X then [22Xχ[122X is deleted from the list of characters.[133X
  
  [30X    [33X[0;6YIf    [10X[3Xparameters[103X[10X.minamb[110X    [22X≤[122X   [10XIndeterminateness(   restricted   )[110X   [22X≤[122X
        [10X[3Xparameters[103X[10X.maxamb[110X  then construct [10Xposs:= [3Xparameters[103X[10X.contained( [3Xsubtbl[103X[10X,
        [3Xsubchars[103X[10X,  restricted  )[110X  and  [10XParametrized(  poss  )[110X, and improve the
        approximation of the fusion map using [2XUpdateMap[102X ([14X73.5-7[114X).[133X
  
  [33X[0;0YIf this yields no further immediate improvements then we branch. If there is
  a  character  from  [3Xchars[103X left with less or equal [3Xparameters[103X[10X.maxlen[110X possible
  restrictions,   compute   the   union   of  fusion  maps  allowed  by  these
  possibilities.  Otherwise  we  choose  a  class  [22XC[122X  such  that  the possible
  restrictions  of  a  character in [3Xchars[103X differ at [22XC[122X, and compute recursively
  the  union of all allowed fusion maps with image at [22XC[122X fixed in the set given
  by the current approximation of the fusion map.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsubtbl:= CharacterTable( "U3(3)" );;  tbl:= CharacterTable( "J4" );;[127X[104X
    [4X[25Xgap>[125X [27Xfus:= InitFusion( subtbl, tbl );;[127X[104X
    [4X[25Xgap>[125X [27XTestConsistencyMaps( ComputedPowerMaps( subtbl ), fus,[127X[104X
    [4X[25X>[125X [27X       ComputedPowerMaps( tbl ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 4, 4, [ 5, 6 ], [ 5, 6 ], [ 5, 6 ], 10, [ 12, 13 ], [128X[104X
    [4X[28X  [ 12, 13 ], [ 14, 15, 16 ], [ 14, 15, 16 ], [ 21, 22 ], [ 21, 22 ] ][128X[104X
    [4X[25Xgap>[125X [27XConsiderTableAutomorphisms( fus, AutomorphismsOfTable( tbl ) );[127X[104X
    [4X[28X[ 9 ][128X[104X
    [4X[25Xgap>[125X [27Xfus;[127X[104X
    [4X[28X[ 1, 2, 4, 4, [ 5, 6 ], [ 5, 6 ], [ 5, 6 ], 10, 12, [ 12, 13 ], [128X[104X
    [4X[28X  [ 14, 15, 16 ], [ 14, 15, 16 ], [ 21, 22 ], [ 21, 22 ] ][128X[104X
    [4X[25Xgap>[125X [27XFusionsAllowedByRestrictions( subtbl, tbl, Irr( subtbl ),[127X[104X
    [4X[25X>[125X [27X       Irr( tbl ), fus, rec( maxlen:= 10,[127X[104X
    [4X[25X>[125X [27X       contained:= ContainedPossibleCharacters, minamb:= 2,[127X[104X
    [4X[25X>[125X [27X       maxamb:= infinity, quick:= false ) );[127X[104X
    [4X[28X[ [ 1, 2, 4, 4, 5, 5, 6, 10, 12, 13, 14, 14, 21, 21 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 6, 6, 6, 10, 12, 13, 15, 15, 22, 22 ], [128X[104X
    [4X[28X  [ 1, 2, 4, 4, 6, 6, 6, 10, 12, 13, 16, 16, 22, 22 ] ][128X[104X
  [4X[32X[104X
  
