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

[Merged by Bors] - feat: generalize Module.Finite.trans #9380

Closed
wants to merge 3 commits into from

Conversation

alreadydone
Copy link
Contributor

@alreadydone alreadydone commented Jan 1, 2024

Add span_eq_closure and closure_induction which say that Submodule.span R s is generated by R • s as an AddSubmonoid. I feel that the existing span_induction should be replaced by closure_induction as the latter is stronger, and allow us to remove the commutativity condition in span_smul_of_span_eq_top in Algebra/Tower and generalize Module.Finite.trans to allow a non-commutative base ring.


This is one of the uncontroversial parts of #9046.

Open in Gitpod

@alreadydone alreadydone added awaiting-review The author would like community review of the PR awaiting-CI t-algebra Algebra (groups, rings, fields etc) labels Jan 1, 2024
Comment on lines 351 to 352
theorem span_algebraMap_image_of_tower {S T : Type*} [CommSemiring S] [Semiring T] [Module R S]
[IsScalarTower R S S] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (a : Set S) :
[Algebra R T] [Algebra S T] [IsScalarTower R S T] (a : Set S) :
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This can't be generalized yet with what we include in this PR; this is an application of the CompatibleSMul class but there's some unresolved controversy with @eric-wieser.

(restrictScalars consumes CompatibleSMul which was derived from LinearMap.IsScalarTower.compatibleSMul, but in the absence of IsScalarTower R S S it can be directly supplied by

variable {R S : Type*} [Semiring S] [SMul R M] [Module S M] [SMul R M₂] [Module S M₂]
instance IsScalarTower.compatibleSMul' [SMul R S] [IsScalarTower R S M] :
    CompatibleSMul S M R S

in #9046.)

@alreadydone alreadydone changed the title chore: generalize Module.Finite.trans feat: generalize Module.Finite.trans Jan 1, 2024
Copy link
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

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

Thanks 🎉

bors merge

@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added ready-to-merge This PR has been sent to bors. and removed awaiting-review The author would like community review of the PR labels Jan 6, 2024
mathlib-bors bot pushed a commit that referenced this pull request Jan 6, 2024
Add `span_eq_closure` and `closure_induction` which say that `Submodule.span R s` is generated by `R • s` as an AddSubmonoid. I feel that the existing `span_induction` should be replaced by `closure_induction` as the latter is stronger, and allow us to remove the commutativity condition in `span_smul_of_span_eq_top` in Algebra/Tower and generalize `Module.Finite.trans` to allow a non-commutative base ring.



Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
@mathlib-bors
Copy link

mathlib-bors bot commented Jan 6, 2024

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title feat: generalize Module.Finite.trans [Merged by Bors] - feat: generalize Module.Finite.trans Jan 6, 2024
@mathlib-bors mathlib-bors bot closed this Jan 6, 2024
@mathlib-bors mathlib-bors bot deleted the ModuleTower1 branch January 6, 2024 11:02
mathlib-bors bot pushed a commit that referenced this pull request Jan 8, 2024
Generalize the conditions of the tower law [FiniteDimensional.finrank_mul_finrank'](https://leanprover-community.github.io/mathlib4_docs/Mathlib/FieldTheory/Tower.html#FiniteDimensional.finrank_mul_finrank') in FieldTheory/Tower from `[CommRing F] [Algebra F K]` to `[Ring F] [Module F K]`, and remove the `[Module.Finite F K]` and `[Module.Finite K A]` conditions.

The generalized version applies to situations when we have a tower C/B/A where the A-module structure on C is induced from the B-module structure via a RingHom from A to B, and the A-module structure on B is induced by the same RingHom. In particular, it applies when the A-module structure on B and the B-module structure on C come from two RingHoms, and the A-module structure on C comes from the composition of them, regardless of whether A and B are commutative or not.

As prerequisites, I also generalized lemmas originally introduced by @kckennylau in [mathlib3#3355](https://github.com/leanprover-community/mathlib/pull/3355/files) to prove the tower law. They were split into three PRs:

+ LinearAlgebra/Span #9380: add `span_eq_closure` and `closure_induction` which say that `Submodule.span R s` is generated by `R • s` as an AddSubmonoid. I feel that the existing `span_induction` should be replaced by `closure_induction` as the latter is stronger, and allow us to remove the commutativity condition in `span_smul_of_span_eq_top` in Algebra/Tower.

+ Algebra/Tower #9382: switching from CommSemiring/Algebra to Semiring/Module here requires proving the curious lemma `IsScalarTower.isLinearMap` which states that for a tower of modules A/S/R, any S-linear map from S to A is also R-linear. If the map is injective, we can deduce that S/S/R also form a tower. (By `ringHomEquivModuleIsScalarTower` in #9381, there is therefore a canonical RingHom from R to S.)

+ Lemmas for free modules over rings including `finrank_mul_finrank'` are moved from FieldTheory/Tower to LinearAlgebra/Dimension/Free

[Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Puzzle.3A.20noncommutative.20RingHom.20as.20typeclasses/near/407347711)



Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants