Skip to content

Commit 1dc766d

Browse files
committed
updates 6
1 parent a97b2b7 commit 1dc766d

5 files changed

Lines changed: 122 additions & 37 deletions

File tree

Monlib/LinearAlgebra/Coalgebra/FiniteDimensional.lean

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ by
140140

141141
open Coalgebra LinearMap TensorProduct in
142142
theorem Coalgebra.rTensor_mul_comp_lTensor_comul
143-
[RCLike R] [NormedAddCommGroupOfRing A] [Star A] [InnerProductSpace R A]
143+
[RCLike R] [NormedAddCommGroupOfRing A] [InnerProductSpace R A]
144144
[SMulCommClass R A A] [IsScalarTower R A A] [FiniteDimensional R A]
145-
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ (star x) * z⟫_R) :
145+
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ x * z⟫_R) :
146146
(rT A (m A)) ∘ₗ (ϰ A A A).symm.toLinearMap ∘ₗ (lT A comul) = comul ∘ₗ (m A) :=
147147
by
148148
rw [TensorProduct.ext_iff']
@@ -158,9 +158,9 @@ by
158158

159159
-- open scoped ofFiniteDimensionalHilbertAlgebra in
160160
theorem Coalgebra.rTensor_mul_comp_lTensor_mul_adjoint
161-
[RCLike R] [NormedAddCommGroupOfRing A] [Star A] [InnerProductSpace R A]
161+
[RCLike R] [NormedAddCommGroupOfRing A] [InnerProductSpace R A]
162162
[SMulCommClass R A A] [IsScalarTower R A A] [FiniteDimensional R A]
163-
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ (star x) * z⟫_R) :
163+
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ x * z⟫_R) :
164164
(rT A (m A)) ∘ₗ (ϰ A A A).symm.toLinearMap ∘ₗ (lT A (LinearMap.adjoint (m A))) = (LinearMap.adjoint (m A)) ∘ₗ (m A) :=
165165
Coalgebra.rTensor_mul_comp_lTensor_comul h
166166

@@ -239,9 +239,9 @@ Coalgebra.rTensor_mul_comp_lTensor_comul h
239239

240240
open Coalgebra LinearMap TensorProduct in
241241
theorem Coalgebra.lTensor_mul_comp_rTensor_comul_of
242-
[RCLike R] [NormedAddCommGroupOfRing A] [Star A] [InnerProductSpace R A]
242+
[RCLike R] [NormedAddCommGroupOfRing A] [InnerProductSpace R A]
243243
[SMulCommClass R A A] [IsScalarTower R A A] [FiniteDimensional R A]
244-
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ (star x) * z⟫_R) :
244+
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ x * z⟫_R) :
245245
(lT A (m A)) ∘ₗ (ϰ A A A).toLinearMap ∘ₗ (rT A comul) = comul ∘ₗ (m A) :=
246246
by
247247
apply_fun adjoint using LinearEquiv.injective _
@@ -255,16 +255,16 @@ by
255255

256256
open Coalgebra LinearMap TensorProduct in
257257
theorem Coalgebra.lTensor_mul_comp_rTensor_mul_adjoint_of
258-
[RCLike R] [NormedAddCommGroupOfRing A] [Star A] [InnerProductSpace R A]
258+
[RCLike R] [NormedAddCommGroupOfRing A] [InnerProductSpace R A]
259259
[SMulCommClass R A A] [IsScalarTower R A A] [FiniteDimensional R A]
260-
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ (star x) * z⟫_R) :
260+
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ x * z⟫_R) :
261261
(lT A (m A)) ∘ₗ (ϰ A A A).toLinearMap ∘ₗ (rT A (LinearMap.adjoint (m A))) = LinearMap.adjoint (m A) ∘ₗ (m A) :=
262262
Coalgebra.lTensor_mul_comp_rTensor_comul_of h
263263

264264
noncomputable def FiniteDimensionalCoAlgebra_isFrobeniusAlgebra_of
265-
[RCLike R] [NormedAddCommGroupOfRing A] [Star A] [InnerProductSpace R A]
265+
[RCLike R] [NormedAddCommGroupOfRing A] [InnerProductSpace R A]
266266
[SMulCommClass R A A] [IsScalarTower R A A] [FiniteDimensional R A]
267-
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ (star x) * z⟫_R) :
267+
(h : ∃ σ : A → A, ∀ x y z : A, ⟪x * y, z⟫_R = ⟪y, σ x * z⟫_R) :
268268
FrobeniusAlgebra R A where
269269
lTensor_mul_comp_rTensor_comul_commute := by
270270
rw [Coalgebra.lTensor_mul_comp_rTensor_comul_of h, Coalgebra.rTensor_mul_comp_lTensor_comul h]

