What are the finite subgroups of $GL_2(\mathbb{Z})$?

I would quite like to know what the matrices which generate the subgroups are.

I know that this group has an index two subgroup which is isomorphic to $\langle x, y; x^6, y^4, x^3=y^2\rangle$ but

  • a) I cannot remember facts about free products with amalgamation for more than $5$ minutes
  • b) I do not know which matrix the $x$-generator corresponds to (or, I suppose, the $y$-generator, but I can easily find elements of order $4$...$6$ is more elusive).

Note: I have edited this answer as I got mixed up with $SL$ and $GL$ for some reason...


2 Answers 2


From Trees by Serre (chapter 3, section 4.3, corollary of theorem 8):

Theorem: Let $G$ be an amalgam $G_1 \underset{A}{\ast} G_2$ of two groups. Every finite subgroup of $G$ is contained in a conjugate of $G_1$ or $G_2$.

  • 1
    $\begingroup$ If I am not mistaken, it is $\mathbb{SL}_2(\mathbb{Z})$ which is an amalgam: it is isomorphic to $C_4 *_{C_2} C_6$. So a little more work seems to be needed here. $\endgroup$ Commented Feb 5, 2013 at 16:01
  • $\begingroup$ Phoo! I've written down the presentation for $SL_2(\mathbb{Z})$ not $GL_2(\mathbb{Z})$. There is definately a copy of $C_2\times C_2$ in $GL_2(\mathbb{Z})$ (take the four matrices with diagonal entries of absolute value $1$ and $0$s everywhere else.) $\endgroup$
    – user1729
    Commented Feb 5, 2013 at 16:05
  • 1
    $\begingroup$ @user1729: No worries. I just noticed that the presentation the OP has written down is also for $\operatorname{SL}_2(\mathbb{Z})$. So maybe it's safest to give both answers. Anyway, to get from $GL_2$ back to $SL_2$ just multiply everything by the diagonal matrix with entries $(1,-1)$: no biggie. $\endgroup$ Commented Feb 5, 2013 at 16:07
  • $\begingroup$ @PeteL.Clark: Sure, okay, but what are the matrices of order $4$ and $6$? I mean, I could guess a candidate for the one of order $4$, but I cannot find any of order $6$. $\endgroup$
    – user1729
    Commented Feb 5, 2013 at 16:09
  • 4
    $\begingroup$ A matrix of order 3 is $A=\left(\begin{array}{rr}0&1\\-1&-1\end{array}\right)$ so $-A$ has order 6. You can take $B=\left(\begin{array}{rr}0&1\\-1&0\end{array}\right)$ as your matrix of order 4. Then $A$ and $B$ generate ${\rm SL}_2(\mathbb{Z})$. $\endgroup$
    – Derek Holt
    Commented Feb 5, 2013 at 17:21

Up to $\mathbb{Z}$-conjugacy (i.e. conjugacy by matrices in $\mathrm{GL}_{2}(\mathbb{Z})$), there are exactly $13$ distinct conjugacy classes of finite subgroups of $\mathrm{GL}_{2}(\mathbb{Z})$ (see, e.g., OEIS Sequence A004027). Representatives for each class appear in a paper by Voskresenskii [Vos1965]. Magma code that defines these subgroups and verifies $\mathbb{Z}$-nonconjugacy appears below. The code takes a fraction of a second to run on Magma's online calculator.


[Vos1965] V.E. Voskresenskii, "On two-dimensional algebraic tori", Izv. Akad. Nauk SSSR Ser. Mat., 1965, Volume 29, Issue 1, 239--244.

Magma code

//  Magma code. Defines the finite subgroups of GL(2,Z) listed in Voskresenskii
//  (1965), "On two-dimensional algebraic tori", Izv. Akad. Nauk SSSR Ser. Mat.,
//  Volume 29, Issue 1, 239--244. Prunes equal subgroups from the list, then
//  checks the remaining subgroups for Z-conjugacy.

Z := IntegerRing();

//  Define matrices used to construct subgroups.

A6 := Matrix([[1,-1],[1,0]]);
A4 := Matrix([[0,1],[-1,0]]);
A3 := Matrix([[0,-1],[1,-1]]); //  Equals A6^2.
A2 := Matrix([[-1,0],[0,-1]]); //  Equals A6^3. Equals A4^2.
B2 := Matrix([[1,0],[0,-1]]);
C2 := Matrix([[0,1],[1,0]]);
D2 := Matrix([[-1,0],[0,1]]);
E2 := Matrix([[0,-1],[-1,0]]);
A1 := Matrix([[1,0],[0,1]]);

//  Define subgroups. Numbers and letters of subgroups correspond to list in
//  Voskresenskii (1965).

S1 := sub<GL(2,Z) | {A1}>;
S2a := sub<GL(2,Z) | {A2}>;
S2b := sub<GL(2,Z) | {B2}>;
S2c := sub<GL(2,Z) | {C2}>;
S3a := sub<GL(2,Z) | {A2,C2}>;
S3b := sub<GL(2,Z) | {B2,D2}>;
S4 := sub<GL(2,Z) | {A3}>;
S5 := sub<GL(2,Z) | {A4}>;
S6 := sub<GL(2,Z) | {A6}>;
S7a := sub<GL(2,Z) | {A3,C2}>;
S7b := sub<GL(2,Z) | {A3,E2}>;
S8a := sub<GL(2,Z) | {A4,C2}>;
S8b := sub<GL(2,Z) | {A4,B2}>; //  Equals subgroup S8a.
S9a := sub<GL(2,Z) | {A6,C2}>;
S9b := sub<GL(2,Z) | {A6,E2}>; //  Equals subgroup S9a.

//  Check equality of subgroups.

print "Check equality of subgroups.";
printf "S8a eq S8b : %o\n",S8a eq S8b;
printf "S9a eq S9b : %o\n",S9a eq S9b;
print "";

//  Define list of 13 (distinct) finite subgroups of GL(2,Z).

subgroupList := [S1,S2a,S2b,S2c,S3a,S3b,S4,S5,S6,S7a,S7b,S8a,S9a];
nSubs := #(subgroupList);

//  Check these 13 subgroups are pairwise Z-nonconjugate (naive implementation).

nConjugatePairs := 0;
for i in [1..nSubs] do
    for j in [(i + 1)..nSubs] do
        if (IsGLZConjugate(subgroupList[i],subgroupList[j])) then
            nConjugatePairs +:= 1;
        end if;
    end for;
end for;
printf "%o subgroups analyzed for Z-conjugacy. %o conjugate pairs found.\n",nSubs,nConjugatePairs;


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .