Skip to content

Commit aa352fe

Browse files
committed
feat(Algebra): miscellaneous tensor product lemmas (leanprover-community#34417)
1 parent 899a433 commit aa352fe

5 files changed

Lines changed: 40 additions & 1 deletion

File tree

Mathlib/Algebra/Algebra/Subalgebra/Centralizer.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ lemma centralizer_coe_image_includeRight_eq_center_tensorProduct
124124
by rw [Algebra.TensorProduct.comm_comp_map_apply]⟩
125125
· rintro ⟨y, hy⟩
126126
refine ⟨(Algebra.TensorProduct.comm R _ _) y, (Algebra.TensorProduct.comm R A B).injective ?_⟩
127-
rw [← hy, comm_comp_map_apply, ← comm_symm, AlgEquiv.symm_apply_apply]
127+
rw [← hy, comm_comp_map_apply, ← Algebra.TensorProduct.comm_symm, AlgEquiv.symm_apply_apply]
128128

129129
/--
130130
Let `R` be a commutative ring and `A, B` be `R`-algebras where `B` is free as `R`-module.

Mathlib/Algebra/Module/Equiv/Defs.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,14 @@ theorem comp_symm : e.toLinearMap ∘ₛₗ e.symm.toLinearMap = LinearMap.id :=
364364
theorem symm_comp : e.symm.toLinearMap ∘ₛₗ e.toLinearMap = LinearMap.id :=
365365
LinearMap.ext e.symm_apply_apply
366366

367+
@[simp]
368+
lemma comp_symm_assoc (f : M₃ →ₛₗ[σ₃₂] M₂) [RingHomCompTriple σ₃₁ σ₁₂ σ₃₂] :
369+
e₁₂.toLinearMap ∘ₛₗ e₁₂.symm.toLinearMap ∘ₛₗ f = f := by ext; simp
370+
371+
@[simp]
372+
lemma symm_comp_assoc (f : M₃ →ₛₗ[σ₃₁] M₁) [RingHomCompTriple σ₃₁ σ₁₂ σ₃₂] :
373+
e₁₂.symm.toLinearMap ∘ₛₗ e₁₂.toLinearMap ∘ₛₗ f = f := by ext; simp
374+
367375
@[simp]
368376
theorem trans_symm : (e₁₂.trans e₂₃ : M₁ ≃ₛₗ[σ₁₃] M₃).symm = e₂₃.symm.trans e₁₂.symm :=
369377
rfl

Mathlib/LinearAlgebra/TensorProduct/Associator.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,12 @@ theorem leftComm_symm_tmul (m : M) (n : N) (p : P) :
218218
(leftComm R M N P).symm (n ⊗ₜ (m ⊗ₜ p)) = m ⊗ₜ (n ⊗ₜ p) :=
219219
rfl
220220

221+
attribute [local ext high] TensorProduct.ext in
222+
lemma leftComm_def : leftComm R M N P =
223+
(TensorProduct.assoc R _ _ _).symm ≪≫ₗ congr (TensorProduct.comm _ _ _) (.refl _ _) ≪≫ₗ
224+
(TensorProduct.assoc R _ _ _) := by
225+
apply LinearEquiv.toLinearMap_injective; ext; rfl
226+
221227
variable (M N P) in
222228
attribute [local ext high] ext in
223229
/-- A tensor product analogue of `mul_right_comm`. -/
@@ -235,6 +241,12 @@ theorem rightComm_tmul (m : M) (n : N) (p : P) :
235241
@[simp]
236242
theorem rightComm_symm : (rightComm R M N P).symm = rightComm R M P N := rfl
237243

244+
attribute [local ext high] TensorProduct.ext in
245+
lemma rightComm_def : rightComm R M N P =
246+
TensorProduct.assoc R _ _ _ ≪≫ₗ congr (.refl _ _) (TensorProduct.comm _ _ _) ≪≫ₗ
247+
(TensorProduct.assoc R _ _ _).symm := by
248+
apply LinearEquiv.toLinearMap_injective; ext; rfl
249+
238250
variable (M N P Q)
239251

240252
/-- This special case is worth defining explicitly since it is useful for defining multiplication

Mathlib/LinearAlgebra/TensorProduct/Basic.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,8 @@ theorem comm_tmul (m : M) (n : N) : (TensorProduct.comm R M N) (m ⊗ₜ n) = n
702702
rfl
703703

704704
@[simp]
705+
lemma comm_symm : (TensorProduct.comm R M N).symm = TensorProduct.comm R N M := rfl
706+
705707
theorem comm_symm_tmul (m : M) (n : N) : (TensorProduct.comm R M N).symm (n ⊗ₜ m) = m ⊗ₜ n :=
706708
rfl
707709

@@ -710,6 +712,20 @@ lemma lift_comp_comm_eq (f : M →ₛₗ[σ₁₂] N →ₛₗ[σ₁₂] P₂) :
710712
lift f ∘ₛₗ (TensorProduct.comm R N M).toLinearMap = lift f.flip :=
711713
ext rfl
712714

715+
attribute [local ext high] ext in
716+
@[simp] lemma comm_trans_comm :
717+
TensorProduct.comm R N M ≪≫ₗ TensorProduct.comm R M N = .refl _ _ := by
718+
apply LinearEquiv.toLinearMap_injective; ext; rfl
719+
720+
lemma comm_comp_comm :
721+
(TensorProduct.comm R N M).toLinearMap ∘ₗ (TensorProduct.comm R M N).toLinearMap = .id := by
722+
simp
723+
724+
@[simp]
725+
lemma comm_comp_comm_assoc (f : P →ₗ[R] M ⊗[R] N) :
726+
(TensorProduct.comm R N M).toLinearMap ∘ₗ (TensorProduct.comm R M N).toLinearMap ∘ₗ f = f := by
727+
rw [← LinearMap.comp_assoc, comm_comp_comm, LinearMap.id_comp]
728+
713729
end
714730

715731
section CompatibleSMul

Mathlib/LinearAlgebra/TensorProduct/Tower.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,9 @@ theorem congr_mul (f₁ f₂ : M ≃ₗ[A] M) (g₁ g₂ : N ≃ₗ[R] N) :
345345
(congr f g).symm (p ⊗ₜ q) = f.symm p ⊗ₜ g.symm q :=
346346
rfl
347347

348+
theorem congr_eq (f : M ≃ₗ[R] P) (g : N ≃ₗ[R] Q) :
349+
congr f g = TensorProduct.congr f g := rfl
350+
348351
variable (R A M)
349352

350353
/-- Heterobasic version of `TensorProduct.rid`. -/

0 commit comments

Comments
 (0)