Monlib/LinearAlgebra/QuantumSet/Basic.lean

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,15 +530,16 @@ lemma _root_.QuantumSet.rTensor_mul_comp_lTensor_comul_eq_comul_comp_mul :
530530
= Coalgebra.comul ∘ₗ mul' ℂ A :=
531531
by
532532
rw [Coalgebra.comul_eq_mul_adjoint, Coalgebra.rTensor_mul_comp_lTensor_mul_adjoint]
533-
exact ⟨modAut _, fun x y z ↦ inner_star_left x y z⟩
533+
exact ⟨_, fun x y z ↦ inner_star_left x y z⟩
534534
open LinearMap in
535535
lemma _root_.QuantumSet.lTensor_mul_comp_rTensor_comul_eq_comul_comp_mul :
536536
lTensor A (mul' ℂ A) ∘ₗ (TensorProduct.assoc ℂ _ _ _).toLinearMap ∘ₗ rTensor A (Coalgebra.comul)
537537
= Coalgebra.comul ∘ₗ mul' ℂ A :=
538538
by
539539
rw [Coalgebra.comul_eq_mul_adjoint, Coalgebra.lTensor_mul_comp_rTensor_mul_adjoint_of]
540-
exact ⟨modAut _, fun x y z ↦ inner_star_left x y z⟩
540+
exact ⟨_, fun x y z ↦ inner_star_left x y z⟩
541541

542+
@[instance]
542543
noncomputable def _root_.QuantumSet.isFrobeniusAlgebra :
543544
FrobeniusAlgebra ℂ A where
544545
lTensor_mul_comp_rTensor_comul_commute := by

Monlib/LinearAlgebra/QuantumSet/SchurMul.lean

Lines changed: 69 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ open Coalgebra
3636
`x •ₛ y := m ∘ (x ⊗ y) ∘ comul` -/
3737
@[simps]
3838
noncomputable def schurMul {B C : Type _}
39-
[starAlgebra B] [starAlgebra C]
40-
[hB : QuantumSet B] [hC : QuantumSet C] :
39+
[AddCommMonoid B] [NonUnitalNonAssocSemiring C]
40+
[Module ℂ B] [Module ℂ C]
41+
[CoalgebraStruct ℂ B]
42+
[SMulCommClass ℂ C C]
43+
[IsScalarTower ℂ C C]
44+
:
4145
(B →ₗ[ℂ] C) →ₗ[ℂ] (B →ₗ[ℂ] C) →ₗ[ℂ] (B →ₗ[ℂ] C)
4246
where
4347
toFun x :=
@@ -65,9 +69,15 @@ notation3:80 (name := schurMulNotation) x:81 " •ₛ " y:80 => schurMul x y
6569
-- open scoped schurMul
6670

6771
variable {A B C : Type _}
68-
[starAlgebra A] [starAlgebra B] [starAlgebra C]
69-
[hA : QuantumSet A] [hB : QuantumSet B] [hC : QuantumSet C]
70-
72+
[NormedAddCommGroupOfRing A] [NormedAddCommGroupOfRing B] [NormedAddCommGroupOfRing C]
73+
[InnerProductSpace ℂ A] [InnerProductSpace ℂ B] [InnerProductSpace ℂ C]
74+
[SMulCommClass ℂ A A] [SMulCommClass ℂ B B]
75+
[SMulCommClass ℂ C C] [IsScalarTower ℂ A A]
76+
[IsScalarTower ℂ B B] [IsScalarTower ℂ C C]
77+
[FiniteDimensional ℂ A] [FiniteDimensional ℂ B]
78+
[FiniteDimensional ℂ C]
79+
80+
omit [FiniteDimensional ℂ B] in
7181
theorem schurMul.apply_rankOne
7282
(a : B) (b : C) (c : B) (d : C) : (↑|a⟩⟨b|) •ₛ (↑|c⟩⟨d|) = (|a * c⟩⟨b * d| : C →ₗ[ℂ] B) :=
7383
by
@@ -83,6 +93,7 @@ theorem schurMul.apply_rankOne
8393
LinearMap.mul'_apply, smul_mul_smul_comm, ← TensorProduct.inner_tmul, ← Finset.sum_smul, ← inner_sum,
8494
h, comul_eq_mul_adjoint, LinearMap.adjoint_inner_right, LinearMap.mul'_apply]
8595

96+
omit [FiniteDimensional ℂ B] in
8697
theorem schurMul.apply_ket
8798
(a b : B) :
8899
(ket ℂ a) •ₛ (ket ℂ b) = (ket ℂ (a * b)).toLinearMap :=
@@ -175,14 +186,15 @@ theorem mul_comp_lid_symm {R : Type*} [CommSemiring R] :
175186
by aesop
176187

177188
theorem schurMul.apply_bra
178-
(a b : B) :
189+
(a b : C) :
179190
(bra ℂ a) •ₛ (bra ℂ b) = (bra ℂ (a * b)).toLinearMap :=
180191
by
181192
rw [schurMul_apply_apply, bra_map_bra, LinearMap.comp_assoc, bra_comp_linearMap,
182193
Coalgebra.comul_eq_mul_adjoint, LinearMap.adjoint_adjoint, LinearMap.mul'_apply,
183194
← LinearMap.comp_assoc, mul_comp_lid_symm]
184195
rfl
185196

197+
omit [FiniteDimensional ℂ B] in
186198
theorem schurMul.comp_apply_of
187199
(δ : ℂ)
188200
(hAδ : Coalgebra.comul ∘ₗ LinearMap.mul' ℂ A = δ • LinearMap.id)
@@ -218,7 +230,10 @@ theorem schurMul_adjoint (x y : B →ₗ[ℂ] C) :
218230
simp only [LinearMap.coe_mk, AddHom.coe_mk, LinearMap.adjoint_comp, LinearMap.adjoint_adjoint,
219231
TensorProduct.map_adjoint, LinearMap.comp_assoc]
220232

221-
theorem schurMul_real (x y : A →ₗ[ℂ] B) :
233+
theorem schurMul_real
234+
{A B : Type*} [starAlgebra A] [starAlgebra B]
235+
[QuantumSet A] [QuantumSet B]
236+
(x y : A →ₗ[ℂ] B) :
222237
LinearMap.real (x •ₛ y : A →ₗ[ℂ] B) = (LinearMap.real y) •ₛ (LinearMap.real x) :=
223238
by
224239
obtain ⟨α, β, rfl⟩ := x.exists_sum_rankOne
@@ -227,7 +242,9 @@ theorem schurMul_real (x y : A →ₗ[ℂ] B) :
227242
simp_rw [rankOne_real, schurMul.apply_rankOne, ← map_mul, ← StarMul.star_mul]
228243
rw [Finset.sum_comm]
229244

230-
theorem schurMul_one_right_rankOne (a b : B) :
245+
theorem schurMul_one_right_rankOne
246+
{B : Type*} [starAlgebra B] [hB : QuantumSet B]
247+
(a b : B) :
231248
(↑|a⟩⟨b|) •ₛ 1 = lmul a * (LinearMap.adjoint (lmul b : l(B))) :=
232249
by
233250
simp_rw [LinearMap.ext_iff_inner_map]
@@ -239,7 +256,9 @@ theorem schurMul_one_right_rankOne (a b : B) :
239256
hB.inner_star_left,
240257
inner_conj_symm, OrthonormalBasis.sum_inner_mul_inner, lmul_adjoint, lmul_apply]
241258

242-
theorem schurMul_one_left_rankOne (a b : B) :
259+
theorem schurMul_one_left_rankOne
260+
{B : Type*} [starAlgebra B] [hB : QuantumSet B]
261+
(a b : B) :
243262
(1 : l(B)) •ₛ (|a⟩⟨b|) = (rmul a : l(B)) * (LinearMap.adjoint (rmul b : l(B))) :=
244263
by
245264
simp_rw [← ext_inner_map]
@@ -252,7 +271,10 @@ theorem schurMul_one_left_rankOne (a b : B) :
252271
OrthonormalBasis.sum_inner_mul_inner, ← QuantumSet.inner_conj_left,
253272
rmul_adjoint, rmul_apply]
254273

