gap icon indicating copy to clipboard operation
gap copied to clipboard

```SmallGeneratingSet``` throws error on matrix group

Open schnellecom opened this issue 2 years ago • 4 comments

Observed behaviour

Throws an error on the following setup:

g:=Group([ [[0,1,0], [-1,0,-2], [0,0,1]] , [[0,-1,0], [1,0,2], [0,0,1]] , [[-1,0,0], [0,-1,0], [0,0,1]] ]);
SmallGeneratingSet(g);

image

Expected behaviour

Returning a small generating set (possibly even the same) for the group g

Copy and paste GAP banner (to tell us about your setup)

gap
 ┌───────┐   GAP 4.12.2 of 2022-12-18
 │  GAP  │   https://www.gap-system.org
 └───────┘   Architecture: x86_64-pc-linux-gnu-default64-kv8
 Configuration:  gmp 6.2.1, GASMAN, readline
 Loading the library and packages ...
 Packages:   AtlasRep 2.1.6, AttributeScheduler 2019.12.05, AutoDoc 2022.10.20, Browse 1.8.19, CTblLib 1.3.4,
             datastructures 0.3.0, Digraphs 1.6.1, FactInt 1.6.3, FGA 1.4.0, Forms 1.2.9, GAPDoc 1.6.6, genss 1.6.8,
             GRAPE 4.9.0, IO 4.8.0, NautyTracesInterface 0.2, orb 4.9.0, PrimGrp 3.4.3, recog 1.4.2,
             SimplicialSurfaces 0.6, SmallGrp 1.5.1, SpinSym 1.5.2, TomLib 1.2.9, TransGrp 3.6.3, utils 0.81
 Try '??help' for help. See also '?copyright', '?cite' and '?authors'

schnellecom avatar Dec 11 '23 07:12 schnellecom

This is an infinite matrix group, so how would this be supposed to work?

The only issue could be to have a nicer catch for this case, there are probably many other such situations.

hulpke avatar Dec 11 '23 20:12 hulpke

Good point, I didn't think about how it could even work mathematically. Would it be better if there was something in the documentation or it would just return the original set? Not sure if this is a valid use case but I maybe if someone iterates over a set of generators and tries to reduce them it could be annoying to just get an error.

schnellecom avatar Dec 22 '23 13:12 schnellecom

There are really two questions here:

  • Should the existing method be subject to extra conditions? (IsFinite, CanEasilyTestMembership would be potential candidates, even though the method is more general)
  • Should there be a fallback method for SmallGeneratingSet that simply returns the existing generators.

hulpke avatar Dec 22 '23 19:12 hulpke

I think that even a very basic method which only tries to eliminate generators which are easily seen to be redundant could be useful. For example, such method would remove the identity and duplicate generators, generators which are inverses of other generators and generators which are products of two (or a few) other generators and / or inverses of other generators. Such method would not need to require much more than CanEasilyCompareElements.

Stefan-Kohl avatar Dec 22 '23 20:12 Stefan-Kohl