The constructive SL(d,q) recognition reduces almost all cases to SL(2,q) (which we have covered nicedly now), except for this one.
I think right now we just fall back to StabilizerChainProj in this case.
One option would be to implement the algorithm from https://doi.org/10.1016/j.jalgebra.2007.01.020 (Some relevant code fragments are in contrib/frank/sl2/SL3.g). That may be useful anyway, to deal with the general (black box) situation.
But for our special case, there might be a simpler and more efficient solution, sketched by @frankluebeck in an email to @Till-Eisen and myself. The idea is basically to treat $\mathrm{SL}(3)$ by a variant of the $\mathrm{SL}_n$ algorithm. Here is my translation (any mistakes are mine, of course):
For the going-down step, one just has to make a small modification (if two eigenvalues are 1, then of course the third one is as well). Namely,
q := ???;
G := SL(3, q);
t := PseudoRandom(G)^(q+1);
quite often produces an element with two equal eigenvalues. Then
u := Subgroup(G, [t, t^PseudoRandom(G)]);
is almost always (often more than one-third of the time) isomorphic to GL(2, q), and
s := DerivedSubgroup(u); # or the subgroup generated by three random
# commutators from u
is even more frequently an SL(2, q). (See Lemmas 2.2–2.4 in the SL3 paper.)
The constructive
SL(d,q)recognition reduces almost all cases toSL(2,q)(which we have covered nicedly now), except for this one.I think right now we just fall back to
StabilizerChainProjin this case.One option would be to implement the algorithm from https://doi.org/10.1016/j.jalgebra.2007.01.020 (Some relevant code fragments are in
contrib/frank/sl2/SL3.g). That may be useful anyway, to deal with the general (black box) situation.But for our special case, there might be a simpler and more efficient solution, sketched by @frankluebeck in an email to @Till-Eisen and myself. The idea is basically to treat$\mathrm{SL}(3)$ by a variant of the $\mathrm{SL}_n$ algorithm. Here is my translation (any mistakes are mine, of course):