diff --git a/lib/meataxe.gi b/lib/meataxe.gi index 90c375cfd8..f9f21b63de 100644 --- a/lib/meataxe.gi +++ b/lib/meataxe.gi @@ -3384,19 +3384,19 @@ SMTX.InvariantSesquilinearForm:=function( module ) 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); +# 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(module.field, iso); SMTX.SetInvariantSesquilinearForm(module, iso); return iso; end; diff --git a/tst/testinstall/meataxe.tst b/tst/testinstall/meataxe.tst index f90422bb2d..21a17ccd52 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 . . . .