가환대수학

Noether Normalization

Noether normalization theorem and applications for finitely generated algebras

Posted Updated

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:

  1. For a sufficiently large integer \(e\), we can choose \(\x_i'=\x_i-\x_r^{e^i}\).
  2. 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:

  1. \(A\) is a finitely generated \(B_e=\mathbb{K}[\x_1',\ldots, \x_e',\x_{e+1},\ldots, \x_d]\)-module.
  2. 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.

Comments

  • 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.

Leave a comment