Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit bb38ce9

Browse files
feat(ring_theory/artinian): is_nilpotent_jacobson (#9153)
Co-authored-by: Chris Hughes <chrishughes24@gmail.com> Co-authored-by: Johan Commelin <johan@commelin.net>
1 parent 85dc9f3 commit bb38ce9

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

src/ring_theory/artinian.lean

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import linear_algebra.linear_independent
1111
import tactic.linarith
1212
import algebra.algebra.basic
1313
import ring_theory.noetherian
14+
import ring_theory.jacobson_ideal
15+
import ring_theory.nilpotent
16+
import ring_theory.nakayama
1417

1518
/-!
1619
# Artinian rings and modules
@@ -192,13 +195,21 @@ theorem set_has_minimal_iff_artinian :
192195
is_artinian R M :=
193196
by rw [is_artinian_iff_well_founded, well_founded.well_founded_iff_has_min']
194197

195-
/-- A module is Noetherian iff every decreasing chain of submodules stabilizes. -/
198+
theorem is_artinian.set_has_minimal [is_artinian R M] (a : set $ submodule R M) (ha : a.nonempty) :
199+
∃ M' ∈ a, ∀ I ∈ a, I ≤ M' → I = M' :=
200+
set_has_minimal_iff_artinian.mpr ‹_› a ha
201+
202+
/-- A module is Artinian iff every decreasing chain of submodules stabilizes. -/
196203
theorem monotone_stabilizes_iff_artinian :
197204
(∀ (f : ℕ →ₘ order_dual (submodule R M)), ∃ n, ∀ m, n ≤ m → f n = f m)
198205
↔ is_artinian R M :=
199206
by rw [is_artinian_iff_well_founded];
200207
exact (well_founded.monotone_chain_condition (order_dual (submodule R M))).symm
201208

209+
theorem is_artinian.monotone_stabilizes [is_artinian R M] (f : ℕ →ₘ order_dual (submodule R M)) :
210+
∃ n, ∀ m, n ≤ m → f n = f m :=
211+
monotone_stabilizes_iff_artinian.mpr ‹_› f
212+
202213
/-- If `∀ I > J, P I` implies `P J`, then `P` holds for all submodules. -/
203214
lemma is_artinian.induction [is_artinian R M] {P : submodule R M → Prop}
204215
(hgt : ∀ I, (∀ J < I, P J) → P I) (I : submodule R M) : P I :=
@@ -378,3 +389,47 @@ is_artinian_ring_of_surjective R f.range f.range_restrict
378389
theorem is_artinian_ring_of_ring_equiv (R) [comm_ring R] {S} [comm_ring S]
379390
(f : R ≃+* S) [is_artinian_ring R] : is_artinian_ring S :=
380391
is_artinian_ring_of_surjective R S f.to_ring_hom f.to_equiv.surjective
392+
393+
namespace is_artinian_ring
394+
395+
open is_artinian
396+
397+
variables {R : Type*} [comm_ring R] [is_artinian_ring R]
398+
399+
lemma is_nilpotent_jacobson_bot : is_nilpotent (ideal.jacobson (⊥ : ideal R)) :=
400+
begin
401+
let Jac := ideal.jacobson (⊥ : ideal R),
402+
let f : ℕ →ₘ order_dual (ideal R) := ⟨λ n, Jac ^ n, λ _ _ h, ideal.pow_le_pow h⟩,
403+
obtain ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → Jac ^ n = Jac ^ m := is_artinian.monotone_stabilizes f,
404+
refine ⟨n, _⟩,
405+
let J : ideal R := annihilator (Jac ^ n),
406+
suffices : J = ⊤,
407+
{ have hJ : J • Jac ^ n = ⊥ := annihilator_smul (Jac ^ n),
408+
simpa only [this, top_smul, ideal.zero_eq_bot] using hJ },
409+
by_contradiction hJ, change J ≠ ⊤ at hJ,
410+
rcases is_artinian.set_has_minimal {J' : ideal R | J < J'} ⟨⊤, hJ.lt_top⟩
411+
with ⟨J', hJJ' : J < J', hJ' : ∀ I, J < I → I ≤ J' → I = J'⟩,
412+
rcases set_like.exists_of_lt hJJ' with ⟨x, hxJ', hxJ⟩,
413+
obtain rfl : J ⊔ ideal.span {x} = J',
414+
{ refine hJ' (J ⊔ ideal.span {x}) _ _,
415+
{ rw set_like.lt_iff_le_and_exists,
416+
exact ⟨le_sup_left, ⟨x, mem_sup_right (mem_span_singleton_self x), hxJ⟩⟩ },
417+
{ exact (sup_le hJJ'.le (span_le.2 (singleton_subset_iff.2 hxJ'))) } },
418+
have : J ⊔ Jac • ideal.span {x} ≤ J ⊔ ideal.span {x},
419+
from sup_le_sup_left (smul_le.2 (λ _ _ _, submodule.smul_mem _ _)) _,
420+
have : Jac * ideal.span {x} ≤ J, --Need version 4 of Nakayamas lemma on Stacks
421+
{ classical, by_contradiction H,
422+
refine H (smul_sup_le_of_le_smul_of_le_jacobson_bot
423+
(fg_span_singleton _) le_rfl (hJ' _ _ this).ge),
424+
exact lt_of_le_of_ne le_sup_left (λ h, H $ h.symm ▸ le_sup_right) },
425+
have : ideal.span {x} * Jac ^ (n + 1) ≤ ⊥,
426+
calc ideal.span {x} * Jac ^ (n + 1) = ideal.span {x} * Jac * Jac ^ n :
427+
by rw [pow_succ, ← mul_assoc]
428+
... ≤ J * Jac ^ n : mul_le_mul (by rwa mul_comm) (le_refl _)
429+
... = ⊥ : by simp [J],
430+
refine hxJ (mem_annihilator.2 (λ y hy, (mem_bot R).1 _)),
431+
refine this (mul_mem_mul (mem_span_singleton_self x) _),
432+
rwa [← hn (n + 1) (nat.le_succ _)]
433+
end
434+
435+
end is_artinian_ring

0 commit comments

Comments
 (0)