Skip to content

Add constructive recognition of SL(2,q) in natural representation 2.0#398

Merged
fingolfin merged 21 commits intogap-packages:masterfrom
Till-Eisen:Including_Franks_SL2
Apr 30, 2026
Merged

Add constructive recognition of SL(2,q) in natural representation 2.0#398
fingolfin merged 21 commits intogap-packages:masterfrom
Till-Eisen:Including_Franks_SL2

Conversation

@Till-Eisen
Copy link
Copy Markdown
Collaborator

@Till-Eisen Till-Eisen commented Mar 19, 2026

This PR replaces PR #389, which encountered merge conflicts. Starting fresh with a clean branch.

It is about adding Frank Lübeck's RECOG.RecogNaturalSL2 algorithm for constructive recognition of SL(2,q) in natural representation, along with RECOG.ConRecogNaturalSL2 which wraps it and produces output in the same format as RECOG.RecogniseSL2NaturalEvenChar / RECOG.RecogniseSL2NaturalOddCharUsingBSGS.
For q=3 where RecogNaturalSL2 does not work, the function falls back to existing recognition methods.

@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 19, 2026

Codecov Report

❌ Patch coverage is 96.65738% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.46%. Comparing base (1451603) to head (060db70).
⚠️ Report is 30 commits behind head on master.

Files with missing lines Patch % Lines
gap/projective/sl2_natural.gi 96.62% 12 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #398      +/-   ##
==========================================
+ Coverage   80.07%   87.46%   +7.38%     
==========================================
  Files          44       45       +1     
  Lines       18382    18873     +491     
==========================================
+ Hits        14720    16507    +1787     
+ Misses       3662     2366    -1296     
Files with missing lines Coverage Δ
gap/projective/classicalnatural.gi 69.47% <100.00%> (-22.79%) ⬇️
gap/projective/sl.gi 98.41% <100.00%> (-0.02%) ⬇️
gap/projective/sl2_natural.gi 96.62% <96.62%> (ø)

... and 17 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@fingolfin

This comment was marked as outdated.

@fingolfin

This comment was marked as outdated.

@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 8 times, most recently from adf24f1 to b696b3d Compare March 21, 2026 22:38
Comment thread gap/projective/sl2_natural.gi Outdated
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch from a72680f to 15f167c Compare March 24, 2026 10:42
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 9 times, most recently from ef2aec5 to ec12c2c Compare March 25, 2026 15:34
@Till-Eisen Till-Eisen changed the title Add recognition of SL(2,q) in natural representation 2.0 Add constructive recognition of SL(2,q) in natural representation 2.0 Mar 25, 2026
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi
Comment thread gap/projective/sl2_natural.gi Outdated
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 4 times, most recently from 366d8ad to eb4ca8b Compare March 30, 2026 12:22
@frankluebeck
Copy link
Copy Markdown
Member

I found some small issues, hopefully fixed in pull request #434.

Thanks for testing the code and reporting the problems.

@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 2 times, most recently from ccdcde3 to aa7920b Compare April 1, 2026 12:20
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch from aa7920b to b9b8c64 Compare April 1, 2026 13:16
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch from 238288c to b54d1b3 Compare April 2, 2026 08:57
@Till-Eisen
Copy link
Copy Markdown
Collaborator Author

After the recent changes, I benchmarked RECOG.ConRecogNaturalSL2 against RECOG.RecogniseSL2NaturalEvenChar. For small fields of characteristic 2, the new implementation performs better. However, for larger fields, RECOG.RecogniseSL2NaturalEvenChar becomes faster.

The following timings illustrate this behaviour:

gap> q := 2^3;;
gap> f := GF(q);;
gap> G := Group(List([1..15], i -> PseudoRandom(SL(2,q))));;
gap> for i in [1..100] do RECOG.ConRecogNaturalSL2(G,f);; od; time;
77
gap> for i in [1..100] do RECOG.RecogNaturalSL2(G,q);; od; time;
33
gap> for i in [1..100] do RECOG.RecogniseSL2NaturalEvenChar(G,f,false);;od; time;
94

 
gap> q := 2^8;;
gap> f := GF(q);;
gap> G := Group(List([1..15], i -> PseudoRandom(SL(2,q))));;
gap> for i in [1..100] do RECOG.ConRecogNaturalSL2(G,f);; od; time;
131
gap> for i in [1..100] do RECOG.RecogNaturalSL2(G,q);; od; time;
46
gap> for i in [1..100] do RECOG.RecogniseSL2NaturalEvenChar(G,f,false);;od; time;
218


gap> q := 2^40;;
gap> f := GF(q);;
gap> G := Group(List([1..15], i -> PseudoRandom(SL(2,q))));;
gap> for i in [1..100] do RECOG.ConRecogNaturalSL2(G,f);; od; time;
11747 
gap> for i in [1..100] do RECOG.RecogNaturalSL2(G,q);; od; time;
9170 
gap> for i in [1..100] do RECOG.RecogniseSL2NaturalEvenChar(G,f,false);;od; time;
7659

@fingolfin fingolfin closed this Apr 7, 2026
@fingolfin fingolfin reopened this Apr 7, 2026
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
Comment thread gap/projective/sl2_natural.gi Outdated
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 2 times, most recently from b198aea to e01b541 Compare April 8, 2026 10:32
Comment thread gap/projective/sl2_natural.gi Outdated
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 2 times, most recently from 1375c4a to 42b86ad Compare April 21, 2026 09:18
Comment thread gap/projective/sl2_natural.gi Outdated
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch 2 times, most recently from c4e037d to 7cdc0b1 Compare April 21, 2026 10:39
@Till-Eisen Till-Eisen force-pushed the Including_Franks_SL2 branch from 7cdc0b1 to 10cfede Compare April 22, 2026 12:06
Comment thread tst/working/quick/sl2.tst Outdated
Comment thread tst/working/quick/sl2.tst Outdated
Comment thread tst/working/quick/sl2.tst
Till Müller and others added 2 commits April 28, 2026 11:25
Co-authored-by: Max Horn <max@quendi.de>
@fingolfin fingolfin enabled auto-merge (squash) April 30, 2026 06:49
@fingolfin fingolfin merged commit a88e643 into gap-packages:master Apr 30, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants