Mathlib.Algebraic­Geometry.Polynomial­Image­Dimension

Reusable bridges from coordinate-ring, transcendence-degree, and Jacobian certificates to exact affine Zariski dimension over the complex numbers, together with the underlying closure, irreducibility, affine-space, polyn

Chain­Dimension 1 core · 0 supporting This file defines exact affine Zariski dimension using strict chains of nonempty irreducible affine-closed subsets.

Chain dimension for complex affine algebraic sets

This file defines exact affine Zariski dimension using strict chains of nonempty irreducible affine-closed subsets.

def HasAffineZariskiDimension reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

Exact affine Zariski dimension is the largest number of strict containments in a chain of nonempty irreducible polynomially closed subsets of a set.

Definition (Lean source)
def HasAffineZariskiDimension {ι : Type*} (d : ℕ) (Z : Set (ι → ℂ)) : Prop := (∃ chain : Fin (d + 1) → Set (ι → ℂ), StrictMono chain ∧ (∀ i, IsIrreducibleAffineClosed (chain i)) ∧ (∀ i, chain i ⊆ Z)) ∧ ¬ ∃ chain : Fin (d + 2) → Set (ι → ℂ), StrictMono chain ∧ (∀ i, IsIrreducibleAffineClosed (chain i)) ∧ (∀ i, chain i ⊆ Z)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.HasAffineZariskiDimension · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/ChainDimension.lean:20
Zariski­Closure 2 core · 7 supporting This file defines affine Zariski closure by the vanishing ideal and proves its elementary closure laws, including finite unions and density of principal open sets. ★ affineZariskiClosure_nonvanishing_eq_univ

Affine Zariski closure over the complex numbers

This file defines affine Zariski closure by the vanishing ideal and proves its elementary closure laws, including finite unions and density of principal open sets.

def affineZariskiClosure reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

Algebraic closure in a complex affine space.

Definition (Lean source)
def affineZariskiClosure {ι : Type*} (A : Set (ι → ℂ)) : Set (ι → ℂ) := zeroLocus ℂ (vanishingIdeal ℂ A)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.affineZariskiClosure · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/ZariskiClosure.lean:23
lemma affineZariskiClosure_nonvanishing_eq_univ reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For a polynomial P in coordinates indexed by ι, if P is not the zero polynomial, then the set of points where P does not vanish is Zariski-dense in the whole affine space.

Formal statement
ι :
Type*
P :
hP :
P ≠ 0
affineZariskiClosure {x : ι → ℂ | eval x P ≠ 0} = univ
Proof (Lean source)
lemma affineZariskiClosure_nonvanishing_eq_univ {ι : Type*} (P : MvPolynomial ι ℂ) (hP : P ≠ 0) : affineZariskiClosure {x : ι → ℂ | eval x P ≠ 0} = univ := by apply Set.eq_univ_of_forall intro x Q hQ have hmul_eval : ∀ y : ι → ℂ, eval y (Q * P) = 0 := by intro y by_cases hy : eval y P = 0 · simp [hy] · rw [map_mul] have hQy : eval y Q = 0 := by simpa [MvPolynomial.aeval_def, MvPolynomial.eval₂_id] using hQ y hy rw [hQy, zero_mul] have hmul : Q * P = 0 := by apply MvPolynomial.funext exact hmul_eval have hQzero : Q = 0 := (mul_eq_zero.mp hmul).resolve_right hP simp [hQzero]
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.affineZariskiClosure_nonvanishing_eq_univ · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/ZariskiClosure.lean:99 · uses affineZariskiClosure
7 supporting declarations (lemmas, instances)
Irreducibility 2 core · 5 supporting This file relates the elementary finite-union definition of irreducibility to primality of the vanishing ideal and records the strict order reversal between closed sets and their ideals. ★ irreducibleAffineClosed_iff_isPrime

Irreducible affine-closed sets

This file relates the elementary finite-union definition of irreducibility to primality of the vanishing ideal and records the strict order reversal between closed sets and their ideals.

def IsIrreducibleAffineClosed reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

An irreducible affine-closed set is a nonempty polynomially closed set that cannot be expressed as the union of two smaller polynomially closed sets.

Definition (Lean source)
def IsIrreducibleAffineClosed {ι : Type*} (Z : Set (ι → ℂ)) : Prop := affineZariskiClosure Z = Z ∧ Z.Nonempty ∧ ∀ Z₁ Z₂ : Set (ι → ℂ), affineZariskiClosure Z₁ = Z₁ → affineZariskiClosure Z₂ = Z₂ → Z = Z₁ ∪ Z₂ → Z = Z₁ ∨ Z = Z₂
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.IsIrreducibleAffineClosed · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Irreducibility.lean:21
theorem irreducibleAffineClosed_iff_isPrime reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

A nonempty polynomially closed complex set Z is irreducible exactly when the polynomial equations that vanish on it form a prime ideal.

Formal statement
ι :
Type*
Finite ι
Set (ι → ℂ)
hclosed :
hnonempty :
Z.Nonempty
Proof (Lean source)
theorem irreducibleAffineClosed_iff_isPrime {ι : Type*} [Finite ι] {Z : Set (ι → ℂ)} (hclosed : affineZariskiClosure Z = Z) (hnonempty : Z.Nonempty) : IsIrreducibleAffineClosed Z ↔ (vanishingIdeal ℂ Z).IsPrime := by constructor · intro hirr refine ⟨vanishingIdeal_ne_top_of_nonempty hnonempty, ?_⟩ intro p q hpq let A := Z ∩ {x | eval x p = 0} let B := Z ∩ {x | eval x q = 0} have hA : affineZariskiClosure A = A := affineZariskiClosure_inter hclosed (affineZariskiClosure_zero_of_polynomial p) have hB : affineZariskiClosure B = B := affineZariskiClosure_inter hclosed (affineZariskiClosure_zero_of_polynomial q) have hAB : Z = A ∪ B := by ext x constructor · intro hx have hz := hpq x hx rw [map_mul, mul_eq_zero] at hz rcases hz with hz | hz · exact inl ⟨hx, hz⟩ · exact inr ⟨hx, hz⟩ · rintro (hx | hx) <;> exact hx.1 rcases hirr.2.2 A B hA hB hAB with hZA | hZB · left intro x hx have : x ∈ A := hZA ▸ hx exact this.2 · right intro x hx have : x ∈ B := hZB ▸ hx exact this.2 · intro hprime refine ⟨hclosed, hnonempty, ?_⟩ intro A B hA hB hZ by_cases hAI : vanishingIdeal ℂ A ≤ vanishingIdeal ℂ Z · left apply le_antisymm · intro x hx rw [← hA] apply MvPolynomial.zeroLocus_anti_mono hAI simpa [affineZariskiClosure] using (show x ∈ affineZariskiClosure Z from hclosed.symm ▸ hx) · rw [hZ] exact Set.subset_union_left · right have hBI : vanishingIdeal ℂ B ≤ vanishingIdeal ℂ Z := by intro q hq obtain ⟨p, hpA, hpZ⟩ := Set.not_subset.mp hAI have hpq : p * q ∈ vanishingIdeal ℂ Z := by intro x hx rw [hZ] at hx rcases hx with hx | hx · rw [map_mul, hpA x hx, zero_mul] · rw [map_mul, hq x hx, mul_zero] exact (hprime.mem_or_mem hpq).resolve_left hpZ apply le_antisymm · intro x hx rw [← hB] apply MvPolynomial.zeroLocus_anti_mono hBI simpa [affineZariskiClosure] using (show x ∈ affineZariskiClosure Z from hclosed.symm ▸ hx) · rw [hZ] exact Set.subset_union_right
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.irreducibleAffineClosed_iff_isPrime · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Irreducibility.lean:50 · uses IsIrreducibleAffineClosed , affineZariskiClosure
5 supporting declarations (lemmas, instances)
Definitions 5 core · 0 supporting This module fixes the concrete conventions used by the affine polynomial-image dimension bridge. ★ eval_polynomialPullback

