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

A: 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;

