Skip to content

Commit

Permalink
Fix SMTX.InvariantSesquilinearForm for reducible case
Browse files Browse the repository at this point in the history
... by deleting unnecessary 'normalization' (???) code.
  • Loading branch information
fingolfin committed Nov 27, 2024
1 parent c075d23 commit 3147c2b
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 15 deletions.
17 changes: 2 additions & 15 deletions lib/meataxe.gi
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Check warning on line 3375 in lib/meataxe.gi

View check run for this annotation

Codecov / codecov/patch

lib/meataxe.gi#L3375

Added line #L3375 was not covered by tests
Expand All @@ -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;
Expand Down
10 changes: 10 additions & 0 deletions tst/testinstall/meataxe.tst
Original file line number Diff line number Diff line change
Expand Up @@ -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 . . . .
Expand Down

0 comments on commit 3147c2b

Please sign in to comment.