Let denote the ring of integers, and for each positive integer let denote the ring of integers modulo , which is a cyclic abelian group of order under addition.

We will prove the theorem as follows. We first remark that any subgroup of a finitely generated free abelian group is finitely generated. Then we see that finitely generated abelian groups can be presented as quotients of finite rank free abelian groups, and such a presentation can be reinterpreted in terms of matrices over the integers. Next we describe how to use row and column operations over the integers to show that every matrix over the integers is equivalent to one in a canonical diagonal form, called the Smith normal form. We obtain a proof of the theorem by reinterpreting in terms of groups.

Suppose is a nonzero finitely generated abelian group. By the
corollary, there are free abelian groups and such that
. Choosing a basis for , we obtain an
isomorphism
, for some positive integer . By
Proposition 3.0.4,
, for some integer
with
, and the inclusion map
induces a map
. This homomorphism is left
multiplication by the matrix whose columns are the
images of the generators of in
. The * of
this homomorphism is the quotient of
by the image of , and the
cokernel is isomorphic to . By augmenting with zero columns on
the right we obtain a square matrix with the same
cokernel. The following proposition implies that we may choose bases
such that the matrix is diagonal, and then the structure of
the cokernel of will be easy to understand.
*

- Add an integer multiple of one row to another (or a multiple of one column to another).
- Interchange two rows or two columns.
- Multiply a row by .

To see that the proposition must be true, assume and perform the following steps (compare [Art91, pg. 459]):

- By permuting rows and columns, move a nonzero entry of with
smallest absolute value to the upper left corner of . Now attempt
to make all other entries in the first row and column 0 by adding
multiples of row or column 1 to other rows (see step 2 below). If an
operation produces a nonzero entry in the matrix with absolute value
smaller than , start the process over by permuting rows and
columns to move that entry to the upper left corner of . Since the
integers are a decreasing sequence of positive integers, we
will not have to move an entry to the upper left corner infinitely
often.
- Suppose is a nonzero entry in the first column, with
. Using the division algorithm, write
,
with
. Now add times the first row to the
th row. If , then go to step 1 (so that an entry with
absolute value at most is the upper left corner). Since we will
only perform step 1 finitely many times, we may assume .
Repeating this procedure we set all entries in the first column
(except ) to 0. A similar process using column operations
sets each entry in the first row (except ) to 0.
- We may now assume that is the only nonzero entry in the first row and column. If some entry of is not divisible by , add the column of containing to the first column, thus producing an entry in the first column that is nonzero. When we perform step 2, the remainder will be greater than 0. Permuting rows and columns results in a smaller . Since can only shrink finitely many times, eventually we will get to a point where every is divisible by . If is negative, multiple the first row by .

as claimed. The are determined by , because is the smallest positive integer such that requires at most generators (we see from the representation (3.0.1) of as a product that has this property and that no smaller positive integer does).

William Stein 2004-05-06