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

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...

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$.

• 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. Commented Feb 5, 2013 at 16:01
• 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.) Commented Feb 5, 2013 at 16:05
• @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. Commented Feb 5, 2013 at 16:07
• @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$. Commented Feb 5, 2013 at 16:09
• 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})$. 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.

### References

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

### Magma code

//////////////////////////////////////////////////////////////////////////////80
//
//  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;

exit;