Theorem: LinearMap.linearIndependent_of_isOrthoᵢ
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: classical
  rw [linearIndependent_iff']
  intro s w hs i hi
  have : B (s.sum fun i : n ↦ w i • v i) (v i) = 0 := by rw [hs, map_zero, zero_apply]
  have hsum : (s.sum fun j : n ↦ I₁ (w j) * B (v j) (v i)) = I₁ (w i) * B (v i) (v i) := by
    apply Finset.sum_eq_single_of_mem i hi
    intro j _hj hij
    rw [isOrthoᵢ_def.1 hv₁ _ _ hij, mul_zero]
  simp_rw [B.map_sum₂, map_smulₛₗ₂, smul_eq_mul, hsum] at this
  apply (map_eq_zero I₁).mp
  exact eq_zero_of_ne_zero_of_mul_right_eq_zero (hv₂ i) this
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
⊢ LinearIndependent K₁ v

tactic: rw [linearIndependent_iff']
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
⊢ LinearIndependent K₁ v

tactic: intro s w hs i hi
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
⊢ ∀ (s : Finset n) (g : n → K₁), ∑ i in s, g i • v i = 0 → ∀ (i : n), i ∈ s → g i = 0

tactic: have : B (s.sum fun i : n ↦ w i • v i) (v i) = 0 := by rw [hs, map_zero, zero_apply]
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
⊢ w i = 0

tactic: have hsum : (s.sum fun j : n ↦ I₁ (w j) * B (v j) (v i)) = I₁ (w i) * B (v i) (v i) := by
  apply Finset.sum_eq_single_of_mem i hi
  intro j _hj hij
  rw [isOrthoᵢ_def.1 hv₁ _ _ hij, mul_zero]
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
this : ↑(↑B (∑ i in s, w i • v i)) (v i) = 0
⊢ w i = 0

tactic: simp_rw [B.map_sum₂, map_smulₛₗ₂, smul_eq_mul, hsum] at this
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
this : ↑(↑B (∑ i in s, w i • v i)) (v i) = 0
hsum : ∑ j in s, ↑I₁ (w j) * ↑(↑B (v j)) (v i) = ↑I₁ (w i) * ↑(↑B (v i)) (v i)
⊢ w i = 0

tactic: apply (map_eq_zero I₁).mp
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
hsum : ∑ j in s, ↑I₁ (w j) * ↑(↑B (v j)) (v i) = ↑I₁ (w i) * ↑(↑B (v i)) (v i)
this : ↑I₁ (w i) * ↑(↑B (v i)) (v i) = 0
⊢ w i = 0

tactic: exact eq_zero_of_ne_zero_of_mul_right_eq_zero (hv₂ i) this
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
hsum : ∑ j in s, ↑I₁ (w j) * ↑(↑B (v j)) (v i) = ↑I₁ (w i) * ↑(↑B (v i)) (v i)
this : ↑I₁ (w i) * ↑(↑B (v i)) (v i) = 0
⊢ ↑I₁ (w i) = 0

tactic: rw [hs, map_zero, zero_apply]
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
⊢ ↑(↑B (∑ i in s, w i • v i)) (v i) = 0

tactic: apply Finset.sum_eq_single_of_mem i hi
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
this : ↑(↑B (∑ i in s, w i • v i)) (v i) = 0
⊢ ∑ j in s, ↑I₁ (w j) * ↑(↑B (v j)) (v i) = ↑I₁ (w i) * ↑(↑B (v i)) (v i)

tactic: intro j _hj hij
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
this : ↑(↑B (∑ i in s, w i • v i)) (v i) = 0
⊢ ∀ (b : n), b ∈ s → b ≠ i → ↑I₁ (w b) * ↑(↑B (v b)) (v i) = 0

tactic: rw [isOrthoᵢ_def.1 hv₁ _ _ hij, mul_zero]
state_before: R : Type ?u.57477
R₁ : Type ?u.57480
R₂ : Type ?u.57483
R₃ : Type ?u.57486
M : Type ?u.57489
M₁ : Type ?u.57492
M₂ : Type ?u.57495
Mₗ₁ : Type ?u.57498
Mₗ₁' : Type ?u.57501
Mₗ₂ : Type ?u.57504
Mₗ₂' : Type ?u.57507
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.57516
V : Type ?u.57519
V₁ : Type u_3
V₂ : Type ?u.57525
n : Type u_4
inst✝⁶ : Field K
inst✝⁵ : Field K₁
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K₁ V₁
inst✝² : Field K₂
inst✝¹ : AddCommGroup V₂
inst✝ : Module K₂ V₂
I₁ : K₁ →+* K
I₂ : K₂ →+* K
I₁' : K₁ →+* K
J₁ J₂ : K →+* K
B : V₁ →ₛₗ[I₁] V₁ →ₛₗ[I₁'] K
v : n → V₁
hv₁ : IsOrthoᵢ B v
hv₂ : ∀ (i : n), ¬IsOrtho B (v i) (v i)
s : Finset n
w : n → K₁
hs : ∑ i in s, w i • v i = 0
i : n
hi : i ∈ s
this : ↑(↑B (∑ i in s, w i • v i)) (v i) = 0
j : n
_hj : j ∈ s
hij : j ≠ i
⊢ ↑I₁ (w j) * ↑(↑B (v j)) (v i) = 0