Zulip Chat Archive
Stream: mathlib4
Topic: Results for non-local rings
Michał Staromiejski (Apr 13 2025 at 17:11):
I have the following results about rings that are non-local:
import Mathlib.RingTheory.LocalRing.MaximalIdeal.Basic
import Mathlib.RingTheory.Spectrum.Maximal.Basic
theorem IsLocalRing.of_unique_maxiamlSpectrum {R : Type*} [CommSemiring R] [h : Unique (MaximalSpectrum R)] : IsLocalRing R :=
.of_unique_max_ideal ⟨h.default.asIdeal, ⟨h.default.isMaximal,
fun I hI ↦ MaximalSpectrum.mk.inj <| h.eq_default ⟨I, hI⟩⟩⟩
/-- For a non-local ring, `MaximalSpectrum R` is non-trivial. -/
theorem nontrivial_maximalSpectrum_of_not_isLocalRing {R : Type*} [CommSemiring R] [Nontrivial R] (h : ¬IsLocalRing R) :
Nontrivial (MaximalSpectrum R) := by
rw [← not_subsingleton_iff_nontrivial]; by_contra; apply h
have : Unique (MaximalSpectrum R) := uniqueOfSubsingleton Classical.ofNonempty
exact .of_unique_maxiamlSpectrum
/-- In a non-local ring, there are two distinct maximal ideals. -/
theorem exist_maximal_ne_of_not_isLocalRing {R : Type*} [CommSemiring R] [Nontrivial R] (h : ¬IsLocalRing R) :
∃ m₁ m₂ : Ideal R, m₁.IsMaximal ∧ m₂.IsMaximal ∧ m₁ ≠ m₂ :=
let ⟨⟨m₁, hm₁⟩, ⟨m₂, hm₂⟩, hm₁m₂⟩ := nontrivial_maximalSpectrum_of_not_isLocalRing h
⟨m₁, m₂, ⟨hm₁, hm₂, by by_contra; apply hm₁m₂; congr⟩⟩
/-- There exists a surjective ring homomorphism from a non-local ring onto product of two fields. -/
lemma exists_surjective_of_not_isLocalRing.{u} {R : Type u} [CommRing R] [Nontrivial R] (h : ¬IsLocalRing R) :
∃ (K₁ K₂ : Type u) (_ : Field K₁) (_ : Field K₂) (f : R →+* K₁ × K₂), Function.Surjective f := by
/- get two different maximal ideals and project on the product of quotients -/
obtain ⟨m₁, m₂, _, _, hm₁m₂⟩ := exist_maximal_ne_of_not_isLocalRing h
let e := Ideal.quotientInfEquivQuotientProd m₁ m₂ <| Ideal.isCoprime_of_isMaximal hm₁m₂
let f := e.toRingHom.comp <| Ideal.Quotient.mk (m₁ ⊓ m₂)
use R ⧸ m₁, R ⧸ m₂, Ideal.Quotient.field m₁, Ideal.Quotient.field m₂, f
apply Function.Surjective.comp e.surjective Ideal.Quotient.mk_surjective
Is there interest in having those in Mathlib as well?
For the first, positive result there is already a PR #23994.
Kevin Buzzard (Apr 13 2025 at 17:13):
These are all iffs, aren't they? I mean in the presence of everything else, not IsLocalRing is equivalent to the conclusion.
Michał Staromiejski (Apr 13 2025 at 17:16):
That's true, there are already contrapositions like docs#IsLocalRing.maximal_ideal_unique but I could also add iff
versions.
Michał Staromiejski (Apr 13 2025 at 17:19):
I actually use the last one in my work, but I think there will be rarely situation to have an assumption like
∃ (K₁ K₂ : Type u) (_ : Field K₁) (_ : Field K₂) (f : R →+* K₁ × K₂), Function.Surjective f
but maybe...
Michał Staromiejski (Apr 13 2025 at 17:25):
Also, for IsLocalRing.of_unique_maxiamlSpectrum
above, there is other direction: docs#IsLocalRing.instUniqueMaximalSpectrum but Unique
is not a Prop
so to form iff
version, I would have to "wrap" it in Nonempty
I guess? Like so:
theorem IsLocalRing.iff_unique_maxiamlSpectrum {R : Type*} [CommSemiring R] :
IsLocalRing R ↔ Nonempty (Unique (MaximalSpectrum R)) := sorry
Michał Staromiejski (Apr 14 2025 at 16:23):
Created PR #24043, the results are in a separate file Mathlib.RingTheory.LocalRing.NonLocalRing
. All comments highly appreciated!
Last updated: May 02 2025 at 03:31 UTC