Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(LocalRing/MaximalIdeal/Basic): localization of a Krull dim zero ring #17549

Open
wants to merge 22 commits into
base: master
Choose a base branch
from
Open
Changes from 3 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
34f9122
Adding theorem
maddycrim Oct 8, 2024
98c8fef
Apply suggestions from code review
maddycrim Oct 9, 2024
3bf5571
add changes
maddycrim Oct 9, 2024
88b45ab
add instance nilradmaxLocalRing
maddycrim Oct 10, 2024
fd626c9
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 10, 2024
67f4ed7
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 10, 2024
b071d27
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 10, 2024
6c006e8
Increase heartbeat limit to resolve timeout
maddycrim Oct 10, 2024
f7544fa
Increase heartbeat limit to resolve timeout
maddycrim Oct 10, 2024
069cf3a
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 11, 2024
93a589d
Fixing issue with lean build
maddycrim Oct 12, 2024
0cd0276
add heartbeat to resolve timeout error
maddycrim Oct 15, 2024
5b71b37
adding heartbeat
maddycrim Oct 15, 2024
c8b95af
Update Mathlib/RingTheory/Nullstellensatz.lean
maddycrim Oct 16, 2024
2e1336f
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 16, 2024
16aa1ab
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 16, 2024
984f207
Merge branch 'master' into MC_localization
maddycrim Oct 22, 2024
d754b08
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 30, 2024
1d7806f
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 30, 2024
fcc2026
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 30, 2024
037ace6
Update Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
maddycrim Oct 30, 2024
c6c8da1
fixing error after adding change
maddycrim Oct 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Mathlib/RingTheory/LocalRing/MaximalIdeal/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,13 @@ theorem le_maximalIdeal {J : Ideal R} (hJ : J ≠ ⊤) : J ≤ maximalIdeal R :=
theorem mem_maximalIdeal (x) : x ∈ maximalIdeal R ↔ x ∈ nonunits R :=
Iff.rfl

/--
An element `x` of a commutative local semiring is not contained in the maximal ideal
iff it is a unit.
-/
theorem not_mem_maximalIdeal (x : R) : x ∉ maximalIdeal R ↔ IsUnit x := by
maddycrim marked this conversation as resolved.
Show resolved Hide resolved
simp only [mem_maximalIdeal, mem_nonunits_iff, not_not]

theorem isField_iff_maximalIdeal_eq : IsField R ↔ maximalIdeal R = ⊥ :=
not_iff_not.mp
⟨Ring.ne_bot_of_isMaximal_of_not_isField inferInstance, fun h =>
Expand Down Expand Up @@ -99,3 +106,31 @@ end LocalRing

theorem LocalRing.maximalIdeal_eq_bot {R : Type*} [Field R] : LocalRing.maximalIdeal R = ⊥ :=
LocalRing.isField_iff_maximalIdeal_eq.mp (Field.toIsField R)

section Nilrad_max_localization

open Ideal

variable {R : Type*} [CommSemiring R] {S : Type*} [CommSemiring S] [Algebra R S] {M : Submonoid R}

/--
Let `S` be the localization of a commutative semiring `R` at a submonoid `M` that does not
contain 0. If the nilradical of `R` is maximal then there is a `R`-algebra isomorphism between
`R` and `S`. -/
noncomputable def nilradmaxlocalizationIsSelf (h : (nilradical R).IsMaximal) (h' : (0 : R) ∉ M)
maddycrim marked this conversation as resolved.
Show resolved Hide resolved
[IsLocalization M S] : R ≃ₐ[R] S := by
have : LocalRing R := by
refine LocalRing.of_unique_max_ideal ⟨nilradical R, h, fun I hI ↦ ?_⟩
rw [nilradical_eq_sInf] at h ⊢
exact (IsMaximal.eq_of_le h hI.ne_top (sInf_le hI.isPrime)).symm
have : ∀ m ∈ M, IsUnit m := by
intro m hm
maddycrim marked this conversation as resolved.
Show resolved Hide resolved
apply (LocalRing.not_mem_maximalIdeal m).mp
maddycrim marked this conversation as resolved.
Show resolved Hide resolved
rw [← LocalRing.eq_maximalIdeal h]
intro hm'
obtain ⟨k, hk⟩ := mem_nilradical.mp hm'
maddycrim marked this conversation as resolved.
Show resolved Hide resolved
rw [← hk] at h'
exact h' (Submonoid.pow_mem M hm k)
exact IsLocalization.atUnits _ _ this

end Nilrad_max_localization
Loading