Theorem: QuadraticForm.equivalent_weightedSumSquares_units_of_nondegenerate'
File: Mathlib/LinearAlgebra/QuadraticForm/Isometry.lean

tactic: obtain ⟨v, hv₁⟩ := exists_orthogonal_basis (associated_isSymm _ Q)
state_before: ι : Type ?u.195680
R : Type ?u.195683
K : Type u_1
M : Type ?u.195689
M₁ : Type ?u.195692
M₂ : Type ?u.195695
M₃ : Type ?u.195698
V : Type u_2
inst✝¹⁴ : Semiring R
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : Module R M
inst✝⁸ : Module R M₁
inst✝⁷ : Module R M₂
inst✝⁶ : Module R M₃
inst✝⁵ : Fintype ι
v : Basis ι R M
inst✝⁴ : Field K
inst✝³ : Invertible 2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
Q : QuadraticForm K V
hQ : Nondegenerate (↑associated Q)
⊢ ∃ w, Equivalent Q (weightedSumSquares K w)

tactic: have hv₂ := hv₁.not_isOrtho_basis_self_of_nondegenerate hQ
state_before: case intro
ι : Type ?u.195680
R : Type ?u.195683
K : Type u_1
M : Type ?u.195689
M₁ : Type ?u.195692
M₂ : Type ?u.195695
M₃ : Type ?u.195698
V : Type u_2
inst✝¹⁴ : Semiring R
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : Module R M
inst✝⁸ : Module R M₁
inst✝⁷ : Module R M₂
inst✝⁶ : Module R M₃
inst✝⁵ : Fintype ι
v✝ : Basis ι R M
inst✝⁴ : Field K
inst✝³ : Invertible 2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
Q : QuadraticForm K V
hQ : Nondegenerate (↑associated Q)
v : Basis (Fin (FiniteDimensional.finrank K V)) K V
hv₁ : iIsOrtho (↑(associatedHom ?m.199965) Q) ↑v
⊢ ∃ w, Equivalent Q (weightedSumSquares K w)

tactic: simp_rw [IsOrtho, associated_eq_self_apply] at hv₂
state_before: case intro
ι : Type ?u.195680
R : Type ?u.195683
K : Type u_1
M : Type ?u.195689
M₁ : Type ?u.195692
M₂ : Type ?u.195695
M₃ : Type ?u.195698
V : Type u_2
inst✝¹⁴ : Semiring R
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : Module R M
inst✝⁸ : Module R M₁
inst✝⁷ : Module R M₂
inst✝⁶ : Module R M₃
inst✝⁵ : Fintype ι
v✝ : Basis ι R M
inst✝⁴ : Field K
inst✝³ : Invertible 2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
Q : QuadraticForm K V
hQ : Nondegenerate (↑associated Q)
v : Basis (Fin (FiniteDimensional.finrank K V)) K V
hv₁ : iIsOrtho (↑(associatedHom K) Q) ↑v
hv₂ : ∀ (i : Fin (FiniteDimensional.finrank K V)), ¬IsOrtho (↑(associatedHom K) Q) (↑v i) (↑v i)
⊢ ∃ w, Equivalent Q (weightedSumSquares K w)

tactic: exact ⟨fun i => Units.mk0 _ (hv₂ i), ⟨Q.isometryWeightedSumSquares v hv₁⟩⟩
state_before: case intro
ι : Type ?u.195680
R : Type ?u.195683
K : Type u_1
M : Type ?u.195689
M₁ : Type ?u.195692
M₂ : Type ?u.195695
M₃ : Type ?u.195698
V : Type u_2
inst✝¹⁴ : Semiring R
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : Module R M
inst✝⁸ : Module R M₁
inst✝⁷ : Module R M₂
inst✝⁶ : Module R M₃
inst✝⁵ : Fintype ι
v✝ : Basis ι R M
inst✝⁴ : Field K
inst✝³ : Invertible 2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
Q : QuadraticForm K V
hQ : Nondegenerate (↑associated Q)
v : Basis (Fin (FiniteDimensional.finrank K V)) K V
hv₁ : iIsOrtho (↑(associatedHom K) Q) ↑v
hv₂ : ∀ (i : Fin (FiniteDimensional.finrank K V)), ¬↑Q (↑v i) = 0
⊢ ∃ w, Equivalent Q (weightedSumSquares K w)