Theorem: LinearMap.BilinForm.iIsOrtho.nondegenerate_iff_not_isOrtho_basis_self
File: Mathlib/LinearAlgebra/BilinearForm/Orthogonal.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✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
⊢ B.Nondegenerate ↔ ∀ (i : n), ¬B.IsOrtho (v i) (v i)
state_after: R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
m : M
hB : ∀ (n : M), (B m) n = 0
⊢ m = 0

tactic: obtain ⟨vi, rfl⟩ := v.repr.symm.surjective m
state_before: R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
m : M
hB : ∀ (n : M), (B m) n = 0
⊢ m = 0
state_after: case intro
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
⊢ v.repr.symm vi = 0

tactic: rw [LinearEquiv.map_eq_zero_iff]
state_before: case intro
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
⊢ v.repr.symm vi = 0
state_after: case intro
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
⊢ vi = 0

tactic: ext i
state_before: case intro
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
⊢ vi = 0
state_after: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
i : n
⊢ vi i = 0 i

tactic: rw [Finsupp.zero_apply]
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
i : n
⊢ vi i = 0 i
state_after: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
i : n
⊢ vi i = 0

tactic: specialize hB (v i)
state_before: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
hB : ∀ (n_1 : M), (B (v.repr.symm vi)) n_1 = 0
i : n
⊢ vi i = 0
state_after: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : (B (v.repr.symm vi)) (v i) = 0
⊢ 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✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : (B (v.repr.symm vi)) (v i) = 0
⊢ vi i = 0
state_after: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (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✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
⊢ vi i = 0
state_after: case intro.h
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : vi i * (B (v i)) (v i) = 0
⊢ vi i = 0

case intro.h.h₀
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
⊢ ∀ b ∈ vi.support, b ≠ i → vi b * (B (v b)) (v i) = 0

case intro.h.h₁
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
⊢ i ∉ vi.support → vi i * (B (v i)) (v 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✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : vi i * (B (v i)) (v i) = 0
⊢ vi i = 0
state_after: no goals

tactic: intro j _ hij
state_before: case intro.h.h₀
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
⊢ ∀ b ∈ vi.support, b ≠ i → vi b * (B (v b)) (v i) = 0
state_after: case intro.h.h₀
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
j : n
a✝ : j ∈ vi.support
hij : j ≠ i
⊢ vi j * (B (v j)) (v i) = 0

tactic: convert mul_zero (vi j) using 2
state_before: case intro.h.h₀
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
j : n
a✝ : j ∈ vi.support
hij : j ≠ i
⊢ vi j * (B (v j)) (v i) = 0
state_after: case h.e'_2.h.e'_6
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
j : n
a✝ : j ∈ vi.support
hij : j ≠ i
⊢ (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✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
j : n
a✝ : j ∈ vi.support
hij : j ≠ i
⊢ (B (v j)) (v i) = 0
state_after: no goals

tactic: intro hi
state_before: case intro.h.h₁
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
⊢ i ∉ vi.support → vi i * (B (v i)) (v i) = 0
state_after: case intro.h.h₁
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
hi : i ∉ vi.support
⊢ vi i * (B (v i)) (v i) = 0

tactic: convert zero_mul (M₀ := R) _ using 2
state_before: case intro.h.h₁
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
hi : i ∉ vi.support
⊢ vi i * (B (v i)) (v i) = 0
state_after: case h.e'_2.h.e'_5
R : Type u_1
M : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
hi : i ∉ vi.support
⊢ vi 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✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁹ : CommRing R₁
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
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 : B.iIsOrtho ⇑v
ho : ∀ (i : n), ¬B.IsOrtho (v i) (v i)
vi : n →₀ R
i : n
hB : ∑ x ∈ vi.support, vi x * (B (v x)) (v i) = 0
hi : i ∉ vi.support
⊢ vi i = 0
state_after: no goals