mathlib3 documentation

lean-ga / for_mathlib.ring_theory.tensor_product

Extras for ring_theory.tensor_product #

This file in mathlib starts with some heterobasic results, but quickly drops back to forcing various rings or algebra to be equal. This isn't enough for us when trying to base change a quadratic form.

https://github.com/leanprover-community/mathlib4/pull/6035 adds some of these results to mathlib4.

The A-module structure on A ⊗[R] M #

theorem tensor_product.algebra_tensor_module.map_apply {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] (f : M →ₗ[A] P) (g : N →ₗ[R] Q) (x : tensor_product R M N) :
@[simp]
theorem tensor_product.algebra_tensor_module.map_tmul {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] (f : M →ₗ[A] P) (g : N →ₗ[R] Q) (m : M) (n : N) :
theorem tensor_product.algebra_tensor_module.map_comp {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} {P' : Type u_9} {Q' : Type u_10} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] [add_comm_monoid P'] [module R P'] [module A P'] [is_scalar_tower R A P'] [add_comm_monoid Q'] [module R Q'] (f : P →ₗ[A] P') (f' : M →ₗ[A] P) (g : Q →ₗ[R] Q') (g' : N →ₗ[R] Q) :
theorem tensor_product.algebra_tensor_module.map_map {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} {P' : Type u_9} {Q' : Type u_10} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] [add_comm_monoid P'] [module R P'] [module A P'] [is_scalar_tower R A P'] [add_comm_monoid Q'] [module R Q'] (f : P →ₗ[A] P') (f' : M →ₗ[A] P) (g : Q →ₗ[R] Q') (g' : N →ₗ[R] Q) (x : tensor_product R M N) :
theorem tensor_product.algebra_tensor_module.map_smul_left {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] (r : A) (f : M →ₗ[A] P) (g : N →ₗ[R] Q) :
def tensor_product.algebra_tensor_module.map_bilinear {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] :

Heterobasic map_bilinear

Equations
@[simp]
theorem tensor_product.algebra_tensor_module.congr_tmul {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] (f : M ≃ₗ[A] P) (g : N ≃ₗ[R] Q) (m : M) (n : N) :
@[simp]
theorem tensor_product.algebra_tensor_module.congr_symm_tmul {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] (f : M ≃ₗ[A] P) (g : N ≃ₗ[R] Q) (p : P) (q : Q) :
@[simp]
theorem tensor_product.algebra_tensor_module.dual_distrib_apply {R : Type u_1} {A : Type u_2} {M : Type u_5} {N : Type u_6} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] (f : module.dual A M) (g : module.dual R N) (m : M) (n : N) :
def tensor_product.algebra_tensor_module.uncurry' (R : Type u_1) (A : Type u_2) (N : Type u_6) (P : Type u_7) (Q : Type u_8) [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] :

A variant of algebra_tensor_module.uncurry, where only the outermost map is A-linear.

Equations
def tensor_product.algebra_tensor_module.lcurry' (R : Type u_1) (A : Type u_2) (N : Type u_6) (P : Type u_7) (Q : Type u_8) [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] :

A variant of algebra_tensor_module.lcurry, where only the outermost map is A-linear.

Equations
@[simp]
theorem tensor_product.algebra_tensor_module.tensor_tensor_tensor_comm_apply (R : Type u_1) (A : Type u_2) {M : Type u_5} {N : Type u_6} {P : Type u_7} {Q : Type u_8} [comm_semiring R] [comm_semiring A] [algebra R A] [add_comm_monoid M] [module R M] [module A M] [is_scalar_tower R A M] [add_comm_monoid N] [module R N] [add_comm_monoid P] [module R P] [module A P] [is_scalar_tower R A P] [add_comm_monoid Q] [module R Q] (m : M) (n : N) (p : P) (q : Q) :
theorem algebra.tensor_product.algebra_map_tmul_one {R : Type u_1} {A : Type u_3} {B : Type u_4} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (r : R) :
def algebra.tensor_product.alg_hom_of_linear_map_tensor_product' {R : Type u_1} {S : Type u_2} {A : Type u_3} {B : Type u_4} {C : Type u_5} [comm_semiring R] [comm_semiring S] [semiring A] [semiring B] [semiring C] [algebra R A] [algebra R B] [algebra R C] [algebra S A] [algebra S C] [algebra R S] [smul_comm_class R S A] [is_scalar_tower R S A] [is_scalar_tower R S C] (f : tensor_product R A B →ₗ[S] C) (w₁ : (a₁ a₂ : A) (b₁ b₂ : B), f ((a₁ * a₂) ⊗ₜ[R] (b₁ * b₂)) = f (a₁ ⊗ₜ[R] b₁) * f (a₂ ⊗ₜ[R] b₂)) (w₂ : (r : S), f ((algebra_map S A) r ⊗ₜ[R] 1) = (algebra_map S C) r) :

a stronger version of alg_hom_of_linear_map_tensor_product

Equations
@[simp]
theorem algebra.tensor_product.alg_hom_of_linear_map_tensor_product'_apply {R : Type u_1} {A : Type u_3} {B : Type u_4} {C : Type u_5} [comm_semiring R] [semiring A] [semiring B] [semiring C] [algebra R A] [algebra R B] [algebra R C] (f : tensor_product R A B →ₗ[R] C) (w₁ : (a₁ a₂ : A) (b₁ b₂ : B), f ((a₁ * a₂) ⊗ₜ[R] (b₁ * b₂)) = f (a₁ ⊗ₜ[R] b₁) * f (a₂ ⊗ₜ[R] b₂)) (w₂ : (r : R), f ((algebra_map R A) r ⊗ₜ[R] 1) = (algebra_map R C) r) (x : tensor_product R A B) :
def algebra.tensor_product.map' {R : Type u_1} {S : Type u_2} {A : Type u_3} {B : Type u_4} {C : Type u_5} {D : Type u_6} [comm_semiring R] [comm_semiring S] [semiring A] [semiring B] [semiring C] [semiring D] [algebra R A] [algebra R B] [algebra R C] [algebra R D] [algebra S A] [algebra S C] [algebra R S] [smul_comm_class R S A] [is_scalar_tower R S A] [is_scalar_tower R S C] (f : A →ₐ[S] C) (g : B →ₐ[R] D) :

a stronger version of map

Equations
@[simp]
theorem algebra.tensor_product.map'_tmul {R : Type u_1} {S : Type u_2} {A : Type u_3} {B : Type u_4} {C : Type u_5} {D : Type u_6} [comm_semiring R] [comm_semiring S] [semiring A] [semiring B] [semiring C] [semiring D] [algebra R A] [algebra R B] [algebra R C] [algebra R D] [algebra S A] [algebra S C] [algebra R S] [smul_comm_class R S A] [is_scalar_tower R S A] [is_scalar_tower R S C] (f : A →ₐ[S] C) (g : B →ₐ[R] D) (a : A) (b : B) :
def algebra.tensor_product.include_left' {R : Type u_1} {S : Type u_2} {A : Type u_3} {B : Type u_4} [comm_semiring R] [comm_semiring S] [semiring A] [semiring B] [algebra R A] [algebra R B] [algebra S A] [algebra R S] [smul_comm_class R S A] [is_scalar_tower R S A] :

a stronger version of include_left

Equations