255-
theorem Psi.schurMul (r₁ r₂ : ℝ)
274+
theorem Psi.schurMul
275+
{A B : Type*} [starAlgebra A] [starAlgebra B]
276+
[hA : QuantumSet A] [QuantumSet B]
277+
(r₁ r₂ : ℝ)
256278
(f g : A →ₗ[ℂ] B) :
257279
hA.Psi r₁ r₂ (f •ₛ g) = hA.Psi r₁ r₂ f * hA.Psi r₁ r₂ g :=
258280
by
@@ -268,7 +290,10 @@ theorem Psi.schurMul (r₁ r₂ : ℝ)
268290
hA.Psi_toFun_apply, Algebra.TensorProduct.tmul_mul_tmul,
269291
← MulOpposite.op_mul, ← StarMul.star_mul, ← map_mul]
270292

271-
theorem schurMul_assoc (f g h : A →ₗ[ℂ] B) :
293+
theorem schurMul_assoc {A B : Type*}
294+
[starAlgebra A] [starAlgebra B]
295+
[hA : QuantumSet A] [QuantumSet B]
296+
(f g h : A →ₗ[ℂ] B) :
272297
(f •ₛ g) •ₛ h = f •ₛ (g •ₛ h) :=
273298
by
274299
apply_fun hA.Psi 0 0 using LinearEquiv.injective _
@@ -290,22 +315,27 @@ theorem algHom_comp_mul {R A B : Type*} [CommSemiring R] [Semiring A]
290315
f.toLinearMap ∘ₗ LinearMap.mul' R A = (LinearMap.mul' R B) ∘ₗ (f.toLinearMap ⊗ₘ f.toLinearMap) :=
291316
nonUnitalAlgHom_comp_mul f.toNonUnitalAlgHom
292317

