# GAP:HallSubgroup

From Groupprops

This article is about a GAP function.

## 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 of primes, the function returns a -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.

## Related functions

## 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 Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> K := SmallGroup(IdGroup(G)); <pc group of size 840 with 6 generators> brk> HallSubgroup(K,[2,3]); Group([ f1, f4, f5, f6 ])