Skip to content

Commit 551ca8f

Browse files
committed
feat: characterise the kernel of the map M ⊗[R] N →ₗ[A] M ⊗[A] N (leanprover-community#36752)
Let $A$ be an $R$-algebra and $M$ and $N$ be $A$-modules. In this PR we prove that the kernel of the natural map $M ⊗_R N → M ⊗_A N$ is spanned by elements of the form $(am) ⊗_R n - m ⊗_R (an)$. Co-authored-by: leo <leonid.ryvkin@rub.de>
1 parent 5e7bc0c commit 551ca8f

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

Mathlib/LinearAlgebra/TensorProduct/Basic.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ def mapOfCompatibleSMul : M ⊗[A] N →ₗ[S] M ⊗[R] N where
328328
@[simp] theorem mapOfCompatibleSMul_tmul (m n) : mapOfCompatibleSMul R A S M N (m ⊗ₜ n) = m ⊗ₜ n :=
329329
rfl
330330

331+
/- The map `mapOfCompatibleSMul` is surjective. Its kernel is characterized by the Lemma
332+
`TensorProduct.ker_mapOfCompatibleSMul`. -/
331333
theorem mapOfCompatibleSMul_surjective : Function.Surjective (mapOfCompatibleSMul R A S M N) :=
332334
fun x ↦ x.induction_on (⟨0, map_zero _⟩) (fun m n ↦ ⟨_, mapOfCompatibleSMul_tmul ..⟩)
333335
fun _ _ ⟨x, hx⟩ ⟨y, hy⟩ ↦ ⟨x + y, by simpa using congr($hx + $hy)⟩

Mathlib/LinearAlgebra/TensorProduct/Quotient.lean

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public import Mathlib.RingTheory.Ideal.Quotient.Defs
1414
1515
# Interaction between Quotients and Tensor Products
1616
17-
This file contains constructions that relate quotients and tensor products.
17+
This file contains constructions that relate quotients and tensor products. This file is also a home
18+
for results whose proof depends on both tensor products and linear algebraic quotients.
1819
Let `M, N` be `R`-modules, `m ≤ M` and `n ≤ N` be an `R`-submodules and `I ≤ R` an ideal. We prove
1920
the following isomorphisms:
2021
@@ -297,4 +298,32 @@ lemma tensorQuotientEquiv_symm_apply_mk_tmul (n : Submodule B N) (x : M) (y : N)
297298
x ⊗ₜ[R] Submodule.Quotient.mk y :=
298299
rfl
299300

301+
302+
variable [Module A N] [IsScalarTower R A N]
303+
304+
/- This lemma characterizes the kernel of `TensorProduct.mapOfCompatibleSMul`. Together with
305+
`TensorProduct.mapOfCompatibleSMul_surjective` it gives an alternative characterization of
306+
`M ⊗[A] N` as the quotient of `M ⊗[R] N` by the submodule `S` described below. -/
307+
lemma ker_mapOfCompatibleSMul :
308+
(mapOfCompatibleSMul A R A M N).ker =
309+
Submodule.span A {(a • m) ⊗ₜ[R] n - m ⊗ₜ[R] (a • n) | (a : A) (m : M) (n : N)} := by
310+
refine (Submodule.span_eq_of_le (mapOfCompatibleSMul A R A M N).ker ?_ ?_).symm
311+
· rintro - ⟨a, m, n, rfl⟩
312+
simp [smul_tmul]
313+
· let S := Submodule.span A {(a • m) ⊗ₜ[R] n - m ⊗ₜ[R] (a • n) | (a : A) (m : M) (n : N)}
314+
let F : M ⊗[A] N →ₗ[A] (M ⊗[R] N) ⧸ S := TensorProduct.lift ({
315+
toFun m := {
316+
toFun n := S.mkQ (m ⊗ₜ[R] n)
317+
map_add' _ _ := by simp [tmul_add]
318+
map_smul' a n := by
319+
rw [Submodule.mkQ_apply, Submodule.mkQ_apply, ← Submodule.Quotient.mk_smul, eq_comm,
320+
Submodule.Quotient.eq, RingHom.id_apply]
321+
exact Submodule.subset_span ⟨a, m, n, rfl⟩ }
322+
map_add' _ _ := by ext _; simp [add_tmul]
323+
map_smul' _ _ := by simp; rfl })
324+
have h : F ∘ₗ mapOfCompatibleSMul A R A M N = S.mkQ := by ext; simp [S, F]
325+
change (mapOfCompatibleSMul A R A M N).ker ≤ S
326+
rw [← Submodule.ker_mkQ S, ← h]
327+
exact (mapOfCompatibleSMul A R A M N).ker_le_ker_comp F
328+
300329
end TensorProduct.AlgebraTensorModule

0 commit comments

Comments
 (0)