318+
attribute [local instance] Algebra.ofIsScalarTowerSmulCommClass
319+
293320
set_option linter.deprecated false in
294321
theorem comul_comp_nonUnitalAlgHom_adjoint (f : A →ₙₐ[ℂ] B) :
295322
Coalgebra.comul ∘ₗ (LinearMap.adjoint f.toLinearMap)
296323
= ((LinearMap.adjoint f.toLinearMap) ⊗ₘ (LinearMap.adjoint f.toLinearMap)) ∘ₗ Coalgebra.comul :=
297324
by
298325
simp_rw [comul_eq_mul_adjoint, ← TensorProduct.map_adjoint, ← LinearMap.adjoint_comp,
299-
nonUnitalAlgHom_comp_mul]
326+
nonUnitalAlgHom_comp_mul f]
300327

301328
theorem comul_comp_algHom_adjoint (f : A →ₐ[ℂ] B) :
302329
Coalgebra.comul ∘ₗ (LinearMap.adjoint f.toLinearMap)
303330
= ((LinearMap.adjoint f.toLinearMap) ⊗ₘ (LinearMap.adjoint f.toLinearMap)) ∘ₗ Coalgebra.comul :=
304331
comul_comp_nonUnitalAlgHom_adjoint f.toNonUnitalAlgHom
305332

333+
omit [FiniteDimensional ℂ C] in
306334
set_option linter.deprecated false in
307-
theorem schurMul_nonUnitalAlgHom_comp_coalgHom {D : Type*} [starAlgebra D]
308-
[hD : QuantumSet D] (g : C →ₙₐ[ℂ] D) (f : A →ₗc[ℂ] B) (x y : B →ₗ[ℂ] C) :
335+
theorem schurMul_nonUnitalAlgHom_comp_coalgHom {D : Type*}
336+
[Semiring D] [Module ℂ D]
337+
[SMulCommClass ℂ D D] [IsScalarTower ℂ D D]
338+
(g : C →ₙₐ[ℂ] D) (f : A →ₗc[ℂ] B) (x y : B →ₗ[ℂ] C) :
309339
(g.toLinearMap ∘ₗ x ∘ₗ f.toLinearMap) •ₛ (g.toLinearMap ∘ₗ y ∘ₗ f.toLinearMap)
310340
= g.toLinearMap ∘ₗ (x •ₛ y) ∘ₗ f.toLinearMap :=
311341
by
@@ -316,15 +346,21 @@ by
316346
congr 1
317347
simp_rw [TensorProduct.map_comp]
318348

319-
theorem schurMul_algHom_comp_coalgHom {D : Type*} [starAlgebra D]
320-
[hD : QuantumSet D] (g : C →ₐ[ℂ] D) (f : A →ₗc[ℂ] B) (x y : B →ₗ[ℂ] C) :
349+
omit [FiniteDimensional ℂ C] in
350+
theorem schurMul_algHom_comp_coalgHom {D : Type*}
351+
[Semiring D] [Module ℂ D]
352+
[SMulCommClass ℂ D D] [IsScalarTower ℂ D D]
353+
(g : C →ₐ[ℂ] D) (f : A →ₗc[ℂ] B) (x y : B →ₗ[ℂ] C) :
321354
(g.toLinearMap ∘ₗ x ∘ₗ f.toLinearMap) •ₛ (g.toLinearMap ∘ₗ y ∘ₗ f.toLinearMap)
322355
= g.toLinearMap ∘ₗ (x •ₛ y) ∘ₗ f.toLinearMap :=
323356
schurMul_nonUnitalAlgHom_comp_coalgHom (g.toNonUnitalAlgHom) f x y
324357

