[Merged by Bors] - feat: semisimple rings are Artinian#17557
[Merged by Bors] - feat: semisimple rings are Artinian#17557alreadydone wants to merge 40 commits intomasterfrom
Conversation
…endent' into finite_semisimple_module
The main result `IsSemisimpleModule.finite_tfae` shows that for a semisimple module, `Module.Finite R M ↔ IsNoetherian R M ↔ IsArtinian R M ↔ IsFiniteLength R M ↔` direct sum decomposition into finitely many simple modules (F25 in Chapter 28 of Lorenz's *Algebra II*). The instance from IsSemisimpleModule + Module.Finite to IsNoetherian is proven before and used in the proof, while the instance to IsArtinian is added after the proof. As a consequence, semisimple rings are Artinian. Also add easy lemmas `isNoetherian_range`, `LinearEquiv.isNoetherian_iff`, `isNoetherian_sup`, `isNoetherian_iSup` (and Artinian counterparts) and `IsSemisimpleModule.exists_setIndependent_sSup_simples_eq_top`.
|
I'm not sure why there is not a test file @jcommelin |
|
I'd like to see a plan for one first bors r- |
|
Canceled. |
|
@mattrobball You can see in these search results plenty of occurrences (in 206 files) of using |
|
Yes, there are existing uses as such but we have already seen that often hide undesirable behavior and are often poorly motivated. I think they should all be moved/removed (and some have) but that is out of scope here. Inclusion of new My rationale: Most of the Additionally, since TLDR: yes these instances searches are of sufficient importance that we want to make sure they keep working indefinitely. We also want to model best practices going forward. |
|
I appreciate your patience with me. I think the request is important enough relative to the effort required. Please let me know if there is anything I can do to help. |
|
Thanks for the explanation. I'll add the tests in test/instances. Though I still have some doubts: it's possible that when importing the whole Mathlib, a declared instance itself may fail to synthesize (it might timeout, or fail due to some bad non-defeq instance introduced in between). Does it mean we should add every instance to the tests? Or is CI already checking every instance can be synthesized after importing Mathlib, somewhat like what the simpNF linter is doing to every simp lemma? |
|
There is no such check. I think we should do this mainly for mathematically-important instances. If it fails with |
|
Thanks! bors merge |
The main result `IsSemisimpleModule.finite_tfae` shows that for a semisimple module, `Module.Finite R M ↔ IsNoetherian R M ↔ IsArtinian R M ↔ IsFiniteLength R M ↔` direct sum decomposition into finitely many simple modules (F25 in Chapter 28 of Lorenz's *Algebra II*). The instance from IsSemisimpleModule + Module.Finite to IsNoetherian is proven before and used in the proof, while the instance to IsArtinian is added after the proof. As a consequence, semisimple rings are Artinian. Also add easy lemmas `isNoetherian_range`, `LinearEquiv.isNoetherian_iff`, `isNoetherian_sup`, `isNoetherian_iSup` (and Artinian counterparts) and `IsSemisimpleModule.exists_setIndependent_sSup_simples_eq_top`.
|
Pull request successfully merged into master. Build succeeded: |
The main result
IsSemisimpleModule.finite_tfaeshows that for a semisimple module,Module.Finite R M ↔ IsNoetherian R M ↔ IsArtinian R M ↔ IsFiniteLength R M ↔direct sum decomposition into finitely many simple modules (F25 in Chapter 28 of Lorenz's Algebra II). The instance from IsSemisimpleModule + Module.Finite to IsNoetherian is proven before and used in the proof, while the instance to IsArtinian is added after the proof. As a consequence, semisimple rings are Artinian.Also add easy lemmas
isNoetherian_range,LinearEquiv.isNoetherian_iff,isNoetherian_sup,isNoetherian_iSup(and Artinian counterparts) andIsSemisimpleModule.exists_setIndependent_sSup_simples_eq_top.IsNoetherian ∧ IsArtinian#17478