FLT/Slop/DimensionTheorem/Defs.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Pinned FLT blueprint introduction
12 declarations, 0 contain sorry, 0 declared as axioms
The Hilbert–Samuel function, d(R), and δ(R)
Definitions of the quantities compared by the dimension theorem for a
Noetherian local ring (R, 𝔪) (the third, the Krull dimension, is Mathlib's
ringKrullDim), together with basic finiteness and monotonicity lemmas.
Main definitions
DimensionTheorem.colength R I— the lengthℓ_R(R ⧸ I)as a natural number (Module.lengthtruncated at⊤; bycolength_coenothing is lost whenIis an ideal of definition).DimensionTheorem.hilbertSamuel R— the Hilbert–Samuel functionn ↦ ℓ_R(R ⧸ 𝔪ⁿ).DimensionTheorem.growthDeg R—d(R), the leastdsuch thatℓ(R ⧸ 𝔪ⁿ) = O(nᵈ).DimensionTheorem.minGenPrimary R—δ(R), the least number of generators (Submodule.spanFinrank) of an ideal of definition ofR, i.e. an ideal with radical𝔪.
Main results
length_quotient_ne_top_of_radical_eq— quotients by ideals of definition have finite length; the Artinian input is Hopkins–Levitzki via Mathlib'sIsNoetherianRing.isArtinianRing_of_krullDimLE_zero.colength_le_colength,hilbertSamuel_monotone— comparison lemmas.length_quotient_eq_add— additivityℓ(R/I) = ℓ(J/I) + ℓ(R/J)forI ≤ J, from the exact sequence0 → J/I → R/I → R/J → 0.
Design note
Classically (Atiyah–Macdonald Ch. 11; Stacks Project, tag 00KQ) d(R) is
defined as the degree of the Hilbert–Samuel polynomial, whose existence is the
Hilbert–Serre theorem. This development instead takes the growth-order
formulation above, which requires no graded machinery; the two definitions
agree once eventual polynomiality is known. Upgrading growthDeg to the
polynomial degree (i.e. formalizing Hilbert–Serre) is the natural next step.
Imports (3)
Imported by 4 files
- def
DimensionTheorem.colengthThe length ofR ⧸ Ias a natural number (junk value0when the length is infinite; seecolength_coefor the case of an ideal of definition) line 61 sourceSource documentation
The length of
R ⧸ Ias a natural number (junk value0when the length is infinite; seecolength_coefor the case of an ideal of definition).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,Ideal,NatProof uses:
ENat.toNat,Module.length,HasQuotient.Quotient10 instances, coercions and auxiliary constants left out.
noncomputable def colength (I : Ideal R) : ℕ := …
- def
DimensionTheorem.hilbertSamuelThe Hilbert–Samuel function of a local ring:n ↦ ℓ(R ⧸ 𝔪ⁿ)line 65 sourceSource documentation
The Hilbert–Samuel function of a local ring:
n ↦ ℓ(R ⧸ 𝔪ⁿ).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,NatProof uses: DimensionTheorem.colength,
HPow.hPow,Ideal,IsLocalRing.maximalIdeal8 instances, coercions and auxiliary constants left out.
noncomputable def hilbertSamuel (n : ℕ) : ℕ := …
- def
DimensionTheorem.growthDegThe growth degreed(R)of the Hilbert–Samuel function: the leastdsuch thatℓ(R ⧸ 𝔪ⁿ) = O(nᵈ)line 74 sourceSource documentation
The growth degree
d(R)of the Hilbert–Samuel function: the leastdsuch thatℓ(R ⧸ 𝔪ⁿ) = O(nᵈ).Classically, for a Noetherian local ring, this is the degree of the Hilbert–Samuel polynomial. The present development does not construct that eventual polynomial; it uses this Big-O formulation as the formal invariant.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,NatProof uses:
InfSet.sInf,Set.ofPred, DimensionTheorem.GrowthLE, DimensionTheorem.hilbertSamuel5 instances, coercions and auxiliary constants left out.
noncomputable def growthDeg : ℕ := …
- def
DimensionTheorem.minGenPrimaryδ(R): the minimal number of generators of an ideal of definition ofR, i.e. of an𝔪-primary ideal (an ideal with radical𝔪) line 79 sourceSource documentation
δ(R): the minimal number of generators of an ideal of definition ofR, i.e. of an𝔪-primary ideal (an ideal with radical𝔪).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,NatProof uses:
InfSet.sInf,Set.ofPred,Exists,Ideal,And,Eq,Ideal.radical,IsLocalRing.maximalIdeal,Submodule.spanFinrank7 instances, coercions and auxiliary constants left out.
noncomputable def minGenPrimary : ℕ := …
- instance
DimensionTheorem.(instance at line 84)line 84 sourceSource documentation
A nontrivial quotient of a local ring is local. (Instance so that
hilbertSamuel (R ⧸ I)elaborates.)instance (I : Ideal R) [Nontrivial (R ⧸ I)] : IsLocalRing (R ⧸ I) := …
- lemma
DimensionTheorem.isArtinianRing_quotient_of_radical_eqA quotient by an ideal of definition is an Artinian ring line 94 sourceSource documentation
A quotient by an ideal of definition is an Artinian ring.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Ideal,Eq,Ideal.radical,IsLocalRing.maximalIdeal,IsArtinianRing,HasQuotient.QuotientProof uses:
IsLocalRing.quotient_artinian_of_mem_minimalPrimes_of_isLocalRing,And.intro,And,Ideal.IsPrime,LE.le,Ideal.IsMaximal.isPrime,Eq.rec,Ideal.le_radical,Eq.mpr,id,congrArg,Eq.symm,Iff.mpr,Ideal.IsPrime.radical_le_iff,And.left,And.right12 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
lemma isArtinianRing_quotient_of_radical_eq {I : Ideal R} (h : I.radical = maximalIdeal R) : IsArtinianRing (R ⧸ I) := by … - lemma
DimensionTheorem.length_quotient_ne_top_of_radical_eqA quotient by an ideal of definition has finite length overRline 103 sourceSource documentation
A quotient by an ideal of definition has finite length over
R.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Ideal,Eq,Ideal.radical,IsLocalRing.maximalIdeal,Ne,ENat,Module.length,HasQuotient.Quotient,Top.topProof uses:
IsArtinian, DimensionTheorem.isArtinianRing_quotient_of_radical_eq,IsNoetherian,Eq.mpr,id,congrArg,Eq.symm,propext,isNoetherianRing_iff,inferInstance,Module.length_eq_of_surjective,Function.Surjective,RingHom,Algebra.algebraMap,Ideal.Quotient.mk,Ideal.Quotient.algebraMap_eq,Ideal.Quotient.mk_surjective,Module.length_ne_top31 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
lemma length_quotient_ne_top_of_radical_eq {I : Ideal R} (h : I.radical = maximalIdeal R) : Module.length R (R ⧸ I) ≠ ⊤ := by … - lemma
DimensionTheorem.colength_coeFor an ideal of definition,colengthreally is the length line 113 sourceSource documentation
For an ideal of definition,
colengthreally is the length.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Ideal,Eq,Ideal.radical,IsLocalRing.maximalIdeal,ENat, DimensionTheorem.colength,Module.length,HasQuotient.QuotientProof uses:
Eq.mpr,ENat.toNat,id,congrArg,Nat,DimensionTheorem.colength.eq_1,ENat.natCast_toNat, DimensionTheorem.length_quotient_ne_top_of_radical_eq,Eq.refl20 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma colength_coe {I : Ideal R} (h : I.radical = maximalIdeal R) : (colength R I : ℕ∞) = Module.length R (R ⧸ I) := by …Mentions: DimensionTheorem.colength
- lemma
DimensionTheorem.radical_pow_eq_of_radical_eqPowers of an ideal of definition are ideals of definition line 120 sourceSource documentation
Powers of an ideal of definition are ideals of definition.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Ideal,Eq,Ideal.radical,IsLocalRing.maximalIdeal,Nat,Ne,OfNat.ofNat,HPow.hPowProof uses:
Eq.mpr,id,congrArg,Ideal.radical_pow,Eq.refl21 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma radical_pow_eq_of_radical_eq {I : Ideal R} (h : I.radical = maximalIdeal R) {n : ℕ} (hn : n ≠ 0) : (I ^ n).radical = maximalIdeal R := by … - lemma
DimensionTheorem.colength_le_colengthcolengthis antitone: a larger ideal has a smaller quotient line 132 sourceSource documentation
colengthis antitone: a larger ideal has a smaller quotient. The hypothesis thatIis an ideal of definition guarantees finiteness.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Ideal,LE.le,Eq,Ideal.radical,IsLocalRing.maximalIdeal,Nat, DimensionTheorem.colengthProof uses:
Submodule.comap,RingHom.id,LinearMap.id,Eq.mpr,id,congrArg,Submodule,Submodule.comap_id,Function.Surjective,HasQuotient.Quotient,LinearMap,Submodule.mapQ,Submodule.Quotient.mk,Exists,Submodule.Quotient.mk_surjective,Exists.intro,rfl,ENat.toNat_le_toNat,Module.length,Module.length_le_of_surjectiveand 1 more29 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
lemma colength_le_colength {I J : Ideal R} (hIJ : I ≤ J) (h : I.radical = maximalIdeal R) : colength R J ≤ colength R I := by …Mentions: DimensionTheorem.colength
- lemma
DimensionTheorem.hilbertSamuel_monotoneThe Hilbert–Samuel function is monotone line 146 sourceSource documentation
The Hilbert–Samuel function is monotone.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Monotone,Nat, DimensionTheorem.hilbertSamuelProof uses:
monotone_nat_of_le_succ, DimensionTheorem.colength_le_colength,HPow.hPow,Ideal,IsLocalRing.maximalIdeal,HAdd.hAdd,OfNat.ofNat,Ideal.pow_le_pow_right,Nat.le_succ, DimensionTheorem.radical_pow_eq_of_radical_eq,Ideal.IsPrime.radical,Ideal.IsMaximal.isPrime,Nat.succ_ne_zero14 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma hilbertSamuel_monotone : Monotone (hilbertSamuel R) := by …
Mentions: DimensionTheorem.hilbertSamuel
- lemma
DimensionTheorem.length_quotient_eq_addAdditivity of length along a pair of nested idealsI ≤ J, from the exact sequence0 → J/I → R/I → R/J → 0(valid inℕ∞, no finiteness needed) line 156 sourceSource documentation
Additivity of length along a pair of nested ideals
I ≤ J, from the exact sequence0 → J/I → R/I → R/J → 0(valid inℕ∞, no finiteness needed).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,IsLocalRing,IsNoetherianRing,Ideal,LE.le,Eq,ENat,Module.length,HasQuotient.Quotient,HAdd.hAdd,Subtype,Submodule,Membership.mem,Submodule.map,RingHom.id,Submodule.mkQProof uses:
Submodule.comap,LinearMap.id,Eq.mpr,id,congrArg,Submodule.comap_id,Function.Surjective,LinearMap,Submodule.mapQ,Submodule.Quotient.mk,Exists,Submodule.Quotient.mk_surjective,Exists.intro,rfl,Module.length_eq_add_of_exact,Submodule.subtype,Submodule.subtype_injective,Function.Exact,LinearMap.ker,LinearMap.rangeand 5 more60 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
lemma length_quotient_eq_add (I J : Ideal R) (hIJ : I ≤ J) : Module.length R (R ⧸ I) = Module.length R (Submodule.map (Submodule.mkQ (I : Submodule R R)) (J : Submodule R R)) + Module.length R (R ⧸ J) := by …