Documentation

Mathlib.RingTheory.Nullstellensatz

Nullstellensatz #

This file establishes a version of Hilbert's classical Nullstellensatz for MvPolynomials. The main statement of the theorem is MvPolynomial.vanishingIdeal_zeroLocus_eq_radical.

The statement is in terms of new definitions vanishingIdeal and zeroLocus. Mathlib already has versions of these in terms of the prime spectrum of a ring, but those are not well-suited for expressing this result. Suggestions for better ways to state this theorem or organize things are welcome.

The machinery around vanishingIdeal and zeroLocus is also minimal, I only added lemmas directly needed in this proof, since I'm not sure if they are the right approach.

def MvPolynomial.zeroLocus {k : Type u_1} [Field k] {σ : Type u_2} (I : Ideal (MvPolynomial σ k)) :
Set (σk)

Set of points that are zeroes of all polynomials in an ideal

Equations
Instances For
    @[simp]
    theorem MvPolynomial.mem_zeroLocus_iff {k : Type u_1} [Field k] {σ : Type u_2} {I : Ideal (MvPolynomial σ k)} {x : σk} :
    x zeroLocus I pI, (eval x) p = 0
    theorem MvPolynomial.zeroLocus_anti_mono {k : Type u_1} [Field k] {σ : Type u_2} {I J : Ideal (MvPolynomial σ k)} (h : I J) :
    @[simp]
    theorem MvPolynomial.zeroLocus_bot {k : Type u_1} [Field k] {σ : Type u_2} :
    @[simp]
    theorem MvPolynomial.zeroLocus_top {k : Type u_1} [Field k] {σ : Type u_2} :
    def MvPolynomial.vanishingIdeal {k : Type u_1} [Field k] {σ : Type u_2} (V : Set (σk)) :

    Ideal of polynomials with common zeroes at all elements of a set

    Equations
    Instances For
      @[simp]
      theorem MvPolynomial.mem_vanishingIdeal_iff {k : Type u_1} [Field k] {σ : Type u_2} {V : Set (σk)} {p : MvPolynomial σ k} :
      p vanishingIdeal V xV, (eval x) p = 0
      theorem MvPolynomial.vanishingIdeal_anti_mono {k : Type u_1} [Field k] {σ : Type u_2} {A B : Set (σk)} (h : A B) :
      theorem MvPolynomial.zeroLocus_vanishingIdeal_le {k : Type u_1} [Field k] {σ : Type u_2} (V : Set (σk)) :
      theorem MvPolynomial.le_zeroLocus_iff_le_vanishingIdeal {k : Type u_1} [Field k] {σ : Type u_2} {V : Set (σk)} {I : Ideal (MvPolynomial σ k)} :
      theorem MvPolynomial.zeroLocus_span {k : Type u_1} [Field k] {σ : Type u_2} (S : Set (MvPolynomial σ k)) :
      zeroLocus (Ideal.span S) = {x : σk | pS, (eval x) p = 0}
      theorem MvPolynomial.mem_vanishingIdeal_singleton_iff {k : Type u_1} [Field k] {σ : Type u_2} (x : σk) (p : MvPolynomial σ k) :
      p vanishingIdeal {x} (eval x) p = 0
      instance MvPolynomial.vanishingIdeal_singleton_isMaximal {k : Type u_1} [Field k] {σ : Type u_2} {x : σk} :
      (vanishingIdeal {x}).IsMaximal
      def MvPolynomial.pointToPoint {k : Type u_1} [Field k] {σ : Type u_2} (x : σk) :

      The point in the prime spectrum associated to a given point

      Equations
      Instances For
        theorem MvPolynomial.isMaximal_iff_eq_vanishingIdeal_singleton {k : Type u_1} [Field k] {σ : Type u_2} [IsAlgClosed k] [Finite σ] (I : Ideal (MvPolynomial σ k)) :
        I.IsMaximal ∃ (x : σk), I = vanishingIdeal {x}
        @[simp]
        theorem MvPolynomial.vanishingIdeal_zeroLocus_eq_radical {k : Type u_1} [Field k] {σ : Type u_2} [IsAlgClosed k] [Finite σ] (I : Ideal (MvPolynomial σ k)) :
        vanishingIdeal (zeroLocus I) = I.radical

        Main statement of the Nullstellensatz

        @[simp]
        theorem MvPolynomial.IsPrime.vanishingIdeal_zeroLocus {k : Type u_1} [Field k] {σ : Type u_2} [IsAlgClosed k] [Finite σ] (P : Ideal (MvPolynomial σ k)) [h : P.IsPrime] :