Independent local equations at a regular affine point
ProvedAffineJacobian.exists_local_equations_of_regular_local_ringLet be an algebraically closed field, let for a finite set , and let be a radical ideal. Let be a point of , with evaluation maximal ideal
Assume that the local ring is regular.
There exist , polynomials , and a polynomial with such that the linear map
is surjective. Moreover, on the principal open these equations define exactly the original affine zero set:
This is the regular-point local-equation form of the Jacobian criterion in the original affine coordinates. It applies to reducible varieties and includes the case of no equations. No group structure, projective embedding, norm, or analytic chart is involved.
Formalization Note. The Lean reduction selects a basis of the image of the polynomial gradient map, proves the first-order Taylor identity modulo the square of the evaluation ideal, applies Nakayama after localization, and clears finitely many denominators. Its sole remaining input is conormal injectivity for a regular quotient of a regular local ring, a general statement with no affine or Jacobian data. The reduction actually proves equality of the localized ideals before deriving equality of zero sets on a principal open. The original formal statement is unchanged.
import Mathlib set_option autoImplicit false open scoped BigOperators
namespace AffineJacobian
theorem exists_local_equations_of_regular_local_ring
(K σ : Type*) [Field K] [IsAlgClosed K] [Fintype σ]
(I : Ideal (MvPolynomial σ K)) (a : σ → K)
(m : MaximalSpectrum (MvPolynomial σ K))
(hm : m.asIdeal = RingHom.ker (MvPolynomial.eval a))
(hI : I.IsRadical) (hIm : I ≤ m.asIdeal)
(hreg : IsRegularLocalRing ((Localization.AtPrime m.asIdeal) ⧸
I.map (algebraMap (MvPolynomial σ K) (Localization.AtPrime m.asIdeal)))) :
∃ (r : ℕ) (P : Fin r → MvPolynomial σ K) (H : MvPolynomial σ K),
(∀ i, P i ∈ I) ∧ MvPolynomial.eval a H ≠ 0 ∧
Function.Surjective (fun v : σ → K => fun i : Fin r =>
∑ j, MvPolynomial.eval a (MvPolynomial.pderiv j (P i)) * v j) ∧
(∀ v : σ → K, MvPolynomial.eval v H ≠ 0 →
((∀ i, MvPolynomial.eval v (P i) = 0) ↔
∀ Q ∈ I, MvPolynomial.eval v Q = 0)) := by sorry
end AffineJacobian