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(RingTheory): Artinian rings over Jacobson rings #21904

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

alreadydone
Copy link
Contributor

@alreadydone alreadydone commented Feb 15, 2025

Co-authored-by: Andrew Yang


Open in Gitpod

@alreadydone alreadydone added the t-algebra Algebra (groups, rings, fields, etc) label Feb 15, 2025
Copy link

github-actions bot commented Feb 15, 2025

PR summary a8bd6594bb

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.Algebra.Module.Submodule.Range 643 645 +2 (+0.31%)
Mathlib.RingTheory.Finiteness.Finsupp 972 975 +3 (+0.31%)
Import changes for all files
Files Import difference
40 files Mathlib.Algebra.Lie.Basic Mathlib.Algebra.Module.Submodule.Equiv Mathlib.Algebra.Module.Submodule.Range Mathlib.Algebra.MonoidAlgebra.Degree Mathlib.Algebra.MonoidAlgebra.Support Mathlib.Algebra.Polynomial.BigOperators Mathlib.Algebra.Polynomial.CancelLeads Mathlib.Algebra.Polynomial.Coeff Mathlib.Algebra.Polynomial.Degree.Definitions Mathlib.Algebra.Polynomial.Degree.Domain Mathlib.Algebra.Polynomial.Degree.Lemmas Mathlib.Algebra.Polynomial.Degree.Monomial Mathlib.Algebra.Polynomial.Degree.Operations Mathlib.Algebra.Polynomial.Degree.SmallDegree Mathlib.Algebra.Polynomial.Degree.Support Mathlib.Algebra.Polynomial.Degree.TrailingDegree Mathlib.Algebra.Polynomial.Degree.Units Mathlib.Algebra.Polynomial.Derivative Mathlib.Algebra.Polynomial.Div Mathlib.Algebra.Polynomial.EraseLead Mathlib.Algebra.Polynomial.Eval.Coeff Mathlib.Algebra.Polynomial.Eval.Degree Mathlib.Algebra.Polynomial.Eval.Irreducible Mathlib.Algebra.Polynomial.Eval.SMul Mathlib.Algebra.Polynomial.Eval.Subring Mathlib.Algebra.Polynomial.Identities Mathlib.Algebra.Polynomial.Inductions Mathlib.Algebra.Polynomial.Mirror Mathlib.Algebra.Polynomial.Monic Mathlib.Algebra.Polynomial.Reverse Mathlib.Algebra.Polynomial.UnitTrinomial Mathlib.Data.Finsupp.Weight Mathlib.Data.Nat.Choose.Vandermonde Mathlib.LinearAlgebra.BilinearMap Mathlib.LinearAlgebra.Countable Mathlib.LinearAlgebra.Finsupp.LinearCombination Mathlib.LinearAlgebra.Finsupp.Supported Mathlib.RingTheory.Polynomial.Hermite.Basic Mathlib.RingTheory.Polynomial.Opposites Mathlib.Tactic.ComputeDegree
2
Mathlib.RingTheory.Finiteness.Finsupp Mathlib.RingTheory.Finiteness.Ideal 3
Mathlib.RingTheory.Jacobson.Artinian (new file) 1608

Declarations diff

+ Module.finite_iff_isArtinianRing
+ Module.finite_iff_krullDimLE_zero
+ Module.finite_of_isArtinianRing
+ Module.finite_of_isSemisimpleRing
+ _root_.LinearMap.finite_iff_of_bijective
+ _root_.Module.Finite.of_submodule_quotient
+ finite_of_isArtinian
+ finite_of_isNoetherian
+ induction
+ instance (priority := 900) (R) [CommRing R] [IsSemisimpleRing R] : IsReduced R
+ isNoetherian_iff_isArtinian
+ jacobson_eq_sInf_isMaximal
+ nilradical_eq_bot_iff
+ nilradical_le_jacobson
+ range_restrictScalars
+ restrictScalars_map
- IsSemiprimaryRing.isNoetherian_iff_isArtinian

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@@ -45,6 +45,10 @@ theorem IsSemisimpleModule.jacobson_le_annihilator [IsSemisimpleModule R M] :
have := Module.le_comap_jacobson (LinearMap.toSpanSingleton R M m) hr
rwa [jacobson_eq_bot] at this

instance (priority := 900) (R) [CommRing R] [IsSemisimpleRing R] : IsReduced R where
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
instance (priority := 900) (R) [CommRing R] [IsSemisimpleRing R] : IsReduced R where
instance (priority := low) (R) [CommRing R] [IsSemisimpleRing R] : IsReduced R where

Seems the standard way, unless you have a specific reason for 900.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm following Andrew's advice, though I'm not exactly sure whether it applies here.


/-- If `A` is a finite type algebra over `R`, then `A` is an artinian ring and `R` is jacobson
implies `A` is finite over `R`. -/
lemma Module.finite_of_isArtinianRing [IsJacobsonRing R] [IsArtinianRing A] :
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

finite_of_finite_type_of_isJacobsonRing isn't an instance yet, so I didn't make these instances. Module.Finite.finiteType is a priority 100 instance, so these should probably get an even lower priority if made instances due to the loopiness. Similar lemmas like Module.finitePresentation_of_finite are not made instances due to performance reasons.

Also note that this lemma implies the previous one because Lean can infer that an semisimple ring is artinian.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you try so we can see the regression? If it is really bad no problem in keeping them as theorem (adding a comment).

@alreadydone alreadydone added the awaiting-author A reviewer has asked the author a question or requested changes label Feb 18, 2025
@alreadydone alreadydone removed the awaiting-author A reviewer has asked the author a question or requested changes label Feb 21, 2025
@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit a8bd659.
The entire run failed.
Found no significant differences.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
t-algebra Algebra (groups, rings, fields, etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants