# GAP:HallSubgroup

## Definition

### Function type

HallSubgroup is a GAP function that takes in two arguments, the first one being a group and the second one being a number, and outputs a group.

### Behavior

The behavior is as follows:

• If the first argument is a finite solvable group (i.e., it is both finite and solvable) and is specified in terms of a polycyclic series rather than as a permutation group, and the second argument is a list $\pi$ of primes, the function returns a $\pi$-Hall subgroups of the group.
• If the first argument is not stored in the form of a polycyclic series, then the function returns a NoMethodFound error. Note that this error could occur even if the group is a finite solvable group. One indirect way of replacing a finite solvable group with an isomorphic group stored as a polycyclic series is using the GAP:IdGroup and GAP:SmallGroup functions in composition.

## Examples of usage

Here is a simple usage example:

gap> G := SmallGroup(840,152);
<pc group of size 840 with 6 generators>
gap> H := HallSubgroup(G,[2,5]);
Group([ f1, f2, f5, f6 ])
gap> IdGroup(H);
[ 40, 10 ]

Here is a more complicated example involving a finite solvable group that is not stored in terms of a polycyclic series, and how the problem is overcome using GAP:SmallGroup and GAP:IdGroup.

gap> G := DirectProduct(SymmetricGroup(4),CyclicGroup(35));
<group of size 840 with 4 generators>
gap> IsSolvable(G);
true
gap> HallSubgroup(G,[2,3]);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 3rd choice method found for HallSubgroupOp' on 2 arguments called from
<compiled or corrupted call value>  called from
<function>( <arguments> ) called from read-eval-loop
Group([ f1, f4, f5, f6 ])`