Finitely Generated Abelian Groups

In this section, we prove the structure theorem for finitely generated abelian groups, since it will be crucial for much of what we will do later.

Let denote the ring of (rational) 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. Finally, we observe by a simple argument that the representation in the theorem is necessarily unique.

Suppose is a nonzero finitely generated abelian group. By the
corollary, there are free abelian groups and and a
homomorphism
such that
.
Choosing a basis for and , we obtain isomorphisms
and
for integers and . We
can thus view
as being given by left multiplication
by the matrix whose columns are the images of the
generators of in
. The *cokernel* of this
homomorphism is the quotient of
by the image of (the
-span of the columns of ), and this cokernel is isomorphic to
.

By augmenting with zero columns or adding (standard basis) rows to , we may assume that . For example, we would replace

by

and would replace

by

The following proposition implies that we may choose a bases for and such that the matrix of is diagonal, so that the structure of the cokernel of will be easy to understand.

- [
**Add multiple]**Add an integer multiple of one row to another (or a multiple of one column to another). - [
**Swap]**Interchange two rows or two columns. - [
**Rescale]**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 .

We compute each of the above Smith forms using *SAGE*,
along with the corresponding transformation matrices.
*Warning: Currently in Sage the entries down the diagonal
are reversed from the discussion above.*
First the matrix.

sage: A = matrix(ZZ, 2, [-1,2, -3,4]) sage: S, U, V = A.smith_form(); S [2 0] [0 1] sage: U*A*V [2 0] [0 1] sage: U [ 1 -1] [ 0 1] sage: V [4 1] [3 1]The

sage: A = matrix(ZZ, 3, [1,4,9, 16,25,36, 49,64,81]) sage: S, U, V = A.smith_form(); S [72 0 0] [ 0 3 0] [ 0 0 1] sage: U*A*V [72 0 0] [ 0 3 0] [ 0 0 1] sage: U [ 1 -20 -17] [ 0 1 -1] [ 0 0 1] sage: V [ 93 74 47] [-156 -125 -79] [ 67 54 34]

Finally we compute the Smith form of a matrix of rank :

sage: m = matrix(ZZ, 3, [2..10]); m [ 2 3 4] [ 5 6 7] [ 8 9 10] sage: m.smith_form()[0] [0 0 0] [0 3 0] [0 0 1]

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

William Stein 2012-09-24