GAP (LINS) - Chapter 2: LINS Interface

Goto Chapter: Top 1 2 3 4 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

2 LINS Interface
2.1 LINS Graph
2.1-1 List
2.1-2 ComputedNormalSubgroups
2.1-3 LinsRoot
2.1-4 IndexBound
2.1-5 LinsOptions
2.1-6 IsomorphismFpGroup
2.2 LINS Node
2.2-1 Grp
2.2-2 Index
2.2-3 LinsNodeMinimalSupergroups
2.2-4 LinsNodeMinimalSubgroups
2.2-5 LinsNodeSupergroups
2.2-6 LinsNodeSubgroups
2.3 LINS Search Functions
2.3-1 LowIndexNormalSubgroupsSearch
2.3-2 LowIndexNormalSubgroupsSearchForAll
2.3-3 LowIndexNormalSubgroupsSearchForIndex
2.4 Examples
2.4-1 Revised Example : all normal subgroups up to index n
2.4-2 Revised Example : all normal subgroups of index n
2.4-3 Example : a normal subgroup of index n

### 2 LINS Interface

This chapter is intended for advanced users. It explains the provided search methods and the interface to the search graph structure `LinsGraph`.

#### 2.1 LINS Graph

All search methods in LINS return a `LinsGraph` encoding a partial normal subgroup lattice of a finitely presented group G. A `LinsGraph` is a graph, where each node is a `LinsNode` that contains a normal subgroup H of G and pointers to the minimal G-normal super/sub-groups of H, i.e. its neighbours in the graph. The directed edges of the graph are therefore encoded directly into the nodes.

##### 2.1-1 List

`‣ List`( gr ) | ( method )

Returns a list of all `LinsNodes` in the graph gr.

The nodes are sorted by index in increasing order, e.g. the root node is at the first position. In order to get a list containing only the normal subgroups that the search graph attempted to find, use `ComputedNormalSubgroups` (2.1-2).

##### 2.1-2 ComputedNormalSubgroups

`‣ ComputedNormalSubgroups`( gr ) | ( attribute )

Returns the normal subgroups that the search graph attempted to find.

If the `ComputedNormalSubgroups` component of the graph is not set, this defaults to a call of `List` (2.1-1).

##### 2.1-3 LinsRoot

`‣ LinsRoot`( gr ) | ( attribute )

Returns the root node of the graph.

If the search was started in the finitely presented group G, this will return the `LinsNode` that contains G.

##### 2.1-4 IndexBound

`‣ IndexBound`( gr ) | ( attribute )

Returns the index bound for the search in gr.

##### 2.1-5 LinsOptions

`‣ LinsOptions`( gr ) | ( attribute )

Returns the search options of the graph gr.

##### 2.1-6 IsomorphismFpGroup

`‣ IsomorphismFpGroup`( gr ) | ( attribute )

Returns the isomorphism from the original group of the search onto the fp-group contained in the root.

#### 2.2 LINS Node

A `LinsNode` is a part of the search graph structure `LinsGraph` (see 2.1). As such, all methods are with respect to the search graph, where the node is contained in.

##### 2.2-1 Grp

`‣ Grp`( rH ) | ( method )

Returns the group contained in the node.

##### 2.2-2 Index

`‣ Index`( rH ) | ( method )

Let G be the group contained in the root node and H be the G-normal subgroup contained in rH.

Returns the index [G : H].

##### 2.2-3 LinsNodeMinimalSupergroups

`‣ LinsNodeMinimalSupergroups`( rH ) | ( attribute )

Let G be the group contained in the root node and H be the G-normal subgroup contained in rH.

Returns a list of all `LinsNodes` containing minimal G-normal supergroups of H.

##### 2.2-4 LinsNodeMinimalSubgroups

`‣ LinsNodeMinimalSubgroups`( rH ) | ( attribute )

Let G be the group contained in the root node and H be the G-normal subgroup contained in rH.

Returns a list of all `LinsNodes` containing minimal G-normal subgroups of H.

##### 2.2-5 LinsNodeSupergroups

`‣ LinsNodeSupergroups`( rH ) | ( operation )

Let G be the group contained in the root node and H be the G-normal subgroup contained in rH.

Returns a list of all `LinsNodes` containing G-normal supergroups of H.

##### 2.2-6 LinsNodeSubgroups

`‣ LinsNodeSubgroups`( rH ) | ( operation )

Let G be the group contained in the root node and H be the G-normal subgroup contained in rH.

Returns a list of all `LinsNodes` containing G-normal subgroups of H.

#### 2.3 LINS Search Functions

##### 2.3-1 LowIndexNormalSubgroupsSearch

`‣ LowIndexNormalSubgroupsSearch`( G, n[, opts] ) | ( function )

Given a finitely presented group G and some index bound n, this will start a search in the normal subgroup lattice of G up to index n.

The optional argument opts must be a record containing valid search options (see 3.1).

If the optional argument opts is not given, the search will be started with the default options, i.e. it will terminate once all normal subgroups of G with index at most n are found.

