Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend meataxe to be able to detect invariant forms of reducible modules (just one possible form is returned) #5803

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

fingolfin
Copy link
Member

@fingolfin fingolfin commented Sep 24, 2024

No description provided.

@hulpke
Copy link
Contributor

hulpke commented Sep 30, 2024

A main change seems a change from IsomorphismIrred to IsomorphismModules. What I want to make sure is that there will not be a chance of running in infinite recursion.

I have not looked again into the code of these two functions, but the former is a straightforward spinning algorithm, while the second is a rather elaborate calculation that uses a lot of other MeatAxe routines.
This means that with this change, InvariantXXXForm cannot be used within routines that might get called from IsomorphismModules. This means that the tests need to cover a variety of module structures (direct sums of multiple isomorphic and non-isomorphic indecomposable components).

@fingolfin
Copy link
Member Author

Calls to MTX.Invariant*Form in GAP:

$ git grep -P -l '\.Invariant.*Form' grp lib
lib/meataxe.gi

So nothing outside of lib/meataxe.gi calls this.
Looking closer at those calls in lib/meataxe.gi:

  • SMTX.InvariantQuadraticForm calls InvariantBilinearForm as a first step
  • SMTX.OrthogonalSign calls MTX.InvariantBilinearForm and MTX.InvariantQuadraticForm
  • however nothing in the library calls OrthogonalSign (only tests)

So all in all I don't see how this could cause a problem?

@fingolfin fingolfin added this to the GAP 4.14.0 milestone Oct 13, 2024
@fingolfin fingolfin changed the title meataxe: extend invariant form detection Extend meataxe to be able to detect invariant forms of reducible modules (just one possible form is returned) Nov 7, 2024
@fingolfin fingolfin marked this pull request as ready for review November 8, 2024 00:23
# if l mod (r-1) <> 0 then
# Error("Form does not seem to be of the right kind (not (q-1)st root)!");
# fi;
# iso:=Z(q)^(l/(r-1)) * iso;
Copy link
Member Author

Choose a reason for hiding this comment

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

@ThomasBreuer @hulpke @jandebeule any ideas what the commented code above (inside SMTX.InvariantSesquilinearForm) is meant to be good for?

It looks to me like an attempt to "normalize" the isomorphism (and hence invariant form) we compute here). But the form can in fact be scaled by an arbitrary scalar (not just by a norm), so I don't understand why it we choose this specific one.

The reason I stumbled over this, and subsequently commented it out (to be deleted) is that it utterly fails if the given module is e.g. the sum of two isomorphic modules - then isot above in general won't be diagonal at all (test cases for that added below). On the other hand I can't really think of any reason why it would be useful. But I am sure whoever added this had a good reason, so I wonder what I am missing.

Any suggestions would be highly welcome!

@fingolfin fingolfin added kind: enhancement Label for issues suggesting enhancements; and for pull requests implementing enhancements topic: library release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes labels Nov 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: enhancement Label for issues suggesting enhancements; and for pull requests implementing enhancements release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes topic: library
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants