Skip to content

Commit b6ead3d

Browse files
committed
feat(RingTheory): some lemmas about the irrelevant ideal (#30336)
This PR adds some lemmas about the irrelevant ideal of a graded ring, such as the fact that it is the iSup of each positively graded component.
1 parent 99a7a7a commit b6ead3d

File tree

1 file changed

+49
-5
lines changed
  • Mathlib/RingTheory/GradedAlgebra/Homogeneous

1 file changed

+49
-5
lines changed

β€ŽMathlib/RingTheory/GradedAlgebra/Homogeneous/Ideal.leanβ€Ž

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,8 @@ end GaloisConnection
551551

552552
section IrrelevantIdeal
553553

554+
namespace HomogeneousIdeal
555+
554556
variable [Semiring A]
555557
variable [DecidableEq ΞΉ]
556558
variable [AddCommMonoid ΞΉ] [PartialOrder ΞΉ] [CanonicallyOrderedAdd ΞΉ]
@@ -563,21 +565,63 @@ refers to `⨁_{i>0} π’œα΅’`, or equivalently `{a | aβ‚€ = 0}`. This definition
563565
construction where `ΞΉ` is always `β„•` so the irrelevant ideal is simply elements with `0` as
564566
0-th coordinate.
565567
-/
566-
def HomogeneousIdeal.irrelevant : HomogeneousIdeal π’œ :=
568+
def irrelevant : HomogeneousIdeal π’œ :=
567569
⟨RingHom.ker (GradedRing.projZeroRingHom π’œ), fun i r (hr : (decompose π’œ r 0 : A) = 0) => by
568570
change (decompose π’œ (decompose π’œ r _ : A) 0 : A) = 0
569571
by_cases h : i = 0
570572
Β· rw [h, hr, decompose_zero, zero_apply, ZeroMemClass.coe_zero]
571573
Β· rw [decompose_of_mem_ne π’œ (SetLike.coe_mem _) h]⟩
572574

575+
local notation π’œ"β‚Š" => irrelevant π’œ
576+
573577
@[simp]
574-
theorem HomogeneousIdeal.mem_irrelevant_iff (a : A) :
575-
a ∈ HomogeneousIdeal.irrelevant π’œ ↔ proj π’œ 0 a = 0 :=
578+
theorem mem_irrelevant_iff (a : A) :
579+
a ∈ π’œβ‚Š ↔ proj π’œ 0 a = 0 :=
576580
Iff.rfl
577581

578582
@[simp]
579-
theorem HomogeneousIdeal.toIdeal_irrelevant :
580-
(HomogeneousIdeal.irrelevant π’œ).toIdeal = RingHom.ker (GradedRing.projZeroRingHom π’œ) :=
583+
theorem toIdeal_irrelevant :
584+
π’œβ‚Š.toIdeal = RingHom.ker (GradedRing.projZeroRingHom π’œ) :=
581585
rfl
582586

587+
lemma mem_irrelevant_of_mem {x : A} {i : ΞΉ} (hi : 0 < i) (hx : x ∈ π’œ i) : x ∈ π’œβ‚Š := by
588+
rw [mem_irrelevant_iff, GradedRing.proj_apply, DirectSum.decompose_of_mem _ hx,
589+
DirectSum.of_eq_of_ne _ _ _ (by aesop), ZeroMemClass.coe_zero]
590+
591+
/-- `irrelevant π’œ = ⨁_{i>0} π’œα΅’` -/
592+
lemma irrelevant_eq_iSup : π’œβ‚Š.toAddSubmonoid = ⨆ i > 0, .ofClass (π’œ i) := by
593+
refine le_antisymm (fun x hx ↦ ?_) <| iSupβ‚‚_le fun i hi x hx ↦ mem_irrelevant_of_mem _ hi hx
594+
classical rw [← DirectSum.sum_support_decompose π’œ x]
595+
refine sum_mem fun j hj ↦ ?_
596+
by_cases hjβ‚€ : j = 0
597+
Β· classical exact (DFinsupp.mem_support_iff.mp hj <| hjβ‚€ β–Έ (by simpa using hx)).elim
598+
Β· exact AddSubmonoid.mem_iSup_of_mem j <| AddSubmonoid.mem_iSup_of_mem (pos_of_ne_zero hjβ‚€) <|
599+
Subtype.prop _
600+
601+
open AddSubmonoid Set in
602+
lemma irrelevant_eq_closure : π’œβ‚Š.toAddSubmonoid = .closure (⋃ i > 0, π’œ i) := by
603+
rw [irrelevant_eq_iSup]
604+
exact le_antisymm (iSup_le fun i ↦ iSup_le fun hi _ hx ↦ subset_closure <| mem_biUnion hi hx) <|
605+
closure_le.mpr <| iUnion_subset fun i ↦ iUnion_subset fun hi ↦ le_biSup (ofClass <| π’œ Β·) hi
606+
607+
open AddSubmonoid Set in
608+
lemma irrelevant_eq_span : π’œβ‚Š.toIdeal = .span (⋃ i > 0, π’œ i) :=
609+
le_antisymm ((irrelevant_eq_closure π’œ).trans_le <| closure_le.mpr Ideal.subset_span) <|
610+
Ideal.span_le.mpr <| iUnion_subset fun _ ↦ iUnion_subset fun hi _ hx ↦
611+
mem_irrelevant_of_mem _ hi hx
612+
613+
lemma toAddSubmonoid_irrelevant_le {P : AddSubmonoid A} :
614+
π’œβ‚Š.toAddSubmonoid ≀ P ↔ βˆ€ i > 0, .ofClass (π’œ i) ≀ P := by
615+
rw [irrelevant_eq_iSup, iSupβ‚‚_le_iff]
616+
617+
lemma toIdeal_irrelevant_le {I : Ideal A} :
618+
π’œβ‚Š.toIdeal ≀ I ↔ βˆ€ i > 0, .ofClass (π’œ i) ≀ I.toAddSubmonoid :=
619+
toAddSubmonoid_irrelevant_le _
620+
621+
lemma irrelevant_le {P : HomogeneousIdeal π’œ} :
622+
π’œβ‚Š ≀ P ↔ βˆ€ i > 0, .ofClass (π’œ i) ≀ P.toAddSubmonoid :=
623+
toIdeal_irrelevant_le _
624+
625+
end HomogeneousIdeal
626+
583627
end IrrelevantIdeal

0 commit comments

Comments
Β (0)