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

tactic: ext w
state_before: S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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: 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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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: 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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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: rw [← @associated_eq_self_apply R, LinearMap.map_sum₂, sum_eq_single_of_mem 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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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 [LinearMap.map_smul, LinearMap.map_smul₂, smul_eq_mul, associated_apply, smul_eq_mul,
  smul_eq_mul]
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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)
state_after: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
⊢ w j * (w j * (⅟2 * (Q (v j + v j) - Q (v j) - Q (v j)))) = ⅟2 * (Q (v j + v j) - Q (v j) - Q (v j)) * (w j * w j)

tactic: ring
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
⊢ w j * (w j * (⅟2 * (Q (v j + v j) - Q (v j) - Q (v j)))) = ⅟2 * (Q (v j + v j) - Q (v j) - Q (v j)) * (w j * w j)
state_after: no goals

tactic: intro i _ hij
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
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
state_after: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
i : ι
a✝ : i ∈ univ
hij : i ≠ j
⊢ (((associatedHom R) Q) (w i • v i)) (w j • v j) = 0

tactic: rw [LinearMap.map_smul, LinearMap.map_smul₂,
  show associatedHom R Q (v i) (v j) = 0 from hv₂ hij, smul_eq_mul, smul_eq_mul,
  mul_zero, mul_zero]
state_before: case H
S : Type u_1
T : Type u_2
R✝ : Type u_3
M✝ : Type u_4
N : Type u_5
inst✝⁷ : CommSemiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : Module R✝ M✝
ι : Type u_6
inst✝⁴ : Fintype ι
v✝ : Basis ι R✝ M✝
R : Type u_7
M : Type u_8
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R M
v : Basis ι R M
hv₂ : LinearMap.IsOrthoᵢ (associated Q) ⇑v
w : ι → R
j : ι
hj : j ∈ univ
i : ι
a✝ : i ∈ univ
hij : i ≠ j
⊢ (((associatedHom R) Q) (w i • v i)) (w j • v j) = 0
state_after: no goals