# Difference between revisions of "GAP:NormalSubgroups"

## Definition

### Function type

NormalSubgroups is a GAP command that takes in one argument representing a group and outputs a list of groups.

### Behavior

Applying NormalSubgroups to a given group returns a list of all its normal subgroups.

## Examples of usage

### Some examples involving prespecified groups

```gap> NormalSubgroups(SymmetricGroup(3));
[ Group(()), Group([ (1,2,3) ]), Sym( [ 1 .. 3 ] ) ]
gap> L := NormalSubgroups(SymmetricGroup(4));
[ Group(()), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]), Sym( [ 1 .. 4 ] ) ]
gap> K := List(L,IdGroup);
[ [ 1, 1 ], [ 4, 2 ], [ 12, 3 ], [ 24, 12 ] ]
gap> Length(L);
4
gap> NormalSubgroups(SmallGroup(8,4));
[ Group([  ]), Group([ f3 ]), Group([ f1*f2, f3 ]), Group([ f1, f3 ]), Group([ f2, f3 ]), <pc group of size 8 with 3 generators> ]
```

The first example lists all the normal subgroups of the symmetric group on three letters. The set here is $\{ 1,2, 3 \}$. Each of these normal subgroups (except the whole group) is described by its generating set.

The second example computes the normal subgroups of the symmetric group on four letters and outputs the list of its normal subgroups. This list is stored with the variable name L. In the next command, the members of this list are mapped to their group IDs, using the IdGroup command. The GAP:List command is used to achieve the mapping on each member of the list. The next command computes the length of this list.

The final example computes the normal subgroups of a certain group specified by the group ID (this is in fact the quaternion group).