[Merged by Bors] - refactor: change the proof of Module.Finite.injective_of_surjective_endomorphism and commRing_strongRankCondition#12076
[Merged by Bors] - refactor: change the proof of Module.Finite.injective_of_surjective_endomorphism and commRing_strongRankCondition#12076
Module.Finite.injective_of_surjective_endomorphism and commRing_strongRankCondition#12076Conversation
|
I've checked that |
|
Then it would be nice to have a |
My idea is nuke the contents of the file |
|
This PR/issue depends on: |
# Conflicts: # Mathlib/RingTheory/FiniteType.lean # Mathlib/RingTheory/Noetherian.lean
(IsNoetherian|Module.Finite).injective_of_surjective_of_injectiveModule.Finite.injective_of_surjective_endomorphism and commRing_strongRankCondition
This is part one of #12076. `OrzechProperty R` is a type class stating that `R` satisfies the following property: for any finitely generated `R`-module `M`, any surjective homomorphism `f : N → M` from a submodule `N` of `M` to `M` is injective. We stated some basic results about `OrzechProperty` and proved that it implies `StrongRankCondition`.
…erty` (#13425) This is part 2 of #12076. It states that if - `R` is a ring (not necessarily commutative) and `M` is a Noetherian `R`-module (based on the proof in <https://math.stackexchange.com/a/1066128>), or - `R` is a commutative ring and `M` is a finitely generated `R`-module (based on the proof in <https://math.stackexchange.com/a/1066110>), if `N` is a submodule of `M`, `f : N -> M` is a surjective `R`-module homomorphism, then it is also injective. These results generalize `(IsNoetherian|Module.Finite).injective_of_surjective_endomorphism`. The proof for Noetherian case uses `LinearMap.iterateMapComap` which is put into `Mathlib/Algebra/Module/Submodule/IterateMapComap.lean`. The changed proof makes `LinearMap.tunnel` and `LinearMap.tailing` not used in any other parts of mathlib. Remove them or not is leaved for future discussion.
Co-authored-by: Johan Commelin <johan@commelin.net>
|
Thanks 🎉 bors merge |
…endomorphism` and `commRing_strongRankCondition` (#12076) - `Module.Finite.injective_of_surjective_endomorphism` is proved via `OrzechProperty.injective_of_surjective_endomorphism` since we already proved that commutative rings have `OrzechProperty`. - `commRing_strongRankCondition` is proved via `inferInstance` since we know that commutative rings have `OrzechProperty`, and any nontrivial ring satisfying `OrzechProperty` also satisfies `StrongRankCondition`. Due to the change of proof, some imports in the corresponding files become unnecessary, as reported by `shake`. This makes the change of imports in a lot of files. The change of proof also makes `LinearMap.tunnel` and `LinearMap.tailing` not used in mathlib anymore. These are marked as deprecated with no replacements. Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@u-paris.fr>
|
Pull request successfully merged into master. Build succeeded: |
Module.Finite.injective_of_surjective_endomorphism and commRing_strongRankConditionModule.Finite.injective_of_surjective_endomorphism and commRing_strongRankCondition
…erty` (#13425) This is part 2 of #12076. It states that if - `R` is a ring (not necessarily commutative) and `M` is a Noetherian `R`-module (based on the proof in <https://math.stackexchange.com/a/1066128>), or - `R` is a commutative ring and `M` is a finitely generated `R`-module (based on the proof in <https://math.stackexchange.com/a/1066110>), if `N` is a submodule of `M`, `f : N -> M` is a surjective `R`-module homomorphism, then it is also injective. These results generalize `(IsNoetherian|Module.Finite).injective_of_surjective_endomorphism`. The proof for Noetherian case uses `LinearMap.iterateMapComap` which is put into `Mathlib/Algebra/Module/Submodule/IterateMapComap.lean`. The changed proof makes `LinearMap.tunnel` and `LinearMap.tailing` not used in any other parts of mathlib. Remove them or not is leaved for future discussion.
…endomorphism` and `commRing_strongRankCondition` (#12076) - `Module.Finite.injective_of_surjective_endomorphism` is proved via `OrzechProperty.injective_of_surjective_endomorphism` since we already proved that commutative rings have `OrzechProperty`. - `commRing_strongRankCondition` is proved via `inferInstance` since we know that commutative rings have `OrzechProperty`, and any nontrivial ring satisfying `OrzechProperty` also satisfies `StrongRankCondition`. Due to the change of proof, some imports in the corresponding files become unnecessary, as reported by `shake`. This makes the change of imports in a lot of files. The change of proof also makes `LinearMap.tunnel` and `LinearMap.tailing` not used in mathlib anymore. These are marked as deprecated with no replacements. Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@u-paris.fr>
…erty` (#13425) This is part 2 of #12076. It states that if - `R` is a ring (not necessarily commutative) and `M` is a Noetherian `R`-module (based on the proof in <https://math.stackexchange.com/a/1066128>), or - `R` is a commutative ring and `M` is a finitely generated `R`-module (based on the proof in <https://math.stackexchange.com/a/1066110>), if `N` is a submodule of `M`, `f : N -> M` is a surjective `R`-module homomorphism, then it is also injective. These results generalize `(IsNoetherian|Module.Finite).injective_of_surjective_endomorphism`. The proof for Noetherian case uses `LinearMap.iterateMapComap` which is put into `Mathlib/Algebra/Module/Submodule/IterateMapComap.lean`. The changed proof makes `LinearMap.tunnel` and `LinearMap.tailing` not used in any other parts of mathlib. Remove them or not is leaved for future discussion.
…endomorphism` and `commRing_strongRankCondition` (#12076) - `Module.Finite.injective_of_surjective_endomorphism` is proved via `OrzechProperty.injective_of_surjective_endomorphism` since we already proved that commutative rings have `OrzechProperty`. - `commRing_strongRankCondition` is proved via `inferInstance` since we know that commutative rings have `OrzechProperty`, and any nontrivial ring satisfying `OrzechProperty` also satisfies `StrongRankCondition`. Due to the change of proof, some imports in the corresponding files become unnecessary, as reported by `shake`. This makes the change of imports in a lot of files. The change of proof also makes `LinearMap.tunnel` and `LinearMap.tailing` not used in mathlib anymore. These are marked as deprecated with no replacements. Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@u-paris.fr>
Strong rank condition fails for R iff there is a copy of $R^{(\mathbb{N})}$ in some $R^n$, iff some $R^n$ has infinity rank, iff some $R^{n+1}$ has zero `finrank`. As consequences, if all $R^n$ are Noetherian or Artinian, then $R$ satisfies the strong rank condition.
To prove the first equivalence, I redeveloped a version of the ["tunnels and tailings"](leanprover-community/mathlib3@86766851#diff-7829719aad6a9e3e617da2a7cf29dba4d55516b27e18f240eca352f4983d67b7R472-R491) construction @jcommelin and @kim-em contributed to mathlib ~4 years ago and made it work for Semiring/AddCommMonoid. The original construction was deprecated in [#12076](5948566) by @acmepjz and later removed, though some docstrings still remain, and I think it's now time to remove it.
Also add an instance that finite semirings satisfy the Orzech property (and therefore strong rank condition and invariant basis number).
Strong rank condition fails for R iff there is a copy of $R^{(\mathbb{N})}$ in some $R^n$, iff some $R^n$ has infinity rank, iff some $R^{n+1}$ has zero `finrank`. As consequences, if all $R^n$ are Noetherian or Artinian, then $R$ satisfies the strong rank condition.
To prove the first equivalence, I redeveloped a version of the ["tunnels and tailings"](leanprover-community/mathlib3@86766851#diff-7829719aad6a9e3e617da2a7cf29dba4d55516b27e18f240eca352f4983d67b7R472-R491) construction @jcommelin and @kim-em contributed to mathlib ~4 years ago and made it work for Semiring/AddCommMonoid. The original construction was deprecated in [#12076](5948566) by @acmepjz and later removed, though some docstrings still remain, and I think it's now time to remove it.
Also add an instance that finite semirings satisfy the Orzech property (and therefore strong rank condition and invariant basis number).
…y#32194) Strong rank condition fails for R iff there is a copy of $R^{(\mathbb{N})}$ in some $R^n$, iff some $R^n$ has infinity rank, iff some $R^{n+1}$ has zero `finrank`. As consequences, if all $R^n$ are Noetherian or Artinian, then $R$ satisfies the strong rank condition. To prove the first equivalence, I redeveloped a version of the ["tunnels and tailings"](leanprover-community/mathlib3@86766851#diff-7829719aad6a9e3e617da2a7cf29dba4d55516b27e18f240eca352f4983d67b7R472-R491) construction @jcommelin and @kim-em contributed to mathlib ~4 years ago and made it work for Semiring/AddCommMonoid. The original construction was deprecated in [leanprover-community#12076](leanprover-community@5948566) by @acmepjz and later removed, though some docstrings still remain, and I think it's now time to remove it. Also add an instance that finite semirings satisfy the Orzech property (and therefore strong rank condition and invariant basis number).
…y#32194) Strong rank condition fails for R iff there is a copy of $R^{(\mathbb{N})}$ in some $R^n$, iff some $R^n$ has infinity rank, iff some $R^{n+1}$ has zero `finrank`. As consequences, if all $R^n$ are Noetherian or Artinian, then $R$ satisfies the strong rank condition. To prove the first equivalence, I redeveloped a version of the ["tunnels and tailings"](leanprover-community/mathlib3@86766851#diff-7829719aad6a9e3e617da2a7cf29dba4d55516b27e18f240eca352f4983d67b7R472-R491) construction @jcommelin and @kim-em contributed to mathlib ~4 years ago and made it work for Semiring/AddCommMonoid. The original construction was deprecated in [leanprover-community#12076](leanprover-community@5948566) by @acmepjz and later removed, though some docstrings still remain, and I think it's now time to remove it. Also add an instance that finite semirings satisfy the Orzech property (and therefore strong rank condition and invariant basis number).
Module.Finite.injective_of_surjective_endomorphismis proved viaOrzechProperty.injective_of_surjective_endomorphismsince we already proved that commutative rings haveOrzechProperty.commRing_strongRankConditionis proved viainferInstancesince we know that commutative rings haveOrzechProperty, and any nontrivial ring satisfyingOrzechPropertyalso satisfiesStrongRankCondition.Due to the change of proof, some imports in the corresponding files become unnecessary, as reported by
shake. This makes the change of imports in a lot of files.The change of proof also makes
LinearMap.tunnelandLinearMap.tailingnot used in mathlib anymore.These are marked as deprecated with no replacements.
NOTE: reason to change the imports to several files:
discussion: https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2312076.20Orzech's.20theorem
OrzechProperty#13322OrzechProperty#13425