Dear GAP Forum,
Azmi Tamid asked
How can I generate in GAP the group SL(2,Z_n) of
2x2 matrices mod n with determinant 1 ?
Currently there is no function in GAP that returns directly the
desired matrix group, unless the modulus n is a prime integer.
Thus the most elegant way to compute SL(2,Z/nZ) as a matrix group in GAP 4.2
is to use that fact that SL(2,Z/nZ) is an epimorphic image of SL(2,Z)
under reduction of matrix entries modulo n (see, e.g., Theorem II.3.2 in
[Koecher-Krieg: `Elliptische Funktionen und Modulformen]).
Using the ``canonical generators'' T and J for SL(2,Z),
one gets SL(2,Z/nZ) as follows.
T:= [ [ 1, 1 ], [ 0, 1 ] ]; J:= [ [ 0, 1 ], [ -1, 0 ] ]; g:= Group( [ T, J ] * One( Integers mod n ) );
This answers the question.
However, it is interesting to consider higher dimensions,
where the situation seems to be different.
I do not know a result that deals with the question whether the
reduction modulo n maps SL(d,Z) onto SL(d,Z/nZ).
In particular, it would be interesting to have ``nice'' generating
systems for SL(d,Z/nZ), preferably consisting of only two matrices
(if this is possible).
Does anybody know references concerning this question?
The only publications I am currently aware of are the following
1. Kenjiro Shoda,
"Uber die Automorphismen einer endlichen Abelschen Gruppe,
Math. Ann. 100 (1928), 674--686.
(There GL(d,Z/nZ) is considered as the full automorphism group
of a d-fold direct product of cyclic groups of order n.
One could do this in GAP, as well; for example:gap> n:= 72;; gap> cn:= CyclicGroup( n ); <pc group of size 72 with 5 generators> gap> dp:= DirectProduct( cn, cn ); <pc group of size 5184 with 10 generators> gap> aut:= AutomorphismGroup( dp ); <group with 9 generators> gap> Size( aut ); 5971968 gap> GeneratorsOfGroup( aut ); [ f4, f9, f1*f4, f6*f9 ] -> [ f4, f9, f6*f9, f1*f4 ]
Note that the group GL(d,Z/nZ) is a direct product of the groups
GL(d,Z/qZ) where q runs over the set of maximal prime powers dividing n;
this could be used to accelerate the above computation.)
2. P. de la Harpe,
Topics in Geometric Group Theory
(It gives generating systems for GL(d,Z) and SL(d,Z),
consisting of at most four matrices.)
Currently we are discussing how to make the matrix groups SL(d,Z/nZ)
and GL(d,Z/nZ) available in GAP.
It might be that this is already part of version 4.3 which is expected
to be released soon.
It is impressive how many messages have been posted ``internally''
since this ``harmless'' question has been asked:
- Stefan Kohl has implemented GAP functions for constructing the groups
SL(d,Z/nZ) and GL(d,Z/nZ).
- Derek Holt contributed the de la Harpe reference.
- Alexander Hulpke mentioned a GAP implementation for the computation
of the full automorphism groups of abelian groups,
in particular the generating systems used.
(And the Shoda paper is cited in his PhD thesis.)
- J"urgen M"uller pointed out the surjectivity of the reduction,
as stated in the Koecher/Krieg book.
Thanks to all who have contributed to this discussion!
All the best,