@@ -551,6 +551,8 @@ end GaloisConnection
551551
552552section IrrelevantIdeal
553553
554+ namespace HomogeneousIdeal
555+
554556variable [Semiring A]
555557variable [DecidableEq ΞΉ]
556558variable [AddCommMonoid ΞΉ] [PartialOrder ΞΉ] [CanonicallyOrderedAdd ΞΉ]
@@ -563,21 +565,63 @@ refers to `β¨_{i>0} πα΅’`, or equivalently `{a | aβ = 0}`. This definition
563565construction where `ΞΉ` is always `β` so the irrelevant ideal is simply elements with `0` as
5645660-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+
583627end IrrelevantIdeal
0 commit comments