Theorem: QuadraticForm.comp_tensorLId_eq
File: Mathlib/LinearAlgebra/QuadraticForm/TensorProduct/Isometries.lean

Proof steps:
state_before: R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
⊢ comp Q₂ ↑(TensorProduct.lid R M₂) = QuadraticForm.tmul QuadraticMap.sq Q₂
state_after: R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
⊢ (associatedHom R) (comp Q₂ ↑(TensorProduct.lid R M₂)) = (associatedHom R) (QuadraticForm.tmul QuadraticMap.sq Q₂)
tactic: refine (QuadraticMap.associated_rightInverse R).injective ?_
state_before: R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
⊢ (associatedHom R) (comp Q₂ ↑(TensorProduct.lid R M₂)) = (associatedHom R) (QuadraticForm.tmul QuadraticMap.sq Q₂)
state_after: case a.h.h.a.h.h
R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
m₂ m₂' : M₂
⊢ ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (comp Q₂ ↑(TensorProduct.lid R M₂)))) 1) m₂))
        1)
      m₂' =
    ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (QuadraticForm.tmul QuadraticMap.sq Q₂))) 1)
            m₂))
        1)
      m₂'
tactic: ext m₂ m₂'
state_before: case a.h.h.a.h.h
R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
m₂ m₂' : M₂
⊢ ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (comp Q₂ ↑(TensorProduct.lid R M₂)))) 1) m₂))
        1)
      m₂' =
    ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (QuadraticForm.tmul QuadraticMap.sq Q₂))) 1)
            m₂))
        1)
      m₂'
state_after: case a.h.h.a.h.h
R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
m₂ m₂' : M₂
⊢ (((associatedHom R) (comp Q₂ ↑(TensorProduct.lid R M₂))) (1 ⊗ₜ[R] m₂)) (1 ⊗ₜ[R] m₂') =
    (((associatedHom R) (QuadraticForm.tmul QuadraticMap.sq Q₂)) (1 ⊗ₜ[R] m₂)) (1 ⊗ₜ[R] m₂')
tactic: dsimp [-associated_apply]
state_before: case a.h.h.a.h.h
R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
m₂ m₂' : M₂
⊢ (((associatedHom R) (comp Q₂ ↑(TensorProduct.lid R M₂))) (1 ⊗ₜ[R] m₂)) (1 ⊗ₜ[R] m₂') =
    (((associatedHom R) (QuadraticForm.tmul QuadraticMap.sq Q₂)) (1 ⊗ₜ[R] m₂)) (1 ⊗ₜ[R] m₂')
state_after: case a.h.h.a.h.h
R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
m₂ m₂' : M₂
⊢ ((LinearMap.compl₁₂ ((associatedHom R) Q₂) ↑(TensorProduct.lid R M₂) ↑(TensorProduct.lid R M₂)) (1 ⊗ₜ[R] m₂))
      (1 ⊗ₜ[R] m₂') =
    (((associated QuadraticMap.sq).tmul (associated Q₂)) (1 ⊗ₜ[R] m₂)) (1 ⊗ₜ[R] m₂')
tactic: simp only [associated_tmul, QuadraticMap.associated_comp]
state_before: case a.h.h.a.h.h
R : Type uR
M₁ : Type uM₁
M₂ : Type uM₂
M₃ : Type uM₃
M₄ : Type uM₄
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Invertible 2
Q₂ : QuadraticForm R M₂
m₂ m₂' : M₂
⊢ ((LinearMap.compl₁₂ ((associatedHom R) Q₂) ↑(TensorProduct.lid R M₂) ↑(TensorProduct.lid R M₂)) (1 ⊗ₜ[R] m₂))
      (1 ⊗ₜ[R] m₂') =
    (((associated QuadraticMap.sq).tmul (associated Q₂)) (1 ⊗ₜ[R] m₂)) (1 ⊗ₜ[R] m₂')
state_after: no goals
tactic: simp [-associated_apply, mul_one]