-
Notifications
You must be signed in to change notification settings - Fork 166
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
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3311,21 +3311,19 @@ | |
## | ||
#F InvariantBilinearForm( module ) . . . . | ||
## | ||
## Look for an invariant bilinear form of the absolutely irreducible | ||
## GModule module. Return fail, or the matrix of the form. | ||
## Look for an invariant bilinear form of the GModule module. | ||
## Return fail, or the matrix of the form. | ||
SMTX.InvariantBilinearForm:=function( module ) | ||
local DM, iso; | ||
|
||
if not SMTX.IsMTXModule(module) or | ||
not SMTX.IsAbsolutelyIrreducible(module) then | ||
Error( | ||
"Argument of InvariantBilinearForm is not an absolutely irreducible module"); | ||
if not SMTX.IsMTXModule(module) then | ||
Error("Argument of InvariantBilinearForm is not a module"); | ||
fi; | ||
if IsBound(module.InvariantBilinearForm) then | ||
return module.InvariantBilinearForm; | ||
fi; | ||
DM:=SMTX.DualModule(module); | ||
iso:=MTX.IsomorphismIrred(module,DM); | ||
iso:=MTX.IsomorphismModules(module,DM); | ||
if iso = fail then | ||
SMTX.SetInvariantBilinearForm(module, fail); | ||
return fail; | ||
|
@@ -3368,41 +3366,24 @@ | |
## | ||
#F InvariantSesquilinearForm( module ) . . . . | ||
## | ||
## Look for an invariant sesquililinear form of the absolutely irreducible | ||
## GModule module. Return fail, or the matrix of the form. | ||
## Look for an invariant sesquililinear form of the GModule module. | ||
## Return fail, or the matrix of the form. | ||
SMTX.InvariantSesquilinearForm:=function( module ) | ||
local DM, q, r, iso, isot, l; | ||
local DM, iso; | ||
|
||
if not SMTX.IsMTXModule(module) or | ||
not SMTX.IsAbsolutelyIrreducible(module) then | ||
Error( | ||
"Argument of InvariantSesquilinearForm is not an absolutely irreducible module" | ||
); | ||
if not SMTX.IsMTXModule(module) then | ||
Error("Argument of InvariantSesquilinearForm is not a module"); | ||
fi; | ||
|
||
if IsBound(module.InvariantSesquilinearForm) then | ||
return module.InvariantSesquilinearForm; | ||
fi; | ||
DM:=SMTX.TwistedDualModule(module); | ||
iso:=MTX.IsomorphismIrred(module,DM); | ||
iso:=MTX.IsomorphismModules(module,DM); | ||
if iso = fail then | ||
SMTX.SetInvariantSesquilinearForm(module, fail); | ||
return fail; | ||
fi; | ||
# Replace iso by a scalar multiple to get iso twisted symmetric | ||
q:=Size(module.field); | ||
r:=RootInt(q,2); | ||
isot:=List( TransposedMat(iso), x -> List(x, y->y^r) ); | ||
isot:=iso * isot^-1; | ||
Comment on lines
-3392
to
-3396
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looking at this again I realize that of course this code is needed. Not sure why I was too dense to grasp it before: the reason why is right in this comment: to ensure we get a form which is twisted symmetric. I.e. the matrix Indeed in the code the matrix I'll restore the deleted code and add comments with details. That then gets me back to the tests failing then, because now in the reducible case, |
||
if not IsDiagonalMat(isot) then | ||
Error("Form does not seem to be of the right kind (non-diagonal)!"); | ||
fi; | ||
l:=LogFFE(isot[1,1],Z(q)); | ||
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; | ||
iso:=ImmutableMatrix(GF(q), iso); | ||
iso:=ImmutableMatrix(module.field, iso); | ||
SMTX.SetInvariantSesquilinearForm(module, iso); | ||
return iso; | ||
end; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here, too, we might get additional problems, i.e.,
iso
may not be symmetric -- we ought to add a check for that.