Polynomial maps and their coordinate algebras

This module fixes the concrete conventions used by the affine polynomial-image dimension bridge. It uses the neutral affine Zariski closure substrate.

def polynomialCoordinateMap reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

A polynomial coordinate map sends a complex parameter vector to the vector of values of a specified finite family of coordinate polynomials.

Definition (Lean source)
def polynomialCoordinateMap {ι κ : Type*} (f : κ → MvPolynomial ι ℂ) : (ι → ℂ) → (κ → ℂ) := fun x k => eval x (f k)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialCoordinateMap · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Definitions.lean:16
def polynomialPullback reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

Polynomial pullback replaces each target coordinate in a polynomial relation by its corresponding source-coordinate polynomial.

Definition (Lean source)
def polynomialPullback {ι κ : Type*} (f : κ → MvPolynomial ι ℂ) : MvPolynomial κ ℂ →ₐ[ℂ] MvPolynomial ι ℂ := MvPolynomial.aeval f
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialPullback · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Definitions.lean:22
abbrev polynomialCoordinateSubalgebra reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

The coordinate subalgebra is the complex algebra generated by the coordinate polynomials of a polynomial parameterization.

Definition (Lean source)
abbrev polynomialCoordinateSubalgebra {ι κ : Type*} (f : κ → MvPolynomial ι ℂ) : Subalgebra ℂ (MvPolynomial ι ℂ) := (polynomialPullback f).range
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialCoordinateSubalgebra · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Definitions.lean:28
abbrev polynomialImageClosure reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

The polynomial image closure is the smallest complex algebraic set containing all values attained by the polynomial parameterization.

Definition (Lean source)
abbrev polynomialImageClosure {ι κ : Type*} (f : κ → MvPolynomial ι ℂ) : Set (κ → ℂ) := affineZariskiClosure (range (polynomialCoordinateMap f))
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialImageClosure · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Definitions.lean:34
lemma eval_polynomialPullback reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For index types ι, κ, a polynomial parameterization f, a point x, and a polynomial P, substituting the coordinate polynomials f into P and evaluating at x agrees with evaluating P directly at the point obtained by evaluating f's coordinates at x.

Formal statement
ι κ :
Type*
f :
κ → MvPolynomial ι ℂ
x :
ι → ℂ
P :
Proof (Lean source)
lemma eval_polynomialPullback {ι κ : Type*} (f : κ → MvPolynomial ι ℂ) (x : ι → ℂ) (P : MvPolynomial κ ℂ) : eval x (polynomialPullback f P) = eval (polynomialCoordinateMap f x) P := by change eval x (MvPolynomial.eval₂ C f P) = _ rw [MvPolynomial.eval_eval₂] rw [show (eval x).comp C = id ℂ by ext c simp] rfl
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.eval_polynomialPullback · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Definitions.lean:40 · uses polynomialCoordinateMap , polynomialPullback
Polynomial­Map 2 core · 6 supporting This file defines coordinatewise polynomial maps and proves their composition, substitution, and affine-closed preimage laws. ★ polynomial_range_closed_of_retract

Polynomial maps between complex affine spaces

This file defines coordinatewise polynomial maps and proves their composition, substitution, and affine-closed preimage laws.

def IsPolynomialMap reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

Every coordinate of f is a polynomial in the source coordinates.

Definition (Lean source)
def IsPolynomialMap {ι κ : Type*} (f : (ι → ℂ) → (κ → ℂ)) : Prop := ∀ k, ∃ P : MvPolynomial ι ℂ, ∀ x, eval x P = f x k
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.IsPolynomialMap · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/PolynomialMap.lean:20
lemma polynomial_range_closed_of_retract reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For maps between the finite-dimensional complex affine spaces ℂ^ι and ℂ^κ, if f is coordinatewise polynomial, an accompanying map g back to ℂ^ι is coordinatewise polynomial, and g is a left inverse of f, i.e. g (f x) = x for every x, then the range of f is already Zariski-closed.

Formal statement
ι κ :
Type*
(ι → ℂ) → (κ → ℂ)
(κ → ℂ) → (ι → ℂ)
hleft :
Proof (Lean source)
lemma polynomial_range_closed_of_retract {ι κ : Type*} {f : (ι → ℂ) → (κ → ℂ)} {g : (κ → ℂ) → (ι → ℂ)} (hf : IsPolynomialMap f) (hg : IsPolynomialMap g) (hleft : LeftInverse g f) : affineZariskiClosure (range f) = range f := by have hfix : range f = {y | f (g y) = y} := by ext y constructor · rintro ⟨x, rfl⟩ exact congrArg f (hleft x) · intro hy exact ⟨g y, hy⟩ rw [hfix] exact polynomial_fixedPoints_closed (hf.comp hg)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomial_range_closed_of_retract · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/PolynomialMap.lean:108 · uses IsPolynomialMap , affineZariskiClosure
6 supporting declarations (lemmas, instances)
Affine­Space­Dimension 2 core · 2 supporting This file computes the irreducible-chain dimension of finite-dimensional complex affine space from the Krull dimension of its polynomial ring. ★ affineSpace_hasAffineZariskiDimension

Exact algebraic dimension of complex affine space

This file computes the irreducible-chain dimension of finite-dimensional complex affine space from the Krull dimension of its polynomial ring.

def primeOfIrreducible reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

An irreducible affine closed subset of finite-dimensional complex affine space determines the point of the polynomial ring's prime spectrum given by its vanishing ideal.

Definition (Lean source)
def primeOfIrreducible {ι : Type*} [Finite ι] (Z : Set (ι → ℂ)) (hZ : IsIrreducibleAffineClosed Z) : PrimeSpectrum (MvPolynomial ι ℂ) := ⟨MvPolynomial.vanishingIdeal ℂ Z, (irreducibleAffineClosed_iff_isPrime hZ.1 hZ.2.1).mp hZ⟩
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.primeOfIrreducible · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/AffineSpaceDimension.lean:24 · uses IsIrreducibleAffineClosed
theorem affineSpace_hasAffineZariskiDimension reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For any natural number d, complex affine d-space has affine Zariski dimension exactly d, in the sense of maximal chains of irreducible affine closed subsets.

Formal statement
d :
HasAffineZariskiDimension d (Set.univ : Set (Fin d → ℂ))
Proof (Lean source)
theorem affineSpace_hasAffineZariskiDimension (d : ℕ) : HasAffineZariskiDimension d (Set.univ : Set (Fin d → ℂ)) := by have hdim : ringKrullDim (MvPolynomial (Fin d) ℂ) = d := polynomialRing_dimension d have hle : (d : WithBot ℕ∞) ≤ Order.krullDim (PrimeSpectrum (MvPolynomial (Fin d) ℂ)) := by simpa [ringKrullDim] using hdim.ge obtain ⟨series, hseries⟩ := Order.le_krullDim_iff.mp hle let castIndex : Fin (d + 1) → Fin (series.length + 1) := cast (congrArg (· + 1) hseries.symm) constructor · let chain : Fin (d + 1) → Set (Fin d → ℂ) := fun i => zeroLocus ℂ (series (castIndex i.rev)).asIdeal refine ⟨chain, ?_, ?_, fun _ => Set.subset_univ _⟩ · intro i j hij have hrev : j.rev < i.rev := by simpa using hij have hcast : castIndex j.rev < castIndex i.rev := by simpa [castIndex] using hrev have hp : series (castIndex j.rev) < series (castIndex i.rev) := series.strictMono hcast exact zeroLocus_strict_anti hp · intro i exact irreducible_zeroLocus_of_prime (series (castIndex i.rev)).asIdeal · rintro ⟨chain, hmono, hirr, _⟩ let primes : Fin (d + 2) → PrimeSpectrum (MvPolynomial (Fin d) ℂ) := fun i => primeOfIrreducible (chain i.rev) (hirr i.rev) have hprimes : StrictMono primes := by intro i j hij have hrev : j.rev < i.rev := by simpa using hij exact primeOfIrreducible_lt (hirr j.rev) (hirr i.rev) (hmono hrev) let tooLong : LTSeries (PrimeSpectrum (MvPolynomial (Fin d) ℂ)) := LTSeries.mk (d + 1) primes hprimes have hbound := tooLong.length_le_krullDim rw [show tooLong.length = d + 1 by rfl, ← ringKrullDim, hdim] at hbound have htop : (d + 1 : WithTop ℕ) ≤ (d : WithTop ℕ) := WithBot.coe_le_coe.mp hbound have hnat : d + 1 ≤ d := WithTop.coe_le_coe.mp htop exact (Nat.not_succ_le_self d) hnat
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.affineSpace_hasAffineZariskiDimension · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/AffineSpaceDimension.lean:46 · uses HasAffineZariskiDimension
2 supporting declarations (lemmas, instances)
Affine­Subspace­Dimension 1 core · 2 supporting This file realizes affine subspaces as polynomial retracts of affine space and computes their exact irreducible-chain dimension. ★ affineSubspace_hasAffineZariskiDimension

