Skip to content

An implementation of Sims' Low Index Subgroup algorithm.

Notifications You must be signed in to change notification settings

3-manifolds/low_index

Repository files navigation

Low Index Subgroups

The low_index project provides a Python module which implements a variant of Charles Sims' Low Index Subgroups algorithm for enumerating all of the conjugacy classes of subgroups of a finitely presented group with finite index less than a given bound.

The package is available on pypi, so the simplest way to install it for Python versions 3.6 - 3.11 is to use pip:

pip3 install low-index

Here is a sample computation:

>>> from low_index import *
>>>  # Conjugacy classes of subgroups of F_3 with index at most 4:
>>> reps = permutation_reps(rank = 3, short_relators = [], long_relators = [], max_degree = 4)
>>> len(reps)
653
>>> from snappy import *
>>> G = Manifold('K11n34').fundamental_group(); G
Generators:
   a,b,c
Relators:
   aaBcbbcAc
   aacAbCBBaCAAbbcBc
>>> # Degree at most 7 covers of the exterior of the Conway knot:
>>> reps = permutation_reps(G.num_generators(), G.relators()[:1], G.relators()[1:], 7)
>>> len(reps)
52
>>> reps[25]
[[1, 0, 3, 2, 5, 6, 4], [1, 4, 0, 6, 2, 5, 3], [3, 0, 2, 6, 4, 1, 5]]

Credits

Primarily developed by Marc Culler, Nathan Dunfield, and Matthias Goerner

License

Copyright 2022 by Marc Culler, Nathan Dunfield, Matthias Goerner and others.

This code is released under the GNU General Public License, version 2 or (at your option) any later version as published by the Free Software Foundation.