Consider this input: ri:=RecognizeGroup(SL(6,257));
This ought to be fast, and sometimes it indeed is:
gap> SetInfoLevel(InfoRecog,2); SetInfoLevel(InfoMethSel,2);
gap> ri:=RecognizeGroup(SL(6,257)); time;
#I Going projective...
#I Finished rank 900 method "GoProjective": success.
#I Going to the image (depth=0, try=1, dim=6, field=257).
#I ClassicalNatural: this is PSL_n!
#I Finding an SL2...
#I Dimension: 6
#I Dimension: 6
#I Recognising this SL2 constructively in 2 dimensions...
#I Going up to SL_d again...
#I found c1 and c.
#I found c1 and c.
#I found c1 and c.
#I Finished rank 1050 method "ClassicalNatural": success.
#I Back from image (depth=0, dim=6, field=257).
#I Calculating preimages of nice generators.
#I Creating 13 random generators for kernel.
#I Going to the kernel (depth=0).
#I Finished rank 1100 method "DiagonalMatrices": success.
#I Going to the image (depth=1, try=1, dim=1, field=257).
#I Finished rank 4000 method "Scalar": success.
#I Back from image (depth=1, dim=6, field=257).
#I Calculating preimages of nice generators.
#I Found trivial kernel (depth=1).
#I Back from kernel (depth=0).
#I Doing immediate verification (depth=0).
<recognition node GoProjective Dim=6 Field=257
F:<recognition node (projective) ClassicalNatural Comment=PSLd Simple Size=
1113326944400881126270746042710464624142643654286799616570428596073930519393127628800 Dim=6 Field=257>
K:<recognition node DiagonalMatrices Dim=6 Field=257
F:<recognition node Scalar Dim=1 Field=257>
K:<trivial kernel>>
174
So it went projective, recognized it is a PSL(d,q) and the rest is trivial from there.
But if I re-run this, quite often instead something like this happens:
gap> SetInfoLevel(InfoRecog,2); SetInfoLevel(InfoMethSel,2);
gap> ri:=RecognizeGroup(SL(6,257)); time;
#I Going projective...
#I Finished rank 900 method "GoProjective": success.
#I Going to the image (depth=0, try=1, dim=6, field=257).
#I ClassicalNatural: Is not PSL.
#I Finished rank 1050 method "ClassicalNatural": TemporaryFailure.
#I G is not C5 (subfield).
#I G is not C3 (semilinear).
#I D247: Trying the involution jumper 9 times...
.........
#I D247: Did not find normal subgroup, giving up.
#I Finished rank 840 method "D247": TemporaryFailure.
#I AltSym: prime factor of order excludes A_n
#I Finished rank 800 method "TensorDecomposable": TemporaryFailure.
#I FindElmOfEvenNormal: Could be irreducible proper normal subgroup!
#I Dimension no proper power, so this is not D7.
#I Finished rank 700 method "FindElmOfEvenNormal": TemporaryFailure.
#I LowIndex: Trying 10 first elements...
..........
#I Finished rank 600 method "LowIndex": TemporaryFailure.
#I ThreeLargeElOrders: defining characteristic p=257
#I LieTypeNonConstr: found L6(257), lookup up hints...
#I Looking up hints for L6(257)...
#I No hint worked, giving up.
#I LieTypeNonConstr: giving up.
#I Finished rank 400 method "LieTypeNonConstr": TemporaryFailure.
#I Have 59785 points.
#I Have 119546 points.
#I Have 179418 points.
...
So, it does not realize this is already an almost simple group, and instead falls back to a stabilizer chain algorithm.
Note that it did manage to name the group as L6(257), but that doesn't help (if at all, it would call into the generic (black box) $SL_n$ recognition.
Anyway, I think the problem here is with naming:
gap> Number([1..100], i->RecogniseClassical(SL(6,257)).isSLContained = true);
58
gap> Number([1..100], i->RecogniseClassical(SL(6,251)).isSLContained = true);
63
gap> Number([1..100], i->RecogniseClassical(SL(6,101)).isSLContained = true);
87
versus
gap> Number([1..100], i->RecogniseClassical(SL(6,25)).isSLContained = true);
100
Consider this input:
ri:=RecognizeGroup(SL(6,257));This ought to be fast, and sometimes it indeed is:
So it went projective, recognized it is a
PSL(d,q)and the rest is trivial from there.But if I re-run this, quite often instead something like this happens:
So, it does not realize this is already an almost simple group, and instead falls back to a stabilizer chain algorithm.
Note that it did manage to name the group as$SL_n$ recognition.
L6(257), but that doesn't help (if at all, it would call into the generic (black box)Anyway, I think the problem here is with naming:
versus