Exact dimension of finite-dimensional affine subspaces

This file realizes affine subspaces as polynomial retracts of affine space and computes their exact irreducible-chain dimension.

theorem affineSubspace_hasAffineZariskiDimension reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

An affine translate of a d-dimensional linear subspace has exact irreducible-chain dimension d. For a complex linear subspace V of κ → ℂ and a base point x₀, if V has finite rank exactly d, then the affine translate {x | x - x₀ ∈ V} has irreducible-chain (Zariski) dimension exactly d.

Formal statement
κ :
Type*
Finite κ
V :
Submodule ℂ (κ → ℂ)
x₀ :
κ → ℂ
d :
hdim :
finrank ℂ V = d
HasAffineZariskiDimension d {x | x - x₀ ∈ V}
Proof (Lean source)
theorem affineSubspace_hasAffineZariskiDimension {κ : Type*} [Finite κ] (V : Submodule ℂ (κ → ℂ)) (x₀ : κ → ℂ) (d : ℕ) (hdim : finrank ℂ V = d) : HasAffineZariskiDimension d {x | x - x₀ ∈ V} := by letI := ofFinite κ let b := Module.finBasisOfFinrankEq ℂ V hdim let E : (Fin d → ℂ) ≃ₗ[ℂ] V := b.equivFun.symm let inclusion : V →ₗ[ℂ] (κ → ℂ) := V.subtype let F : (Fin d → ℂ) →ₗ[ℂ] (κ → ℂ) := inclusion.comp E.toLinearMap have hFinj : Injective F := by intro a c hac apply E.injective apply Subtype.ext exact hac have hFker : ker F = ⊥ := LinearMap.ker_eq_bot.mpr hFinj let G : (κ → ℂ) →ₗ[ℂ] (Fin d → ℂ) := F.leftInverse have hGF : ∀ z, G (F z) = z := by intro z exact LinearMap.leftInverse_apply_of_inj hFker z let f : (Fin d → ℂ) → (κ → ℂ) := fun z => x₀ + F z let g : (κ → ℂ) → (Fin d → ℂ) := fun x => G (x - x₀) have hf : IsPolynomialMap f := affineLinearMap_isPolynomial F x₀ have hg : IsPolynomialMap g := by have hG := linearMap_isPolynomial G intro i obtain ⟨P, hP⟩ := hG i refine ⟨P - C (G x₀ i), ?_⟩ intro x simp [g, map_sub, hP x] have hleft : LeftInverse g f := by intro z simp [f, g, hGF z] have hrange : range f = {x | x - x₀ ∈ V} := by ext x constructor · rintro ⟨z, rfl⟩ simp [f, F, inclusion] · intro hx let v : V := ⟨x - x₀, hx⟩ let z : Fin d → ℂ := E.symm v refine ⟨z, ?_⟩ have hEz : E z = v := E.apply_symm_apply v funext k have hk := congrArg (fun q : V => (q : κ → ℂ) k) hEz dsimp [f, F, inclusion] at hk ⊢ rw [hk] simp [v] rw [← hrange] exact polynomialRetract_range_dimension hf hg hleft
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.affineSubspace_hasAffineZariskiDimension · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/AffineSubspaceDimension.lean:59 · uses HasAffineZariskiDimension
2 supporting declarations (lemmas, instances)
Codimension­One 3 core · 5 supporting This file defines irreducible components and endpoint-fixed affine codimension, then proves dimension-chain and principal-minimal-prime certificates for exact codimension one. ★ hasAffineCodimensionIn_one_of_minimalPrime_span

Codimension one in complex affine algebraic sets

This file defines irreducible components and endpoint-fixed affine codimension, then proves dimension-chain and principal-minimal-prime certificates for exact codimension one.

def IsIrreducibleAffineComponent reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

An irreducible affine component is a maximal irreducible affine-closed subset of a prescribed locus.

Definition (Lean source)
def IsIrreducibleAffineComponent {ι : Type*} (C Z : Set (ι → ℂ)) : Prop := IsIrreducibleAffineClosed C ∧ C ⊆ Z ∧ ∀ C', IsIrreducibleAffineClosed C' → C ⊆ C' → C' ⊆ Z → C' = C
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.IsIrreducibleAffineComponent · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/CodimensionOne.lean:24
def HasAffineCodimensionIn reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

A locus has affine codimension d in an ambient set when every irreducible component admits an endpoint-fixed chain of length d, and one component admits no such chain of length d + 1.

Definition (Lean source)
def HasAffineCodimensionIn {ι : Type*} (d : ℕ) (Z X : Set (ι → ℂ)) : Prop := (∀ C, IsIrreducibleAffineComponent C Z → ∃ chain : Fin (d + 1) → Set (ι → ℂ), StrictMono chain ∧ (∀ i, IsIrreducibleAffineClosed (chain i)) ∧ chain 0 = C ∧ chain (last d) = X) ∧ ∃ C, IsIrreducibleAffineComponent C Z ∧ ¬ ∃ chain : Fin (d + 2) → Set (ι → ℂ), StrictMono chain ∧ (∀ i, IsIrreducibleAffineClosed (chain i)) ∧ chain 0 = C ∧ chain (last (d + 1)) = X
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.HasAffineCodimensionIn · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/CodimensionOne.lean:31
theorem hasAffineCodimensionIn_one_of_minimalPrime_span reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For subsets C, Z, X of ι → ℂ (with ι finite), suppose X is irreducible Zariski-closed, Z is a proper subset of X, C is an irreducible component of Z, and the vanishing ideal of C is a minimal prime over the vanishing ideal of X joined with the principal ideal generated by some polynomial P. Then Z has affine codimension exactly 1 in X.

Formal statement
ι :
Type*
Finite ι
Set (ι → ℂ)
hZX :
Z ⊆ X
hne :
Z ≠ X
P :
hmin :
Proof (Lean source)
theorem hasAffineCodimensionIn_one_of_minimalPrime_span {ι : Type*} [Finite ι] {C Z X : Set (ι → ℂ)} (hX : IsIrreducibleAffineClosed X) (hZX : Z ⊆ X) (hne : Z ≠ X) (hC : IsIrreducibleAffineComponent C Z) (P : MvPolynomial ι ℂ) (hmin : vanishingIdeal ℂ C ∈ (vanishingIdeal ℂ X ⊔ span {P}).minimalPrimes) : HasAffineCodimensionIn 1 Z X := by constructor · intro D hD have hDX : D ⊂ X := by refine Set.ssubset_iff_subset_ne.mpr ⟨hD.2.1.trans hZX, ?_⟩ intro heq apply hne apply Set.Subset.antisymm hZX simpa [heq] using hD.2.1 exact ⟨affineTwoSetChain D X, affineTwoSetChain_strictMono hDX, (by intro i fin_cases i · exact hD.1 · exact hX), rfl, rfl⟩ · refine ⟨C, hC, ?_⟩ exact no_three_chain_of_minimalPrime_span hC.1 hX P hmin
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.hasAffineCodimensionIn_one_of_minimalPrime_span · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/CodimensionOne.lean:280 · uses HasAffineCodimensionIn , IsIrreducibleAffineClosed , IsIrreducibleAffineComponent
5 supporting declarations (lemmas, instances)
Coordinate­Ring 2 core · 1 supporting This module identifies the ideal of a polynomial image closure with the kernel of substitution and proves that the existing irreducible-chain dimension is exactly the Krull dimension of the affine coordinate ring. ★ polynomialImageClosure_coordinateRing★ affineZariskiDimension_iff_coordinateRingKrullDim

Coordinate rings and chain dimension

This module identifies the ideal of a polynomial image closure with the kernel of substitution and proves that the existing irreducible-chain dimension is exactly the Krull dimension of the affine coordinate ring.

def polynomialImageClosure_coordinateRing reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

The coordinate ring of a polynomial image closure is canonically the same complex algebra as the source-polynomial subalgebra generated by the image coordinates.

Definition (Lean source)
noncomputable def polynomialImageClosure_coordinateRing {ι κ : Type*} (f : κ → MvPolynomial ι ℂ) : (MvPolynomial κ ℂ ⧸ vanishingIdeal ℂ (polynomialImageClosure f)) ≃ₐ[ℂ] polynomialCoordinateSubalgebra f := by rw [polynomialImageClosure_vanishingIdeal f] exact Ideal.quotientKerEquivRange (polynomialPullback f)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialImageClosure_coordinateRing · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/CoordinateRing.lean:48 · uses polynomialCoordinateSubalgebra , polynomialImageClosure
theorem affineZariskiDimension_iff_coordinateRingKrullDim reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For a subset Z of ι → ℂ (with ι finite), if Z is Zariski-closed, then Z has irreducible-chain (Zariski) dimension d exactly when the Krull dimension of its coordinate ring — the polynomial ring on ι variables modulo Z's vanishing ideal — equals d.

Formal statement
ι :
Type*
Finite ι
d :
Z :
Set (ι → ℂ)
hclosed :
Proof (Lean source)
theorem affineZariskiDimension_iff_coordinateRingKrullDim {ι : Type*} [Finite ι] {d : ℕ} {Z : Set (ι → ℂ)} (hclosed : affineZariskiClosure Z = Z) : HasAffineZariskiDimension d Z ↔ ringKrullDim (MvPolynomial ι ℂ ⧸ vanishingIdeal ℂ Z) = d := by -- Use `Ideal.primeSpectrumQuotientOrderIsoZeroLocus`. Quotient primes are -- precisely primes containing `vanishingIdeal ℂ Z`; Nullstellensatz turns -- these into nonempty irreducible closed subsets of `Z`. Strict chains are -- transported in both directions, reversing their indices with `Fin.rev`. rw [ringKrullDim_quotient] constructor · rintro ⟨⟨chain, hmono, hirr, hsub⟩, hno⟩ apply le_antisymm · by_contra hlt have hle : (d + 1 : WithBot ℕ∞) ≤ Order.krullDim (PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ))) := by exact ENat.WithBot.add_one_le_iff.mpr (lt_of_not_ge hlt) obtain ⟨series, hseries⟩ := Order.le_krullDim_iff.mp hle let castIndex : Fin (d + 2) → Fin (series.length + 1) := cast (congrArg (· + 1) hseries.symm) apply hno let longChain : Fin (d + 2) → Set (ι → ℂ) := fun i => zeroLocus ℂ ((series (castIndex i.rev)).1).asIdeal refine ⟨longChain, ?_, ?_, ?_⟩ · intro i j hij have hrev : j.rev < i.rev := by simpa using hij have hcast : castIndex j.rev < castIndex i.rev := by simpa [castIndex] using hrev have hp : series (castIndex j.rev) < series (castIndex i.rev) := series.strictMono hcast exact zeroLocus_strict_anti hp · intro i exact irreducible_zeroLocus_of_prime ((series (castIndex i.rev)).1).asIdeal · intro i rw [affineZariskiClosure_eq_zeroLocus hclosed] exact MvPolynomial.zeroLocus_anti_mono (series (castIndex i.rev)).2 · have hle : (d : WithBot ℕ∞) ≤ Order.krullDim (PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ))) := by let primes : Fin (d + 1) → PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ)) := fun i => ⟨⟨MvPolynomial.vanishingIdeal ℂ (chain i.rev), (irreducibleAffineClosed_iff_isPrime (hirr i.rev).1 (hirr i.rev).2.1).mp (hirr i.rev)⟩, MvPolynomial.vanishingIdeal_anti_mono (hsub i.rev)⟩ have hprimes : StrictMono primes := by intro i j hij have hrev : j.rev < i.rev := by simpa using hij exact vanishingIdeal_strict_anti (hirr j.rev).1 (hirr i.rev).1 (hmono hrev) let witness : LTSeries (PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ))) := LTSeries.mk d primes hprimes simpa [witness] using witness.length_le_krullDim exact hle · intro hdim constructor · have hle : (d : WithBot ℕ∞) ≤ Order.krullDim (PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ))) := by exact hdim.ge obtain ⟨series, hseries⟩ := Order.le_krullDim_iff.mp hle let castIndex : Fin (d + 1) → Fin (series.length + 1) := cast (congrArg (· + 1) hseries.symm) let chain : Fin (d + 1) → Set (ι → ℂ) := fun i => zeroLocus ℂ ((series (castIndex i.rev)).1).asIdeal refine ⟨chain, ?_, ?_, ?_⟩ · intro i j hij have hrev : j.rev < i.rev := by simpa using hij have hcast : castIndex j.rev < castIndex i.rev := by simpa [castIndex] using hrev have hp : series (castIndex j.rev) < series (castIndex i.rev) := series.strictMono hcast exact zeroLocus_strict_anti hp · intro i exact irreducible_zeroLocus_of_prime ((series (castIndex i.rev)).1).asIdeal · intro i rw [affineZariskiClosure_eq_zeroLocus hclosed] exact MvPolynomial.zeroLocus_anti_mono (series (castIndex i.rev)).2 · rintro ⟨chain, hmono, hirr, hsub⟩ let primes : Fin (d + 2) → PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ)) := fun i => ⟨⟨MvPolynomial.vanishingIdeal ℂ (chain i.rev), (irreducibleAffineClosed_iff_isPrime (hirr i.rev).1 (hirr i.rev).2.1).mp (hirr i.rev)⟩, MvPolynomial.vanishingIdeal_anti_mono (hsub i.rev)⟩ have hprimes : StrictMono primes := by intro i j hij have hrev : j.rev < i.rev := by simpa using hij exact vanishingIdeal_strict_anti (hirr j.rev).1 (hirr i.rev).1 (hmono hrev) let tooLong : LTSeries (PrimeSpectrum.zeroLocus (↑(vanishingIdeal ℂ Z) : Set (MvPolynomial ι ℂ))) := LTSeries.mk (d + 1) primes hprimes have hbound := tooLong.length_le_krullDim rw [show tooLong.length = d + 1 by rfl] at hbound have htop : (d + 1 : WithTop ℕ) ≤ (d : WithTop ℕ) := WithBot.coe_le_coe.mp (hbound.trans_eq hdim) have hnat : d + 1 ≤ d := WithTop.coe_le_coe.mp htop exact (Nat.not_succ_le_self d) hnat
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.affineZariskiDimension_iff_coordinateRingKrullDim · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/CoordinateRing.lean:58 · uses HasAffineZariskiDimension , affineZariskiClosure
1 supporting declaration (lemmas, instances)
Dense­Image 1 core · 2 supporting This file proves that restricting a polynomial map to a Zariski-dense source does not change its image closure and that this closure is irreducible. ★ polynomialImageClosure_isIrreducible

Dense polynomial images

This file proves that restricting a polynomial map to a Zariski-dense source does not change its image closure and that this closure is irreducible.