It is possible to call the function with a group G that is not an fp-group. The group will be automatically replaced with an fp-group (see `IsomorphismFpGroup` (2.1-6)).

Returns: `LinsGraph` encoding a partial normal subgroup lattice of G

##### 2.3-2 LowIndexNormalSubgroupsSearchForAll

`‣ LowIndexNormalSubgroupsSearchForAll`( G, n ) | ( function )

Given a finitely presented group G and some index bound n, this will compute all normal subgroups of G with index at most n.

This is a synonym for calling `LowIndexNormalSubgroupsSearch` (2.3-1) without any options.

It is possible to call the function with a group G that is not an fp-group. The group will be automatically replaced with an fp-group (see `IsomorphismFpGroup` (2.1-6)).

Returns: `LinsGraph` encoding a partial normal subgroup lattice of G

##### 2.3-3 LowIndexNormalSubgroupsSearchForIndex

`‣ LowIndexNormalSubgroupsSearchForIndex`( G, n, l ) | ( function )

Given a finitely presented group G, some index n and l being a positive integer or `infinity`, this will attempt to find l normal subgroups of G with index n.

In particular, if l is `infinity`, all normal subgroups of G with index n will be computed.

Furthermore, if l is a positive integer and the `ComputedNormalSubgroups` of the graph has less than l nodes, then all normal subgroups of G with index n were computed.

It is possible to call the function with a group G that is not an fp-group. The group will be automatically replaced with an fp-group (see `IsomorphismFpGroup` (2.1-6)).

Returns: `LinsGraph` encoding a partial normal subgroup lattice of G

#### 2.4 Examples

In this section we present example sessions which demonstrate how to use the advanced search methods provided by LINS. For this we revise the examples from the introduction as well as include new ones.

##### 2.4-1 Revised 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>

The search algorithm automatically translates the group into a finitely presented group via a call to `IsomorphismFpGroup`.
The isomorphism is stored inside the lins graph.

    gap> gr := LowIndexNormalSubgroupsSearchForAll(G, 50);
    <lins graph contains 4 normal subgroups up to index 50>
    gap> r := LinsRoot(gr);
    <lins node of index 1>
    gap> H := Grp(r);
    <fp group of size 50 on the generators [ F1, F2, F3 ]>
    gap> Iso := IsomorphismFpGroup(gr);
    [ f1, f2, f3 ] -> [ F1, F2, F3 ]
    gap> Source(Iso) = G;
    true
    gap> Range(Iso) = H;
    true

In order to get all nodes from the search graph, we need to use `List`. As expected, the algorithm finds D_50, C_25, C_5 and the trivial group.

    gap> L := List(gr);
    [ <lins node of index 1>, <lins node of index 2>, <lins node of index 10>,
      <lins node of index 50> ]
    gap> IsoTypes := List(L, node -> StructureDescription(Grp(node)));
    [ "D50", "C25", "C5", "1" ]

##### 2.4-2 Revised 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>

Again, the search algorithm automatically translates the group into a finitely presented group via a call to `IsomorphismFpGroup`.

    gap> gr := LowIndexNormalSubgroupsSearchForIndex(G, 5 ^ 2, infinity);
    <lins graph contains 963 normal subgroups up to index 25>

Now we are not interested in all normal subgroups that the search graph considered, but only in those of index 25. Thus we need to use `ComputedNormalSubgroups`. For a prime p, and integers d, s ∈ N, the number of subgroups of order p^s of an elementary abelian p-group of order p^d is exactly

( (p^d - 1)(p^d - p) ⋯ (p^d - p^(s-1)) ) / ( (p^s - 1)(p^s - p) ⋯ (p^s - p^(s-1)) ) .

Thus we expect to find ( (5^4-1) ⋅ (5^4-5) ) / ( (5^2 - 1) ⋅ (5^2 - 5) ) = 806 normal subgroups of index 25.
Furthermore, all subgroups need to be of the isomorphism type C_5^2.

    gap> L := ComputedNormalSubgroups(gr);;
    gap> IsoTypes := Collected(List(L, node -> StructureDescription(Grp(node))));
    [ [ "C5 x C5", 806 ] ]

##### 2.4-3 Example : a normal subgroup of index n

We compute a normal subgroup of index 3 ⋅ 5 = 15 in C_3 × C_3 × C_4 × C_5, a direct product of cyclic groups:

    gap> G := AbelianGroup([3, 3, 4, 5]);
    <pc group of size 180 with 4 generators>
    gap> gr := LowIndexNormalSubgroupsSearchForIndex(G, 15, 1);
    <lins graph contains 7 normal subgroups up to index 15>

We use `ComputedNormalSubgroups` in order to get the normal subgroup of index 15. As expected, the algorithm finds a group of the isomorphism type C_12 = C_3 × C_4.

    gap> L := ComputedNormalSubgroups(gr);
    [ <lins node of index 15> ]
    gap> IsoTypes := List(L, node -> StructureDescription(Grp(node)));
    [ "C12" ]

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 Bib Ind

generated by GAPDoc2HTML