Size of a group of collineations

Issue #11 new
Jan De Beule repo owner created an issue

Stil cleaning up my mailbox, I encountered the following mail from Gabor Nagy. He sent us the following example, after having discussed these things with Michel and me in Szeged (May 2017).

gap> q:=17;
17
gap> pg3:=ProjectiveSpace(3,q^2);
ProjectiveSpace(3, 289)
gap> 
gap> $^9, Z(17)^9, 0*Z(17) ], [ 0*Z(17), Z(17), Z(17)^9, 0*Z(17) ],         
> $*Z(17), 0*Z(17) ], [ 0*Z(17), Z(17)^3, Z(17)^14, Z(17)^4 ],              
> $)^0, Z(17)^8 ] ] ];                                                      
[ [ [ Z(17)^0, 0*Z(17), 0*Z(17), 0*Z(17) ], 
      [ 0*Z(17), Z(17)^9, Z(17)^9, 0*Z(17) ], 
      [ 0*Z(17), Z(17), Z(17)^9, 0*Z(17) ], 
      [ 0*Z(17), 0*Z(17), 0*Z(17), Z(17)^0 ] ], 
  [ [ Z(17)^0, 0*Z(17), 0*Z(17), 0*Z(17) ], 
      [ 0*Z(17), Z(17)^3, Z(17)^14, Z(17)^4 ], 
      [ 0*Z(17), Z(17)^6, Z(17)^10, Z(17)^8 ], 
      [ 0*Z(17), Z(17)^4, Z(17)^0, Z(17)^8 ] ] ]
gap> 
gap> mg:=Group(mgens);
<matrix group with 2 generators>
gap> Size(mg);
2448
gap> cgens:=List(mgens,x->Collineation(pg3,x));
[ < a collineation: <cmat 4x4 over GF(17,2)>, F^0>, 
  < a collineation: <cmat 4x4 over GF(17,2)>, F^0> ]
gap> cg:=Group(cgens);
<projective collineation group with 2 generators>
gap> Size(cg);
Error, action on projective points not feasible to calculate called from
NiceMonomorphism( G ) at /opt/gap4r8/lib/grpnice.gi:128 called from
NiceObject( obj ) at /opt/gap4r8/lib/grpnice.gd:237 called from
<function "unknown">( <arguments> )
 called from read-eval loop at line 15 of *stdin*
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
brk> 

For us, the reasons are obvious: if 'cg' is a subgroup of PGammaL(d+1,q), then FinInG will compute the size of cg using its action on the points of PG(d,q). We installed a property CanComputeActionOnPoints for collineation groups, checking whether the number of points of the underlying projective space is not larger than a preset limit. So the example of Gabor is easy to repair (note in the example that we have to redefine cg, since it is impossible to change the property CanComputeActionOnPoints), but note that the time to complete now is a disaster.

gap> FINING.LimitForCanComputeActionOnPoints := Size(Points(pg3));
24221380
gap> cg:=Group(cgens);
<projective collineation group with 2 generators>
gap> Size(cg);

Gabor sent us his solution:

# The nice monomorphism of a linear group over a finite field is set by
#
# which uses trick from NicomorphismOfGeneralMatrixGroup (grpmat.gi)
# uses DoSparseLinearActionOnFaithfulSubset (grpmat.gi)
gap> cg:=Group(cgens);
<projective collineation group with 2 generators>
gap> nice:=DoSparseLinearActionOnFaithfulSubset(mg,OnLines,false);
<action epimorphism>
gap> SetIsSurjective(nice,true);
gap> nice:=nice*SmallerDegreePermutationRepresentation(Image(nice):cheap:=true);;
gap> xset:=ExternalSet(cg,MovedPoints(Image(nice)),cgens,List(mgens,x->Image(nice,x)));
<xset:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, ...]>
gap> SetNiceMonomorphism(cg,ActionHomomorphism(xset));
gap> Size(cg);
2448

The idea on which his solution is based, is not so difficult to understand. He adds himself that this solution is not suitable for groups of collineations including a non-trivial field automorphism. When time permits, we should analyse the GAP operation 'DoSparseLinearActionOnFaithfulSubset', and see if this can be changed for collineation groups (note in this example that mg stands for the matrix group, not the collineation group).

Again not a bug, but something to be filed not to be forgotten.

Comments (0)

  1. Log in to comment