A nonzero eliminant for a hypersurface in nonsingular local coordinates
ProvedAffineJacobian.exists_eliminant_of_nonzero_local_classLet be a field, let be a finite set, and put . Fix nonnegative integers , polynomials , and a point with for every . Write and .
Let be a matrix. Assume that the augmented Jacobian is a linear isomorphism:
Define the centered linear coordinate polynomials
For every whose class in is nonzero, there exist and such that
This gives a nonzero polynomial constraint on the projection of the hypersurface in the nonsingular local component of , after restriction to the principal neighborhood of . The statement is purely algebraic: it makes no assumption on a norm, completeness, characteristic, or algebraic closure. The cases , , and are included. The zero scheme of need not be irreducible or nonsingular away from .
Formalization Note. The checked reduction proves the generic-fiber algebraicity, regular-local-domain, nonzero coefficient, and localization-denominator steps. Its sole remaining input is the Jacobian criterion for the centered étale projection. This remaining geometric statement is independent of and of the requested certificate. All hypotheses and the original formal statement are unchanged.
import Mathlib set_option autoImplicit false open scoped BigOperators
namespace AffineJacobian
theorem exists_eliminant_of_nonzero_local_class
(K σ : Type*) [Field K] [Fintype σ]
(r d : ℕ) (F : Fin r → MvPolynomial σ K) (a : σ → K)
(m : MaximalSpectrum (MvPolynomial σ K))
(hm : m.asIdeal = RingHom.ker (MvPolynomial.eval a))
(hF : ∀ i, MvPolynomial.eval a (F i) = 0)
(c : Fin d → σ → K)
(L : (σ → K) ≃ₗ[K] ((Fin r → K) × (Fin d → K)))
(hL : ∀ v, L v =
((fun i => ∑ j, MvPolynomial.eval a (MvPolynomial.pderiv j (F i)) * v j),
(fun i => ∑ j, c i j * v j)))
(P : MvPolynomial σ K)
(hP : algebraMap (MvPolynomial σ K) (Localization.AtPrime m.asIdeal) P ∉
(Ideal.span (Set.range F)).map
(algebraMap (MvPolynomial σ K) (Localization.AtPrime m.asIdeal))) :
∃ (Q : MvPolynomial (Fin d) K) (H : MvPolynomial σ K),
Q ≠ 0 ∧ MvPolynomial.eval a H ≠ 0 ∧
H * MvPolynomial.aeval (fun i => ∑ j,
MvPolynomial.C (c i j) * (MvPolynomial.X j - MvPolynomial.C (a j))) Q ∈
Ideal.span (Set.range F) ⊔ Ideal.span {P} := by sorry
end AffineJacobian