Skip to content

Commit ba252b3

Browse files
committed
feat(AlgebraicGeometry): prime spectrum of jacobson rings are jacobson spaces (#18353)
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
1 parent 2f5cf5f commit ba252b3

File tree

4 files changed

+37
-10
lines changed

4 files changed

+37
-10
lines changed

Mathlib/AlgebraicGeometry/PrimeSpectrum/Jacobson.lean

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Andrew Yang
55
-/
66
import Mathlib.AlgebraicGeometry.PrimeSpectrum.Noetherian
77
import Mathlib.RingTheory.Jacobson
8+
import Mathlib.Topology.JacobsonSpace
89

910
/-!
1011
# The prime spectrum of a jacobson ring
@@ -22,11 +23,11 @@ import Mathlib.RingTheory.Jacobson
2223

2324
open Ideal
2425

25-
variable {R : Type*} [CommRing R] [IsJacobsonRing R]
26+
variable {R : Type*} [CommRing R]
2627

2728
namespace PrimeSpectrum
2829

29-
lemma exists_isClosed_singleton_of_isJacobsonRing
30+
lemma exists_isClosed_singleton_of_isJacobsonRing [IsJacobsonRing R]
3031
(s : (Set (PrimeSpectrum R))) (hs : IsOpen s) (hs' : s.Nonempty) :
3132
∃ x ∈ s, IsClosed {x} := by
3233
simp_rw [isClosed_singleton_iff_isMaximal]
@@ -41,6 +42,30 @@ lemma exists_isClosed_singleton_of_isJacobsonRing
4142
rintro x ⟨-, hx⟩
4243
exact sInf_le ⟨this ⟨x, hx.isPrime⟩ hx, hx⟩
4344

45+
instance [IsJacobsonRing R] : JacobsonSpace (PrimeSpectrum R) := by
46+
rw [jacobsonSpace_iff_locallyClosed]
47+
rintro S hS ⟨U, Z, hU, hZ, rfl⟩
48+
simp only [← isClosed_compl_iff, isClosed_iff_zeroLocus_ideal, @compl_eq_comm _ U] at hU hZ
49+
obtain ⟨⟨I, rfl⟩, ⟨J, rfl⟩⟩ := And.intro hU hZ
50+
simp only [Set.nonempty_iff_ne_empty, ne_eq, Set.inter_assoc,
51+
← Set.disjoint_iff_inter_eq_empty, Set.disjoint_compl_left_iff_subset,
52+
zeroLocus_subset_zeroLocus_iff, Ideal.radical_eq_jacobson, Ideal.jacobson, le_sInf_iff] at hS ⊢
53+
contrapose! hS
54+
rintro x ⟨hJx, hx⟩
55+
exact @hS ⟨x, hx.isPrime⟩ ⟨hJx, (isClosed_singleton_iff_isMaximal _).mpr hx⟩
56+
57+
lemma isJacobsonRing_iff_jacobsonSpace :
58+
IsJacobsonRing R ↔ JacobsonSpace (PrimeSpectrum R) := by
59+
refine ⟨fun _ ↦ inferInstance, fun H ↦ ⟨fun I hI ↦ le_antisymm ?_ Ideal.le_jacobson⟩⟩
60+
rw [← I.isRadical_jacobson.radical]
61+
conv_rhs => rw [← hI.radical]
62+
simp_rw [← vanishingIdeal_zeroLocus_eq_radical]
63+
apply vanishingIdeal_anti_mono
64+
rw [← H.1 (isClosed_zeroLocus I), (isClosed_zeroLocus _).closure_subset_iff]
65+
rintro x ⟨hx : I ≤ x.asIdeal, hx'⟩
66+
show jacobson I ≤ x.asIdeal
67+
exact sInf_le ⟨hx, (isClosed_singleton_iff_isMaximal _).mp hx'⟩
68+
4469
/--
4570
If `R` is both noetherian and jacobson, then the following are equivalent for `x : Spec R`:
4671
1. `{x}` is open (i.e. `x` is an isolated point)
@@ -49,7 +74,7 @@ If `R` is both noetherian and jacobson, then the following are equivalent for `x
4974
(i.e. `x` is both a minimal prime and a maximal ideal)
5075
-/
5176
lemma isOpen_singleton_tfae_of_isNoetherian_of_isJacobsonRing
52-
[IsNoetherianRing R] (x : PrimeSpectrum R) :
77+
[IsNoetherianRing R] [IsJacobsonRing R] (x : PrimeSpectrum R) :
5378
List.TFAE [IsOpen {x}, IsClopen {x}, IsClosed {x} ∧ StableUnderGeneralization {x}] := by
5479
tfae_have 12
5580
| h => by

Mathlib/RingTheory/Jacobson.lean

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Devon Tuma
66
import Mathlib.RingTheory.Localization.Away.Basic
77
import Mathlib.RingTheory.Ideal.Over
88
import Mathlib.RingTheory.JacobsonIdeal
9+
import Mathlib.RingTheory.Artinian
910

1011
/-!
1112
# Jacobson Rings
@@ -91,11 +92,9 @@ theorem Ideal.radical_eq_jacobson [H : IsJacobsonRing R] (I : Ideal R) : I.radic
9192
le_antisymm (le_sInf fun _J ⟨hJ, hJ_max⟩ => (IsPrime.radical_le_iff hJ_max.isPrime).mpr hJ)
9293
(H.out (radical_isRadical I) ▸ jacobson_mono le_radical)
9394

94-
/-- Fields have only two ideals, and the condition holds for both of them. -/
95-
instance (priority := 100) isJacobsonRing_field {K : Type*} [Field K] : IsJacobsonRing K :=
96-
fun I _ => Or.recOn (eq_bot_or_top I)
97-
(fun h => le_antisymm (sInf_le ⟨le_rfl, h.symm ▸ bot_isMaximal⟩) (h.symm ▸ bot_le)) fun h =>
98-
by rw [h, jacobson_eq_top_iff]⟩
95+
instance (priority := 100) [IsArtinianRing R] : IsJacobsonRing R :=
96+
isJacobsonRing_iff_prime_eq.mpr fun P _ ↦
97+
jacobson_eq_self_of_isMaximal (H := IsArtinianRing.isMaximal_of_isPrime P)
9998

10099
theorem isJacobsonRing_of_surjective [H : IsJacobsonRing R] :
101100
(∃ f : R →+* S, Function.Surjective ↑f) → IsJacobsonRing S := by

Mathlib/RingTheory/JacobsonIdeal.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,9 @@ theorem radical_le_jacobson : radical I ≤ jacobson I :=
275275
theorem isRadical_of_eq_jacobson (h : jacobson I = I) : I.IsRadical :=
276276
radical_le_jacobson.trans h.le
277277

278+
lemma isRadical_jacobson (I : Ideal R) : I.jacobson.IsRadical :=
279+
isRadical_of_eq_jacobson jacobson_idem
280+
278281
theorem isUnit_of_sub_one_mem_jacobson_bot (r : R) (h : r - 1 ∈ jacobson (⊥ : Ideal R)) :
279282
IsUnit r := by
280283
cases' exists_mul_sub_mem_of_sub_one_mem_jacobson r h with s hs

Mathlib/Topology/JacobsonSpace.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ lemma IsClosedEmbedding.preimage_closedPoints (hf : IsClosedEmbedding f) :
4949
ext x
5050
simp [mem_closedPoints_iff, ← Set.image_singleton, hf.closed_iff_image_closed]
5151

52-
lemma closedPoints_eq_univ [T2Space X] :
52+
lemma closedPoints_eq_univ [T1Space X] :
5353
closedPoints X = Set.univ :=
5454
Set.eq_univ_iff_forall.mpr fun _ ↦ isClosed_singleton
5555

@@ -144,7 +144,7 @@ lemma JacobsonSpace.discreteTopology [JacobsonSpace X]
144144
instance (priority := 100) [Finite X] [JacobsonSpace X] : DiscreteTopology X :=
145145
JacobsonSpace.discreteTopology (Set.toFinite _)
146146

147-
instance (priority := 100) [T2Space X] : JacobsonSpace X :=
147+
instance (priority := 100) [T1Space X] : JacobsonSpace X :=
148148
by simp [closedPoints_eq_univ, closure_eq_iff_isClosed]⟩
149149

150150
open TopologicalSpace in

0 commit comments

Comments
 (0)