  
  [1X6 [33X[0;0YMethods for recognition[133X[101X
  
  
  [1X6.1 [33X[0;0YMethods for generic groups[133X[101X
  
  [33X[0;0YThe  following  methods  can  be  equally applied to permutation, matrix and
  projective groups. We do not refer to them as black-box groups here, as they
  are allowed to contain code that only works for inputs of the listed types.[133X
  
  
  [1X6.1-1 [33X[0;0Y[10XFewGensAbelian[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YIf  there  are  not  too  may generators (right now that means at most 200),
  check  whether they commute; if yes, dispatch to [14X'[33X[0;0Y[10XKnownNilpotent[110X[133X'[114X, otherwise
  return [9XNeverApplicable[109X.[133X
  
  
  [1X6.1-2 [33X[0;0Y[10XKnownNilpotent[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YHint to this method if you know G to be nilpotent or call it directly if you
  find  out so. Note that it will return NeverApplicable if G is a p-group for
  some  prime  p.  Make  sure that the !.projective component is set correctly
  such that we can set the right Order method.[133X
  
  
  [1X6.1-3 [33X[0;0Y[10XSnAnUnknownDegree[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  tries  to  determine  whether  the  input group given by [3Xri[103X is
  isomorphic  to  a symmetric group Sn or alternating group An with [22X11 ≤ n[122X. It
  is an implementation of [JLNP13].[133X
  
  [33X[0;0YIf  [3XGrp(ri)[103X is a permutation group, we assume that it is primitive and not a
  giant (a giant is Sn or An in natural action).[133X
  
  
  [1X6.1-4 [33X[0;0Y[10XTrivialGroup[110X[101X[1X[133X[101X
  
  [33X[0;0YThis  method  is  used  for  recognizing permutation, matrix, and projective
  groups.[133X
  
  [33X[0;0YThis  method  is  successful  if and only if all generators of a group [3XG[103X are
  equal to the identity. Otherwise, it returns [9XNeverApplicable[109X indicating that
  it  will  never succeed. This method is only installed to handle the trivial
  case  such  that  we do not have to take this case into account in the other
  methods.[133X
  
  
  [1X6.2 [33X[0;0YMethods for permutation groups[133X[101X
  
  [33X[0;0YThe  following  table gives an overview over the installed methods and their
  rank  (higher  rank  means higher priority, the method is tried earlier, see
  Chapter [14X4[114X).[133X
  
      ┌──────┬──────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────┐
      │ 1250 │ [10XFewGensAbelian[110X       │ if very few generators, check IsAbelian and if yes, do KnownNilpotent                                          │ [14X6.1-1[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 1050 │ [10XFewGensAbelian[110X       │ if very few generators, check IsAbelian and if yes, do KnownNilpotent                                          │ [14X6.1-1[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 300  │ [10XTrivialGroup[110X         │ go through generators and compare to the identity                                                              │ [14X6.1-4[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 100  │ [10XThrowAwayFixedPoints[110X │ try to find a huge amount of (possible internal) fixed points                                                  │ [14X6.2-11[114X │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 99   │ [10XFewGensAbelian[110X       │ if very few generators, check IsAbelian and if yes, do KnownNilpotent                                          │ [14X6.1-1[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 97   │ [10XPcgs[110X                 │ use a Pcgs to calculate a stabilizer chain                                                                     │ [14X6.2-7[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 95   │ [10XMovesOnlySmallPoints[110X │ calculate a stabilizer chain if only small points are moved                                                    │ [14X6.2-5[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 90   │ [10XNonTransitive[110X        │ try to find non-transitivity and restrict to orbit                                                             │ [14X6.2-6[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 80   │ [10XGiant[110X                │ tries to find Sn and An in their natural actions                                                               │ [14X6.2-2[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 70   │ [10XImprimitive[110X          │ for a imprimitive permutation group, restricts to block system                                                 │ [14X6.2-3[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 60   │ [10XLargeBasePrimitive[110X   │ recognises large-base primitive permutation groups                                                             │ [14X6.2-4[114X  │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 55   │ [10XStabilizerChainPerm[110X  │ for a permutation group using a stabilizer chain via the genss package ([7Xhttps://gap-packages.github.io/genss/[107X) │ [14X6.2-10[114X │ 
      ├──────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
      │ 50   │ [10XStabChain[110X            │ for a permutation group using a stabilizer chain                                                               │ [14X6.2-9[114X  │ 
      └──────┴──────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────┘
  
       [1XTable:[101X Permutation group find homomorphism methods
  
  
  
  [1X6.2-1 [33X[0;0Y[10XBalTreeForBlocks[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  creates  a  balanced  composition  tree  for  the kernel of an
  imprimitive  group.  This  is  guaranteed  as the method is just called from
  [10XFindHomMethodsPerm.[110X[14X'[33X[0;0Y[10XImprimitive[110X[133X'[114X  and itself. The homomorphism for the split
  in  the  composition  tree used is induced by the action of [3XG[103X on half of its
  blocks.[133X
  
  
  [1X6.2-2 [33X[0;0Y[10XGiant[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YThe method tries to determine whether the input group [3XG[103X is a giant (that is,
  [22XA_n[122X  or  [22XS_n[122X in its natural action on [22Xn[122X points). The output is either a data
  structure [22XD[122X containing nice generators for [3XG[103X and a procedure to write an SLP
  for  arbitrary elements of [3XG[103X from the nice generators; or [9XNeverApplicable[109X if
  [3XG[103X  is not transitive; or [9Xfail[109X, in the case that no evidence was found that [3XG[103X
  is  a  giant,  or  evidence  was  found,  but  the  construction  of  [22XD[122X  was
  unsuccessful.  If  the  method  constructs [22XD[122X then the calling node becomes a
  leaf.[133X
  
  
  [1X6.2-3 [33X[0;0Y[10XImprimitive[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YIf  the  input  group is not known to be transitive then this method returns
  [9XNotEnoughInformation[109X.  If  the  input  group  is  known to be transitive and
  primitive  then  the  method  returns [9XNeverApplicable[109X; otherwise, the method
  tries   to   compute  a  nontrivial  block  system.  If  successful  then  a
  homomorphism  to  the action on the blocks is defined; otherwise, the method
  returns [9XNeverApplicable[109X.[133X
  
  [33X[0;0YIf  the  method  is successful then it also gives a hint for the children of
  the node by determining whether the kernel of the action on the block system
  is  solvable.  If the answer is yes then the default value 20 for the number
  of  random  generators in the kernel construction is increased by the number
  of blocks.[133X
  
  
  [1X6.2-4 [33X[0;0Y[10XLargeBasePrimitive[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YThis   method   tries   to   determine  whether  the  input  group  [3XG[103X  is  a
  fixed-point-free  large-base primitive group that neither is a symmetric nor
  an alternating group in its natural action. This method is an implementation
  of [LNPS06].[133X
  
  [33X[0;0YA  primitive group [22XH[122X acting on [22XN[122X points is called [13Xlarge[113X if there exist [22Xn[122X, [22Xk[122X,
  and  [22Xr[122X with [22XN = {n choose k}^r[122X, and up to a permutational isomorphism [22XH[122X is a
  subgroup of the product action wreath product [22XS_n ≀ S_r[122X, and an overgroup of
  [22X(A_n)  ^  r[122X  where  [22XS_n[122X  and  [22XA_n[122X  act on the [22Xk[122X-subsets of [22X{1, ..., n}[122X. This
  algorithm  recognises fixed-point-free large primitive groups with [22Xr ⋅ k > 1[122X
  and [22X2 ⋅ r ⋅ k^2 ≤ n[122X.[133X
  
  [33X[0;0YA  large primitive group [22XH[122X of the above type which does have fixed points is
  handled  as  follows: if the group [22XH[122X does not know yet that it is primitive,
  then  [2XThrowAwayFixedPoints[102X  ([14X6.2-11[114X) returns [9XNotEnoughInformation[109X. After the
  first  call  to  [10XLargeBasePrimitive[110X, the group [22XH[122X knows that it is primitive,
  but  since  it  has fixed points [10XLargeBasePrimitive[110X returns [9XNeverApplicable[109X.
  Since       [2XThrowAwayFixedPoints[102X      ([14X6.2-11[114X)      previously      returned
  [9XNotEnoughInformation[109X,  it  will  be  called  again. Then it will use the new
  information  about  [22XH[122X  being  primitive, and is guaranteed to prune away the
  fixed points and set up a reduction homomorphism. [10XLargeBasePrimitive[110X is then
  applicable to the image of that homomorphism.[133X
  
  [33X[0;0YIf  [3XG[103X  is  imprimitive then the output is [9XNeverApplicable[109X. If [3XG[103X is primitive
  then the output is either a homomorphism into the natural imprimitive action
  of  [3XG[103X  on  [22Xnr[122X  points  with  [22Xr[122X  blocks  of  size  [22Xn[122X, or [9XTemporaryFailure[109X, or
  [9XNeverApplicable[109X if no parameters [22Xn[122X, [22Xk[122X, and [22Xr[122X as above exist.[133X
  
  
  [1X6.2-5 [33X[0;0Y[10XMovesOnlySmallPoints[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YIf  a  permutation group moves only small points (currently, this means that
  its  largest  moved  point  is  at  most  10),  then  this method computes a
  stabilizer  chain  for  the  group via [14X'[33X[0;0Y[10XStabChain[110X[133X'[114X. This is because the most
  convenient  way  of solving constructive membership in such a group is via a
  stabilizer  chain. In this case, the calling node becomes a leaf node of the
  composition tree.[133X
  
  [33X[0;0YIf the input group moves a large point (currently, this means a point larger
  than 10), then this method returns [9XNeverApplicable[109X.[133X
  
  
  [1X6.2-6 [33X[0;0Y[10XNonTransitive[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YIf  a  permutation  group [3XG[103X acts nontransitively then this method computes a
  homomorphism  to the action of [3XG[103X on the orbit of the largest moved point. If
  [3XG[103X is transitive then the method returns [9XNeverApplicable[109X.[133X
  
  
  [1X6.2-7 [33X[0;0Y[10XPcgs[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YThis  is  the  [5XGAP[105X  library  function  to  compute  a stabiliser chain for a
  solvable  permutation  group.  If  the method is successful then the calling
  node  becomes a leaf node in the recursive scheme. If the input group is not
  solvable then the method returns [9XNeverApplicable[109X.[133X
  
  
  [1X6.2-8 [33X[0;0Y[10XPcgsForBlocks[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis     method     is     called     after     a    hint    is    set    in
  [10XFindHomMethodsPerm.[110X[14X'[33X[0;0Y[10XImprimitive[110X[133X'[114X.   Therefore,   the  group  [3XG[103X  preserves  a
  non-trivial  block system. This method checks whether or not the restriction
  of  [3XG[103X  on  one  block  is solvable. If so, then [10XFindHomMethodsPerm.[110X[14X'[33X[0;0Y[10XPcgs[110X[133X'[114X is
  called, and otherwise [9XNeverApplicable[109X is returned.[133X
  
  
  [1X6.2-9 [33X[0;0Y[10XStabChain[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YThis  is  the  randomized  [5XGAP[105X  library  function for computing a stabiliser
  chain.  The  method  selection  process ensures that this function is called
  only with small-base inputs, where the method works efficiently.[133X
  
  
  [1X6.2-10 [33X[0;0Y[10XStabilizerChainPerm[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.2-11 [33X[0;0Y[10XThrowAwayFixedPoints[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing permutation groups.[133X
  
  [33X[0;0YThis method defines a homomorphism of a permutation group [3XG[103X to the action on
  the  moved  points of [3XG[103X if [3XG[103X has any fixed points, and is either known to be
  primitive  or  the  ratio  of fixed points to moved points exceeds a certain
  threshold.  If  [3XG[103X  has  fixed  points  but is not primitive, then it returns
  [9XNotEnoughInformation[109X  so that it may be called again at a later time. In all
  other cases, it returns [9XNeverApplicable[109X.[133X
  
  [33X[0;0YIn  the  current setup, the homomorphism is defined if the number [22Xn[122X of moved
  points  is at most [22X1/3[122X of the largest moved point of [3XG[103X, or [22Xn[122X is at most half
  of the number of points on which [3XG[103X is stored internally by [5XGAP[105X.[133X
  
  [33X[0;0YThe fact that this method returns [9XNotEnoughInformation[109X if [3XG[103X has fixed points
  but  does  not  know whether it is primitive, is important for the efficient
  handling of large-base primitive groups by [2XLargeBasePrimitive[102X ([14X6.2-4[114X).[133X
  
  
  [1X6.3 [33X[0;0YMethods for matrix groups[133X[101X
  
  [33X[0;0YThe  following  table gives an overview over the installed methods and their
  rank  (higher  rank  means higher priority, the method is tried earlier, see
  Chapter  [14X4[114X).  Note  that  there  are not that many methods for matrix groups
  since  the  system  can  switch  to  projective  groups  by dividing out the
  subgroup  of  scalar  matrices. The bulk of the recognition methods are then
  installed es methods for projective groups.[133X
  
      ┌──────┬──────────────────────┬──────────────────────────────────────────────────────┬───────┐
      │ 3100 │ [10XTrivialGroup[110X         │ go through generators and compare to the identity    │ [14X6.1-4[114X │ 
      ├──────┼──────────────────────┼──────────────────────────────────────────────────────┼───────┤
      │ 1175 │ [10XKnownStabilizerChain[110X │ use an already known stabilizer chain for this group │ [14X6.3-6[114X │ 
      ├──────┼──────────────────────┼──────────────────────────────────────────────────────┼───────┤
      │ 1100 │ [10XDiagonalMatrices[110X     │ check whether all generators are diagonal matrices   │ [14X6.3-4[114X │ 
      ├──────┼──────────────────────┼──────────────────────────────────────────────────────┼───────┤
      │ 1000 │ [10XReducibleIso[110X         │ use the MeatAxe to find invariant subspaces          │ [14X6.3-9[114X │ 
      ├──────┼──────────────────────┼──────────────────────────────────────────────────────┼───────┤
      │ 900  │ [10XGoProjective[110X         │ divide out scalars and recognise projectively        │ [14X6.3-5[114X │ 
      └──────┴──────────────────────┴──────────────────────────────────────────────────────┴───────┘
  
       [1XTable:[101X Matrix group find homomorphism methods
  
  
  
  [1X6.3-1 [33X[0;0Y[10XBlockDiagonal[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  is  only  called  when  a hint was passed down from the method
  [14X'[33X[0;0Y[10XBlockLowerTriangular[110X[133X'[114X.  In  that  case, it knows that the group is in block
  diagonal  form.  The  method  is used both in the matrix- and the projective
  case.[133X
  
  [33X[0;0YThe  method  immediately  delegates  to  projective methods handling all the
  diagonal  blocks projectively. This is done by giving a hint to the image to
  use  the  method  [14X'[33X[0;0Y[10XBlocksModScalars[110X[133X'[114X.  The method for the kernel then has to
  deal  with only scalar blocks, either projectively or with scalars, which is
  again done by giving a hint to either use [14X'[33X[0;0Y[10XBlockScalar[110X[133X'[114X or [14X'[33X[0;0Y[10XBlockScalarProj[110X[133X'[114X
  respectively.[133X
  
  [33X[0;0YNote  that this method is implemented in a way such that it can also be used
  as  a method for a projective group [3XG[103X. In that case the recognition node has
  the [10X!.projective[110X component bound to [9Xtrue[109X and this information is passed down
  to image and kernel.[133X
  
  
  [1X6.3-2 [33X[0;0Y[10XBlockLowerTriangular[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  is  only  called  when  a hint was passed down from the method
  [14X'[33X[0;0Y[10XReducibleIso[110X[133X'[114X.  In  that  case,  it knows that a base change to block lower
  triangular  form  has been performed. The method can then immediately find a
  homomorphism by mapping to the diagonal blocks. It sets up this homomorphism
  and   gives   hints   to  image  and  kernel.  For  the  image,  the  method
  [14X'[33X[0;0Y[10XBlockDiagonal[110X[133X'[114X  is used and for the kernel, the method [14X'[33X[0;0Y[10XLowerLeftPGroup[110X[133X'[114X is
  used.[133X
  
  [33X[0;0YNote  that this method is implemented in a way such that it can also be used
  as  a method for a projective group [3XG[103X. In that case the recognition node has
  the [10X!.projective[110X component bound to [9Xtrue[109X and this information is passed down
  to image and kernel.[133X
  
  
  [1X6.3-3 [33X[0;0Y[10XBlockScalar[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  is  only  called  by a hint. Alongside with the hint it gets a
  block decomposition respected by the matrix group [3XG[103X to be recognised and the
  promise  that  all diagonal blocks of all group elements will only be scalar
  matrices.  This  method  recursively  builds a balanced tree and does scalar
  recognition in each leaf.[133X
  
  
  [1X6.3-4 [33X[0;0Y[10XDiagonalMatrices[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing matrix groups.[133X
  
  [33X[0;0YThis  method is successful if and only if all generators of a matrix group [3XG[103X
  are diagonal matrices. Otherwise, it returns [9XNeverApplicable[109X.[133X
  
  
  [1X6.3-5 [33X[0;0Y[10XGoProjective[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing matrix groups.[133X
  
  [33X[0;0YThis method defines a homomorphism from a matrix group [3XG[103X into the projective
  group  [3XG[103X modulo scalar matrices. In fact, since projective groups in [5XGAP[105X are
  represented  as  matrix groups, the homomorphism is the identity mapping and
  the only difference is that in the image the projective group methods can be
  applied.  The  bulk  of  the  work  in  matrix  recognition  is  done in the
  projective group setting.[133X
  
  
  [1X6.3-6 [33X[0;0Y[10XKnownStabilizerChain[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing matrix groups.[133X
  
  [33X[0;0YIf  a  stabilizer  chain  is  already  known,  then the kernel node is given
  knowledge  about  this known stabilizer chain, and the image node is told to
  use  homomorphism  methods  from  the  database for permutation groups. If a
  stabilizer  chain  of  a  parent  node is already known this is used for the
  computation  of  a  stabilizer  chain of this node. This stabilizer chain is
  then used in the same way as above.[133X
  
  
  [1X6.3-7 [33X[0;0Y[10XLowerLeftPGroup[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  is  only  called  by a hint from [14X'[33X[0;0Y[10XBlockLowerTriangular[110X[133X'[114X as the
  kernel  of  the homomorphism mapping to the diagonal blocks. The method uses
  the  fact that this kernel is a [22Xp[122X-group where [22Xp[122X is the characteristic of the
  underlying  field.  It exploits this fact and uses this special structure to
  find  nice  generators  and  a  method to express group elements in terms of
  these.[133X
  
  
  [1X6.3-8 [33X[0;0Y[10XNaturalSL[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.3-9 [33X[0;0Y[10XReducibleIso[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing matrix and projective groups.[133X
  
  [33X[0;0YThis  method  determines  whether a matrix group [3XG[103X acts irreducibly. If yes,
  then  it  returns  [9XNeverApplicable[109X.  If  [3XG[103X acts reducibly then a composition
  series  of  the underlying module is computed and a base change is performed
  to  write [3XG[103X in a block lower triangular form. Also, the method passes a hint
  to  the  image group that it is in block lower triangular form, so the image
  immediately can make recursive calls for the actions on the diagonal blocks,
  and    then    to   the   lower   [22Xp[122X-part.   For   the   image   the   method
  [14X'[33X[0;0Y[10XBlockLowerTriangular[110X[133X'[114X is used.[133X
  
  [33X[0;0YNote  that this method is implemented in a way such that it can also be used
  as  a method for a projective group [3XG[103X. In that case the recognition node has
  the [10X!.projective[110X component bound to [9Xtrue[109X and this information is passed down
  to image and kernel.[133X
  
  
  [1X6.3-10 [33X[0;0Y[10XScalar[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4 [33X[0;0YMethods for projective groups[133X[101X
  
  [33X[0;0YThe  following  table gives an overview over the installed methods and their
  rank  (higher  rank  means higher priority, the method is tried earlier, see
  Chapter  [14X4[114X).  Note  that  the  recognition  for  matrix  group  switches  to
  projective recognition rather soon in the recognition process such that most
  recognition methods in fact are installed as methods for projective groups.[133X
  
      ┌──────┬─────────────────────┬─────────────────────────────────────────────────────────────────────┬────────┐
      │ 3000 │ [10XTrivialGroup[110X        │ go through generators and compare to the identity                   │ [14X6.1-4[114X  │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 1300 │ [10XProjDeterminant[110X     │ find homomorphism to non-zero scalars mod d-th powers               │ [14X6.4-20[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 1200 │ [10XReducibleIso[110X        │ use the MeatAxe to find invariant subspaces                         │ [14X6.3-9[114X  │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 1100 │ [10XNotAbsolutelyIrred[110X  │ write over a bigger field with smaller degree                       │ [14X6.4-19[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 1050 │ [10XClassicalNatural[110X    │ check whether it is a classical group in its natural representation │ [14X6.4-9[114X  │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 1000 │ [10XSubfield[110X            │ write over a smaller field with same degree                         │ [14X6.4-24[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 900  │ [10XC3C5[110X                │ compute a normal subgroup of derived and resolve C3 and C5          │ [14X6.4-7[114X  │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 850  │ [10XC6[110X                  │ find either an (imprimitive) action or a symplectic one             │ [14X6.4-8[114X  │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 840  │ [10XD247[110X                │ play games to find a normal subgroup                                │ [14X6.4-11[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 810  │ [10XAltSymBBByDegree[110X    │ try BB recognition for dim+1 and/or dim+2 if sensible               │ [14X6.4-1[114X  │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 800  │ [10XTensorDecomposable[110X  │ find a tensor decomposition                                         │ [14X6.4-25[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 700  │ [10XFindElmOfEvenNormal[110X │ find D2, D4 or D7 by finding an element of an even normal subgroup  │ [14X6.4-13[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 600  │ [10XLowIndex[110X            │ find an (imprimitive) action on subspaces                           │ [14X6.4-17[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 580  │ [10XNameSporadic[110X        │ generate maximal orders                                             │ [14X6.4-18[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 550  │ [10XComputeSimpleSocle[110X  │ compute simple socle of almost simple group                         │ [14X6.4-10[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 500  │ [10XThreeLargeElOrders[110X  │ recognise Lie type groups and get its characteristic                │ [14X6.4-26[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 400  │ [10XLieTypeNonConstr[110X    │ do non-constructive recognition of Lie type groups                  │ [14X6.4-16[114X │ 
      ├──────┼─────────────────────┼─────────────────────────────────────────────────────────────────────┼────────┤
      │ 100  │ [10XStabilizerChainProj[110X │ last resort: compute a stabilizer chain (projectively)              │ [14X6.4-23[114X │ 
      └──────┴─────────────────────┴─────────────────────────────────────────────────────────────────────┴────────┘
  
       [1XTable:[101X Projective group find homomorphism methods
  
  
  
  [1X6.4-1 [33X[0;0Y[10XAltSymBBByDegree[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThis  method  is a black box constructive (?) recognition of alternating and
  symmetric groups.[133X
  
  [33X[0;0YThis algorithm is probably based on the paper [BLGN+05].[133X
  
  
  [1X6.4-2 [33X[0;0Y[10XBiggerScalarsOnly[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-3 [33X[0;0Y[10XBlockScalarProj[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  is  only  called  by a hint. Alongside with the hint it gets a
  block decomposition respected by the matrix group [3XG[103X to be recognised and the
  promise  that  all diagonal blocks of all group elements will only be scalar
  matrices. This method simply norms the last diagonal block in all generators
  by  multiplying  with a scalar and then delegates to [10XBlockScalar[110X (see [14X6.3-3[114X)
  and matrix group mode to do the recognition.[133X
  
  
  [1X6.4-4 [33X[0;0Y[10XBlocks[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-5 [33X[0;0Y[10XBlocksBackToMats[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-6 [33X[0;0Y[10XBlocksModScalars[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  is  only  called  when hinted from above. In this method it is
  understood  that  G  should [13Xneither[113X be recognised as a matrix group [13Xnor[113X as a
  projective group. Rather, it treats all diagonal blocks modulo scalars which
  means that two matrices are considered to be equal, if they differ only by a
  scalar  factor  in  [13Xcorresponding[113X  diagonal  blocks,  and this scalar can be
  different  for  each  diagonal  block.  This  means  that  the kernel of the
  homomorphism  mapping  to  a node which is recognised using this method will
  have only scalar matrices in all diagonal blocks.[133X
  
  [33X[0;0YThis  method  does  the  balanced  tree  approach  mapping to subsets of the
  diagonal blocks and finally using projective recognition to recognise single
  diagonal block groups.[133X
  
  
  [1X6.4-7 [33X[0;0Y[10XC3C5[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-8 [33X[0;0Y[10XC6[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThis  method  is  designed  for  the  handling  of  the  Aschbacher class C6
  (normaliser  of  an  extraspecial  group). If the input [3XG[103X[22X≤ PGL(d,q)[122X does not
  satisfy  [22Xd=r^n[122X  and  [22Xr|q-1[122X  for  some  prime [22Xr[122X and integer [22Xn[122X then the method
  returns  [9XNeverApplicable[109X.  Otherwise,  it returns either a homomorphism of [3XG[103X
  into  [22XSp(2n,r)[122X,  or  a homomorphism into the C2 permutation action of [3XG[103X on a
  decomposition of [22XGF(q)^d[122X, or [9Xfail[109X.[133X
  
  
  [1X6.4-9 [33X[0;0Y[10XClassicalNatural[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-10 [33X[0;0Y[10XComputeSimpleSocle[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThis  method  randomly  computes  the non-abelian simple socle and stores it
  along  with  additional  information  if  it  is called for an almost simple
  group.  Once  the non-abelian simple socle is computed the function does not
  need to be called again for this node and therefore returns [9XNeverApplicable[109X.[133X
  
  
  [1X6.4-11 [33X[0;0Y[10XD247[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-12 [33X[0;0Y[10XDoBaseChangeForBlocks[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-13 [33X[0;0Y[10XFindElmOfEvenNormal[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-14 [33X[0;0Y[10XKroneckerKernel[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-15 [33X[0;0Y[10XKroneckerProduct[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-16 [33X[0;0Y[10XLieTypeNonConstr[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YRecognise quasi-simple group of Lie type when characteristic is given. Based
  on [BKPS02] and [AB01].[133X
  
  
  [1X6.4-17 [33X[0;0Y[10XLowIndex[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThis  method  is  designed  for  the  handling  of  the  Aschbacher class C2
  (stabiliser  of  a  decomposition  of  the underlying vector space), but may
  succeed  on  other types of input as well. Given [3XG[103X [22X≤ PGL(d,q)[122X, the output is
  either the permutation action of [3XG[103X on a short orbit of subspaces or [9Xfail[109X. In
  the current setup, [21Xshort orbit[121X is defined to have length at most [22X4d[122X.[133X
  
  
  [1X6.4-18 [33X[0;0Y[10XNameSporadic[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThis  method  returns  a  list  of  sporadic  simple  groups  that the group
  underlying  [3Xri[103X could be. It does not recognise extensions of sporadic simple
  groups  nor the Monster and the Baby Monster group. It is based on the Magma
  v2.24.10 function [10XRecognizeSporadic[110X.[133X
  
  
  [1X6.4-19 [33X[0;0Y[10XNotAbsolutelyIrred[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YIf  an  irreducible projective group [3XG[103X acts absolutely irreducibly then this
  method  returns  [9XNeverApplicable[109X.  If [3XG[103X is not absolutely irreducible then a
  homomorphism  into  a  smaller  dimensional representation over an extension
  field  is  defined.  A  hint  is  handed  down to the image that no test for
  absolute irreducibility has to be done any more. Another hint is handed down
  to  the  kernel  indicating  that  the  only possible kernel elements can be
  elements  in the centraliser of [3XG[103X in [22XPGL(d,q)[122X that come from scalar matrices
  in the extension field.[133X
  
  
  [1X6.4-20 [33X[0;0Y[10XProjDeterminant[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThe method defines a homomorphism from a projective group [3XG[103X[22X≤ PGL(d,q)[122X to the
  cyclic  group  [22XGF(q)^*/D[122X,  where  [22XD[122X is the set of [22Xd[122Xth powers in [22XGF(q)^*[122X. The
  image of a group element [22Xg ∈ [3XG[103X[122X is the determinant of a matrix representative
  of [22Xg[122X, modulo [22XD[122X.[133X
  
  
  [1X6.4-21 [33X[0;0Y[10XPrototypeForC2C4[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YTODO/FIXME: PrototypeForC2C4 is not used anywhere[133X
  
  
  [1X6.4-22 [33X[0;0Y[10XSporadicsByOrders[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is unused![133X
  
  [33X[0;0YThis  method  returns a list of sporadic simple groups that [3XG[103X possibly could
  be.  Therefore it checks whether [3XG[103X has elements of orders that do not appear
  in  sporadic  groups and otherwise checks whether the most common ("killer")
  orders  of the sporadic groups appear. Afterwards it creates hints that come
  out of a table for the sporadic simple groups.[133X
  
  
  [1X6.4-23 [33X[0;0Y[10XStabilizerChainProj[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YThis method computes a stabiliser chain and a base and strong generating set
  using  projective  actions.  This  is  a last resort method since for bigger
  examples  no  short  orbits  can  be found in the natural action. The strong
  generators are the nice generator in this case and expressing group elements
  in terms of the nice generators ist just sifting along the stabiliser chain.[133X
  
  
  [1X6.4-24 [33X[0;0Y[10XSubfield[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YTODO[133X
  
  
  [1X6.4-25 [33X[0;0Y[10XTensorDecomposable[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YTODO/FIXME:  it  is unclear if the following description actually belongs to
  this method, so be cautious![133X
  
  [33X[0;0YThis  method  currently  tries  to  find  one  tensor  factor by powering up
  commutators  of  random  elements  to elements of prime order. This seems to
  work quite well provided that the two tensor factors are not [21Xlinked[121X too much
  such that there exist enough elements that act with different orders on both
  tensor factors.[133X
  
  [33X[0;0YThis method and its description needs some improvement.[133X
  
  
  [1X6.4-26 [33X[0;0Y[10XThreeLargeElOrders[110X[101X[1X[133X[101X
  
  [33X[0;0YThis method is used for recognizing projective groups.[133X
  
  [33X[0;0YIn the case when the input group [3XG[103X[22X≤ PGL(d,p^e)[122X is suspected to be simple but
  not  alternating,  this method takes the three largest element orders from a
  sample of pseudorandom elements of [3XG[103X. From these element orders, it tries to
  determine  whether  [3XG[103X is of Lie type and the characteristic of [3XG[103X if it is of
  Lie type. In the case when [3XG[103X is of Lie type of characteristic different from
  [22Xp[122X,  the  method also provides a short list of the possible isomorphism types
  of [3XG[103X.[133X
  
  [33X[0;0YThis  method  assumes that its input is neither alternating nor sporadic and
  that [2XComputeSimpleSocle[102X ([14X6.4-10[114X) has already been called.[133X
  
  [33X[0;0YThis recognition method is based on the paper [KS09].[133X
  
  
  [1X6.5 [33X[0;0YUnused methods[133X[101X
  
  [33X[0;0YThe  following  table gives an overview over the methods which are currently
  unused.[133X
  
      ┌───────────────────────┬──────────────────────────┬────────┐
      │ [10XKnownNilpotent[110X        │ [10XFindHomMethodsGeneric[110X    │ [14X6.1-2[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XSnAnUnknownDegree[110X     │ [10XFindHomMethodsGeneric[110X    │ [14X6.1-3[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XPcgsForBlocks[110X         │ [10XFindHomMethodsPerm[110X       │ [14X6.2-8[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBalTreeForBlocks[110X      │ [10XFindHomMethodsPerm[110X       │ [14X6.2-1[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlockScalar[110X           │ [10XFindHomMethodsMatrix[110X     │ [14X6.3-3[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XNaturalSL[110X             │ [10XFindHomMethodsMatrix[110X     │ [14X6.3-8[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XScalar[110X                │ [10XFindHomMethodsMatrix[110X     │ [14X6.3-10[114X │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlockLowerTriangular[110X  │ [10XFindHomMethodsMatrix[110X     │ [14X6.3-2[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlockDiagonal[110X         │ [10XFindHomMethodsMatrix[110X     │ [14X6.3-1[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XLowerLeftPGroup[110X       │ [10XFindHomMethodsMatrix[110X     │ [14X6.3-7[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XDoBaseChangeForBlocks[110X │ [10XFindHomMethodsProjective[110X │ [14X6.4-12[114X │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlocks[110X                │ [10XFindHomMethodsProjective[110X │ [14X6.4-4[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlocksModScalars[110X      │ [10XFindHomMethodsProjective[110X │ [14X6.4-6[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlocksBackToMats[110X      │ [10XFindHomMethodsProjective[110X │ [14X6.4-5[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XKroneckerProduct[110X      │ [10XFindHomMethodsProjective[110X │ [14X6.4-15[114X │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XKroneckerKernel[110X       │ [10XFindHomMethodsProjective[110X │ [14X6.4-14[114X │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBiggerScalarsOnly[110X     │ [10XFindHomMethodsProjective[110X │ [14X6.4-2[114X  │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XPrototypeForC2C4[110X      │ [10XFindHomMethodsProjective[110X │ [14X6.4-21[114X │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XSporadicsByOrders[110X     │ [10XFindHomMethodsProjective[110X │ [14X6.4-22[114X │ 
      ├───────────────────────┼──────────────────────────┼────────┤
      │ [10XBlockScalarProj[110X       │ [10XFindHomMethodsProjective[110X │ [14X6.4-3[114X  │ 
      └───────────────────────┴──────────────────────────┴────────┘
  
       [1XTable:[101X Unused group find homomorphism methods
  
  
