Skip to content

Commit 0806ad5

Browse files
Thmoas-Guanmbkybky
andcommitted
feat(RingTheory): ringKrullDim of quotient via supportDim (leanprover-community#29937)
In this PR, we establish some lemma about `ringKrullDim` of quotient via lemmas of `supportDim`. Co-authored-by: Yongle Hu @mbkybky <mbkybky@gmail.com> Co-authored-by: Yongle Hu <140475041+mbkybky@users.noreply.github.com> Co-authored-by: Yongle Hu <mbkybky@gmail.com>
1 parent 585cee3 commit 0806ad5

1 file changed

Lines changed: 65 additions & 5 deletions

File tree

Mathlib/RingTheory/KrullDimension/Regular.lean

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,19 @@ theorem supportDim_quotSMulTop_succ_eq_supportDim_mem_jacobson {x : R} (reg : Is
110110
supportDim_quotSMulTop_succ_eq_of_notMem_minimalPrimes_of_mem_jacobson
111111
(fun _ ↦ reg.notMem_of_mem_minimalPrimes) hx
112112

113+
lemma _root_.ringKrullDim_quotSMulTop_succ_eq_ringKrullDim_of_mem_jacobson {x : R}
114+
(reg : IsSMulRegular R x) (hx : x ∈ Ring.jacobson R) :
115+
ringKrullDim (QuotSMulTop x R) + 1 = ringKrullDim R := by
116+
rw [← supportDim_quotient_eq_ringKrullDim, ← supportDim_self_eq_ringKrullDim]
117+
exact supportDim_quotSMulTop_succ_eq_supportDim_mem_jacobson reg
118+
((annihilator R R).ringJacobson_le_jacobson hx)
119+
113120
lemma _root_.ringKrullDim_quotient_span_singleton_succ_eq_ringKrullDim_of_mem_jacobson {x : R}
114121
(reg : IsSMulRegular R x) (hx : x ∈ Ring.jacobson R) :
115122
ringKrullDim (R ⧸ span {x}) + 1 = ringKrullDim R := by
116-
have h := Submodule.ideal_span_singleton_smul x (⊤ : Ideal R)
117-
simp only [smul_eq_mul, mul_top] at h
123+
have h : span {x} = x • (⊤ : Ideal R) := by simp [← Submodule.ideal_span_singleton_smul]
118124
rw [ringKrullDim_eq_of_ringEquiv (quotientEquivAlgOfEq R h).toRingEquiv,
119-
← supportDim_quotient_eq_ringKrullDim, ← supportDim_self_eq_ringKrullDim]
120-
exact supportDim_quotSMulTop_succ_eq_supportDim_mem_jacobson reg
121-
((annihilator R R).ringJacobson_le_jacobson hx)
125+
ringKrullDim_quotSMulTop_succ_eq_ringKrullDim_of_mem_jacobson reg hx]
122126

123127
variable [IsLocalRing R]
124128

@@ -129,6 +133,57 @@ theorem supportDim_le_supportDim_quotSMulTop_succ {x : R} (hx : x ∈ maximalIde
129133
supportDim R M ≤ supportDim R (QuotSMulTop x M) + 1 :=
130134
supportDim_le_supportDim_quotSMulTop_succ_of_mem_jacobson ((maximalIdeal_le_jacobson _) hx)
131135

136+
lemma _root_.ringKrullDim_le_ringKrullDim_quotSMulTop_succ {x : R} (hx : x ∈ maximalIdeal R) :
137+
ringKrullDim R ≤ ringKrullDim (R ⧸ x • (⊤ : Ideal R)) + 1 := by
138+
rw [← Module.supportDim_self_eq_ringKrullDim, ← Module.supportDim_quotient_eq_ringKrullDim]
139+
exact supportDim_le_supportDim_quotSMulTop_succ hx
140+
141+
lemma _root_.ringKrullDim_le_ringKrullDim_add_card {S : Finset R}
142+
(hS : (S : Set R) ⊆ maximalIdeal R) :
143+
ringKrullDim R ≤ ringKrullDim (R ⧸ Ideal.span (SetLike.coe S)) + S.card := by
144+
classical
145+
induction S using Finset.induction_on
146+
· simp only [Finset.card_empty, CharP.cast_eq_zero, add_zero]
147+
apply le_of_eq
148+
rw [Finset.coe_empty, Ideal.span_empty]
149+
exact RingEquiv.ringKrullDim (RingEquiv.quotientBot R).symm
150+
· rename_i a S nmem ih
151+
have sub : (S : Set R) ⊆ maximalIdeal R := fun x hx ↦ hS (Finset.mem_insert_of_mem hx)
152+
have : Nontrivial (R ⧸ Ideal.span (SetLike.coe S)) :=
153+
Ideal.Quotient.nontrivial_iff.mpr
154+
(ne_top_of_le_ne_top Ideal.IsPrime.ne_top' (Ideal.span_le.mpr sub))
155+
have lochom : IsLocalHom (Ideal.Quotient.mk (Ideal.span (SetLike.coe S))) :=
156+
IsLocalHom.of_surjective _ (Ideal.Quotient.mk_surjective)
157+
let _ : IsLocalRing (R ⧸ span (SetLike.coe S)) :=
158+
IsLocalRing.of_surjective _ Ideal.Quotient.mk_surjective
159+
apply le_trans (ih sub)
160+
simp only [Finset.card_insert_of_notMem nmem, Nat.cast_add, Nat.cast_one, add_comm _ 1,
161+
← add_assoc]
162+
apply add_le_add_left
163+
have eq1 : (Ideal.Quotient.mk (span S) a) • (⊤ : Ideal (R ⧸ span (S : Set R))) =
164+
(span {a}).map (Ideal.Quotient.mk (span S)) := by
165+
simp [← Submodule.ideal_span_singleton_smul, Ideal.map_span]
166+
have eq2 : span (((insert a S) : Finset R) : Set R) = (span S) ⊔ (span {a}) := by
167+
simp [Ideal.span_insert, sup_comm]
168+
let e : (R ⧸ span S) ⧸ (Ideal.Quotient.mk (span S) a) •
169+
(⊤ : Ideal (R ⧸ span (S : Set R))) ≃+* R ⧸ span (((insert a S) : Finset R) : Set R) := by
170+
rw [eq1, eq2]
171+
exact DoubleQuot.quotQuotEquivQuotSup (span (S : Set R)) (span {a})
172+
rw [← ringKrullDim_eq_of_ringEquiv e]
173+
apply ringKrullDim_le_ringKrullDim_quotSMulTop_succ
174+
have := ((IsLocalRing.local_hom_TFAE _).out 0 4).mp lochom
175+
simpa [← mem_comap, this] using hS (Finset.mem_insert_self a S)
176+
177+
lemma _root_.ringKrullDim_le_ringKrullDim_add_spanFinrank {I : Ideal R} (h : I ≠ ⊤)
178+
(fg : I.FG) : ringKrullDim R ≤ ringKrullDim (R ⧸ I) + I.spanFinrank := by
179+
let _ : Fintype I.generators := (Submodule.FG.finite_generators fg).fintype
180+
have eq : Ideal.span I.generators.toFinset = I := by
181+
simpa using Submodule.span_generators I
182+
rw [← Submodule.FG.generators_ncard fg, Set.ncard_eq_toFinset_card',
183+
← ringKrullDim_eq_of_ringEquiv (Ideal.quotEquivOfEq eq)]
184+
apply ringKrullDim_le_ringKrullDim_add_card
185+
simpa using (Submodule.FG.generators_mem I).trans (le_maximalIdeal h)
186+
132187
@[stacks 0B52 "the equality case"]
133188
theorem supportDim_quotSMulTop_succ_eq_of_notMem_minimalPrimes_of_mem_maximalIdeal {x : R}
134189
(hn : ∀ p ∈ (annihilator R M).minimalPrimes, x ∉ p) (hx : x ∈ maximalIdeal R) :
@@ -140,6 +195,11 @@ theorem supportDim_quotSMulTop_succ_eq_supportDim {x : R} (reg : IsSMulRegular M
140195
(hx : x ∈ maximalIdeal R) : supportDim R (QuotSMulTop x M) + 1 = supportDim R M :=
141196
supportDim_quotSMulTop_succ_eq_supportDim_mem_jacobson reg ((maximalIdeal_le_jacobson _) hx)
142197

198+
lemma _root_.ringKrullDim_quotSMulTop_succ_eq_ringKrullDim {x : R} (reg : IsSMulRegular R x)
199+
(hx : x ∈ maximalIdeal R) : ringKrullDim (QuotSMulTop x R) + 1 = ringKrullDim R :=
200+
ringKrullDim_quotSMulTop_succ_eq_ringKrullDim_of_mem_jacobson reg <| by
201+
simpa [ringJacobson_eq_maximalIdeal R]
202+
143203
lemma _root_.ringKrullDim_quotient_span_singleton_succ_eq_ringKrullDim {x : R}
144204
(reg : IsSMulRegular R x) (hx : x ∈ maximalIdeal R) :
145205
ringKrullDim (R ⧸ span {x}) + 1 = ringKrullDim R :=

0 commit comments

Comments
 (0)