# GAP:Subgroups

From Groupprops

This article is about a GAP function.

This GAP function takes as input a group. See more functions like this.

Using this GAP function requires the loading of the following package: sonata

## Definition

### Package requirement

The function is part of the `SONATA` package.

### Function type

`Subgroups` is a `GAP` command that takes as input one argument representing a group and outputs a list of groups.

### Behavior

Applying `Subgroups` to a given group returns a list of all its subgroups. These subgroups are listed in order of increasing order, and conjugate subgroups are listed together.

## Related functions

- GAP:ConjugacyClassesSubgroups: This lists all conjugacy classes of subgroups of the group. This does not require the SONATA package. This can be combined with GAP:List and GAP:Representative to get a list comprising one representative from each conjugacy class of subgroups.
- GAP:NormalSubgroups: This lists all normal subgroups of the group. This again does not depend on the SONATA package.
- GAP:CharacteristicSubgroups: This lists all characteristic subgroups of the group. This again does not depend on the SONATA package.

## Examples of usage

### Some examples of prespecified groups

gap> G := SymmetricGroup(4); Sym( [ 1 .. 4 ] ) gap> L := Subgroups(G); [ Group(()), Group([ (1,3)(2,4) ]), Group([ (1,4)(2,3) ]), Group([ (1,2)(3,4) ]), Group([ (3,4) ]), Group([ (2,4) ]), Group([ (2,3) ]), Group([ (1,4) ]), Group([ (1,3) ]), Group([ (1,2) ]), Group([ (2,4,3) ]), Group([ (1,3,2) ]), Group([ (1,3,4) ]), Group([ (1,4,2) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,2)(3,4), (3,4) ]), Group([ (1,3)(2,4), (2,4) ]), Group([ (1,4)(2,3), (2,3) ]), Group([ (1,2)(3,4), (1,3,2,4) ]), Group([ (1,3)(2,4), (1,2,3,4) ]), Group([ (1,4)(2,3), (1,2,4,3) ]), Group([ (3,4), (2,4,3) ]), Group([ (1,3), (1,3,2) ]), Group([ (1,3), (1,3,4) ]), Group([ (1,4), (1,4,2) ]), Group([ (1,3)(2,4), (1,4)(2,3), (1,2) ]), Group([ (1,2)(3,4), (1,4)(2,3), (1,3) ]), Group([ (1,2)(3,4), (1,3)(2,4), (1,4) ]), Group([ (1,3)(2,4), (1,4)(2,3), (2,4,3) ]), Group([ (1,3)(2,4), (1,4)(2,3), (2,4,3), (1,2) ]) ] gap> List(L,IdGroup); [ [ 1, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 2, 1 ], [ 3, 1 ], [ 3, 1 ], [ 3, 1 ], [ 3, 1 ], [ 4, 2 ], [ 4, 2 ], [ 4, 2 ], [ 4, 2 ], [ 4, 1 ], [ 4, 1 ], [ 4, 1 ], [ 6, 1 ], [ 6, 1 ], [ 6, 1 ], [ 6, 1 ], [ 8, 3 ], [ 8, 3 ], [ 8, 3 ], [ 12, 3 ], [ 24, 12 ] ] gap> List(L,H -> IsNormal(G,H)); [ true, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true ]

### Some examples involving looking at a lot of groups

gap> L := List(AllSmallGroups(32),G->Size(Subgroups(G))); [ 6, 50, 22, 22, 34, 50, 42, 26, 46, 30, 34, 22, 26, 26, 18, 14, 14, 36, 28, 20, 54, 94, 54, 46, 62, 38, 106, 74, 50, 58, 58, 34, 42, 90, 42, 38, 38, 34, 70, 54, 38, 46, 58, 42, 118, 158, 78, 94, 110, 78, 374 ] gap> SortedList(L); [ 6, 14, 14, 18, 20, 22, 22, 22, 26, 26, 26, 28, 30, 34, 34, 34, 34, 36, 38, 38, 38, 38, 42, 42, 42, 42, 46, 46, 46, 50, 50, 50, 54, 54, 54, 58, 58, 58, 62, 70, 74, 78, 78, 90, 94, 94, 106, 110, 118, 158, 374 ]