358+
omit [FiniteDimensional ℂ C] in
325359
set_option linter.deprecated false in
326-
theorem schurMul_nonUnitalAlgHom_comp_nonUnitalAlgHom_adjoint {D : Type*} [starAlgebra D]
327-
[hD : QuantumSet D] (g : C →ₙₐ[ℂ] D) (f : B →ₙₐ[ℂ] A) (x y : B →ₗ[ℂ] C) :
360+
theorem schurMul_nonUnitalAlgHom_comp_nonUnitalAlgHom_adjoint {D : Type*}
361+
[Semiring D] [Module ℂ D]
362+
[SMulCommClass ℂ D D] [IsScalarTower ℂ D D]
363+
(g : C →ₙₐ[ℂ] D) (f : B →ₙₐ[ℂ] A) (x y : B →ₗ[ℂ] C) :
328364
(g.toLinearMap ∘ₗ x ∘ₗ (LinearMap.adjoint f.toLinearMap))
329365
•ₛ (g.toLinearMap ∘ₗ y ∘ₗ LinearMap.adjoint f.toLinearMap)
330366
= g.toLinearMap ∘ₗ (x •ₛ y) ∘ₗ LinearMap.adjoint f.toLinearMap :=
@@ -336,25 +372,35 @@ by
336372
congr 1
337373
simp_rw [TensorProduct.map_comp]
338374

339-
theorem schurMul_algHom_comp_algHom_adjoint {D : Type*} [starAlgebra D]
340-
[hD : QuantumSet D] (g : C →ₐ[ℂ] D) (f : B →ₐ[ℂ] A) (x y : B →ₗ[ℂ] C) :
375+
omit [FiniteDimensional ℂ C] in
376+
theorem schurMul_algHom_comp_algHom_adjoint {D : Type*}
377+
[Semiring D] [Module ℂ D]
378+
[SMulCommClass ℂ D D] [IsScalarTower ℂ D D]
379+
(g : C →ₐ[ℂ] D) (f : B →ₐ[ℂ] A) (x y : B →ₗ[ℂ] C) :
341380
(g.toLinearMap ∘ₗ x ∘ₗ (LinearMap.adjoint f.toLinearMap))
342381
•ₛ (g.toLinearMap ∘ₗ y ∘ₗ LinearMap.adjoint f.toLinearMap)
343382
= g.toLinearMap ∘ₗ (x •ₛ y) ∘ₗ LinearMap.adjoint f.toLinearMap :=
344383
schurMul_nonUnitalAlgHom_comp_nonUnitalAlgHom_adjoint g.toNonUnitalAlgHom f.toNonUnitalAlgHom x y
345384

346-
theorem schurMul_one_iff_one_schurMul_of_isReal {x y z : A →ₗ[ℂ] B}
385+
theorem schurMul_one_iff_one_schurMul_of_isReal
386+
{A B : Type*} [starAlgebra A] [starAlgebra B]
387+
[QuantumSet A] [QuantumSet B]
388+
{x y z : A →ₗ[ℂ] B}
347389
(hx : LinearMap.IsReal x) (hy : LinearMap.IsReal y) (hz : LinearMap.IsReal z) :
348390
x •ₛ y = z ↔ y •ₛ x = z :=
349391
by
350392
rw [LinearMap.real_inj_eq, schurMul_real, x.isReal_iff.mp hx, y.isReal_iff.mp hy,
351393
z.isReal_iff.mp hz]
352394

353-
theorem schurMul_reflexive_of_isReal {x : A →ₗ[ℂ] A} (hx : LinearMap.IsReal x) :
395+
theorem schurMul_reflexive_of_isReal
396+
{A : Type*} [starAlgebra A] [QuantumSet A]
397+
{x : A →ₗ[ℂ] A} (hx : LinearMap.IsReal x) :
354398
x •ₛ 1 = 11 •ₛ x = 1 :=
355399
schurMul_one_iff_one_schurMul_of_isReal hx LinearMap.isRealOne LinearMap.isRealOne
356400

357-
theorem schurMul_irreflexive_of_isReal {x : A →ₗ[ℂ] A} (hx : LinearMap.IsReal x) :
401+
theorem schurMul_irreflexive_of_isReal
402+
{A : Type*} [starAlgebra A] [QuantumSet A]
403+
{x : A →ₗ[ℂ] A} (hx : LinearMap.IsReal x) :
358404
x •ₛ 1 = 01 •ₛ x = 0 :=
359405
schurMul_one_iff_one_schurMul_of_isReal hx LinearMap.isRealOne LinearMap.isRealZero
360406

Monlib/LinearAlgebra/QuantumSet/Symm.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,14 +293,14 @@ by
293293
theorem commute_real_real {R A : Type _} [Semiring R] [StarRing R] [AddCommMonoid A] [Module R A]
294294
[StarAddMonoid A] [StarModule R A] (f g : A →ₗ[R] A) :
295295
Commute (f.real : A →ₗ[R] A) (g.real : A →ₗ[R] A) ↔ Commute f g := by
296-
simp_rw [Commute, SemiconjBy, LinearMap.mul_eq_comp, ← LinearMap.real_comp, ←
296+
simp_rw [Commute, SemiconjBy, Module.End.mul_eq_comp, ← LinearMap.real_comp, ←
297297
LinearMap.real_inj_eq]
298298

299299
theorem linearMap_commute_modAut_pos_neg (r : ℝ) (x : B →ₗ[ℂ] B) :
300300
Commute x (hb.modAut r).toLinearMap ↔
301301
Commute x (hb.modAut (-r)).toLinearMap :=
302302
by
303-
simp_rw [Commute, SemiconjBy, LinearMap.mul_eq_comp]
303+
simp_rw [Commute, SemiconjBy, Module.End.mul_eq_comp]
304304
rw [AlgEquiv.linearMap_comp_eq_iff, ← starAlgebra.modAut_symm]
305305
nth_rw 1 [← AlgEquiv.comp_linearMap_eq_iff]
306306
rw [eq_comm]
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import Monlib.LinearAlgebra.QuantumSet.SchurMul
2+
import Monlib.LinearAlgebra.QuantumSet.TensorProduct
3+
import Mathlib.RingTheory.Coalgebra.TensorProduct
4+
5+
open scoped TensorProduct
6+
7+
lemma TensorProduct.AlgebraTensorModule.tensorTensorTensorComm_eq_swap_middle_tensor
8+
{R A B C D : Type*} [CommSemiring R]
9+
[AddCommMonoid A] [AddCommMonoid B] [AddCommMonoid C] [AddCommMonoid D]
10+
[Module R A] [Module R B] [Module R C] [Module R D] :
11+
(TensorProduct.AlgebraTensorModule.tensorTensorTensorComm R R R R A B C D) = swap_middle_tensor R A B C D :=
12+
by
13+
rw [← LinearEquiv.toLinearMap_inj]
14+
apply TensorProduct.ext_fourfold'
15+
simp
16+
17+
theorem TensorProduct.map_schurMul {A B C D : Type*}
18+
[AddCommMonoid A] [Semiring B]
19+
[AddCommMonoid C] [Semiring D]
20+
[Module ℂ A] [Module ℂ B]
21+
[Module ℂ C] [Module ℂ D]
22+
[Coalgebra ℂ A] [Coalgebra ℂ C]
23+
[SMulCommClass ℂ B B]
24+
[SMulCommClass ℂ D D]
25+
[IsScalarTower ℂ B B]
26+
[IsScalarTower ℂ D D]
27+
{f h : A →ₗ[ℂ] B} {g k : C →ₗ[ℂ] D} :
28+
(map f g) •ₛ (map h k) = map (f •ₛ h) (g •ₛ k) :=
29+
by
30+
rw [schurMul_apply_apply, TensorProduct.comul_def, LinearMap.mul'_tensorProduct,
31+
TensorProduct.AlgebraTensorModule.tensorTensorTensorComm_eq_swap_middle_tensor]
32+
simp only [LinearMap.comp_assoc]
33+
rw [← LinearMap.comp_assoc _ _ (swap_middle_tensor _ _ _ _ _).toLinearMap]
34+
nth_rw 2 [← LinearMap.comp_assoc, LinearMap.comp_assoc, ← swap_middle_tensor_symm]
35+
rw [swap_middle_tensor_map_conj]
36+
simp only [← LinearMap.comp_assoc, ← TensorProduct.map_comp,
37+
TensorProduct.AlgebraTensorModule.map_eq]
38+
rfl

0 commit comments

Comments
 (0)