We need this for the constructive SL(d,q) recognition.
We currently do this:
if not (q in [2,3,4,5,9]) then
return RECOG.SLn_godownfromd(h,q,4,d);
else
return RECOG.SLn_exceptionalgodown(h,q,d);
fi;
Instead we should implement what is described in Daniel's thesis in section 5.1.3 resp. 5.1.4. A start of that is in RECOG.OneEvenSL4 in PR #371, but it is incomplete. Looking at the code, I note that it also defines a new function RECOG.InvolutionCentraliser -- which actually overwrites an existing (but unused RECOG.InvolutionCentraliser).
But I also wonder if we even need this: the algorithm uses random elements of the involution centralizer. And to compute the that centralizer, we generate... random elements of it, via a helper RECOG.ChFromg. So perhaps we can just directly use the output RECOG.ChFromg, which would avoid some overhead.
But perhaps instead use the existing function RECOG.CentralisingElementOfInvolution defined elsewhere?
We need this for the constructive
SL(d,q)recognition.We currently do this:
Instead we should implement what is described in Daniel's thesis in section 5.1.3 resp. 5.1.4. A start of that is in
RECOG.OneEvenSL4in PR #371, but it is incomplete. Looking at the code, I note that it also defines a new functionRECOG.InvolutionCentraliser-- which actually overwrites an existing (but unusedRECOG.InvolutionCentraliser).But I also wonder if we even need this: the algorithm uses random elements of the involution centralizer. And to compute the that centralizer, we generate... random elements of it, via a helper
RECOG.ChFromg. So perhaps we can just directly use the outputRECOG.ChFromg, which would avoid some overhead.But perhaps instead use the existing function
RECOG.CentralisingElementOfInvolutiondefined elsewhere?