Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

### 6 Methods for recognition

#### 6.1 Methods for permutation groups

The following table gives an overview over the installed methods and their rank (higher rank means higher priority, the method is tried earlier, see Chapter 4).

 300 TrivialPermGroup just go through generators and compare to the identity 6.1-1 100 ThrowAwayFixedPoints try to find a huge amount of (possible internal) fixed points 6.1-2 99 FewGensAbelian if very few generators, check IsAbelian and if yes, do KnownNilpotent 6.2-4 97 Pcgs use a Pcgs to calculate a StabChain 6.1-3 95 VeryFewPoints calculate a stabchain if we act on very few points 6.1-4 90 NonTransitive try to find non-transitivity and restrict to orbit 6.1-5 80 Giant tries to find Sn and An 6.1-6 70 Imprimitive for a imprimitive permutation group, restricts to block system 6.1-7 60 SnkSetswrSr tries to find jellyfish 6.1-8 55 StabilizerChain for a permutation group using a stabilizer chain (genss) 6.3-12 50 StabChain for a permutation group using a stabilizer chain 6.1-9

##### 6.1-1 TrivialPermGroup

This method is successful if and only if all generators of the permutation group G are equal to the identity. Otherwise it returns false 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.

##### 6.1-2 ThrowAwayFixedPoints

This method defines a homomorphism of a permutation group G to the action on the moved points of G if G does not have too many moved points. In the current setup, the homomorphism is defined if the number $$k$$ of moved points is at most $$1/3$$ of the largest moved point of G, or $$k$$ is at most half of the number of points on which G is stored internally by GAP. The method returns false if it does not define a homomorphism indicating that it will never succeed.

##### 6.1-3 Pcgs

This is the GAP 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 false.

##### 6.1-4 VeryFewPoints

If a permutation group acts only on a few points (the current limit is at most 10 points) then a stabiliser chain is computed by the randomized GAP library function for that purpose. If the method is successful then the calling node becomes a leaf node in the recursive scheme. If the input group acts on more than 10 points then the method returns false.

##### 6.1-5 Nontransitive

If a permutation group G acts nontransitively then this method computes a homomorphism to the action of G on the orbit of the largest moved point. If G is transitive then the method returns false.

##### 6.1-6 Giant

The method tries to determine whether the input group G is a giant (that is, $$A_n$$ or $$S_n$$ in its natural action on $$n$$ points). The output is either a data structure $$D$$ containing nice generators for G and a procedure to write an SLP for arbitrary elements of G from the nice generators; or false if G is not transitive; or fail, in the case that no evidence was found that G is a giant, or evidence was found, but the construction of $$D$$ was unsuccessful. If the method constructs $$D$$ then the calling node becomes a leaf.

##### 6.1-7 Imprimitive

If the input group is not known to be transitive then this method returns NotEnoughInformation. If the input group is known to be transitive and primitive then the method returns false; 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 false. If 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.

##### 6.1-8 SnkSetswrSr

This method tries to determine whether the input group G is acting primitively on $$N$$ points, and is isomorphic to a large subgroup of $$H \wr S_r$$ where $$H$$ is $$S_n$$ acting on $$k$$-sets and $$N = {{n \choose k}}^r$$ and $$kr > 1$$. "Large" means that G contains a subgroup isomorphic to $$A_n^r$$. If G is imprimitive then the output is false. If G is primitive then the output is either a homomorphism into the natural imprimitive action of G on $$nr$$ points with $$r$$ blocks of size $$n$$, or fail.

##### 6.1-9 StabChain

This is the randomized GAP 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.

#### 6.2 Methods for matrix groups

THIS CHAPTER IS CURRENTLY A BIT OUT OF DATE!

The following table gives an overview over the installed methods and their rank (higher rank means higher priority, the method is tried earlier, see Chapter 4). 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.

 3100 TrivialMatrixGroup check whether all generators are equal to the identity matrix 6.2-1 1175 KnownStabilizerChain use an already known stabilizer chain for this group 6.2-2 1100 DiagonalMatrices check whether all generators are multiples of the identity 6.2-3 1050 FewGensAbelian if very few generators, check IsAbelian and if yes, do KnownNilpotent 6.2-4 1000 ReducibleIso use the MeatAxe to find invariant subspaces 6.2-5 900 GoProjective divide out scalars and recognise projectively 6.2-8

##### 6.2-1 TrivialMatrixGroup

This method is successful if and only if all generators of a matrix group G are equal to the identity. Otherwise, it returns false.

##### 6.2-2 KnownStabilizerChain

TODO. use an already known stabilizer chain for this group

##### 6.2-3 DiagonalMatrices

This method is successful if and only if all generators of a matrix group G are diagonal matrices. Otherwise, it returns false.

##### 6.2-4 FewGensAbelian

TODO. if very few generators, check IsAbelian and if yes, do KnownNilpotent

##### 6.2-5 ReducibleIso

This method determines whether a matrix group G acts irreducibly. If yes, then it returns false. If G acts reducibly then a composition series of the underlying module is computed and a base change is performed to write G 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 $$p$$-part. For the image the method BlockLowerTriangular (see 6.2-6) is used.

Note that this method is implemented in a way such that it can also be used as a method for a projective group G. In that case the recognition info record has the !.projective component bound to true and this information is passed down to image and kernel.

##### 6.2-6 BlockLowerTriangular

This method is only called when a hint was passed down from the method ReducibleIso (see 6.2-5). 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 BlockDiagonal (see 6.2-7) is used and for the kernel, the method LowerLeftPGroup (see 6.2-10) is used.

Note that this method is implemented in a way such that it can also be used as a method for a projective group G. In that case the recognition info record has the !.projective component bound to true and this information is passed down to image and kernel.

##### 6.2-7 BlockDiagonal

This method is only called when a hint was passed down from the method BlockLowerTriangular (see 6.2-6). 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.

The method immediately delegates to projective methods handling all the diagonal blocks projectively. This is done by giving a hint to the factor to use the method BlocksModScalars (see 6.3-4) is given. 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 BlockScalar (see 6.2-9) or BlockScalarProj (see 6.3-13) respectively.

Note that this method is implemented in a way such that it can also be used as a method for a projective group G. In that case the recognition info record has the !.projective component bound to true and this information is passed down to image and kernel.

##### 6.2-8 GoProjective

This method defines a homomorphism from a matrix group G into the projective group G modulo scalar matrices. In fact, since projective groups in GAP 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.

##### 6.2-9 BlockScalar

This method is only called by a hint. Alongside with the hint it gets a block decomposition respected by the matrix group G 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.

##### 6.2-10 LowerLeftPGroup

This method is only called by a hint from BlockLowerTriangular as the kernel of the homomorphism mapping to the diagonal blocks. The method uses the fact the this kernel is a $$p$$-group where $$p$$ 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.

#### 6.3 Methods for projective groups

THIS CHAPTER IS CURRENTLY A BIT OUT OF DATE!

The following table gives an overview over the installed methods and their rank (higher rank means higher priority, the method is tried earlier, see Chapter 4). 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.

 3000 TrivialProjectiveGroup check if all generators are scalar multiples of the identity matrix 6.3-1 1300 ProjDeterminant find homomorphism to non-zero scalars mod d-th powers 6.3-2 1250 FewGensAbelian if very few generators, check IsAbelian and if yes, do KnownNilpotent 6.2-4 1200 ReducibleIso use MeatAxe to find a composition series, do base change 6.2-5 1100 NotAbsolutelyIrred write over a bigger field with smaller degree 6.3-5 1050 ClassicalNatural check whether it is a classical group in its natural representation ??? 1000 Subfield write over a smaller field with same degree 6.3-6 900 C3C5 compute a normal subgroup of derived and resolve C3 and C5 ??? 850 C6 find either an (imprimitive) action or a symplectic one 6.3-9 840 D247 play games to find a normal subgroup ??? 820 SporadicsByOrders generate a few random elements and compute the proj. orders ??? 810 AltSymBBByDegree try BB recognition for dim+1 and/or dim+2 if sensible ??? 800 Tensor find a tensor decomposition 6.3-10 700 FindElmOfEvenNormal find D2, D4 or D7 by finding an element of an even normal subgroup ??? 600 LowIndex find an (imprimitive) action on subspaces 6.3-8 550 ComputeSimpleSocle compute simple socle of almost simple group ??? 500 ThreeLargeElOrders look at three large element orders ??? 400 LieTypeNonConstr do non-constructive recognition of Lie type groups ??? 100 StabilizerChain last resort: compute a stabilizer chain (projectively) 6.3-12

