@@ -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+
113120lemma _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
123127variable [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" ]
133188theorem 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+
143203lemma _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