Skip to content

Add better code for constructive recognition of SL(3,q) in natural representation #491

Description

@fingolfin

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.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    sl_nissue related to sl_n detection (may be resolved by new SL_n code)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions