Zulip Chat Archive
Stream: Is there code for X?
Topic: Cancel in composition of base change
Christian Merten (Jan 26 2024 at 23:06):
Is there a lemma on cancelling the intermediate base change in a composition of base changes, i.e. something like this:
import Mathlib
open TensorProduct
variable (R S M N : Type*) [CommRing R] [CommRing S] [Algebra R S]
[AddCommGroup M] [Module R M]
[AddCommGroup N] [Module S N] [Module R N] [IsScalarTower R S N] :
instance : Module S (M ⊗[R] N) := sorry
def baseChangeCancel : (M ⊗[R] S) ⊗[S] N ≃ₗ[S] M ⊗[R] N := sorry
If M
is a S
-algebra, this can be deduced from docs#IsBaseChange.comp . Note that also the Module
instance is not inferred, here I want to act on M ⊗[R] N
by acting on N
.
Adam Topaz (Jan 26 2024 at 23:49):
I'm quite sure we have this.
Adam Topaz (Jan 26 2024 at 23:51):
hmmm... maybe not.
Eric Wieser (Jan 27 2024 at 08:05):
In mathlib, the module with the larger base has to be on the left of the tensor product
Eric Wieser (Jan 27 2024 at 08:06):
So Module S (N ⊗[R] M)
should be found automatically there
Eric Wieser (Jan 27 2024 at 08:09):
And the def you want would then be
def baseChangeCancel :
N ⊗[S] (S ⊗[R] M) ≃ₗ[S] N ⊗[R] M := sorry
Eric Wieser (Jan 27 2024 at 08:10):
I think this follows from docs#TensorProduct.AlgebraTensorModule.assoc ?
Christian Merten (Jan 27 2024 at 08:53):
Eric Wieser said:
I think this follows from docs#TensorProduct.AlgebraTensorModule.assoc ?
Probably you meant docs#TensorProduct.assoc (The algebra version only applies if N
is a S
-Algebra), but still I am not sure how I proceed with this, since docs#TensorProduct.assoc works with three modules over the same ring.
Christian Merten (Jan 27 2024 at 08:55):
Nvmd, I think you meant docs#TensorProduct.AlgebraTensorModule.assoc and this looks more promising. I clicked on your link earlier and it gave me a 404, but I think you edited your message. Thanks!
Christian Merten (Jan 27 2024 at 09:30):
Took me some time, but your suggestion worked:
import Mathlib
open TensorProduct
variable (R S M N : Type*) [CommRing R] [CommRing S] [Algebra R S]
[AddCommGroup M] [Module R M]
[AddCommGroup N] [Module S N] [Module R N] [IsScalarTower R S N]
noncomputable def baseChangeCancel : N ⊗[R] M ≃ₗ[S] N ⊗[S] (S ⊗[R] M) := by
letI g : (N ⊗[S] S) ⊗[R] M ≃ₗ[S] N ⊗[R] M :=
AlgebraTensorModule.congr (TensorProduct.rid S N) (LinearEquiv.neg R)
exact g.symm ≪≫ₗ (AlgebraTensorModule.assoc R S S N S M)
Christian Merten (Jan 27 2024 at 09:49):
Unfortunately in the doc string of docs#TensorProduct.AlgebraTensorModule.assoc some variable names were mixed up, I fixed it in #10051.
Last updated: May 02 2025 at 03:31 UTC