-
Notifications
You must be signed in to change notification settings - Fork 19
Description
This is ok:
gap> G := AlternatingGroup(9);
Alt( [ 1 .. 9 ] )
gap> RECOG.RecogniseAn(MovedPoints(G), G, 1/2000);
rec( conjperm := (1,7,8,2,4,9)(3,6,5), degree := 9, gens := [ (5,9,8), (1,7,4,5,2,6,3) ], stamp := "An" )
This is surprising:
gap> G := SymmetricGroup(9);
Sym( [ 1 .. 9 ] )
gap> RECOG.RecogniseAn(MovedPoints(G), G, 1/2000);
rec( conjperm := (1,7,6,9,2,4,8,3), degree := 9, gens := [ (3,9,8), (1,4,6,8,2,5,7) ], stamp := "An" )
However, this is reasonable in the broader scope: In order to decide whether RecogniseAn or RecogniseSn should be used, the function RecogniseGiant first checks whether all generators of its input group have sign 1. Hence RecogniseGiant will never call RecogniseAn with a full symmetric group. Thus the "error" above arises only if one directly calls the internal function RecogniseAn.
Suggested solution:
- Either document properly what
RecogniseAndoes and doesn't do, - or get rid of
RecogniseSnandRecogniseAnaltogether and move their code directly intoRecogniseGiant. I think I prefer this approach over having aRecogniseAnfunction which does not, in fact, recognise An.
The underlying reason for this behaviour is that NiceGeneratorsAnOdd and NiceGeneratorsAnEven only search for the nice generators of A_n in its input group, but do not check whether they actually generate the input group. I think this is reasonable, but again, it should be clarified in the documentation (which I will do in an upcoming PR).