Skip to content

Commit

Permalink
WIP: meataxe: extend invariant form detection
Browse files Browse the repository at this point in the history
TODO: complete it, add tests
  • Loading branch information
fingolfin committed Sep 26, 2024
1 parent 2b482f7 commit 8cb1588
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 21 deletions.
4 changes: 1 addition & 3 deletions doc/ref/meataxe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -572,9 +572,6 @@ on all composition factors except number <A>nr</A>.
<Section Label="meataxe:Invariant Forms">
<Heading>MeatAxe Functionality for Invariant Forms</Heading>

The functions in this section can only be applied to an absolutely irreducible
MeatAxe module.

<ManSection>
<Func Name="MTX.InvariantBilinearForm" Arg='module'/>

Expand Down Expand Up @@ -607,6 +604,7 @@ or <K>fail</K> if no such form exists.
returns a basis of the underlying vector space of <A>module</A> which is contained
in an orbit of the action of the generators of module on that space.
This is used by <Ref Func="MTX.InvariantQuadraticForm"/> in characteristic 2.
Requires <A>module</A> to be irreducible.
</Description>
</ManSection>

Expand Down
26 changes: 10 additions & 16 deletions lib/meataxe.gi
Original file line number Diff line number Diff line change
Expand Up @@ -3286,21 +3286,19 @@ end;
##
#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;
Expand Down Expand Up @@ -3343,23 +3341,19 @@ end;
##
#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;

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;
Expand Down
4 changes: 2 additions & 2 deletions tst/testinstall/meataxe.tst
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,8 @@ gap> MTX.InvariantQuadraticForm( m );
Error, Argument of InvariantQuadraticForm is not an absolutely irreducible mod\
ule
gap> MTX.OrthogonalSign( m );
Error, Argument of InvariantBilinearForm is not an absolutely irreducible modu\
le
Error, Argument of InvariantQuadraticForm is not an absolutely irreducible mod\
ule
gap> mats:= GeneratorsOfGroup( SP( 4, 2 ) );;
gap> m:= GModuleByMats( mats, GF(2) );;
gap> Q:= MTX.InvariantQuadraticForm( m );
Expand Down

0 comments on commit 8cb1588

Please sign in to comment.