theorem polynomialImageClosure_isIrreducible reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For a map f from the affine space ℂ^ι (with ι finite) to ℂ^κ that is coordinatewise polynomial, the Zariski closure of the range of f is irreducible as a polynomially closed set.

Formal statement
ι κ :
Type*
Finite ι
(ι → ℂ) → (κ → ℂ)
Proof (Lean source)
theorem polynomialImageClosure_isIrreducible {ι κ : Type*} [Finite ι] {f : (ι → ℂ) → (κ → ℂ)} (hf : IsPolynomialMap f) : IsIrreducibleAffineClosed (affineZariskiClosure (range f)) := by have hdense : affineZariskiClosure (Set.univ : Set (ι → ℂ)) = Set.univ := Set.eq_univ_of_forall (fun _ => affineZariskiClosure_extensive _ trivial) have hirr := irreducible_affineClosure_polynomial_image_of_dense hf hdense (Set.univ_nonempty : (Set.univ : Set (ι → ℂ)).Nonempty) simpa [Set.image_univ] using hirr
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialImageClosure_isIrreducible · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/DenseImage.lean:109 · uses IsIrreducibleAffineClosed , IsPolynomialMap , affineZariskiClosure
2 supporting declarations (lemmas, instances)
Irreducible­Finite­Range 1 core · 1 supporting This file proves that a coordinate which takes only finitely many values on a nonempty irreducible affine algebraic set over the complex numbers must in fact be constant on that set. ★ irreducible_coordinate_constant_of_finite_range

Finite-valued coordinates on irreducible affine sets

This file proves that a coordinate which takes only finitely many values on a nonempty irreducible affine algebraic set over the complex numbers must in fact be constant on that set. The argument writes the finite value set as the zero locus of a one-variable product polynomial, so each admissible value carves out a Zariski-closed piece; irreducibility then forces a single piece to exhaust the set. The headline result irreducible_coordinate_constant_of_finite_range supplies the rigidity step used by the polynomial image-dimension development.

theorem irreducible_coordinate_constant_of_finite_range reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

On an irreducible affine-closed set Z, if a fixed coordinate c takes values only within a fixed finite set S at every point of Z, then that coordinate is in fact constant on Z, equal to some single value in S.

Formal statement
κ :
Type*
Set (κ → ℂ)
c :
κ
S :
Finset
hrange :
∀ x ∈ Z, x c ∈ S
∃ z ∈ S, ∀ x ∈ Z, x c = z
Proof (Lean source)
theorem irreducible_coordinate_constant_of_finite_range {κ : Type*} {Z : Set (κ → ℂ)} (hZ : IsIrreducibleAffineClosed Z) (c : κ) (S : Finset ℂ) (hrange : ∀ x ∈ Z, x c ∈ S) : ∃ z ∈ S, ∀ x ∈ Z, x c = z := by classical induction S using Finset.induction_on with | empty => obtain ⟨x, hx⟩ := hZ.2.1 exact (by simpa using hrange x hx) | @insert z S hz ih => let A := Z ∩ {x | x c = z} let B := Z ∩ {x | x c ∈ S} have hhyper : affineZariskiClosure {x : κ → ℂ | x c = z} = {x | x c = z} := by have heq : {x : κ → ℂ | x c = z} = {x | eval x (X c - C z) = 0} := by ext x simp [sub_eq_zero] rw [heq] exact affineZariskiClosure_zero_of_polynomial _ have hA : affineZariskiClosure A = A := affineZariskiClosure_inter hZ.1 hhyper have hB : affineZariskiClosure B = B := affineZariskiClosure_inter hZ.1 (finiteCoordinateRange_closed c S) have hAB : Z = A ∪ B := by ext x constructor · intro hx have := hrange x hx rw [Finset.mem_insert] at this exact this.elim (fun h => inl ⟨hx, h⟩) (fun h => inr ⟨hx, h⟩) · rintro (hx | hx) <;> exact hx.1 rcases hZ.2.2 A B hA hB hAB with hZA | hZB · exact ⟨z, mem_insert_self z S, fun x hx => (hZA ▸ hx).2⟩ · obtain ⟨w, hwS, hw⟩ := ih (fun x hx => (hZB ▸ hx).2) exact ⟨w, mem_insert_of_mem hwS, hw⟩
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.irreducible_coordinate_constant_of_finite_range · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/IrreducibleFiniteRange.lean:41 · uses IsIrreducibleAffineClosed
1 supporting declaration (lemmas, instances)
Jacobian 3 core · 6 supporting In characteristic zero, a nonzero square Jacobian minor certifies algebraic independence of the selected coordinate polynomials. ★ polynomialImageClosure_dimension_of_jacobian

Jacobian certificates for polynomial-image dimension

In characteristic zero, a nonzero square Jacobian minor certifies algebraic independence of the selected coordinate polynomials. A matching upper transcendence-degree or finite presentation certificate then gives exact image dimension.

def jacobianCoordinateSubalgebraAlgebra reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

The polynomial coordinate subalgebra inherits its usual complex-algebra structure, allowing the Jacobian argument to use its transcendence degree.

Definition (Lean source)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.jacobianCoordinateSubalgebraAlgebra · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Jacobian.lean:21 · uses polynomialCoordinateSubalgebra
def polynomialJacobianMinor reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

A polynomial Jacobian minor records the determinant of selected derivative coordinates of a polynomial parameterization before evaluating it at any point.

Definition (Lean source)
def polynomialJacobianMinor {R ι κ : Type*} [CommRing R] {d : ℕ} (f : κ → MvPolynomial ι R) (rows : Fin d → κ) (cols : Fin d → ι) : MvPolynomial ι R := -- `of` is definitionally the identity, so this does not change the value. -- It matters because `Matrix m n α` is semireducible from v4.33.0 on: a bare -- `fun a b => …` in a `Matrix` slot still elaborates, but leaves a goal that is -- ill-typed at implicit transparency, after which every `Matrix.*` keyed match -- (`fromBlocks_apply*`, `det_fromBlocks_zero₁₂`, `RingHom.map_det`) fails to fire -- for every downstream consumer. See doc/MATHLIB_UPGRADE.md §2a-quater. det (of fun a b => pderiv (cols b) (f (rows a)))
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialJacobianMinor · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Jacobian.lean:28
theorem polynomialImageClosure_dimension_of_jacobian reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

Given a finite polynomial parameterization f of κ-many coordinates by variables indexed by a finite set ι, together with d selected output coordinates rows and input variables cols, if the corresponding d × d Jacobian minor of f, formed from partial derivatives, is nonzero and the transcendence degree of the coordinate subalgebra generated by f is at most d, then the Zariski closure of the image of f has exact affine (irreducible-chain) dimension d.

Formal statement
ι κ :
Type*
Finite ι
Finite κ
d :
f :
κ → MvPolynomial ι ℂ
rows :
Fin d → κ
cols :
Fin d → ι
hminor :
polynomialJacobianMinor f rows cols ≠ 0
Proof (Lean source)
theorem polynomialImageClosure_dimension_of_jacobian {ι κ : Type*} [Finite ι] [Finite κ] {d : ℕ} (f : κ → MvPolynomial ι ℂ) (rows : Fin d → κ) (cols : Fin d → ι) (hminor : polynomialJacobianMinor f rows cols ≠ 0) (hupper : @trdeg ℂ (polynomialCoordinateSubalgebra f) _ _ (jacobianCoordinateSubalgebraAlgebra f) ≤ d) : HasAffineZariskiDimension d (polynomialImageClosure f) := by let calgebra : Algebra ℂ (polynomialCoordinateSubalgebra f) := jacobianCoordinateSubalgebraAlgebra f let selected : Fin d → polynomialCoordinateSubalgebra f := fun a => ⟨f (rows a), by change f (rows a) ∈ (polynomialPullback f).range exact ⟨MvPolynomial.X (rows a), by simp [polynomialPullback]⟩⟩ have hind := algebraicIndependent_of_polynomialJacobianMinor_ne_zero f rows cols hminor have hselected : @AlgebraicIndependent (Fin d) ℂ (polynomialCoordinateSubalgebra f) selected _ _ calgebra := by apply (@AlgHom.algebraicIndependent_iff (Fin d) ℂ (polynomialCoordinateSubalgebra f) (MvPolynomial ι ℂ) selected _ _ _ calgebra _ (polynomialCoordinateSubalgebra f).val val_injective).mp simpa [selected, Function.comp_def] using hind have hlower : (d : Cardinal) ≤ @trdeg ℂ (polynomialCoordinateSubalgebra f) _ _ (jacobianCoordinateSubalgebraAlgebra f) := by simpa using (@AlgebraicIndependent.lift_cardinalMk_le_trdeg (Fin d) ℂ (polynomialCoordinateSubalgebra f) selected _ _ calgebra _ hselected) exact polynomialImageClosure_dimension_of_trdeg f d (le_antisymm hupper hlower)
6 supporting declarations (lemmas, instances)
Polynomial­Retract­Dimension 1 core · 2 supporting This file proves that polynomial retracts preserve irreducibility and transfer the exact affine chain dimension of their source affine space to their range. ★ polynomialRetract_range_dimension

Dimension transfer along polynomial retractions

This file proves that polynomial retracts preserve irreducibility and transfer the exact affine chain dimension of their source affine space to their range.

theorem polynomialRetract_range_dimension reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For maps between the affine space ℂ^d and ℂ^κ, if f is coordinatewise polynomial, an accompanying map g back to ℂ^d is coordinatewise polynomial, and g is a left inverse of f, i.e. g (f x) = x for every x, then the range of f has exact affine (irreducible-chain) dimension d, matching the dimension of its source space.

Formal statement
d :
κ :
Type*
(Fin d → ℂ) → (κ → ℂ)
(κ → ℂ) → (Fin d → ℂ)
hleft :
Proof (Lean source)
theorem polynomialRetract_range_dimension {d : ℕ} {κ : Type*} {f : (Fin d → ℂ) → (κ → ℂ)} {g : (κ → ℂ) → (Fin d → ℂ)} (hf : IsPolynomialMap f) (hg : IsPolynomialMap g) (hleft : LeftInverse g f) : HasAffineZariskiDimension d (range f) := by have hbase := affineSpace_hasAffineZariskiDimension d constructor · obtain ⟨chain, hmono, hirr, _⟩ := hbase.1 refine ⟨fun i => f '' chain i, image_strictMono_global f hleft.injective hmono, ?_, ?_⟩ · intro i exact irreducible_image_polynomial_retract hf hg hleft (hirr i) · intro i _ hx rcases hx with ⟨x, _, rfl⟩ exact ⟨x, rfl⟩ · rintro ⟨chain, hmono, hirr, hsub⟩ apply hbase.2 refine ⟨fun i => g '' chain i, ?_, ?_, fun _ => Set.subset_univ _⟩ · apply image_strictMono_on g (S := range f) (hc := hmono) (hsub := hsub) rintro _ ⟨a, rfl⟩ _ ⟨b, rfl⟩ hxy apply congrArg f simpa [hleft a, hleft b] using hxy · intro i have hi := hirr i have hclosed : affineZariskiClosure (g '' chain i) = g '' chain i := by have heq : g '' chain i = f ⁻¹' chain i := by ext x constructor · rintro ⟨y, hy, rfl⟩ have hyrange := hsub i hy obtain ⟨z, rfl⟩ := hyrange simpa [hleft z] using hy · intro hx exact ⟨f x, hx, hleft x⟩ rw [heq] exact polynomial_preimage_closed hf hi.1 refine ⟨hclosed, hi.2.1.image g, ?_⟩ intro A B hA hB hAB have hfA := polynomial_image_closed_of_retract hf hg hleft hA have hfB := polynomial_image_closed_of_retract hf hg hleft hB have himage : chain i = f '' A ∪ f '' B := by rw [← Set.image_union, ← hAB] ext y constructor · intro hy exact ⟨g y, ⟨y, hy, rfl⟩, by obtain ⟨x, rfl⟩ := hsub i hy simp [hleft x]⟩ · rintro ⟨x, ⟨y, hy, rfl⟩, rfl⟩ obtain ⟨z, rfl⟩ := hsub i hy simpa [hleft z] using hy rcases hi.2.2 _ _ hfA hfB himage with h | h · left change g '' chain i = A rw [h] ext x constructor · rintro ⟨_, ⟨a, ha, rfl⟩, rfl⟩ simpa [hleft a] using ha · intro hx exact ⟨f x, ⟨x, hx, rfl⟩, hleft x⟩ · right change g '' chain i = B rw [h] ext x constructor · rintro ⟨_, ⟨a, ha, rfl⟩, rfl⟩ simpa [hleft a] using ha · intro hx exact ⟨f x, ⟨x, hx, rfl⟩, hleft x⟩
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.polynomialRetract_range_dimension · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/PolynomialRetractDimension.lean:114 · uses HasAffineZariskiDimension , IsPolynomialMap
2 supporting declarations (lemmas, instances)
  • image_strictMono_on lemma — If a function is injective on a set containing every member of a strictly increasing chain of sets, then the images of those sets form a strictly increasing chain.
    α β ι :
    Type*
    f :
    α → β
    S :
    Set α
    hf :
    InjOn f S
    chain :
    ι → Set α
    hc :
    hsub :
    ∀ i, chain i ⊆ S
    StrictMono (fun i => f '' chain i)
    Proof (Lean source)
    lemma image_strictMono_on {α β ι : Type*} [Preorder ι] (f : α → β) {S : Set α} (hf : InjOn f S) {chain : ι → Set α} (hc : StrictMono chain) (hsub : ∀ i, chain i ⊆ S) : StrictMono (fun i => f '' chain i) := by intro i j hij have hs := hc hij refine Set.ssubset_iff_subset_ne.mpr ⟨Set.image_mono hs.le, ?_⟩ intro heq change f '' chain i = f '' chain j at heq apply hs.ne ext x constructor · intro hx have him : f x ∈ f '' chain j := by rw [← heq] exact ⟨x, hx, rfl⟩ obtain ⟨y, hy, hfy⟩ := him exact hf (hsub i hx) (hsub j hy) hfy.symm ▸ hy · intro hx have him : f x ∈ f '' chain i := by rw [heq] exact ⟨x, hx, rfl⟩ obtain ⟨y, hy, hfy⟩ := him exact hf (hsub j hx) (hsub i hy) hfy.symm ▸ hy
    Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.image_strictMono_on · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/PolynomialRetractDimension.lean:46
  • irreducible_image_polynomial_retract lemma — A polynomial embedding with a polynomial retraction sends irreducible affine-closed subsets to irreducible affine-closed images.
    ι κ :
    Type*
    (ι → ℂ) → (κ → ℂ)
    (κ → ℂ) → (ι → ℂ)
    hleft :
    A :
    Set (ι → ℂ)
    Proof (Lean source)
    lemma irreducible_image_polynomial_retract {ι κ : Type*} {f : (ι → ℂ) → (κ → ℂ)} {g : (κ → ℂ) → (ι → ℂ)} (hf : IsPolynomialMap f) (hg : IsPolynomialMap g) (hleft : LeftInverse g f) {A : Set (ι → ℂ)} : IsIrreducibleAffineClosed A → IsIrreducibleAffineClosed (f '' A) := by intro hA refine ⟨polynomial_image_closed_of_retract hf hg hleft hA.1, hA.2.1.image f, ?_⟩ intro B C hB hC hBC have hpreB := polynomial_preimage_closed hf hB have hpreC := polynomial_preimage_closed hf hC have hApre : A = f ⁻¹' B ∪ f ⁻¹' C := by ext x constructor · intro hx exact (Set.ext_iff.mp hBC (f x)).mp ⟨x, hx, rfl⟩ · intro hx have him : f x ∈ f '' A := (Set.ext_iff.mp hBC (f x)).mpr hx obtain ⟨y, hy, hfy⟩ := him exact hleft.injective hfy ▸ hy rcases hA.2.2 _ _ hpreB hpreC hApre with h | h · left ext y constructor · rintro ⟨x, hx, rfl⟩ have : x ∈ f ⁻¹' B := by rw [← h]; exact hx exact this · intro hy exact (Set.ext_iff.mp hBC y).mpr (inl hy) · right ext y constructor · rintro ⟨x, hx, rfl⟩ have : x ∈ f ⁻¹' C := by rw [← h]; exact hx exact this · intro hy exact (Set.ext_iff.mp hBC y).mpr (inr hy)
    Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.irreducible_image_polynomial_retract · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/PolynomialRetractDimension.lean:74
Transcendence 2 core · 3 supporting The central commutative-algebra input is the finite-type domain theorem: Krull dimension equals transcendence degree. ★ polynomialImageClosure_dimension_of_trdeg

Transcendence degree computes polynomial-image dimension

The central commutative-algebra input is the finite-type domain theorem: Krull dimension equals transcendence degree. It is then transported through the coordinate-ring equivalence of the preceding module.

def coordinateSubalgebraAlgebra reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

The polynomial coordinate subalgebra inherits its usual complex-algebra structure, allowing its transcendence degree to be formed locally.

Definition (Lean source)
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.coordinateSubalgebraAlgebra · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Transcendence.lean:23 · uses polynomialCoordinateSubalgebra
theorem polynomialImageClosure_dimension_of_trdeg reviewed
Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension

For a finite polynomial parameterization f of κ-many coordinates by variables indexed by a finite set ι, if the transcendence degree of the subalgebra of generated by the coordinate polynomials of f equals d, then the Zariski closure of the image of f has exact affine (irreducible-chain) dimension d.

Formal statement
ι κ :
Type*
Finite ι
Finite κ
f :
κ → MvPolynomial ι ℂ
d :
Proof (Lean source)
theorem polynomialImageClosure_dimension_of_trdeg {ι κ : Type*} [Finite ι] [Finite κ] (f : κ → MvPolynomial ι ℂ) (d : ℕ) (htrdeg : @trdeg ℂ (polynomialCoordinateSubalgebra f) _ _ (coordinateSubalgebraAlgebra f) = d) : HasAffineZariskiDimension d (polynomialImageClosure f) := by -- The range subalgebra is a finite-type domain: use `Subalgebra.FG.map` on -- `Algebra.FiniteType.out` for the finite-variable source polynomial ring. -- Apply `finiteTypeDomain_ringKrullDim_eq_trdeg`, transport Krull dimension -- through `polynomialImageClosure_coordinateRing`, and finish with -- `affineZariskiDimension_iff_coordinateRingKrullDim`. Closedness is closure -- idempotence; the image of the zero source point witnesses nonemptiness. let S : Subalgebra ℂ (MvPolynomial ι ℂ) := polynomialCoordinateSubalgebra f letI : Algebra ℂ S := coordinateSubalgebraAlgebra f let sDom : IsDomain S := inferInstance letI : IsDomain S := sDom have hfg : S.FG := by simpa [S, polynomialCoordinateSubalgebra] using (Subalgebra.FG.map (polynomialPullback f) Algebra.FiniteType.out) let sFT : FiniteType ℂ S := S.fg_iff_finiteType.mp hfg letI : FiniteType ℂ S := sFT have hdimS : ringKrullDim S = d := by exact @finiteTypeDomain_ringKrullDim_eq_trdeg ℂ S _ _ (coordinateSubalgebraAlgebra f) sDom sFT d (by simpa [S] using htrdeg) have hcoord : ringKrullDim (MvPolynomial κ ℂ ⧸ vanishingIdeal ℂ (polynomialImageClosure f)) = d := by rw [ringKrullDim_eq_of_ringEquiv (polynomialImageClosure_coordinateRing f).toRingEquiv] exact hdimS exact (affineZariskiDimension_iff_coordinateRingKrullDim (affineZariskiClosure_idem _)).mpr hcoord
3 supporting declarations (lemmas, instances)
  • finiteTypeDomain_ringKrullDim_eq_trdeg theorem — A finitely generated integral algebra over a field has Krull dimension equal to its finite transcendence degree, the number of algebraically independent coordinates it contains.
    K A :
    d :
    htrdeg :
    trdeg K A = d
    Proof (Lean source)
    theorem finiteTypeDomain_ringKrullDim_eq_trdeg (K A : Type*) [Field K] [CommRing A] [Algebra K A] [IsDomain A] [FiniteType K A] (d : ℕ) (htrdeg : trdeg K A = d) : ringKrullDim A = d := by -- `exists_finite_inj_algHom_of_fg` gives `g : K[X₁, ..., Xₛ] →ₐ[K] A`. -- For the upper dimension inequality, contract prime chains along `g`; strictness -- follows from `Ideal.comap_lt_comap_of_integral_mem_sdiff`. For the lower -- inequality, lift each finite `LTSeries` one prime at a time with -- `Ideal.exists_ideal_over_prime_of_isIntegral_of_isPrime` (going up). -- `MvPolynomial.ringKrullDim_of_isNoetherianRing` computes the normalized ring. -- Finally `Algebra.trdeg_add_eq`, `Algebra.IsAlgebraic.trdeg_eq_zero`, and -- `MvPolynomial.trdeg_of_isDomain` identify `s` with the certified `d`. obtain ⟨s, g, hg_inj, hg_int⟩ := exists_integral_inj_algHom_of_fg K A let a : Algebra (MvPolynomial (Fin s) K) A := g.toRingHom.toAlgebra letI : Algebra (MvPolynomial (Fin s) K) A := a have ha_int : @Algebra.IsIntegral (MvPolynomial (Fin s) K) A _ _ a := by refine @Algebra.IsIntegral.mk (MvPolynomial (Fin s) K) A _ _ a ?_ intro x exact hg_int x let f : PrimeSpectrum A → PrimeSpectrum (MvPolynomial (Fin s) K) := PrimeSpectrum.comap g.toRingHom have hf_mono : StrictMono f := by intro I J hIJ change I.asIdeal < J.asIdeal at hIJ change I.asIdeal.comap g.toRingHom < J.asIdeal.comap g.toRingHom obtain ⟨hIJle, x, hxJ, hxI⟩ := SetLike.lt_iff_le_and_exists.mp hIJ apply @Ideal.comap_lt_comap_of_integral_mem_sdiff (MvPolynomial (Fin s) K) _ A _ I.asIdeal J.asIdeal a I.isPrime hIJle · exact ⟨hxJ, hxI⟩ · exact hg_int x have lift_chain : ∀ (n : ℕ) (p : LTSeries (PrimeSpectrum (MvPolynomial (Fin s) K))), p.length = n → ∃ q : LTSeries (PrimeSpectrum A), q.length = n ∧ f q.last = p.last := by intro n induction n with | zero => intro p hp obtain ⟨Q, hQ⟩ := hg_int.comap_surjective hg_inj p.last refine ⟨LTSeries.mk 0 (fun _ => Q) (by intro i j hij fin_cases i fin_cases j exact (lt_irrefl _ hij).elim), rfl, ?_⟩ exact hQ | succ n ih => intro p hp let p' : LTSeries (PrimeSpectrum (MvPolynomial (Fin s) K)) := p.eraseLast have hp' : p'.length = n := by simp [p', hp] obtain ⟨q, hq_len, hq_last⟩ := ih p' hp' have hlast : p'.last < p.last := by simpa [p'] using p.eraseLast_last_rel_last (by simp [hp]) have hle : q.last.asIdeal.comap g.toRingHom ≤ p.last.asIdeal := by calc q.last.asIdeal.comap g.toRingHom = (f q.last).asIdeal := rfl _ = p'.last.asIdeal := congrArg PrimeSpectrum.asIdeal hq_last _ ≤ p.last.asIdeal := hlast.le obtain ⟨Q, hQ_ge, hQ_prime, hQ_comap⟩ := @Ideal.exists_ideal_over_prime_of_isIntegral_of_isPrime (MvPolynomial (Fin s) K) _ A _ a ha_int p.last.asIdeal p.last.isPrime q.last.asIdeal q.last.isPrime hle let Q' : PrimeSpectrum A := ⟨Q, hQ_prime⟩ have hqQ : q.last < Q' := by change q.last.asIdeal < Q refine lt_of_le_of_ne hQ_ge ?_ intro h_eq have h_eq' : p'.last.asIdeal = p.last.asIdeal := by calc p'.last.asIdeal = q.last.asIdeal.comap g.toRingHom := by exact (congrArg PrimeSpectrum.asIdeal hq_last).symm _ = Q.comap g.toRingHom := congrArg (Ideal.comap g.toRingHom) h_eq _ = p.last.asIdeal := hQ_comap apply hlast.ne exact PrimeSpectrum.ext h_eq' refine ⟨q.snoc Q' hqQ, ?_, ?_⟩ · simp [hq_len] · apply PrimeSpectrum.ext simp only [RelSeries.last_snoc] change Q.comap g.toRingHom = p.last.asIdeal exact hQ_comap have hdim : ringKrullDim A = ringKrullDim (MvPolynomial (Fin s) K) := by apply le_antisymm · exact Order.krullDim_le_of_strictMono f hf_mono · rw [MvPolynomial.ringKrullDim_of_isNoetherianRing] rw [ringKrullDim_eq_zero_of_field] simp only [zero_add, Nat.card_eq_fintype_card, Fintype.card_fin] apply (Order.le_krullDim_iff).mpr have hpoly : (s : WithBot ℕ∞) = Order.krullDim (PrimeSpectrum (MvPolynomial (Fin s) K)) := by change (s : WithBot ℕ∞) = ringKrullDim (MvPolynomial (Fin s) K) rw [MvPolynomial.ringKrullDim_of_isNoetherianRing, ringKrullDim_eq_zero_of_field] simp obtain ⟨p, hp⟩ := (Order.le_krullDim_iff.mp hpoly.le) obtain ⟨q, hq, _⟩ := lift_chain s p hp exact ⟨q, hq⟩ rw [hdim, MvPolynomial.ringKrullDim_of_isNoetherianRing] have ha_alg : @Algebra.IsAlgebraic (MvPolynomial (Fin s) K) A _ _ a := @Algebra.IsIntegral.isAlgebraic (MvPolynomial (Fin s) K) A _ _ a (inferInstance) ha_int haveI : IsScalarTower K (MvPolynomial (Fin s) K) A := IsScalarTower.of_algebraMap_eq' (by ext x exact (g.commutes x).symm) haveI : FaithfulSMul (MvPolynomial (Fin s) K) A := (faithfulSMul_iff_algebraMap_injective (MvPolynomial (Fin s) K) A).mpr (by change Injective g.toRingHom exact hg_inj) have hzero : @trdeg (MvPolynomial (Fin s) K) A _ _ a = 0 := @trdeg_eq_zero (MvPolynomial (Fin s) K) A _ _ a ha_alg have h := @lift_trdeg_add_eq K (MvPolynomial (Fin s) K) A _ _ _ (inferInstance) (inferInstance) a (inferInstance) (inferInstance) (inferInstance) (inferInstance) (inferInstance) rw [hzero, lift_zero, add_zero] at h have hs : s = d := by have hnat := congrArg Cardinal.toNat h simp only [Cardinal.toNat_lift] at hnat rw [MvPolynomial.trdeg_of_isDomain, htrdeg] at hnat simpa using hnat simp [ringKrullDim_eq_zero_of_field, hs]
    Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.finiteTypeDomain_ringKrullDim_eq_trdeg · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Transcendence.lean:30
  • coordinateSubalgebra_trdeg_le_of_surjection theorem — A surjective presentation by a polynomial algebra in a given number of generators certifies that the coordinate subalgebra has no larger transcendence degree.
    ι κ τ :
    Type*
    Finite τ
    f :
    κ → MvPolynomial ι ℂ
    present :
    hsurj :
    Surjective present
    Proof (Lean source)
    theorem coordinateSubalgebra_trdeg_le_of_surjection {ι κ τ : Type*} [Finite τ] (f : κ → MvPolynomial ι ℂ) (present : MvPolynomial τ ℂ →ₐ[ℂ] polynomialCoordinateSubalgebra f) (hsurj : Surjective present) : @trdeg ℂ (polynomialCoordinateSubalgebra f) _ _ (coordinateSubalgebraAlgebra f) ≤ card τ := by -- Apply `Algebra.trdeg_le_of_surjective present hsurj`, rewrite the source -- with `MvPolynomial.trdeg_of_isDomain`, then simplify `#(Fin d)` to `d`. let calgebra : Algebra ℂ (polynomialCoordinateSubalgebra f) := coordinateSubalgebraAlgebra f letI := ofFinite τ have h := @lift_trdeg_le_of_surjective ℂ (MvPolynomial τ ℂ) (polynomialCoordinateSubalgebra f) _ _ _ _ calgebra present hsurj simpa [calgebra, Nat.card_eq_fintype_card] using h
    Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.coordinateSubalgebra_trdeg_le_of_surjection · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Transcendence.lean:188
  • coordinateSubalgebra_trdeg_le_of_polynomial_factorization theorem — The algebraic dimension (transcendence degree) of the coordinate algebra generated by a polynomial map is at most k whenever each of its coordinates can be written as a polynomial expression in a fixed family of k polynomials. This is the factorization-based companion to a Jacobian-minor bound: it certifies an upper bound on dimension from an explicit polynomial reparametrization rather than from a derivative rank.
    ι κ τ :
    Type
    Finite τ
    f :
    κ → MvPolynomial ι ℂ
    g :
    τ → MvPolynomial ι ℂ
    h :
    κ → MvPolynomial τ ℂ
    hfac :
    ∀ k, bind₁ g (h k) = f k
    Proof (Lean source)
    theorem coordinateSubalgebra_trdeg_le_of_polynomial_factorization {ι κ τ : Type} [Finite τ] (f : κ → MvPolynomial ι ℂ) (g : τ → MvPolynomial ι ℂ) (h : κ → MvPolynomial τ ℂ) (hfac : ∀ k, bind₁ g (h k) = f k) : @trdeg ℂ (polynomialCoordinateSubalgebra f) _ _ (Subalgebra.algebra (polynomialCoordinateSubalgebra f)) ≤ card τ := by letI := ofFinite τ let A := polynomialCoordinateSubalgebra f let B := polynomialCoordinateSubalgebra g letI : Algebra ℂ A := Subalgebra.algebra A letI : Algebra ℂ B := Subalgebra.algebra B have hAB : A ≤ B := by rintro q ⟨P, rfl⟩ refine ⟨MvPolynomial.bind₁ h P, ?_⟩ change bind₁ g (bind₁ h P) = bind₁ f P rw [MvPolynomial.bind₁_bind₁] rw [show (fun k => bind₁ g (h k)) = f from funext hfac] let inc : A →ₐ[ℂ] B := Subalgebra.inclusion hAB have hinc : Injective inc := Subalgebra.inclusion_injective hAB have hleAB := @trdeg_le_of_injective ℂ A _ _ (Subalgebra.algebra A) B _ (Subalgebra.algebra B) inc hinc have hleB := @trdeg_le_of_surjective ℂ (MvPolynomial τ ℂ) _ _ _ B _ (Subalgebra.algebra B) (polynomialPullback g).rangeRestrict (polynomialPullback g).rangeRestrict_surjective change @trdeg ℂ A _ _ (Subalgebra.algebra A) ≤ card τ exact hleAB.trans (by simpa [B] using hleB)
    Causalean.Mathlib.AlgebraicGeometry.PolynomialImageDimension.coordinateSubalgebra_trdeg_le_of_polynomial_factorization · Causalean/Mathlib/AlgebraicGeometry/PolynomialImageDimension/Transcendence.lean:207