Lemma 15.121.9. Let $R$ be a PID. Every finite $R$-module $M$ is of isomorphic to a module of the form

$R^{\oplus r} \oplus \bigoplus \nolimits _{i = 1, \ldots , n} R/f_ iR$

for some $r, n \geq 0$ and $f_1, \ldots , f_ n \in R$ nonzero.

Proof. A PID is a Noetherian Bézout ring. By Lemma 15.121.8 it suffices to prove the result if $M$ is torsion. Since $M$ is finite, this means that the annihilator of $M$ is nonzero. Say $fM = 0$ for some $f \in R$ nonzero. Then we can think of $M$ as a module over $R/fR$. Since $R/fR$ is Noetherian of dimension $0$ (small detail omitted) we see that $R/fR = \prod R_ j$ is a finite product of Artinian local rings $R_ i$ (Algebra, Proposition 10.60.7). Each $R_ i$, being a local ring and a quotient of a PID, is a generalized valuation ring in the sense of Lemma 15.121.2 (small detail omitted). Write $M = \prod M_ j$ with $M_ j = e_ j M$ where $e_ j \in R/fR$ is the idempotent corresponding to the factor $R_ j$. By Lemma 15.121.3 we see that $M_ j = \bigoplus _{i = 1, \ldots , n_ j} R_ j/\overline{f}_{ji}R_ j$ for some $\overline{f}_{ji} \in R_ j$. Choose lifts $f_{ji} \in R$ and choose $g_{ji} \in R$ with $(g_{ji}) = (f_ j, f_{ji})$. Then we conclude that

$M \cong \bigoplus R/g_{ji}R$

as an $R$-module which finishes the proof. $\square$

## Comments (2)

Comment #6339 by comment_bot on

Although this is pretty trivial, it may be worthwhile saying in the statement that, in particular, every finitely generated projective module over a PID is free.

Comment #6440 by on

Of course you are right and maybe we should add this. Inside the Stacks project, I think I would use this lemma directly for that result if it was ever needed. Anyway, I am happy for somebody else to edit the latex according to what you said and submit it to stacks.project@gmail.com.

## Post a comment

Your email address will not be published. Required fields are marked.

In your comment you can use Markdown and LaTeX style mathematics (enclose it like $\pi$). A preview option is available if you wish to see how it works out (just click on the eye in the toolbar).

Unfortunately JavaScript is disabled in your browser, so the comment preview function will not work.

All contributions are licensed under the GNU Free Documentation License.

In order to prevent bots from posting comments, we would like you to prove that you are human. You can do this by filling in the name of the current tag in the following input field. As a reminder, this is tag 0ASV. Beware of the difference between the letter 'O' and the digit '0'.