[proofplan]
We show every nonzero ideal $\mathfrak{a} \trianglelefteq R$ is finitely generated. The strategy is to build a finitely generated sub-ideal $\mathfrak{b} \subseteq \mathfrak{a}$ that agrees with $\mathfrak{a}$ at every localisation $R_\mathfrak{m}$, and then invoke the local-to-global principle: an inclusion $\mathfrak{b} \hookrightarrow \mathfrak{a}$ that becomes surjective at every maximal localisation is itself surjective, so $\mathfrak{a} = \mathfrak{b}$. To construct $\mathfrak{b}$, we fix a nonzero element $x \in \mathfrak{a}$ and partition $\operatorname{mSpec}(R)$ into three classes depending on whether $x$ and $\mathfrak{a}$ are contained in $\mathfrak{m}$. Condition (2) ensures only finitely many maximal ideals require separate treatment.
[/proofplan]
[step:Establish the local-to-global principle for the inclusion $\mathfrak{b} \hookrightarrow \mathfrak{a}$]
We recall the following fact: if $\varphi: N \to M$ is a homomorphism of $R$-modules such that $\varphi_\mathfrak{m}: N_\mathfrak{m} \to M_\mathfrak{m}$ is surjective for every maximal ideal $\mathfrak{m}$ of $R$, then $\varphi$ is surjective. (This is the [local criterion for surjectivity](/theorems/???): the cokernel $M/\varphi(N)$ localises to zero at every maximal ideal, hence is zero.)
We will find a finitely generated ideal $\mathfrak{b} \subseteq \mathfrak{a}$ such that $\mathfrak{b} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ for every maximal ideal $\mathfrak{m}$ of $R$. The inclusion map $\iota: \mathfrak{b} \hookrightarrow \mathfrak{a}$ then localises to a surjection at every $\mathfrak{m}$, so by the local criterion $\iota$ is surjective, giving $\mathfrak{a} = \mathfrak{b}$.
[guided]
Why does it suffice to match localisations? The key principle is that module-theoretic properties in commutative algebra can be checked locally at maximal ideals. Concretely, if $\mathfrak{b} \subseteq \mathfrak{a}$ are ideals and $\mathfrak{b} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ for every maximal ideal $\mathfrak{m}$, then the quotient module $\mathfrak{a}/\mathfrak{b}$ satisfies $(\mathfrak{a}/\mathfrak{b})_\mathfrak{m} \cong \mathfrak{a} R_\mathfrak{m} / \mathfrak{b} R_\mathfrak{m} = 0$ for all $\mathfrak{m}$. An $R$-module whose localisation at every maximal ideal is zero must itself be zero (if $m \neq 0$, the annihilator $\operatorname{Ann}_R(m)$ is a proper ideal, hence contained in some maximal ideal $\mathfrak{m}$, and then $m/1 \neq 0$ in the localisation). So $\mathfrak{a}/\mathfrak{b} = 0$, i.e., $\mathfrak{a} = \mathfrak{b}$.
This local-to-global reduction transforms our problem: instead of directly showing $\mathfrak{a}$ is finitely generated, we need only build a single finitely generated ideal that agrees with $\mathfrak{a}$ at every maximal localisation.
[/guided]
[/step]
[step:Partition $\operatorname{mSpec}(R)$ into three classes using a nonzero element $x \in \mathfrak{a}$]
Since $\mathfrak{a} \neq 0$, choose a nonzero element $x \in \mathfrak{a}$. Partition the set $\operatorname{mSpec}(R)$ of all maximal ideals of $R$ into three subsets:
\begin{align*}
M_1 &:= \{ \mathfrak{m} \in \operatorname{mSpec}(R) : x \notin \mathfrak{m} \}, \\
M_2 &:= \{ \mathfrak{m} \in \operatorname{mSpec}(R) : x \in \mathfrak{m} \text{ and } \mathfrak{a} \not\subseteq \mathfrak{m} \}, \\
M_3 &:= \{ \mathfrak{m} \in \operatorname{mSpec}(R) : \mathfrak{a} \subseteq \mathfrak{m} \}.
\end{align*}
These three sets are pairwise disjoint and their union is $\operatorname{mSpec}(R)$. By condition (2), the set $M_2 \cup M_3 \subseteq \{ \mathfrak{m} \in \operatorname{mSpec}(R) : x \in \mathfrak{m} \}$ is finite.
[guided]
The partition is designed so that at each type of maximal ideal, we can identify a small set of generators that make $\mathfrak{a} R_\mathfrak{m}$ finitely generated.
For $M_1$: the element $x$ does not belong to $\mathfrak{m}$, so $x$ becomes a unit in $R_\mathfrak{m}$. This means $(x) R_\mathfrak{m} = R_\mathfrak{m}$, and since $\mathfrak{a} R_\mathfrak{m} \subseteq R_\mathfrak{m}$, we automatically get $\mathfrak{a} R_\mathfrak{m} = R_\mathfrak{m} = (x) R_\mathfrak{m}$. The single element $x$ handles all of $M_1$.
For $M_2$: the ideal $\mathfrak{a}$ is not contained in $\mathfrak{m}$, so there is some element of $\mathfrak{a}$ that is a unit in $R_\mathfrak{m}$. A single element suffices.
For $M_3$: the ideal $\mathfrak{a}$ is contained in $\mathfrak{m}$, so we cannot use the unit trick. Instead, we invoke the hypothesis that $R_\mathfrak{m}$ is noetherian, which ensures $\mathfrak{a} R_\mathfrak{m}$ is finitely generated.
The critical observation is that $M_2 \cup M_3$ is finite (by condition (2) applied to $x$), so we only need finitely many additional generators beyond $x$.
[/guided]
[/step]
[step:Handle $M_1$ and $M_2$ with single generators at each localisation]
**For $\mathfrak{m} \in M_1$:** Since $x \notin \mathfrak{m}$, the element $x$ is a unit in $R_\mathfrak{m}$. Therefore $(x) R_\mathfrak{m} = R_\mathfrak{m} \supseteq \mathfrak{a} R_\mathfrak{m}$, so $\mathfrak{a} R_\mathfrak{m} = R_\mathfrak{m} = (x) R_\mathfrak{m}$.
**For each $\mathfrak{m} \in M_2$:** Since $\mathfrak{a} \not\subseteq \mathfrak{m}$, there exists an element $x_\mathfrak{m} \in \mathfrak{a} \setminus \mathfrak{m}$. Then $x_\mathfrak{m}$ is a unit in $R_\mathfrak{m}$, so $(x_\mathfrak{m}) R_\mathfrak{m} = R_\mathfrak{m} \supseteq \mathfrak{a} R_\mathfrak{m}$, giving $\mathfrak{a} R_\mathfrak{m} = R_\mathfrak{m} = (x_\mathfrak{m}) R_\mathfrak{m}$.
[/step]
[step:Handle $M_3$ using the noetherian hypothesis on each $R_\mathfrak{m}$]
For each $\mathfrak{m} \in M_3$, the ring $R_\mathfrak{m}$ is noetherian by condition (1), so the ideal $\mathfrak{a} R_\mathfrak{m}$ is finitely generated. Write
\begin{align*}
\mathfrak{a} R_\mathfrak{m} = \left( \frac{a_{\mathfrak{m},1}}{s_{\mathfrak{m},1}}, \dots, \frac{a_{\mathfrak{m},\ell_\mathfrak{m}}}{s_{\mathfrak{m},\ell_\mathfrak{m}}} \right)
\end{align*}
with $a_{\mathfrak{m},j} \in \mathfrak{a}$ and $s_{\mathfrak{m},j} \in R \setminus \mathfrak{m}$ for each $1 \leq j \leq \ell_\mathfrak{m}$. Since $s_{\mathfrak{m},j} \notin \mathfrak{m}$, each $s_{\mathfrak{m},j}$ is a unit in $R_\mathfrak{m}$, so
\begin{align*}
\mathfrak{a} R_\mathfrak{m} = \left( \frac{a_{\mathfrak{m},1}}{1}, \dots, \frac{a_{\mathfrak{m},\ell_\mathfrak{m}}}{1} \right) R_\mathfrak{m}.
\end{align*}
Define the finitely generated ideal $\mathfrak{a}_\mathfrak{m} := (a_{\mathfrak{m},1}, \dots, a_{\mathfrak{m},\ell_\mathfrak{m}}) \trianglelefteq R$, so that $\mathfrak{a}_\mathfrak{m} \subseteq \mathfrak{a}$ and $\mathfrak{a}_\mathfrak{m} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$.
[guided]
We need generators of $\mathfrak{a} R_\mathfrak{m}$ that come from $\mathfrak{a}$ itself (not just from $R_\mathfrak{m}$). Any generator $a/s$ of $\mathfrak{a} R_\mathfrak{m}$ with $a \in \mathfrak{a}$ and $s \in R \setminus \mathfrak{m}$ can be replaced by $a/1$, because $s$ is a unit in $R_\mathfrak{m}$ and so $a/s = (1/s) \cdot (a/1)$ lies in the ideal generated by $a/1$. Conversely, $a/1 = s \cdot (a/s)$ lies in the ideal generated by $a/s$. So the ideal generated by $\{a_{\mathfrak{m},j}/1\}$ equals the ideal generated by $\{a_{\mathfrak{m},j}/s_{\mathfrak{m},j}\}$.
This step is important because it produces elements $a_{\mathfrak{m},j} \in \mathfrak{a} \subseteq R$ (not just elements of $R_\mathfrak{m}$) that generate $\mathfrak{a} R_\mathfrak{m}$ after localisation.
[/guided]
[/step]
[step:Assemble $\mathfrak{b}$ and verify $\mathfrak{b} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ for all $\mathfrak{m}$]
Since $M_2 \cup M_3$ is finite, define the ideal
\begin{align*}
\mathfrak{b} := (x) + \sum_{\mathfrak{m} \in M_2} (x_\mathfrak{m}) + \sum_{\mathfrak{m} \in M_3} \mathfrak{a}_\mathfrak{m}.
\end{align*}
This is a finite sum of finitely generated ideals, so $\mathfrak{b}$ is finitely generated. Moreover $\mathfrak{b} \subseteq \mathfrak{a}$ since $x \in \mathfrak{a}$, each $x_\mathfrak{m} \in \mathfrak{a}$, and each $\mathfrak{a}_\mathfrak{m} \subseteq \mathfrak{a}$.
We verify $\mathfrak{b} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ for every $\mathfrak{m} \in \operatorname{mSpec}(R)$. The inclusion $\mathfrak{b} R_\mathfrak{m} \subseteq \mathfrak{a} R_\mathfrak{m}$ is automatic since $\mathfrak{b} \subseteq \mathfrak{a}$. For the reverse:
- If $\mathfrak{m} \in M_1$: then $x \notin \mathfrak{m}$, so $x$ is a unit in $R_\mathfrak{m}$, and $(x) R_\mathfrak{m} = R_\mathfrak{m}$. Since $(x) \subseteq \mathfrak{b}$, we have $\mathfrak{b} R_\mathfrak{m} = R_\mathfrak{m} \supseteq \mathfrak{a} R_\mathfrak{m}$.
- If $\mathfrak{m} \in M_2$: then $x_\mathfrak{m} \notin \mathfrak{m}$, so $x_\mathfrak{m}$ is a unit in $R_\mathfrak{m}$, and $(x_\mathfrak{m}) R_\mathfrak{m} = R_\mathfrak{m}$. Since $(x_\mathfrak{m}) \subseteq \mathfrak{b}$, we have $\mathfrak{b} R_\mathfrak{m} = R_\mathfrak{m} \supseteq \mathfrak{a} R_\mathfrak{m}$.
- If $\mathfrak{m} \in M_3$: then $\mathfrak{a}_\mathfrak{m} \subseteq \mathfrak{b}$, so $\mathfrak{a}_\mathfrak{m} R_\mathfrak{m} \subseteq \mathfrak{b} R_\mathfrak{m}$. Since $\mathfrak{a}_\mathfrak{m} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ by construction, we get $\mathfrak{a} R_\mathfrak{m} \subseteq \mathfrak{b} R_\mathfrak{m}$.
Hence $\mathfrak{b} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ for all maximal ideals $\mathfrak{m}$.
[guided]
The construction of $\mathfrak{b}$ combines contributions from each type of maximal ideal. For $M_1$, the single element $x$ handles every maximal ideal simultaneously — since $x \notin \mathfrak{m}$ for all $\mathfrak{m} \in M_1$, the element $x$ is a unit in every such localisation. For each $\mathfrak{m} \in M_2$, we add a single element $x_\mathfrak{m}$ that is a unit in $R_\mathfrak{m}$. For each $\mathfrak{m} \in M_3$, we add the finitely many generators of $\mathfrak{a}_\mathfrak{m}$ needed to generate $\mathfrak{a} R_\mathfrak{m}$.
Could a generator added for one maximal ideal interfere with the localisation at a different maximal ideal? No — adding more generators to $\mathfrak{b}$ can only enlarge $\mathfrak{b} R_\mathfrak{m}$, and since $\mathfrak{b} \subseteq \mathfrak{a}$, the inclusion $\mathfrak{b} R_\mathfrak{m} \subseteq \mathfrak{a} R_\mathfrak{m}$ always holds. So each generator only helps.
[/guided]
[/step]
[step:Conclude $\mathfrak{a} = \mathfrak{b}$ by the local-to-global principle]
By the first step, the inclusion $\mathfrak{b} \subseteq \mathfrak{a}$ that localises to an equality $\mathfrak{b} R_\mathfrak{m} = \mathfrak{a} R_\mathfrak{m}$ at every maximal ideal $\mathfrak{m}$ is itself an equality. Therefore $\mathfrak{a} = \mathfrak{b}$, so $\mathfrak{a}$ is finitely generated. Since $\mathfrak{a}$ was an arbitrary ideal of $R$, every ideal of $R$ is finitely generated, and $R$ is noetherian.
[/step]