File: Mathlib/LinearAlgebra/BilinearForm/TensorProduct.lean

full_name: LinearMap.BilinMap.tensorDistrib
code: /-- The tensor product of two bilinear forms injects into bilinear forms on tensor products.

Note this is heterobasic; the bilinear form on the left can take values in an (commutative) algebra
over the ring in which the right bilinear form is valued. -/
def tensorDistrib : BilinForm A M₁ ⊗[R] BilinForm R M₂ →ₗ[A] BilinForm A (M₁ ⊗[R] M₂) 
goal: LinearMap.BilinForm A M₁ ⊗[R] LinearMap.BilinForm R M₂ →ₗ[A] LinearMap.BilinForm A (M₁ ⊗[R] M₂)

full_name: LinearMap.BilinMap.tensorDistrib_tmul
code: @[simp]
theorem tensorDistrib_tmul (B₁ : BilinForm A M₁) (B₂ : BilinForm R M₂) (m₁ : M₁) (m₂ : M₂)
    (m₁' : M₁) (m₂' : M₂) :
    tensorDistrib R A (B₁ ⊗ₜ B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂')
      = B₂ m₂ m₂' • B₁ m₁ m₁' 
goal: (((LinearMap.BilinMap.tensorDistrib R A) (B₁ ⊗ₜ[R] B₂)) (m₁ ⊗ₜ[R] m₂)) (m₁' ⊗ₜ[R] m₂') = (B₂ m₂) m₂' • (B₁ m₁) m₁'

full_name: LinearMap.BilinMap.tmul
code: /-- The tensor product of two bilinear forms, a shorthand for dot notation. -/
protected abbrev tmul (B₁ : BilinMap A M₁ A) (B₂ : BilinMap  R M₂ R) : BilinMap A (M₁ ⊗[R] M₂) A 
goal: LinearMap.BilinMap A (M₁ ⊗[R] M₂) A

full_name: LinearMap.IsSymm.tmul
code: /-- A tensor product of symmetric bilinear forms is symmetric. -/
lemma _root_.LinearMap.IsSymm.tmul {B₁ : BilinMap A M₁ A} {B₂ : BilinMap R M₂ R}
    (hB₁ : B₁.IsSymm) (hB₂ : B₂.IsSymm) : (B₁.tmul B₂).IsSymm 
goal: LinearMap.IsSymm (B₁.tmul B₂)

full_name: LinearMap.BilinMap.baseChange
code: /-- The base change of a bilinear form. -/
protected def baseChange (B : BilinMap R M₂ R) : BilinForm A (A ⊗[R] M₂) 
goal: LinearMap.BilinForm A (A ⊗[R] M₂)

full_name: LinearMap.BilinMap.baseChange_tmul
code: @[simp]
theorem baseChange_tmul (B₂ : BilinMap R M₂ R) (a : A) (m₂ : M₂)
    (a' : A) (m₂' : M₂) :
    B₂.baseChange A (a ⊗ₜ m₂) (a' ⊗ₜ m₂') = (B₂ m₂ m₂') • (a * a') 
goal: ((LinearMap.BilinMap.baseChange A B₂) (a ⊗ₜ[R] m₂)) (a' ⊗ₜ[R] m₂') = (B₂ m₂) m₂' • (a * a')

full_name: LinearMap.BilinMap.IsSymm.baseChange
code: /-- The base change of a symmetric bilinear form is symmetric. -/
lemma IsSymm.baseChange {B₂ : BilinForm R M₂} (hB₂ : B₂.IsSymm) : (B₂.baseChange A).IsSymm 
goal: LinearMap.IsSymm (LinearMap.BilinMap.baseChange A B₂)

full_name: LinearMap.BilinMap.tensorDistribEquiv
code: /-- `tensorDistrib` as an equivalence. -/
noncomputable def tensorDistribEquiv :
    BilinForm R M₁ ⊗[R] BilinForm R M₂ ≃ₗ[R] BilinForm R (M₁ ⊗[R] M₂) 
goal: LinearMap.BilinForm R M₁ ⊗[R] LinearMap.BilinForm R M₂ ≃ₗ[R] LinearMap.BilinForm R (M₁ ⊗[R] M₂)

full_name: LinearMap.BilinMap.tensorDistribEquiv_tmul
code: @[simp]
theorem tensorDistribEquiv_tmul (B₁ : BilinForm R M₁) (B₂ : BilinForm R M₂) (m₁ : M₁) (m₂ : M₂)
    (m₁' : M₁) (m₂' : M₂) :
    tensorDistribEquiv R (M₁ := M₁) (M₂ := M₂) (B₁ ⊗ₜ[R] B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂')
      = B₁ m₁ m₁' * B₂ m₂ m₂' 
goal: (((LinearMap.BilinMap.tensorDistribEquiv R) (B₁ ⊗ₜ[R] B₂)) (m₁ ⊗ₜ[R] m₂)) (m₁' ⊗ₜ[R] m₂') = (B₁ m₁) m₁' * (B₂ m₂) m₂'

full_name: LinearMap.BilinMap.tensorDistribEquiv_toLinearMap
code: @[simp]
theorem tensorDistribEquiv_toLinearMap :
    (tensorDistribEquiv R (M₁ := M₁) (M₂ := M₂)).toLinearMap = tensorDistrib R R 
goal: ↑(LinearMap.BilinMap.tensorDistribEquiv R) = LinearMap.BilinMap.tensorDistrib R R

full_name: LinearMap.BilinMap.tensorDistribEquiv_apply
code: @[simp]
theorem tensorDistribEquiv_apply (B : BilinForm R M₁ ⊗ BilinForm R M₂) :
    tensorDistribEquiv R (M₁ := M₁) (M₂ := M₂) B = tensorDistrib R R B 
goal: (LinearMap.BilinMap.tensorDistribEquiv R) B = (LinearMap.BilinMap.tensorDistrib R R) B