Skip to content

Conversation

@TWiedemann
Copy link

First draft for #338.

Already done

  • Recursive construction of StdPresentation for all non-leaf nodes, using StdPresentation of the leaf nodes.
  • Tests of the presentation. (Maybe there are some more examples that should be tested.)

Hacks that should be improved

  • For the leaf nodes, there is currently only a generic function to construct StdPresentation using IsomorphismFpGroupByGenerators. The "find homomorphism" methods should install StdPresentation when they find a leaf if possible.

Yet to do

gap> testPres := function(G, small, projective)
> local ri,iso,pres,F,hom,rel,projG,projString;
> if projective then ri := RecogniseProjectiveGroup(G);; else ri := RecogniseGroup(G);; fi;
> if not HasStdPresentation(ri) then CalcStdPresentation(ri)(ri);; fi;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, we'd use InstallMethod(StdPresentation, ..., ri -> CalcStdPresentation(ri)(ri)); then the above line would be redundant

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My last commit implements your suggestion and the test succeeds without the redundant line. I am a bit uncertain about some technical details, which we can discuss on Thursday.

@codecov
Copy link

codecov bot commented Dec 11, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.55%. Comparing base (6d84867) to head (dc48298).
⚠️ Report is 19 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #363      +/-   ##
==========================================
- Coverage   78.55%   71.55%   -7.01%     
==========================================
  Files          43       43              
  Lines       18281    18398     +117     
==========================================
- Hits        14361    13164    -1197     
- Misses       3920     5234    +1314     
Files with missing lines Coverage Δ
gap/base/recognition.gd 100.00% <100.00%> (ø)
gap/base/recognition.gi 70.91% <100.00%> (+3.18%) ⬆️

... and 22 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
Copy link
Member

Very nice. I am trying to use this to debug issues #343 reported by @ThomasBreuer . Unfortunately it gets stuck in computing a presentation for a lower-triangular matrix group.

In this case:

<recognition node LowerLeftPGroup Size=8388608 Dim=198 Field=2>
``
It is possible (with some work of course) to directly extract a pc presentation for such a group.

I was hoping the `nilmat` package would help, but it doesn't :-(.

However, in fact I am pretty sure I have code for that sitting around somewhere (we have some code in the polycyclic package but unfortunately it seems to only be written with char 0 matrices in mind :-( ).

In the case of the bug, I think that's the only "difficult" node, so if we can fit this in, the mechanism in this PR would help verify that the result is wrong.

@TWiedemann TWiedemann marked this pull request as ready for review January 8, 2026 14:00
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.

2 participants