GAP:Subgroups

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.

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 ]