Module docstring
{"# Associators and unitors for tensor products of modules over a commutative ring.
"}
{"# Associators and unitors for tensor products of modules over a commutative ring.
"}
TensorProduct.lid_tmul
theorem
(m : M) (r : R) : (TensorProduct.lid R M : R ⊗ M → M) (r ⊗ₜ m) = r • m
@[simp]
theorem lid_tmul (m : M) (r : R) : (TensorProduct.lid R M : R ⊗ M → M) (r ⊗ₜ m) = r • m :=
rfl
TensorProduct.lid_symm_apply
theorem
(m : M) : (TensorProduct.lid R M).symm m = 1 ⊗ₜ m
@[simp]
theorem lid_symm_apply (m : M) : (TensorProduct.lid R M).symm m = 1 ⊗ₜ m :=
rfl
TensorProduct.includeRight_lid
theorem
{S : Type*} [Semiring S] [Algebra R S] (m : R ⊗[R] M) :
(1 : S) ⊗ₜ[R] (TensorProduct.lid R M) m = (LinearMap.rTensor M (Algebra.algHom R R S).toLinearMap) m
lemma includeRight_lid {S : Type*} [Semiring S] [Algebra R S] (m : R ⊗[R] M) :
(1 : S) ⊗ₜ[R] (TensorProduct.lid R M) m =
(LinearMap.rTensor M (Algebra.algHom R R S).toLinearMap) m := by
suffices ∀ m, (LinearMap.rTensor M (Algebra.algHom R R S).toLinearMap).comp
(TensorProduct.lid R M).symm.toLinearMap m = 1 ⊗ₜ[R] m by
simp [← this]
intros; simp
TensorProduct.rid_tmul
theorem
(m : M) (r : R) : (TensorProduct.rid R M) (m ⊗ₜ r) = r • m
@[simp]
theorem rid_tmul (m : M) (r : R) : (TensorProduct.rid R M) (m ⊗ₜ r) = r • m :=
rfl
TensorProduct.rid_symm_apply
theorem
(m : M) : (TensorProduct.rid R M).symm m = m ⊗ₜ 1
@[simp]
theorem rid_symm_apply (m : M) : (TensorProduct.rid R M).symm m = m ⊗ₜ 1 :=
rfl
TensorProduct.lid_eq_rid
theorem
: TensorProduct.lid R R = TensorProduct.rid R R
theorem lid_eq_rid : TensorProduct.lid R R = TensorProduct.rid R R :=
LinearEquiv.toLinearMap_injective <| ext' mul_comm
TensorProduct.lidOfCompatibleSMul_tmul
theorem
(a m) : lidOfCompatibleSMul R A M (a ⊗ₜ[R] m) = a • m
theorem lidOfCompatibleSMul_tmul (a m) : lidOfCompatibleSMul R A M (a ⊗ₜ[R] m) = a • m := rfl
TensorProduct.assoc_tmul
theorem
(m : M) (n : N) (p : P) : (TensorProduct.assoc R M N P) (m ⊗ₜ n ⊗ₜ p) = m ⊗ₜ (n ⊗ₜ p)
@[simp]
theorem assoc_tmul (m : M) (n : N) (p : P) :
(TensorProduct.assoc R M N P) (m ⊗ₜ nm ⊗ₜ n ⊗ₜ p) = m ⊗ₜ (n ⊗ₜ p) :=
rfl
TensorProduct.assoc_symm_tmul
theorem
(m : M) (n : N) (p : P) : (TensorProduct.assoc R M N P).symm (m ⊗ₜ (n ⊗ₜ p)) = m ⊗ₜ n ⊗ₜ p
@[simp]
theorem assoc_symm_tmul (m : M) (n : N) (p : P) :
(TensorProduct.assoc R M N P).symm (m ⊗ₜ (n ⊗ₜ p)) = m ⊗ₜ nm ⊗ₜ n ⊗ₜ p :=
rfl
TensorProduct.map_map_comp_assoc_eq
theorem
(f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) :
map f (map g h) ∘ₗ TensorProduct.assoc R M N P = TensorProduct.assoc R Q S T ∘ₗ map (map f g) h
/-- Given linear maps `f : M → Q`, `g : N → S`, and `h : P → T`, if we identify `(M ⊗ N) ⊗ P`
with `M ⊗ (N ⊗ P)` and `(Q ⊗ S) ⊗ T` with `Q ⊗ (S ⊗ T)`, then this lemma states that
`f ⊗ (g ⊗ h) = (f ⊗ g) ⊗ h`. -/
lemma map_map_comp_assoc_eq (f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) :
mapmap f (map g h) ∘ₗ TensorProduct.assoc R M N P =
TensorProduct.assocTensorProduct.assoc R Q S T ∘ₗ map (map f g) h :=
ext <| ext <| LinearMap.ext fun _ => LinearMap.ext fun _ => LinearMap.ext fun _ => rfl
TensorProduct.map_map_assoc
theorem
(f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) (x : (M ⊗[R] N) ⊗[R] P) :
map f (map g h) (TensorProduct.assoc R M N P x) = TensorProduct.assoc R Q S T (map (map f g) h x)
lemma map_map_assoc (f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) (x : (M ⊗[R] N) ⊗[R] P) :
map f (map g h) (TensorProduct.assoc R M N P x) =
TensorProduct.assoc R Q S T (map (map f g) h x) :=
DFunLike.congr_fun (map_map_comp_assoc_eq _ _ _) _
TensorProduct.map_map_comp_assoc_symm_eq
theorem
(f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) :
map (map f g) h ∘ₗ (TensorProduct.assoc R M N P).symm = (TensorProduct.assoc R Q S T).symm ∘ₗ map f (map g h)
/-- Given linear maps `f : M → Q`, `g : N → S`, and `h : P → T`, if we identify `M ⊗ (N ⊗ P)`
with `(M ⊗ N) ⊗ P` and `Q ⊗ (S ⊗ T)` with `(Q ⊗ S) ⊗ T`, then this lemma states that
`(f ⊗ g) ⊗ h = f ⊗ (g ⊗ h)`. -/
lemma map_map_comp_assoc_symm_eq (f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) :
mapmap (map f g) h ∘ₗ (TensorProduct.assoc R M N P).symm =
(TensorProduct.assoc R Q S T).symm ∘ₗ map f (map g h) :=
ext <| LinearMap.ext fun _ => ext <| LinearMap.ext fun _ => LinearMap.ext fun _ => rfl
TensorProduct.map_map_assoc_symm
theorem
(f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) (x : M ⊗[R] (N ⊗[R] P)) :
map (map f g) h ((TensorProduct.assoc R M N P).symm x) = (TensorProduct.assoc R Q S T).symm (map f (map g h) x)
lemma map_map_assoc_symm (f : M →ₗ[R] Q) (g : N →ₗ[R] S) (h : P →ₗ[R] T) (x : M ⊗[R] (N ⊗[R] P)) :
map (map f g) h ((TensorProduct.assoc R M N P).symm x) =
(TensorProduct.assoc R Q S T).symm (map f (map g h) x) :=
DFunLike.congr_fun (map_map_comp_assoc_symm_eq _ _ _) _
TensorProduct.leftComm_tmul
theorem
(m : M) (n : N) (p : P) : leftComm R M N P (m ⊗ₜ (n ⊗ₜ p)) = n ⊗ₜ (m ⊗ₜ p)
@[simp]
theorem leftComm_tmul (m : M) (n : N) (p : P) : leftComm R M N P (m ⊗ₜ (n ⊗ₜ p)) = n ⊗ₜ (m ⊗ₜ p) :=
rfl
TensorProduct.leftComm_symm_tmul
theorem
(m : M) (n : N) (p : P) : (leftComm R M N P).symm (n ⊗ₜ (m ⊗ₜ p)) = m ⊗ₜ (n ⊗ₜ p)
@[simp]
theorem leftComm_symm_tmul (m : M) (n : N) (p : P) :
(leftComm R M N P).symm (n ⊗ₜ (m ⊗ₜ p)) = m ⊗ₜ (n ⊗ₜ p) :=
rfl
TensorProduct.tensorTensorTensorComm_tmul
theorem
(m : M) (n : N) (p : P) (q : Q) : tensorTensorTensorComm R M N P Q (m ⊗ₜ n ⊗ₜ (p ⊗ₜ q)) = m ⊗ₜ p ⊗ₜ (n ⊗ₜ q)
@[simp]
theorem tensorTensorTensorComm_tmul (m : M) (n : N) (p : P) (q : Q) :
tensorTensorTensorComm R M N P Q (m ⊗ₜ nm ⊗ₜ n ⊗ₜ (p ⊗ₜ q)) = m ⊗ₜ pm ⊗ₜ p ⊗ₜ (n ⊗ₜ q) :=
rfl
TensorProduct.tensorTensorTensorComm_symm
theorem
: (tensorTensorTensorComm R M N P Q).symm = tensorTensorTensorComm R M P N Q
@[simp]
theorem tensorTensorTensorComm_symm :
(tensorTensorTensorComm R M N P Q).symm = tensorTensorTensorComm R M P N Q :=
rfl
TensorProduct.tensorTensorTensorComm_comp_map
theorem
{V W : Type*} [AddCommMonoid V] [AddCommMonoid W] [Module R V] [Module R W] (f : M →ₗ[R] S) (g : N →ₗ[R] T)
(h : P →ₗ[R] V) (j : Q →ₗ[R] W) :
tensorTensorTensorComm R S T V W ∘ₗ map (map f g) (map h j) =
map (map f h) (map g j) ∘ₗ tensorTensorTensorComm R M N P Q
theorem tensorTensorTensorComm_comp_map {V W : Type*}
[AddCommMonoid V] [AddCommMonoid W] [Module R V] [Module R W]
(f : M →ₗ[R] S) (g : N →ₗ[R] T) (h : P →ₗ[R] V) (j : Q →ₗ[R] W) :
tensorTensorTensorCommtensorTensorTensorComm R S T V W ∘ₗ map (map f g) (map h j) =
mapmap (map f h) (map g j) ∘ₗ tensorTensorTensorComm R M N P Q :=
ext_fourfold' fun _ _ _ _ => rfl
TensorProduct.tensorTensorTensorAssoc_tmul
theorem
(m : M) (n : N) (p : P) (q : Q) : tensorTensorTensorAssoc R M N P Q (m ⊗ₜ n ⊗ₜ (p ⊗ₜ q)) = m ⊗ₜ (n ⊗ₜ p) ⊗ₜ q
@[simp]
theorem tensorTensorTensorAssoc_tmul (m : M) (n : N) (p : P) (q : Q) :
tensorTensorTensorAssoc R M N P Q (m ⊗ₜ nm ⊗ₜ n ⊗ₜ (p ⊗ₜ q)) = m ⊗ₜ (n ⊗ₜ p)m ⊗ₜ (n ⊗ₜ p) ⊗ₜ q :=
rfl
TensorProduct.tensorTensorTensorAssoc_symm_tmul
theorem
(m : M) (n : N) (p : P) (q : Q) : (tensorTensorTensorAssoc R M N P Q).symm (m ⊗ₜ (n ⊗ₜ p) ⊗ₜ q) = m ⊗ₜ n ⊗ₜ (p ⊗ₜ q)
@[simp]
theorem tensorTensorTensorAssoc_symm_tmul (m : M) (n : N) (p : P) (q : Q) :
(tensorTensorTensorAssoc R M N P Q).symm (m ⊗ₜ (n ⊗ₜ p)m ⊗ₜ (n ⊗ₜ p) ⊗ₜ q) = m ⊗ₜ nm ⊗ₜ n ⊗ₜ (p ⊗ₜ q) :=
rfl
LinearMap.rTensor_tensor
theorem
: rTensor (M ⊗[R] N) g = TensorProduct.assoc R Q M N ∘ₗ rTensor N (rTensor M g) ∘ₗ (TensorProduct.assoc R P M N).symm
theorem rTensor_tensor : rTensor (M ⊗[R] N) g =
TensorProduct.assocTensorProduct.assoc R Q M N ∘ₗ rTensor N (rTensor M g) ∘ₗ (TensorProduct.assoc R P M N).symm :=
TensorProduct.ext <| LinearMap.ext fun _ ↦ TensorProduct.ext rfl
LinearMap.lid_comp_rTensor
theorem
(f : N →ₗ[R] R) : (TensorProduct.lid R M).comp (rTensor M f) = lift ((lsmul R M).comp f)
theorem lid_comp_rTensor (f : N →ₗ[R] R) :
(TensorProduct.lid R M).comp (rTensor M f) = lift ((lsmul R M).comp f) := ext' fun _ _ ↦ rfl