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

Proof steps:
state_before: S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
⊢ Q.basisRepr v = weightedSumSquares R fun i => Q (v i)
state_after: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
⊢ (Q.basisRepr v) w = (weightedSumSquares R fun i => Q (v i)) w
tactic: ext w
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
⊢ (Q.basisRepr v) w = (weightedSumSquares R fun i => Q (v i)) w
state_after: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
⊢ ∑ x : ι, (((associatedHom R) Q) (∑ i : ι, w i • v i)) (w x • v x) = ∑ i : ι, Q (v i) • (w i * w i)
tactic: rw [basisRepr_apply, ← @associated_eq_self_apply R, map_sum, weightedSumSquares_apply]
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
⊢ ∑ x : ι, (((associatedHom R) Q) (∑ i : ι, w i • v i)) (w x • v x) = ∑ i : ι, Q (v i) • (w i * w i)
state_after: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
⊢ (((associatedHom R) Q) (∑ i : ι, w i • v i)) (w j • v j) = Q (v j) • (w j * w j)
tactic: refine sum_congr rfl fun j hj => ?_
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
⊢ (((associatedHom R) Q) (∑ i : ι, w i • v i)) (w j • v j) = Q (v j) • (w j * w j)
state_after: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
⊢ (((associatedHom R) Q) (w j • v j)) (w j • v j) = (((associatedHom R) Q) (v j)) (v j) • (w j * w j)

case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁹ : CommSemiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ N
ι : Type u_8
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_9
M : Type u_10
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticMap R M R
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
⊢ ∀ b ∈ univ, b ≠ j → (((associatedHom R) Q) (w b • v b)) (w j • v j) = 0
tactic: rw [← @associated_eq_self_apply R, LinearMap.map_sum₂, sum_eq_single_of_mem j hj]