[MathJax on]

### 1 Introduction

This chapter serves as an introduction of the package **LINS**.

#### 1.1 Overview

The package **LINS** provides an algorithm for computing the normal subgroups of a finitely presented group up to some given index bound.

Moreover it provides an interface for searching in the normal subgroup lattice of a finitely presented group. For example, one can use this interface to search for l normal subgroups of index n.

The algorithm is based on work of David Firth [Fir05]. He implemented that algorithm in the algebra software MAGMA. That implementation in MAGMA has been revised and rewritten to a great extent by Derek Holt.

The current implementation in **GAP** uses a table of groups that was computed by the code in `createTables.gi`

.

#### 1.2 Examples

In this section we present example sessions which demonstrate how to use the main high-level functions provided by **LINS**.

##### 1.2-1 Example : all normal subgroups up to index n

We compute all normal subgroups in D_50, the dihedral group of size 50.

gap> G := DihedralGroup(50);
<pc group of size 50 with 3 generators>
gap> L := LowIndexNormalSubs(G, 50);;
gap> IsoTypes := List(L, StructureDescription);
[ "D50", "C25", "C5", "1" ]

##### 1.2-2 Example : all normal subgroups of index n

We compute all normal subgroups of index 5^2 = 25 in C_5^4, the direct product of 4 copies of the cyclic group of order 5:

gap> G := ElementaryAbelianGroup(5^4);
<pc group of size 625 with 4 generators>
gap> L := LowIndexNormalSubs(G, 5 ^ 2 : allSubgroups := false);;
gap> IsoTypes := Collected(List(L, StructureDescription));
[ [ "C5 x C5", 806 ] ]

#### 1.3 Main Functions

In this section, we include all the main high-level functions provided to the user. For advanced search methods in the lattice of normal subgroups, take a look at Chapter 2.

##### 1.3-1 LowIndexNormalSubs

`‣ LowIndexNormalSubs` ( `G`, `n:` `allSubgroups` `:=` `true` ) | ( operation ) |

Returns a list of all normal subgroups of `G` with index at most `n`. If the option `allSubgroups` is set to `false`

, then only the normal subgroups of `G` with index equal to `n` are returned.

The generic method uses `IsomorphismFpGroup`

(Reference: IsomorphismFpGroup) to transform `G` into an fp-group and then calls some variant of the low-level function `LowIndexNormalSubgroupsSearch`

(2.3-1).

Note that a similar operation `LowIndexNormalSubgroups`

(polycyclic: LowIndexNormalSubgroups) exists in the package **polycyclic**. Due to technical incompabilities, those operations could not be unified.