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

tactic: refine (QuadraticForm.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₁
⊢ Q₁.comp ↑(TensorProduct.rid R M₁) = Q₁.tmul sq
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) (Q₁.comp ↑(TensorProduct.rid R M₁)) = (associatedHom R) (Q₁.tmul sq)

tactic: ext m₁ m₁'
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) (Q₁.comp ↑(TensorProduct.rid R M₁)) = (associatedHom R) (Q₁.tmul sq)
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) (Q₁.comp ↑(TensorProduct.rid R M₁)))) m₁) 1))
        m₁')
      1 =
    ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (Q₁.tmul sq))) m₁) 1))
        m₁')
      1

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₁
⊢ ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (Q₁.comp ↑(TensorProduct.rid R M₁)))) m₁) 1))
        m₁')
      1 =
    ((TensorProduct.AlgebraTensorModule.curry
          (((TensorProduct.AlgebraTensorModule.curry ((associatedHom R) (Q₁.tmul sq))) m₁) 1))
        m₁')
      1
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) (Q₁.comp ↑(TensorProduct.rid R M₁))) (m₁ ⊗ₜ[R] 1)) (m₁' ⊗ₜ[R] 1) =
    (((associatedHom R) (Q₁.tmul sq)) (m₁ ⊗ₜ[R] 1)) (m₁' ⊗ₜ[R] 1)

tactic: simp only [associated_tmul, QuadraticForm.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₁
⊢ (((associatedHom R) (Q₁.comp ↑(TensorProduct.rid R M₁))) (m₁ ⊗ₜ[R] 1)) (m₁' ⊗ₜ[R] 1) =
    (((associatedHom R) (Q₁.tmul sq)) (m₁ ⊗ₜ[R] 1)) (m₁' ⊗ₜ[R] 1)
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.rid R M₁) ↑(TensorProduct.rid R M₁)) (m₁ ⊗ₜ[R] 1))
      (m₁' ⊗ₜ[R] 1) =
    (((associated Q₁).tmul (associated sq)) (m₁ ⊗ₜ[R] 1)) (m₁' ⊗ₜ[R] 1)

tactic: simp [-associated_apply, one_mul]
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.rid R M₁) ↑(TensorProduct.rid R M₁)) (m₁ ⊗ₜ[R] 1))
      (m₁' ⊗ₜ[R] 1) =
    (((associated Q₁).tmul (associated sq)) (m₁ ⊗ₜ[R] 1)) (m₁' ⊗ₜ[R] 1)
state_after: no goals