Documentation

Monlib.LinearAlgebra.TensorProduct.BasicLemmas

Some lemmas about tensor_product #

theorem TensorProduct.ext_iff' {R : Type u_1} {M : Type u_3} {N : Type u_2} {P : Type u_4} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {g : TensorProduct R M N →ₗ[R] P} {h : TensorProduct R M N →ₗ[R] P} :
g = h ∀ (x : M) (y : N), g (x ⊗ₜ[R] y) = h (x ⊗ₜ[R] y)
theorem TensorProduct.ext'_iff {R : Type u_1} {M : Type u_4} {N : Type u_3} {P : Type u_5} {Q : Type u_2} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] {g : TensorProduct R (TensorProduct R M N) Q →ₗ[R] P} {h : TensorProduct R (TensorProduct R M N) Q →ₗ[R] P} :
(∀ (x : TensorProduct R (TensorProduct R M N) Q), g x = h x) ∀ (x : M) (y : N) (z : Q), g ((x ⊗ₜ[R] y) ⊗ₜ[R] z) = h ((x ⊗ₜ[R] y) ⊗ₜ[R] z)
@[simp]
theorem TensorProduct.map_apply {R : Type u_1} {M : Type u_2} {N : Type u_4} {P : Type u_3} {Q : Type u_5} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (f : M →ₗ[R] P) (t : N →ₗ[R] Q) (x : M) (y : N) :
(TensorProduct.map f t) (x ⊗ₜ[R] y) = f x ⊗ₜ[R] t y
@[simp]
theorem TensorProduct.comm_commutes {R : Type u_1} {M : Type u_3} {N : Type u_2} {P : Type u_4} {Q : Type u_5} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] {g : TensorProduct R M N →ₗ[R] P} {h : TensorProduct R M N →ₗ[R] Q} :
theorem TensorProduct.comm_commutes' {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {g : M →ₗ[R] M} {h : M →ₗ[R] R} :
(TensorProduct.comm R M R) ∘ₗ TensorProduct.map g h = TensorProduct.map h g ∘ₗ (TensorProduct.comm R M M)
theorem TensorProduct.assoc_comp_map {R : Type u_1} [CommSemiring R] {M : Type u_2} {N : Type u_3} {M₂ : Type u_4} {N₂ : Type u_5} {P : Type u_6} {Q : Type u_7} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid M₂] [AddCommMonoid N₂] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R M₂] [Module R N₂] [Module R P] [Module R Q] (f : M →ₗ[R] P) (t : N →ₗ[R] Q) (s : M₂ →ₗ[R] N₂) :
theorem TensorProduct.ext_threefold' {R : Type u_1} [CommSemiring R] {M : Type u_2} {N : Type u_3} {P : Type u_4} {Q : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] {g : TensorProduct R M (TensorProduct R N P) →ₗ[R] Q} {h : TensorProduct R M (TensorProduct R N P) →ₗ[R] Q} (H : ∀ (x : M) (y : N) (z : P), g (x ⊗ₜ[R] y ⊗ₜ[R] z) = h (x ⊗ₜ[R] y ⊗ₜ[R] z)) :
g = h
theorem TensorProduct.assoc_symm_comp_map {R : Type u_1} [CommSemiring R] {M : Type u_2} {N : Type u_3} {M₂ : Type u_4} {N₂ : Type u_5} {P : Type u_6} {Q : Type u_7} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid M₂] [AddCommMonoid N₂] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R M₂] [Module R N₂] [Module R P] [Module R Q] (f : M →ₗ[R] P) (t : N →ₗ[R] Q) (s : M₂ →ₗ[R] N₂) :
(TensorProduct.assoc R P Q N₂).symm ∘ₗ TensorProduct.map f (TensorProduct.map t s) = TensorProduct.map (TensorProduct.map f t) s ∘ₗ (TensorProduct.assoc R M N M₂).symm
theorem TensorProduct.comm_map {R : Type u_1} [CommSemiring R] {M : Type u_2} {N : Type u_3} {P : Type u_4} {Q : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (f : M →ₗ[R] P) (t : N →ₗ[R] Q) :
(TensorProduct.comm R P Q) ∘ₗ TensorProduct.map f t = TensorProduct.map t f ∘ₗ (TensorProduct.comm R M N)
theorem TensorProduct.comm_symm_map {R : Type u_1} [CommSemiring R] {M : Type u_2} {N : Type u_3} {P : Type u_4} {Q : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (f : M →ₗ[R] P) (t : N →ₗ[R] Q) :
(TensorProduct.comm R P Q).symm ∘ₗ TensorProduct.map t f = TensorProduct.map f t ∘ₗ (TensorProduct.comm R M N).symm
theorem TensorProduct.map_sum {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {M₂ : Type u_3} {N₁ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid N₁] [AddCommMonoid N₂] [Module R M₁] [Module R M₂] [Module R N₁] [Module R N₂] (x : M₁ →ₗ[R] M₂) {α : Type u_6} (s : Finset α) (n : αN₁ →ₗ[R] N₂) :
TensorProduct.map x (∑ as, n a) = as, TensorProduct.map x (n a)
theorem TensorProduct.sum_map {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {M₂ : Type u_3} {N₁ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid N₁] [AddCommMonoid N₂] [Module R M₁] [Module R M₂] [Module R N₁] [Module R N₂] {α : Type u_6} (s : Finset α) (n : αN₁ →ₗ[R] N₂) (x : M₁ →ₗ[R] M₂) :
TensorProduct.map (∑ as, n a) x = as, TensorProduct.map (n a) x
theorem TensorProduct.map_smul {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {M₂ : Type u_3} {N₁ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid N₁] [AddCommMonoid N₂] [Module R M₁] [Module R M₂] [Module R N₁] [Module R N₂] (x : M₁ →ₗ[R] M₂) (y : N₁ →ₗ[R] N₂) (a : R) :
theorem TensorProduct.smul_map {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {M₂ : Type u_3} {N₁ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid N₁] [AddCommMonoid N₂] [Module R M₁] [Module R M₂] [Module R N₁] [Module R N₂] (x : M₁ →ₗ[R] M₂) (y : N₁ →ₗ[R] N₂) (a : R) :
theorem TensorProduct.add_map {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {M₂ : Type u_3} {N₁ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid N₁] [AddCommMonoid N₂] [Module R M₁] [Module R M₂] [Module R N₁] [Module R N₂] (x : M₁ →ₗ[R] M₂) (y : M₁ →ₗ[R] M₂) (z : N₁ →ₗ[R] N₂) :
theorem TensorProduct.map_zero {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {N₁ : Type u_3} {M₂ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid N₁] [AddCommMonoid M₂] [AddCommMonoid N₂] [Module R M₁] [Module R N₁] [Module R M₂] [Module R N₂] (x : M₁ →ₗ[R] N₁) :
theorem TensorProduct.zero_map {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {N₁ : Type u_3} {M₂ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid N₁] [AddCommMonoid M₂] [AddCommMonoid N₂] [Module R M₁] [Module R N₁] [Module R M₂] [Module R N₂] (x : M₁ →ₗ[R] N₁) :
theorem TensorProduct.tmul_eq_zero {R : Type u_1} [Field R] {M : Type u_2} {N : Type u_3} [AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] {x : M} {y : N} :
x ⊗ₜ[R] y = 0 x = 0 y = 0
theorem TensorProduct.zero_tmul_zero {R : Type u_1} [CommSemiring R] {M : Type u_2} {N : Type u_3} [AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] :
0 = 0 ⊗ₜ[R] 0
theorem TensorProduct.map_mul'_commute_iff {R : Type u_1} {M : Type u_2} {N : Type u_3} [CommSemiring R] [NonUnitalNonAssocSemiring M] [NonUnitalNonAssocSemiring N] [Module R M] [Module R N] [SMulCommClass R M M] [SMulCommClass R N N] [IsScalarTower R M M] [IsScalarTower R N N] {f : M →ₗ[R] N} :
LinearMap.mul' R N ∘ₗ TensorProduct.map f f = f ∘ₗ LinearMap.mul' R M ∀ (x y : M), f (x * y) = f x * f y
theorem Algebra.TensorProduct.map_toLinearMap {R : Type u_1} {M : Type u_2} {N : Type u_3} {P : Type u_4} {Q : Type u_5} [CommSemiring R] [Semiring M] [Semiring N] [Semiring P] [Semiring Q] [Algebra R M] [Algebra R N] [Algebra R P] [Algebra R Q] (f : M →ₐ[R] N) (g : P →ₐ[R] Q) :
(Algebra.TensorProduct.map f g).toLinearMap = TensorProduct.map f.toLinearMap g.toLinearMap
theorem AlgHom.commute_map_mul' {R : Type u_1} {M : Type u_2} {N : Type u_3} [CommSemiring R] [Semiring M] [Semiring N] [Algebra R M] [Algebra R N] (f : M →ₐ[R] N) :
LinearMap.mul' R N ∘ₗ (Algebra.TensorProduct.map f f).toLinearMap = f.toLinearMap ∘ₗ LinearMap.mul' R M
theorem AlgHom.commute_map_mul'_apply {R : Type u_1} {M : Type u_2} {N : Type u_3} [CommSemiring R] [Semiring M] [Semiring N] [Algebra R M] [Algebra R N] (f : M →ₐ[R] N) (x : TensorProduct R M M) :
theorem TensorProduct.map_add {R : Type u_1} [CommSemiring R] {M₁ : Type u_2} {M₂ : Type u_3} {N₁ : Type u_4} {N₂ : Type u_5} [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid N₁] [AddCommMonoid N₂] [Module R M₁] [Module R M₂] [Module R N₁] [Module R N₂] (x : M₁ →ₗ[R] M₂) (y : M₁ →ₗ[R] M₂) (z : N₁ →ₗ[R] N₂) :
theorem TensorProduct.of_basis_eq_span {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [CommSemiring 𝕜] [AddCommGroup E] [Module 𝕜 E] [AddCommGroup F] [Module 𝕜 F] (x : TensorProduct 𝕜 E F) {ι₁ : Type u_4} {ι₂ : Type u_5} [Fintype ι₁] [Fintype ι₂] (b₁ : Basis ι₁ 𝕜 E) (b₂ : Basis ι₂ 𝕜 F) :
x = i : ι₁, j : ι₂, ((b₁.tensorProduct b₂).repr x) (i, j) b₁ i ⊗ₜ[𝕜] b₂ j