##### 6.3-1 TrivialProjectiveGroup

This method is successful if and only if all generators of a projective group G are equal to the identity (that is, in the matrix representation of G, all matrices are scalars). Otherwise, it returns false.

##### 6.3-2 ProjDeterminant

The method defines a homomorphism from a projective group G$$\le PGL(d,q)$$ to the cyclic group $$GF(q)^*/D$$, where $$D$$ is the set of $$d$$th powers in $$GF(q)^*$$. The image of a group element $$g \in \textit{G}$$ is the determinant of a matrix representative of $$g$$, modulo $$D$$.

##### 6.3-3 ReducibleIso

This method is the same as the matrix group method with the same name (see 6.2-5), which is able to take into account the projective mode.

##### 6.3-4 BlocksModScalars

This method is only called when hinted from above. In this method it is understood that G should neither be recognised as a matrix group nor 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 corresponding 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.

This method does the balanced tree approach mapping to subsets of the diagonal blocks and finally using projective recognition to recognise single diagonal block groups.

##### 6.3-5 NotAbsolutelyIrred

If an irreducible projective group G acts absolutely irreducibly then this method returns false. If G 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 G in $$PGL(d,q)$$ that come from scalar matrices in the extension field.

##### 6.3-6 Subfield

When this method runs it knows that the projective group G acts absolutely irreducibly. It then tries to realise this group over a smaller field. The algorithm used is the one using the "standard basis approach" known from isomorphism testing of absolutely irreducible modules. It finds a base change to write the projective group over the smallest field possible. Since the group is projective, it may choose to multiply generators with arbitrary scalars to write them over a smaller field.

However, sometimes the correct scalar can not be guessed. Therefore, if the first approach does not work, the method computes the derived subgroup. If the group can be written over a smaller field, then taking commutators loses the scalars preventing a direct base change to work. Therefore, if the derived subgroup still acts irreducibly, the standard basis approach can find the right base change that could also do the job for the whole group. If it acts reducibly, the method Derived (see 6.3-7) which is run next already has the computed derived subgroup and can try different things to find a reduction.

##### 6.3-7 Derived

This method computes the derived subgroup, if this has not yet been done by other methods. It then uses the MeatAxe to decide whether the derived subgroup acts irreducibly or not. If it acts reducibly, then we can apply Clifford theory to the natural module. The natural module restricted to the derived subgroup is a direct sum of simple modules. If all the summands are isomorphic, we immediately get either an action of G on blocks or a tensor decomposition. Otherwise, we get an action of G on the isotypic components. Either way, we find a reduction.

If the derived group acts irreducibly, we return false in the current implementation.

##### 6.3-8 LowIndex

This 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 G $$\le PGL(d,q)$$, the output is either the permutation action of G on a short orbit of subspaces or fail. In the current setup, "short orbit" is defined to have length at most $$4d$$.

##### 6.3-9 C6

This method is designed for the handling of the Aschbacher class C6 (normaliser of an extraspecial group). If the input G$$\le PGL(d,q)$$ does not satisfy $$d=r^n$$ and $$r|q-1$$ for some prime $$r$$ and integer $$n$$ then the method returns false. Otherwise, it returns either a homomorphism of G into $$Sp(2n,r)$$, or a homomorphism into the C2 permutation action of G on a decomposition of $$GF(q)^d$$, or fail.

##### 6.3-10 Tensor

This 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 "linked" too much such that there exist enough elements that act with different orders on both tensor factors.

This method and its description needs some improvement.

##### 6.3-11 TwoLargeElOrders

In the case when the input group G$$\le PGL(d,p^e)$$ is suspected to be simple but not alternating, this method takes the two largest element orders from a sample of pseudorandom elements of G. From these element orders, it tries to determine whether G is of Lie type or sporadic, and the characteristic of G if it is of Lie type. In the case when G is of Lie type of characteristic different from $$p$$ or G is sporadic, the method also provides a short list of the possible isomorphism types of G.

##### 6.3-12 StabilizerChain

This 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.

##### 6.3-13 BlockScalarProj

This method is only called by a hint. Alongside with the hint it gets a block decomposition respected by the matrix group G 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 BlockScalar (see 6.2-9) and matrix group mode to do the recognition.

#### 6.4 Methods for black box groups

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML