Theorem: LinearMap.IsOrthoᵢ.not_isOrtho_basis_self_of_separatingLeft
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: intro ho
state_before: R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
⊢ ¬IsOrtho B (↑v i) (↑v i)

tactic: refine' v.ne_zero i (hB (v i) fun m ↦ _)
state_before: R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
⊢ False

tactic: obtain ⟨vi, rfl⟩ := v.repr.symm.surjective m
state_before: R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
m : M
⊢ ↑(↑B (↑v i)) m = 0

tactic: rw [Basis.repr_symm_apply, Finsupp.total_apply, Finsupp.sum, map_sum]
state_before: case intro
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
⊢ ↑(↑B (↑v i)) (↑(LinearEquiv.symm v.repr) vi) = 0

tactic: apply Finset.sum_eq_zero
state_before: case intro
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
⊢ ∑ i_1 in vi.support, ↑(↑B (↑v i)) (↑vi i_1 • ↑v i_1) = 0

tactic: rintro j -
state_before: case intro.h
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
⊢ ∀ (x : n), x ∈ vi.support → ↑(↑B (↑v i)) (↑vi x • ↑v x) = 0

tactic: rw [map_smulₛₗ]
state_before: case intro.h
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
j : n
⊢ ↑(↑B (↑v i)) (↑vi j • ↑v j) = 0

tactic: suffices : B (v i) (v j) = 0
state_before: case intro.h
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
j : n
⊢ ↑I' (↑vi j) • ↑(↑B (↑v i)) (↑v j) = 0

tactic: obtain rfl | hij := eq_or_ne i j
state_before: case this
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
j : n
⊢ ↑(↑B (↑v i)) (↑v j) = 0

tactic: rw [this, smul_eq_mul, mul_zero]
state_before: case intro.h
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
j : n
this : ↑(↑B (↑v i)) (↑v j) = 0
⊢ ↑I' (↑vi j) • ↑(↑B (↑v i)) (↑v j) = 0

tactic: exact ho
state_before: case this.inl
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
⊢ ↑(↑B (↑v i)) (↑v i) = 0

tactic: exact h hij
state_before: case this.inr
R : Type u_1
R₁ : Type ?u.588000
R₂ : Type ?u.588003
R₃ : Type ?u.588006
M : Type u_2
M₁ : Type ?u.588012
M₂ : Type ?u.588015
Mₗ₁ : Type ?u.588018
Mₗ₁' : Type ?u.588021
Mₗ₂ : Type ?u.588024
Mₗ₂' : Type ?u.588027
K : Type ?u.588030
K₁ : Type ?u.588033
K₂ : Type ?u.588036
V : Type ?u.588039
V₁ : Type ?u.588042
V₂ : Type ?u.588045
n : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
I I' : R →+* R
inst✝ : Nontrivial R
B : M →ₛₗ[I] M →ₛₗ[I'] R
v : Basis n R M
h : IsOrthoᵢ B ↑v
hB : SeparatingLeft B
i : n
ho : IsOrtho B (↑v i) (↑v i)
vi : n →₀ R
j : n
hij : i ≠ j
⊢ ↑(↑B (↑v i)) (↑v j) = 0