Finitely presented finite subgroups of a finitely presented infinite group in GAP?

I am trying to work with infinite Coxeter groups in GAP. An example of such a group would be $$\langle a, b, c | a^2, b^2, c^2, (ab)^4, (ac)^2, (bc)^4\rangle$$ which can be used to describe the 2D (Euclidean) square lattice. The group is infinite but the subgroups generated by any pair of generators are finite. These subgroups then have a straightforward finite presentation inherited from the presentation of the full group, e.g. $$\langle a, b | a^2, b^2, (ab)^4\rangle$$ (this is just $$D_8$$).

I can define the first group in GAP as

F := FreeGroup(3);
G := F / [F.1^2, F.2^2, F.3^2, (F.1*F.2)^4, (F.1*F.3)^2, (F.2*F.3)^4];


and the subgroup generated by the first two generators as

H := Subgroup(G,[G.1,G.2]);

but this returns

Group([ f1, f2 ])

so GAP does not seem to store $$H$$ as a finitely presented group. Whenever I ask GAP to do anything with $$H$$ (find the size, return a specific coset etc) GAP attempts to do this by (as far as I can tell) trying to compute the full coset table for $$G$$ with $$H$$ as a subgroup, which unsurprisingly fails because there are infinitely many cosets of $$H$$ in $$G$$. There is a section in the GAP documentation titled "New Presentations and Presentations for Subgroups" which suggests using the IsomorphismFpGroup function to solve this problem, but this also seems to fail when $$G$$ is infinite because

iso := IsomorphismFpGroup(H);

returns

Error, the coset enumeration has defined more than 4096000 cosets.

If I instead just independently define these subgroups as finitely presented groups with the relevant generators and relations then GAP handles all the size calculations etc perfectly well, but I can no longer calculate cosets of these groups using the other elements of $$G$$ (which I ultimately want to do).

Is there a better way to work with subgroups of this type, or is this just not something GAP is designed to do?

• Coxeter groups are really special; is it true that you'll always want to work with parabolic subgroups (i.e., subgroups generated by a subset of the standard Coxeter generators)? I wonder if Sage might be better suited? doc.sagemath.org/html/en/reference/categories/sage/categories/…
– JBL
Commented Apr 23, 2023 at 1:07
• @JBL Yes, I only need these subgroups and cosets of these subgroups. I am actually using Sage already, but as I understand it the group theory functions in Sage are essentially just wrappers which call the equivalent functions in GAP. I think the resolution to my problem is to do as I described in my comment to ahulpke below; essentially impose periodic boundary conditions on the manifold described by the group and so make the group finite. There is a method to do this for hyperbolic manifolds described in section 3.1.5 of arxiv.org/abs/1802.01520 Commented Apr 24, 2023 at 3:56
• Ok. You might also try explicitly constructing your group using a Coxeter group constructor, to take advantage of all the special machinery that exists (both in the world and implemented in GAP/Sage) for them.
– JBL
Commented Apr 24, 2023 at 12:12
• It seems like the Coxeter group classes in Sage/GAP do not allow for creation of general Coxeter groups via a presentation and instead you have to give the name of the group to the CoxeterGroup() function and hope that the group you want is implemented. As far as I can tell, infinite hyperbolic Coxeter groups are not. Commented Apr 25, 2023 at 2:43
• I'm not expert in this (I only occasionally work with Coxeter groups that are not finite or affine) so I'm sorry if I'm wasting your time, but I think you should be able to input an arbitrary Coxeter matrix. For example, when I evaluate CoxeterGroup([[1,3,3,3],[3,1,3,3],[3,3,1,3],[3,3,3,1]]) on Sage it happily tells me that I have given it a rank-4 Coxeter group, and lets me manipulate the group and its elements in various ways.
– JBL
Commented Apr 26, 2023 at 0:16

There isn't really a machanism to deal easily with this particular situation. Part of the reason is that in general the relators in a subset of generators do not yield a presentation for the subgroup generated by these elements (e.g. consider $$\langle a,b\rangle\le \langle a,b,c\mid a=c,b=c\rangle$$).

What you can do in your example is to force element normal form:

SetReducedMultiplication(G);


Then operations which are element based will succeed, e.g. Elements(H);, and one could probably get eleemnt lists for cosets.

What would you ultimately like to compute from $$H$$?

• Interestingly, Elements(H); works for this example even without SetReducedMultiplication(G);, and Size(H); then also succeeds as long as it is called after Elements(H);. Unfortunately this does not seem to work in general and fails when taking subgroups of e.g. the Coxeter group describing the order-5 tesseractic honeycomb. I am ultimately trying to embed a certain graph onto part of a hyperbolic tessellation and Coxeter groups seem to be the most natural tool to accomplish this. Commented Apr 18, 2023 at 8:25
• In theory I could add extra relations to the presentation of G to impose periodic boundary conditions on the tessellation and make G finite as well as H. The problem is that, becuase the manifolds I want to work with are hyperbolic, I would need to keep adding new relations to the presentation as I enlarge the manifold because the genus of the manifold will also be growing, and I am not sure how to identify what these relations should be. Commented Apr 18, 2023 at 8:28