가환대수학
Noether Normalization
Noether normalization theorem and applications for finitely generated algebras
Noether Normalization
The goal of this post is to prove the following theorem and explore its consequences.
Theorem 1 (Noether normalization lemma) For a finitely generated \(d\)-dimensional \(\mathbb{K}\)-algebra \(A\), suppose that non-negative integers satisfying the following inequality
\[d_1>d_2>\cdots>d_m\geq 0\]and, satisfying \(\dim \mathfrak{a}_i=d_i\), a descending chain of ideals of \(A\)
\[\mathfrak{a}_1\subseteq \mathfrak{a}_2\subseteq\cdots\subseteq \mathfrak{a}_m\]are given. Then there exists in \(A\) a suitable subring \(B\cong \mathbb{K}[\x_1,\ldots, \x_d]\) such that \(A\) is finitely generated as a \(B\)-module and the following equation
\[\mathfrak{a}_i\cap B=(\x_{d_i+1},\ldots, \x_d)\qquad\text{for $i=1,\ldots, m$}\]holds.
This can be proved using the following lemma, the proof of which we omit.
Lemma 2 Let a field \(\mathbb{K}\) and a non-constant polynomial \(f\in B=\mathbb{K}[\x_1,\ldots, \x_r]\) be given. Then there exist elements \(\x_1',\ldots, \x_{r-1}'\in B\) such that, if we let the subalgebra generated by the elements \(\x_1',\ldots, \x_{r-1}', f\) within \(B\) as a \(\mathbb{K}\)-subalgebra be \(B'\), then \(B\) is a finitely generated \(B'\)-module. Moreover, these elements can be chosen as follows:
- For a sufficiently large integer \(e\), we can choose \(\x_i'=\x_i-\x_r^{e^i}\).
- If \(\mathbb{K}\) is an infinite field, then for suitable \(a_i\in \mathbb{K}\) we can choose \(\x_i'=\x_i-a_i\x_r\).
Then the proof of Theorem 1 (Noether normalization lemma) is as follows.
Proof of Theorem 1
First, since \(A\) is a finitely generated \(\mathbb{K}\)-algebra, we can write \(A=\mathbb{K}[\y_1,\ldots, \y_r]/\mathfrak{a}\). Given a chain of ideals satisfying the given conditions, we consider the chain of their preimages in \(\mathbb{K}[\y_1,\ldots, \y_r]\)
\[\tilde{\mathfrak{a}}_1\subseteq \tilde{\mathfrak{a}}_2\subseteq\cdots\subseteq \tilde{\mathfrak{a}}_m\]and insert \(\mathfrak{a}_0=\mathfrak{a}\) to view it as a descending chain of ideals in \(\mathbb{K}[\y_1,\ldots, \y_r]\)
\[\mathfrak{a}\subseteq \tilde{\mathfrak{a}}_1\subseteq \tilde{\mathfrak{a}}_2\subseteq\cdots\subseteq \tilde{\mathfrak{a}}_m\]so that it suffices to prove the assertion only for the polynomial ring \(A=\mathbb{K}[\y_1,\ldots, \y_r]\). In this setting, the dimension of the newly inserted \(\mathfrak{a}_0\) is \(d_0=\dim \mathfrak{a}_0=\dim A\), and what takes the place of \(d\) in the theorem in this reduced setting is the dimension of the new ambient ring, namely \(\dim \mathbb{K}[\y_1,\ldots, \y_r]=r\) given by the first result of §System of Parameters, ⁋Corollary 11. Therefore, below we set \(d=r\) and write the original \(\dim A\) as \(d_0\). If the claim holds for polynomial rings, the general result is obtained as follows. Suppose that in \(\mathbb{K}[\y_1,\ldots, \y_r]\) there exists a subring \(B\cong \mathbb{K}[\x_1,\ldots, \x_r]\) such that \(\mathbb{K}[\y_1,\ldots, \y_r]\) is a finitely generated \(B\)-module and \(\mathfrak{a}_0\cap B=(\x_{d_0+1},\ldots, \x_r)\), \(\tilde{\mathfrak{a}}_i\cap B=(\x_{d_i+1},\ldots, \x_r)\) hold. Let \(\pi:\mathbb{K}[\y_1,\ldots, \y_r] \rightarrow A\) be the quotient map and let \(\bar{B}=\pi(B)\). Since the kernel of the restriction of \(\pi\) to \(B\) is \(\mathfrak{a}_0\cap B\), we have \(\bar{B}\cong B/(\mathfrak{a}_0\cap B)\cong \mathbb{K}[\x_1,\ldots, \x_{d_0}]\), and since \(\mathbb{K}[\y_1,\ldots, \y_r]\) is finite over \(B\), its quotient \(A\) is finite over \(\bar{B}\). Moreover, for \(b\in B\), \(\pi(b)\in \mathfrak{a}_i\) is equivalent to \(b\in \tilde{\mathfrak{a}}_i\), so \(\mathfrak{a}_i\cap \bar{B}=\pi(\tilde{\mathfrak{a}}_i\cap B)\), and since \(\x_{d_0+1},\ldots, \x_r\) all belong to the kernel of \(\pi\), this is equal to \((\pi(\x_{d_i+1}),\ldots, \pi(\x_{d_0}))\). That is, \(\bar{B}\) is the subring required by the theorem for the original \(A\).
Now, to construct the elements \(\x_i\) of the theorem, we first set \(\x_i'=\y_i\) and successively modify them to find \(\x_i\) satisfying the given conditions. To this end, consider the following two conditions:
- \(A\) is a finitely generated \(B_e=\mathbb{K}[\x_1',\ldots, \x_e',\x_{e+1},\ldots, \x_d]\)-module.
- For each \(i\), the inclusion \(\mathfrak{a}_i\cap B_e\supseteq(\x_k,\ldots, \x_d)\) holds, where \(k=\max(d_i+1, e+1)\).
Suppose we are given elements \(\x_1',\ldots, \x_e', \x_{e+1},\ldots, \x_d\) satisfying these conditions; we show that from these we can find new elements \(\x_1',\ldots, \x_{e-1}'\) and \(\x_e\) such that the above conditions continue to hold. Repeating this process, to show that the final subring \(B=B_{d_m}\) obtained satisfies the desired conditions, it suffices to show that the inclusion in the second condition is actually an equality, which is verified as follows. First, since \(A\) is a finitely generated \(B\)-module, \(B\hookrightarrow A\) is an integral extension by §Integral Extensions, ⁋Lemma 4, and therefore \(\dim(\mathfrak{a}_i\cap B)=\dim \mathfrak{a}_i=d_i\) by §Krull Dimension, ⁋Proposition 4. On the other hand, the second condition for \(B=B_{d_m}\) is \(\mathfrak{a}_i\cap B\supseteq(\x_{d_i+1},\ldots, \x_d)\), so if we let the image in \(R=B/(\x_{d_i+1},\ldots, \x_d)\cong \mathbb{K}[\x_1,\ldots, \x_{d_i}]\) of \(\mathfrak{a}_i\cap B\) be \(J\), then \(B/(\mathfrak{a}_i\cap B)\cong R/J\), and in particular \(\dim R/J=d_i\). However, since \(\dim \mathfrak{a}_i=d_i\), \(\mathfrak{a}_i\) is a proper ideal, and hence \(J\) is also a proper ideal of \(R\). If \(J\neq 0\), any element belonging to \(J\) that is not \(0\), say \(g\), is not a unit, that is, a non-constant polynomial. Now, any prime ideal containing \(J\), say \(\mathfrak{p}\), contains \(g\), so among the minimal prime ideals containing \((g)\), there is one contained in \(\mathfrak{p}\), say \(\mathfrak{q}\); by §Krull Dimension, ⁋Theorem 6 (Codimension one Principal Ideal Theorem), \(\codim \mathfrak{q}\leq 1\), but since \(R\) is a domain and \(g\neq 0\), we have \(\mathfrak{q}\neq(0)\), so \(\codim \mathfrak{q}=1\). Then from the inequality \(\dim \mathfrak{q}+\codim \mathfrak{q}\leq \dim R=d_i\) (§Krull Dimension, ⁋Definition 2, §System of Parameters, ⁋Corollary 11), we obtain \(\dim R/\mathfrak{p}\leq \dim \mathfrak{q}\leq d_i-1\), and taking the supremum over all such \(\mathfrak{p}\) yields \(\dim R/J\leq d_i-1\), which is a contradiction. Therefore \(J=0\), which means \(\mathfrak{a}_i\cap B=(\x_{d_i+1},\ldots, \x_d)\).
Now, to complete this induction, given that \(d\geq e>d_m\) for \(e\), suppose that elements \(\x_1',\ldots, \x_e', \x_{e+1},\ldots, \x_d\) satisfying the two conditions above are given, and assume that \(i\) is the smallest index among those satisfying \(e>d_i\). Then
\[\mathfrak{a}_i\cap \mathbb{K}[\x_1',\ldots, \x_e']\neq 0\]holds. Indeed, if we assume this intersection is \(0\), when writing an arbitrary element \(g\in B_e\) as the sum \(g=g_0+h\) of \(g_0\in \mathbb{K}[\x_1',\ldots, \x_e']\) and \(h\in (\x_{e+1},\ldots, \x_d)\), since \(h\in \mathfrak{a}_i\) by the second condition, if \(g\in \mathfrak{a}_i\), then \(g_0\in \mathfrak{a}_i\cap \mathbb{K}[\x_1',\ldots, \x_e']=0\). Therefore,
\[\mathfrak{a}_i\cap B_e= (\x_{e+1},\ldots, \x_d)\]holds, but the ideal on the left-hand side is \(d_i\)-dimensional, while the dimension of the ideal on the right-hand side is \(e\), which is a contradiction. Now choose \(\x_e\) to be any non-zero polynomial belonging to the intersection above. Since \(\mathfrak{a}_i\) is a proper ideal, \(\x_e\) is not a constant. Here, since \(A\) is finite over \(B_e\), we have \(\dim B_e=\dim A=d\) by §Krull Dimension, ⁋Proposition 4, and since \(B_e\) is generated by \(d\) elements as a \(\mathbb{K}\)-algebra, it is a quotient of a polynomial ring in \(d\) variables; by the previous argument that taking the quotient by a proper ideal other than \(0\) strictly decreases the dimension, the kernel of this quotient map must be \(0\). That is, \(\x_1',\ldots, \x_e',\x_{e+1},\ldots, \x_d\) are algebraically independent, and in particular \(\mathbb{K}[\x_1',\ldots, \x_e']\) is a polynomial ring, so setting \(f=\x_e\), we can apply Lemma 2. Then we obtain new elements \(\x_1',\ldots, \x_{e-1}'\) such that \(\mathbb{K}[\x_1',\ldots, \x_e']\) is finite over \(\mathbb{K}[\x_1',\ldots, \x_{e-1}', \x_e]\).
That the subring \(B_{e-1}=\mathbb{K}[\x_1',\ldots, \x_{e-1}',\x_e,\x_{e+1},\ldots, \x_d]\) obtained in this way still satisfies the two conditions above is verified as follows. For the first condition, since \(B_e\) is finite over \(B_{e-1}\) and \(A\) is finite over \(B_e\), the ring \(A\) is also finite over \(B_{e-1}\). For the second condition, what is required for \(B_{e-1}\) is \(\mathfrak{a}_j\cap B_{e-1}\supseteq(\x_k,\ldots, \x_d)\), \(k=\max(d_j+1, e)\), so we divide into the cases \(j\geq i\) and \(j<i\). First, if \(j\geq i\), then \(d_j\leq d_i<e\), so \(k=e\); moreover, \(\x_e\in \mathfrak{a}_i\subseteq \mathfrak{a}_j\), and \(\x_{e+1},\ldots, \x_d\) already belong, by the second condition for \(B_e\), to \(\mathfrak{a}_j\), which gives the desired inclusion. On the other hand, if \(j<i\), then from the fact that \(i\) is the smallest index satisfying \(e>d_i\), we have \(d_j\geq e\), so \(k=d_j+1\); the required generators \(\x_{d_j+1},\ldots, \x_d\) in this case are all among the variables \(\x_{e+1},\ldots, \x_d\) untouched in this step and hence belong to \(B_{e-1}\), and their belonging to \(\mathfrak{a}_j\) is precisely the second condition for \(B_e\).
Consequences
Theorem 1 (Noether normalization lemma) gives the following result.
Theorem 3 Let the ring \(A\) be an integral domain and a finitely generated \(\mathbb{K}\)-algebra. Then \(\dim A=\trdeg_\mathbb{K}\Frac(A)\).
Theorem 3 naturally generalizes to the quotient setting, giving the following dimension formula.
Theorem 4 For a finitely generated \(\mathbb{K}\)-algebra domain \(A\) and its prime ideal \(\mathfrak{p}\), the following holds:
\[\dim A/\mathfrak{p}+\codim\mathfrak{p}=\dim A\]Proof
Since the inequality \(\dim A/\mathfrak{p}+\codim\mathfrak{p}\leq\dim A\) holds for any ring (§Krull Dimension, ⁋Definition 2), it suffices to show the reverse inequality. Set \(n=\dim A\) and \(d=\dim A/\mathfrak{p}=\dim\mathfrak{p}\). Applying Theorem 1 (Noether normalization lemma) to a chain of ideals in \(A\) consisting of the single ideal \(\mathfrak{a}_1=\mathfrak{p}\), there exists in \(A\) a subring \(B\cong\mathbb{K}[\x_1,\ldots, \x_n]\) such that \(A\) is a finitely generated \(B\)-module and \(\mathfrak{p}\cap B=(\x_{d+1},\ldots, \x_n)\) holds. Then \(B\hookrightarrow A\) is an integral extension. Here, if we contract a chain of prime ideals starting at \(\mathfrak{p}\) in \(A\) to \(B\), the inclusions remain strict by §Integral Extensions and Ideals, ⁋Corollary 4, so we obtain \(\codim_A\mathfrak{p}\leq\codim_B(\mathfrak{p}\cap B)\).
The opposite direction we need corresponds to going-down, lifting a chain starting at \(\mathfrak{p}\cap B\) in \(B\) to below \(\mathfrak{p}\); since \(B\) is a polynomial ring, it is a UFD ([Ring Theory] §Polynomial Rings, ⁋Theorem 16) and thus a normal domain (§Integral Extensions, ⁋Proposition 9), and since \(A\) is a domain by assumption, repeatedly applying §Integral Extensions and Ideals, ⁋Theorem 6 (Going down) yields, whenever a chain below \(\mathfrak{p}\cap B\) is given, a chain below \(\mathfrak{p}\) lying over it. The elements of this chain contract to distinct prime ideals, so the chain is again strict, and therefore \(\codim_A\mathfrak{p}=\codim_B(\mathfrak{p}\cap B)\).
Now in the polynomial ring \(B=\mathbb{K}[\x_1,\ldots, \x_n]\), we compute the height of the ideal \((\x_{d+1},\ldots, \x_n)\). The chain
\[(0)\subseteq(\x_n)\subseteq(\x_{n-1},\x_n)\subseteq\cdots\subseteq(\x_{d+1},\ldots, \x_n)\]shows that the height of this ideal is at least \(n-d\), and since the quotient ring \(B/(\x_{d+1},\ldots, \x_n)\cong\mathbb{K}[\x_1,\ldots, \x_d]\) is \(d\)-dimensional (§System of Parameters, ⁋Corollary 11), the inequality \(\dim+\codim\leq n\) implies that the height is at most \(n-d\). Therefore \(\codim_B(\x_{d+1},\ldots, \x_n)=n-d\), and ultimately \(\codim\mathfrak{p}=n-d=\dim A-\dim A/\mathfrak{p}\).
Meanwhile, since the polynomial subring given by Theorem 1 (Noether normalization lemma) behaves well under extension of scalars, it also follows that the dimension of a finitely generated \(\mathbb{K}\)-algebra does not change even when extending the base field.
Proposition 5 For a field \(\mathbb{K}\), an extension \(\mathbb{K}\hookrightarrow \mathbb{L}\), and a finitely generated \(\mathbb{K}\)-algebra \(A\), the equality
\[\dim(A\otimes_\mathbb{K}\mathbb{L})=\dim A\]holds.
Proof
Let \(d=\dim A\), and applying Theorem 1 (Noether normalization lemma) without a chain of ideals, choose a subring of \(A\), \(B\cong\mathbb{K}[\x_1,\ldots, \x_d]\), such that \(A\) is a finitely generated \(B\)-module. Now, since \(\mathbb{L}\) is a \(\mathbb{K}\)-vector space, it is a free \(\mathbb{K}\)-module and hence flat ([Multilinear Algebra] §Projective, Injective, and Flat Modules, ⁋Definition 7), so the ring homomorphism obtained from the inclusion \(B\hookrightarrow A\) by applying \(-\otimes_\mathbb{K}\mathbb{L}\)
\[B\otimes_\mathbb{K}\mathbb{L} \rightarrow A\otimes_\mathbb{K}\mathbb{L}\]is also injective. Here, \(B\otimes_\mathbb{K}\mathbb{L}\cong\mathbb{L}[\x_1,\ldots, \x_d]\), and with \(A\) generated as a \(B\)-module by elements \(a_1,\ldots, a_r\), the elements \(a_i\otimes 1\) generate \(A\otimes_\mathbb{K}\mathbb{L}\) as a \(B\otimes_\mathbb{K}\mathbb{L}\)-module, so this injection is finite and thus an integral extension (§Integral Extensions, ⁋Lemma 4).
However, since an integral homomorphism preserves dimension (§Krull Dimension, ⁋Proposition 4), we obtain
\[\dim(A\otimes_\mathbb{K}\mathbb{L})=\dim\mathbb{L}[\x_1,\ldots, \x_d]=d\]where the last equality is §System of Parameters, ⁋Corollary 11.
Generic Freeness
So far, we have treated the situation where the base is a field. If we extend this to a Noetherian integral domain \(A\), there is no reason for a finite type \(A\)-algebra \(B\) and a finitely generated module \(M\) over it to be free as an \(A\)-module. However, the following result shows that it can always be made free merely by inverting a single element of \(A\) other than \(0\); since the localization \(A_a\) has the same field of fractions as \(A\), this means that freeness holds generically.
Theorem 6 (Grothendieck’s generic freeness) Let a Noetherian integral domain \(A\), a finite type \(A\)-algebra \(B\), and a finitely generated \(B\)-module \(M\) be given. Then there exists a non-\(0\) \(a\in A\) such that \(M_a\) is a free \(A_a\)-module.
Proof
Since \(B\) is a finite type algebra over the Noetherian integral domain \(A\), it is a Noetherian ring by §Basic Notions, ⁋Theorem 12 (Hilbert basis theorem).
First, we reduce the problem by dévissage applying §Associated Primes, ⁋Lemma 6 to \(B\) and \(M\). Applying this gives a filtration
\[0=M_0\subseteq M_1\subseteq\cdots\subseteq M_n=M,\qquad M_i/M_{i-1}\cong B/\mathfrak{q}_i\]If we assume that the conclusion holds for each \(B/\mathfrak{q}_i\) and let \(a\) be the product of those elements, then since the right-hand term of the exact sequence
\[0 \longrightarrow (M_{i-1})_a \longrightarrow (M_i)_a \longrightarrow (B/\mathfrak{q}_i)_a \longrightarrow 0\]is a free module, this exact sequence splits, and by induction on \(i\), all \((M_i)_a\) are free \(A_a\)-modules. Therefore, it suffices to show the case where \(M=B/\mathfrak{q}\), that is, replacing \(B\) by \(B/\mathfrak{q}\), the case where \(B\) is an integral domain and \(M=B\).
The case where the kernel of \(\varphi: A \rightarrow B\) is not \(0\) is handled immediately. In this case, choosing \(0\neq a\in \ker \varphi\), in \(B_a=B\otimes_AA_a\) we have \(\varphi(a)=0\) while \(a\) is a unit, so \(B_a=0\), which is a free module of rank \(0\). Therefore, we may assume \(A\subseteq B\).
Now setting \(K=\Frac(A)\), since \(B\otimes_AK\) is the localization at \(A\setminus\{0\}\) of \(B\), it is a non-\(0\) integral domain and a finite type algebra over \(K\). We show the remaining assertion by induction on \(d=\dim (B\otimes_AK)\).
Applying Theorem 1 (Noether normalization lemma) without a chain of ideals, there exist algebraically independent elements \(y_1,\ldots, y_d\in B\otimes_AK\) such that \(B\otimes_AK\) is a finite module over \(K[y_1,\ldots,y_d]\). Since algebraic independence and finiteness are preserved even if we multiply each \(y_i\) by an element of \(A\) other than \(0\), we may assume from the start that \(y_i\in B\).
If we let \(B\) be generated as an \(A\)-algebra by elements \(b_1,\ldots, b_m\), then each \(b_j\) is integral over \(K[y_1,\ldots,y_d]\). Since there are only finitely many coefficients appearing in these integral equations, we can choose \(0\neq a_0\in A\) clearing all their denominators. Then each \(b_j\) is integral over
\[C=A_{a_0}[y_1,\ldots, y_d]\]and therefore \(B_{a_0}\) is a finite \(C\)-module. Here, since the \(y_i\) are algebraically independent over \(K\), \(C\) is a polynomial ring over \(A_{a_0}\), and in particular a free \(A_{a_0}\)-module.
Now, applying dévissage again to the Noetherian ring \(C\) and the finite \(C\)-module \(B_{a_0}\), we obtain a finite filtration whose quotients are of the form \(C/\mathfrak{p}\). Therefore, it suffices to show the conclusion for each \(C/\mathfrak{p}\).
The base of induction is the case \(d=0\). In this case, \(C=A_{a_0}\), so the quotients given by the dévissage above are of the form \(A_{a_0}/\mathfrak{p}\); if \(\mathfrak{p}=0\), it is a free module, and if \(\mathfrak{p}\neq 0\), by inverting an element of \(\mathfrak{p}\) other than \(0\), we can make it \(0\).
Now assume \(d>0\). If \(\mathfrak{p}=0\), then \(C\) itself is a free \(A_{a_0}\)-module, so there is nothing to show. Assume \(\mathfrak{p}\neq 0\). If \(\mathfrak{p}\cap A_{a_0}\neq 0\), then choosing a non-\(0\) element \(a_1\) in it, we have \((C/\mathfrak{p})_{a_1}=0\), so the conclusion holds. Otherwise, for \(S=A_{a_0}\setminus\{0\}\), we have \(S^{-1}C=K[y_1,\ldots,y_d]\) and \(\mathfrak{p}\cap S=\emptyset\), so \(\mathfrak{p}K[y_1,\ldots,y_d]\) is a prime ideal of \(K[y_1,\ldots,y_d]\) other than \(0\). Now,
\[(C/\mathfrak{p})\otimes_{A_{a_0}}K=K[y_1,\ldots,y_d]/\mathfrak{p}K[y_1,\ldots,y_d]\]and if we choose \(0\neq g\in \mathfrak{p}K[y_1,\ldots,y_d]\), the images of \(y_1,\ldots,y_d\) in this quotient ring satisfy the algebraic relation \(g=0\), so they cannot be algebraically independent. Since this quotient ring is a \(K\)-algebra generated by these images, the transcendence degree of its field of fractions is less than \(d\), and by Theorem 3,
\[\dim\big((C/\mathfrak{p})\otimes_{A_{a_0}}K\big)<d\]holds. Since \(A_{a_0}\) is also a Noetherian integral domain having \(K\) as its field of fractions and \(C/\mathfrak{p}\) is a finite type integral domain over it, applying the induction hypothesis shows that there exists \(0\neq a_\mathfrak{p}\in A_{a_0}\) such that \((C/\mathfrak{p})_{a_\mathfrak{p}}\) is a free \((A_{a_0})_{a_\mathfrak{p}}\)-module. If necessary, multiplying by a power of \(a_0\), we may regard \(a_\mathfrak{p}\in A\).
For the finitely many \(\mathfrak{p}\) appearing in the filtration, if we let the product of the \(a_\mathfrak{p}\) and \(a_0\) be \(a\), then \(B_a=(B_{a_0})_a\) is a free \(A_a\)-module.
Two points are decisive in the proof: one is using dévissage to decompose \(M\) into quotients of the form \(B/\mathfrak{q}\) to transfer the problem to the case of a domain, and the other is using Theorem 1 (Noether normalization lemma) to make \(B\) finite over a polynomial ring over \(A_{a_0}\), and then running the induction by decreasing the transcendence degree using the dimension calculation of Theorem 3. Since free modules are flat, Theorem 6 (Grothendieck’s generic freeness) can also be read as saying that flatness holds generically, and in algebraic geometry this form yields the fact that a morphism of finite type is flat over a dense open subset of the base, as well as Chevalley’s theorem that the image of a morphism of finite type is constructible.
References
[Eis] David Eisenbud. Commutative Algebra: with a view toward algebraic geometry. Springer, 1995.
Share on
Twitter Facebook LinkedInComments
- Public repository: a deleted comment stays in the Git history.
- The password and the email are encrypted and kept in Cloudflare KV alone.
No comments yet.