From 8cb1588e2b27805b6063fd653a2c5519e0e6527b Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 24 Sep 2024 22:04:58 +0200 Subject: [PATCH] WIP: meataxe: extend invariant form detection TODO: complete it, add tests --- doc/ref/meataxe.xml | 4 +--- lib/meataxe.gi | 26 ++++++++++---------------- tst/testinstall/meataxe.tst | 4 ++-- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/doc/ref/meataxe.xml b/doc/ref/meataxe.xml index 2777665ebc..3b889a74dc 100644 --- a/doc/ref/meataxe.xml +++ b/doc/ref/meataxe.xml @@ -572,9 +572,6 @@ on all composition factors except number nr.
MeatAxe Functionality for Invariant Forms -The functions in this section can only be applied to an absolutely irreducible -MeatAxe module. - @@ -607,6 +604,7 @@ or fail if no such form exists. returns a basis of the underlying vector space of module which is contained in an orbit of the action of the generators of module on that space. This is used by in characteristic 2. +Requires module to be irreducible. diff --git a/lib/meataxe.gi b/lib/meataxe.gi index 29a98ef594..3e302e5abe 100644 --- a/lib/meataxe.gi +++ b/lib/meataxe.gi @@ -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; @@ -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; diff --git a/tst/testinstall/meataxe.tst b/tst/testinstall/meataxe.tst index f8a68f2010..45380ce035 100644 --- a/tst/testinstall/meataxe.tst +++ b/tst/testinstall/meataxe.tst @@ -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 );