-
Notifications
You must be signed in to change notification settings - Fork 182
problem with a new feature for matrix groups #6222
Description
Since #6213 got merged, it is possible to construct some matrix groups in such a way that their generators are represented in a different way. For that, one can set the global option ConstructingFilter. Currently IsPlistMatrixRep is a supported non-default value.
This feature is experimental, and it is clear that the new kinds of matrix groups will run into problems.
Here is one such problem:
gap> G:= SP( 4, 2 );
Sp(4,2)
gap> nice:= NiceMonomorphism( G );;
gap> G2:= SP( 4, 2 : ConstructingFilter:= IsPlistMatrixRep ); # the same group, but with different matrices
Sp(4,2)
gap> nice2:= NiceMonomorphism( G2 );;
gap> IsIdenticalObj( nice, nice2 );
true
gap> IsSubset( Source( nice2 ), G2 );
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `<' on 2 arguments at
[...]
The problem is that the function NicomorphismFFMatGroupOnFullSpace caches the maps it computes, see the IsIdentical check above.
The keys in this cache are the dimension and the size of the field.
Thus we run into problems as soon as these parameters do not suffice.
A straightforward solution is to add the representation of the matrices in the group and the field of definition (to be compared w.r.t. object identity) as parameters for the keys.
Do you have better ideas?