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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions