Theorem: BilinForm.iIsOrtho.nondegenerate_iff_not_isOrtho_basis_self
File: Mathlib/LinearAlgebra/BilinearForm.lean

tactic: refine' ⟨hO.not_isOrtho_basis_self_of_nondegenerate, fun ho m hB => _⟩
state_before: R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
⊢ Nondegenerate B ↔ ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)

tactic: obtain ⟨vi, rfl⟩ := v.repr.symm.surjective m
state_before: R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
m : M
hB : ∀ (n : M), bilin B m n = 0
⊢ m = 0

tactic: rw [LinearEquiv.map_eq_zero_iff]
state_before: case intro
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
hB : ∀ (n_1 : M), bilin B (↑(LinearEquiv.symm v.repr) vi) n_1 = 0
⊢ ↑(LinearEquiv.symm v.repr) vi = 0

tactic: ext i
state_before: case intro
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
hB : ∀ (n_1 : M), bilin B (↑(LinearEquiv.symm v.repr) vi) n_1 = 0
⊢ vi = 0

tactic: rw [Finsupp.zero_apply]
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
hB : ∀ (n_1 : M), bilin B (↑(LinearEquiv.symm v.repr) vi) n_1 = 0
i : n
⊢ ↑vi i = ↑0 i

tactic: specialize hB (v i)
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
hB : ∀ (n_1 : M), bilin B (↑(LinearEquiv.symm v.repr) vi) n_1 = 0
i : n
⊢ ↑vi i = 0

tactic: simp_rw [Basis.repr_symm_apply, Finsupp.total_apply, Finsupp.sum, sum_left, smul_left] at hB
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : bilin B (↑(LinearEquiv.symm v.repr) vi) (↑v i) = 0
⊢ ↑vi i = 0

tactic: rw [Finset.sum_eq_single i] at hB
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
⊢ ↑vi i = 0

tactic: exact eq_zero_of_ne_zero_of_mul_right_eq_zero (ho i) hB
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ↑vi i * bilin B (↑v i) (↑v i) = 0
⊢ ↑vi i = 0

tactic: intro j _ hij
state_before: case intro.h.h₀
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
⊢ ∀ (b : n), b ∈ vi.support → b ≠ i → ↑vi b * bilin B (↑v b) (↑v i) = 0

tactic: convert MulZeroClass.mul_zero (vi j) using 2
state_before: case intro.h.h₀
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
j : n
a✝ : j ∈ vi.support
hij : j ≠ i
⊢ ↑vi j * bilin B (↑v j) (↑v i) = 0

tactic: exact hO hij
state_before: case h.e'_2.h.e'_6
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
j : n
a✝ : j ∈ vi.support
hij : j ≠ i
⊢ bilin B (↑v j) (↑v i) = 0

tactic: intro hi
state_before: case intro.h.h₁
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
⊢ ¬i ∈ vi.support → ↑vi i * bilin B (↑v i) (↑v i) = 0

tactic: convert MulZeroClass.zero_mul (M₀ := R) _ using 2
state_before: case intro.h.h₁
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
hi : ¬i ∈ vi.support
⊢ ↑vi i * bilin B (↑v i) (↑v i) = 0

tactic: exact Finsupp.not_mem_support_iff.mp hi
state_before: case h.e'_2.h.e'_5
R : Type u_1
M : Type u_2
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.1502384
M₁ : Type ?u.1502387
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type ?u.1502996
M₂ : Type ?u.1502999
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.1503186
M₃ : Type ?u.1503189
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.1503777
K : Type ?u.1503780
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1504994
inst✝³ : AddCommMonoid M₂'
inst✝² : Module R₂ M₂'
n : Type w
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
B : BilinForm R M
v : Basis n R M
hO : iIsOrtho B ↑v
ho : ∀ (i : n), ¬IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
i : n
hB : ∑ x in vi.support, ↑vi x * bilin B (↑v x) (↑v i) = 0
hi : ¬i ∈ vi.support
⊢ ↑vi i = 0