From 3147c2b18fb78d7e1719918c1bb078aaea83b1be Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 8 Nov 2024 01:14:29 +0100 Subject: [PATCH] Fix SMTX.InvariantSesquilinearForm for reducible case ... by deleting unnecessary 'normalization' (???) code. --- lib/meataxe.gi | 17 ++--------------- tst/testinstall/meataxe.tst | 10 ++++++++++ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/lib/meataxe.gi b/lib/meataxe.gi index 90c375cfd8..baa80b0260 100644 --- a/lib/meataxe.gi +++ b/lib/meataxe.gi @@ -3369,7 +3369,7 @@ end; ## 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) then Error("Argument of InvariantSesquilinearForm is not a module"); @@ -3383,20 +3383,7 @@ SMTX.InvariantSesquilinearForm:=function( module ) 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; - 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; diff --git a/tst/testinstall/meataxe.tst b/tst/testinstall/meataxe.tst index 0dddfd4bfe..699b772915 100644 --- a/tst/testinstall/meataxe.tst +++ b/tst/testinstall/meataxe.tst @@ -105,6 +105,16 @@ gap> MTX.OrthogonalSign(M2); gap> SMTX.RandomIrreducibleSubGModule(M2); # returns false for irreducible module false +# test invariant form detection on reducible module with two isomorphic +# components (hence many automorphisms exist) +gap> g1:= GeneratorsOfGroup(SU(4, 5));; +gap> g2:= GeneratorsOfGroup(SU(4, 5));; +gap> m:= GModuleByMats(SMTX.MatrixSum(g1,g2), GF(25));; +gap> form:= MTX.InvariantSesquilinearForm( m );; +gap> frob5 := g -> List(g,row->List(row,x->x^5));; # field involution +gap> ForAll(MTX.Generators(m), x -> x*form*TransposedMat(frob5(x)) = form); +true + # gap> Display(MTX.IsomorphismModules(M,M)); 1 . . . .