You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gap> LoadPackage( "cvec", false );;
gap> g:= Group( List( GeneratorsOfGroup( GL(2,3) ), CMat ) );;
gap> Size( g );
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `*' on 2 arguments at /.../gapmaster/gap/lib/methsel2.g:249 called from
act( pnt, g ) at /.../gapmaster/gap/lib/oprt.gi:1956 called from
PermutationOp( g, D, act ) at /.../gapmaster/gap/lib/oprt.gi:1929 called from
Permutation( elm, he, fun ) at /.../gapmaster/gap/lib/oprt.gi:3044 called from
ImagesRepresentative( map, gen
) at /.../gapmaster/gap/lib/mapphomo.gi:311 called from
func( C[i] ) at /.../gapmaster/gap/lib/coll.gi:665 called from
... at *stdin*:5
type 'quit;' to quit to outer loop
brk>
The situation is as follows:
The Size method in question calls NiceMonomorphism, and this calls NicomorphismFFMatGroupOnFullSpace.
Already the arguments of the latter function do not have any information about the IsCMatRep representation of the original group,
thus the nice monomorphism describes a permutation action on vectors which are not in IsCVecRep.
Multiplication of such vectors with matrices in IsCMatRep is not supported, hence the error.
As a workaround, we could install the missing methods in the cvec package, as follows.
InstallMethod( \*,
[ "IsRowVector and Is8BitVectorRep", "IsMatrixObj and IsCMatRep" ],
function( pnt, cmat )
return CVec( pnt ) * cmat;
end );
InstallMethod( \*,
[ "IsRowVector and IsGF2VectorRep", "IsMatrixObj and IsCMatRep" ],
function( pnt, cmat )
return CVec( pnt ) * cmat;
end );
and perhaps even something such as
InstallMethod( \*,
[ "IsRowVector and IsPlistRep", "IsMatrixObj and IsCMatRep" ],
function( pnt, cmat )
# Return a plist, we cannot choose an appropriate base field.
return List( CVec( pnt, Field( pnt ) ) * cmat );
end );
(Of course one might prefer not to return cvecs in the first two methods.)
A clean solution (not only for the cvec case) will have to address the GAP library code,
and anyhow this approach will be necessary.
At the moment, I think about the following:
We keep the current setup, but NicomorphismFFMatGroupOnFullSpace should take not just some group GL(n,q) as its argument but transfer the desired representation of its elements.
Then the calls field^dim etc. inside NicomorphismFFMatGroupOnFullSpace must be replaced by appropriate constructions.
The text was updated successfully, but these errors were encountered:
ThomasBreuer
changed the title
problem with Size for a group of cmats
problems with groups of cmats
Mar 28, 2023
Meanwhile (March 28, 2023) the situation is considerably better:
The NiceMonomorphism of the above group can be created, its image is a permutation group, thus Size works.
Computing images under the map is no problem.
Computing preimages does not run into errors, but the results are matrices in Is8BitMatrixRep not in IsCMatRep: The preimage matrix is put together from rows that are vectors from the natural action domain of the group, and then ImmutableMatrix is called in order to improve the internal representation.
Currently SylowSubgroup creates subgroups whose generators are in Is8BitMatrixRep.
(However, Centralizer creates subgroups whose generators are in IsCMatRep.
I think we need to change the setup in the GAP library as follows:
The vectors on which the matrices act should be in IsCVecRep not in Is8BitVectorRep. More generally, the internal representation of the vectors should be derived from the matrices via CompatibleVectorFilter.
The PreImagesRepresentative method should call Matrix in order to turn the list of IsCVecRep vectors into an IsCMat matrix.
(There are more places in the code that have to be adjusted in a similar way in order to support matrix objects, see for example oscar-system/Oscar.jl/pull/2105.)
Klaus Lux has found the following problem.
The situation is as follows:
The
Size
method in question callsNiceMonomorphism
, and this callsNicomorphismFFMatGroupOnFullSpace
.Already the arguments of the latter function do not have any information about the
IsCMatRep
representation of the original group,thus the nice monomorphism describes a permutation action on vectors which are not in
IsCVecRep
.Multiplication of such vectors with matrices in
IsCMatRep
is not supported, hence the error.As a workaround, we could install the missing methods in the cvec package, as follows.
and perhaps even something such as
(Of course one might prefer not to return cvecs in the first two methods.)
A clean solution (not only for the cvec case) will have to address the GAP library code,
and anyhow this approach will be necessary.
At the moment, I think about the following:
We keep the current setup, but
NicomorphismFFMatGroupOnFullSpace
should take not just some groupGL(n,q)
as its argument but transfer the desired representation of its elements.Then the calls
field^dim
etc. insideNicomorphismFFMatGroupOnFullSpace
must be replaced by appropriate constructions.The text was updated successfully, but these errors were encountered: