Module

NonfiniteGeneratorCount.lean

Nyll.SchemeTheory.RingTheory.NonfiniteGeneratorCount
12 declarations indexed from sourceView source ↗

The nonfinite-generator invariant

Stacks Project, Section 58.32, defines NF by considering every ordered finite algebra-generating family, taking its longest integral prefix, and minimizing the number of remaining generators. This file constructs that literal minimum and proves that it vanishes precisely for a finite algebra.

The algebra structure records the original map φ; integrality uses its actual coefficient map. The auxiliary quotient map τ does not occur in this numerical definition. The construction works for any finite-type commutative algebra, hence for the original étale map, and allows the zero ring and empty generating families. It does not assert the subsequent positive-characteristic coordinate-modification lemma.

Source: https://stacks.math.columbia.edu/tag/0G1E

Imports6
  • Mathlib.Algebra.Algebra.Subalgebra.Lattice
  • Mathlib.Algebra.MvPolynomial.Eval
  • Mathlib.Data.Nat.Find
  • Mathlib.RingTheory.FiniteType
  • Mathlib.RingTheory.IntegralClosure.IsIntegral.Basic
  • Mathlib.RingTheory.IntegralClosure.Algebra.Basic
Imported by1

Declarations

SchemeTheory.integralPrefixLength

The largest length of an integral prefix in the displayed ordered family.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
def integralPrefixLength {r : ℕ} (y : Fin r → C) : ℕ
SchemeTheory.integralPrefixLength_le

The chosen prefix never exceeds the length of the family.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
theorem integralPrefixLength_le {r : ℕ} (y : Fin r → C) :
    integralPrefixLength R y ≤ r
SchemeTheory.integralPrefixLength_spec

Every element in the chosen prefix is integral over the original base.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
theorem integralPrefixLength_spec {r : ℕ} (y : Fin r → C) :
    ∀ i : Fin r, i.val < integralPrefixLength R y → IsIntegral R (y i)
SchemeTheory.le_integralPrefixLength

Any integral prefix is no longer than the constructed largest prefix.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
theorem le_integralPrefixLength {r : ℕ} (y : Fin r → C) {s : ℕ}
    (hs : s ≤ r) (hy : ∀ i : Fin r, i.val < s → IsIntegral R (y i)) :
    s ≤ integralPrefixLength R y
SchemeTheory.integralPrefixLength_eq_iff

The prefix has full length exactly when all displayed generators are integral.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
theorem integralPrefixLength_eq_iff {r : ℕ} (y : Fin r → C) :
    integralPrefixLength R y = r ↔ ∀ i : Fin r, IsIntegral R (y i)
SchemeTheory.exists_ordered_algebra_generators
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
theorem exists_ordered_algebra_generators [Algebra.FiniteType R C] :
    ∃ (r : ℕ) (y : Fin r → C), Algebra.adjoin R (Set.range y) = ⊤
SchemeTheory.exists_nonfinite_generator_count
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
theorem exists_nonfinite_generator_count [Algebra.FiniteType R C] :
    ∃ d : ℕ, ∃ (r : ℕ) (y : Fin r → C),
      Algebra.adjoin R (Set.range y) = ⊤ ∧ r - integralPrefixLength R y = d
SchemeTheory.nonfiniteGeneratorCount

The invariant NF of Stacks 58.32: the minimum, over all ordered finite algebra-generating families, of their length minus their longest integral prefix.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
def nonfiniteGeneratorCount [Algebra.FiniteType R C] : ℕ
SchemeTheory.nonfiniteGeneratorCount_spec

The minimum is attained by an actual ordered algebra-generating family.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
theorem nonfiniteGeneratorCount_spec [Algebra.FiniteType R C] :
    ∃ (r : ℕ) (y : Fin r → C), Algebra.adjoin R (Set.range y) = ⊤ ∧
      r - integralPrefixLength R y = nonfiniteGeneratorCount R C
SchemeTheory.nonfiniteGeneratorCount_le

Every displayed generating family bounds the minimum from above.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
theorem nonfiniteGeneratorCount_le [Algebra.FiniteType R C]
    {r : ℕ} (y : Fin r → C) (hy : Algebra.adjoin R (Set.range y) = ⊤) :
    nonfiniteGeneratorCount R C ≤ r - integralPrefixLength R y
SchemeTheory.nonfiniteGeneratorCount_le_of_prefix

A known integral prefix, even before computing the longest one, bounds NF. This is the bound used after modifying the polynomial coordinates.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
theorem nonfiniteGeneratorCount_le_of_prefix [Algebra.FiniteType R C]
    {r s : ℕ} (y : Fin r → C) (hy : Algebra.adjoin R (Set.range y) = ⊤)
    (hs : s ≤ r) (hint : ∀ i : Fin r, i.val < s → IsIntegral R (y i)) :
    nonfiniteGeneratorCount R C ≤ r - s
SchemeTheory.nonfiniteGeneratorCount_eq_zero_iff

The original normalization-failure invariant vanishes exactly when the algebra is finite as a module over its base. No nonzero-ring hypothesis is needed.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace SchemeTheory
universe u v
variable (R : Type u) {C : Type v} [CommRing R] [CommRing C] [Algebra R C]
variable (C)
theorem nonfiniteGeneratorCount_eq_zero_iff [Algebra.FiniteType R C] :
    nonfiniteGeneratorCount R C = 0 ↔ Module.Finite R C