gap-packages / LINS

The GAP package LINS provides an algorithm for computing the normal subgroups of a finitely presented group up to some given index bound.
https://gap-packages.github.io/LINS/
Other
9 stars 3 forks source link

LINS search graph #18

Closed FriedrichRober closed 2 years ago

FriedrichRober commented 4 years ago

I suggest to restructure this package in the following way: LowIndexNormal should work with a graph structure of normal subgroups instead of a list of records, that we call LINS_Graph.

The LINS_Graph is a directed graph with a root node:

Node record entries:

The root node may have special entries:

Advantages:

I suggest we change the input of LowIndexNormal to the following

  1. G finitely presented group or a LINS_Graph
  2. n max index bound
  3. cutFunction
  4. terminateFunction

The first input could be a LINS_Graph, if the user wants to continue his search in the graph with higher max index bound. It is nonsense to regenerate the whole graph, since new normal subgroups might simply be inserted into it.

The third input is a function that determines if a node of the LINS_Graph with a normal subgroup N should be cut, i.e. no normal subgroups of interest for the user can be found as a subgroup of N. The input of the function is the current LINS_Graph, n and the current node in the search named Current.

The forth input is a function that determines if the search should be terminated. The input of the function is the current LINS_Graph, n and the current node in the search named Current. It should be able to write a custom output, for example a specific normal subgroup the user was searching for, that could be stored in the root node.

Use Cases: The most obvious use case is the search for a normal subgroup of specific index. This should be implemented in this package and would serve as a great example of how to write a custom cutFunction and terminateFunction.