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 8, 2024
1 parent e7b2989 commit e7eb173
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
26 changes: 13 additions & 13 deletions lib/meataxe.gi
Original file line number Diff line number Diff line change
Expand Up @@ -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;
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 e7eb173

Please sign in to comment.