Zulip Chat Archive
Stream: mathlib4
Topic: Refactor Submodule.baseChange and LinearMap.baseChange
Kenny Lau (Jun 17 2025 at 00:46):
def baseChange (p : Submodule R M) : Submodule A (A ⊗[R] M) :=
span A <| p.map (TensorProduct.mk R A M 1)
def baseChange (f : M →ₗ[R] N) : A ⊗[R] M →ₗ[A] A ⊗[R] N :=
AlgebraTensorModule.map (LinearMap.id : A →ₗ[A] A) f
noncomputable def lTensor.equiv (hfg : Exact f g) (hg : Function.Surjective g) :
((Q ⊗[R] N) ⧸ (LinearMap.range (lTensor Q f))) ≃ₗ[R] (Q ⊗[R] P) :=
lTensor.linearEquiv_of_rightInverse Q hfg (Function.rightInverse_surjInv hg)
Basically, Submodule.baseChange is currently not defeq to a form that is easily usable in lTensor.equiv or related lemmas about right-exactness of tensor.
I propose to change the definition of Submodule.baseChange to LinearMap.range (S.subtype.baseChange A).
Searching on Loogle Submodule.baseChange and subsequently LieSubmodule.baseChange show 8 and 11 hits respectively, which shows that Submodule.baseChange is seldom used, so this change will likely not to have a large impact.
@Andrew Yang What are your opinions?
Andrew Yang (Jun 17 2025 at 00:47):
The change makes sense to me.
Kenny Lau (Jun 17 2025 at 11:34):
Last updated: Dec 20 2025 at 21:32 UTC