Zulip Chat Archive
Stream: mathlib4
Topic: S-isomorphism between colim (M_i ⊗ S) and (colim M_i) ⊗ S
Liran Shaul (Jan 12 2026 at 21:17):
Hi everyone,
I am trying to construct an $S$-linear isomorphism between the tensor product of a direct limit and the direct limit of the tensored modules.
Specifically, given:
-
A directed system of $R$-modules $M_i$ with transition maps $f_{ij} : M_i \to M_j$.
-
A commutative ring map $R \to S$.
-
The induced system of $S$-modules $M_i \otimes_R S$ with transition maps $f_{ij} \otimes \text{id}_S$.
I have an $R$-linear isomorphism:
iso_lim : (Module.DirectLimit M f) ⊗[R] S ≃ₗ[R] Module.DirectLimit (fun i ↦ M i ⊗[R] S) (fun i j h ↦ lTensor S (f h))
The Problem:
I need this to be an $S$-linear isomorphism (≃ₗ[S]) and I need it to target a slightly different definition of the transition maps:
f_tensor : i ≤ j → M i ⊗ S →ₗ[S] M j ⊗ S
defined via TensorProduct.AlgebraTensorModule.map.
Even though the transition maps are extensionally equal, I am hitting a wall because:
-
Module.DirectLimit.liftis producing $R$-linear maps when I need $S$-linear maps. -
The typeclass engine is getting stuck on metavariables when I try to use
LinearEquiv.ofLinearto upgrade the $R$-equivalence, likely because theModule Sinstance on theDirectLimitdepends on the specific form of the transition maps.
How can I best define this $S$-isomorphism such that it respects the $S$-module structure on both sides without falling into definitional hell regarding the transition maps?
-- Transition maps in the goal
f_tensor : (i j : ι) → i ≤ j → S ⊗[R] G i →ₗ[S] S ⊗[R] G j := fun i j h ↦ TensorProduct.AlgebraTensorModule.map LinearMap.id (f h)
-- The S-module instance I am using
instance : Module S (Module.DirectLimit (fun i ↦ S ⊗[R] G i) f_tensor) := Module.DirectLimit.module _ f_tensor
Kevin Buzzard (Jan 12 2026 at 22:02):
I'm not at a computer right now but we did a bunch of relevant material in FLT (edit: but probably not exactly what you need).
Last updated: Feb 28 2026 at 14:05 UTC