Theorem: QuadraticForm.basisRepr_eq_of_iIsOrtho
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: ext w
state_before: S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
⊢ basisRepr Q v = weightedSumSquares R₁ fun i => ↑Q (↑v i)

tactic: rw [basisRepr_apply, ← @associated_eq_self_apply R₁, sum_left, weightedSumSquares_apply]
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
⊢ ↑(basisRepr Q v) w = ↑(weightedSumSquares R₁ fun i => ↑Q (↑v i)) w

tactic: refine' sum_congr rfl fun j hj => _
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
⊢ ∑ i : ι, bilin (↑(associatedHom R₁) Q) (w i • ↑v i) (∑ i : ι, w i • ↑v i) = ∑ i : ι, ↑Q (↑v i) • (w i * w i)

tactic: rw [← @associated_eq_self_apply R₁, sum_right, sum_eq_single_of_mem j hj]
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
j : ι
hj : j ∈ univ
⊢ bilin (↑(associatedHom R₁) Q) (w j • ↑v j) (∑ i : ι, w i • ↑v i) = ↑Q (↑v j) • (w j * w j)

tactic: rw [smul_left, smul_right, smul_eq_mul]
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
j : ι
hj : j ∈ univ
⊢ bilin (↑(associatedHom R₁) Q) (w j • ↑v j) (w j • ↑v j) = bilin (↑(associatedHom R₁) Q) (↑v j) (↑v j) • (w j * w j)

tactic: ring
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
j : ι
hj : j ∈ univ
⊢ w j * (w j * bilin (↑(associatedHom R₁) Q) (↑v j) (↑v j)) = bilin (↑(associatedHom R₁) Q) (↑v j) (↑v j) * (w j * w j)

tactic: intro i _ hij
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
j : ι
hj : j ∈ univ
⊢ ∀ (b : ι), b ∈ univ → b ≠ j → bilin (↑(associatedHom R₁) Q) (w j • ↑v j) (w b • ↑v b) = 0

tactic: rw [smul_left, smul_right, show associatedHom R₁ Q (v j) (v i) = 0 from hv₂ hij.symm,
  mul_zero, mul_zero]
state_before: case H
S : Type ?u.702709
R : Type ?u.702712
R₁✝ : Type ?u.702715
M✝ : Type ?u.702718
M₁ : Type ?u.702721
inst✝¹⁰ : Semiring R
inst✝⁹ : CommSemiring R₁✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M✝
inst✝⁵ : Module R M₁
ι : Type u_3
inst✝⁴ : Fintype ι
v✝ : Basis ι R M✝
R₁ : Type u_1
M : Type u_2
inst✝³ : CommRing R₁
inst✝² : AddCommGroup M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ M
v : Basis ι R₁ M
hv₂ : iIsOrtho (↑associated Q) ↑v
w : ι → R₁
j : ι
hj : j ∈ univ
i : ι
a✝ : i ∈ univ
hij : i ≠ j
⊢ bilin (↑(associatedHom R₁) Q) (w j • ↑v j) (w i • ↑v i) = 0