Theorem: AffineBasis.affineIndependent_of_toMatrix_right_inv
File: Mathlib/LinearAlgebra/AffineSpace/Matrix.lean

tactic: rw [affineIndependent_iff_eq_of_fintype_affineCombination_eq]
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
⊢ AffineIndependent k p

tactic: intro w₁ w₂ hw₁ hw₂ hweq
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
⊢ ∀ (w1 w2 : ι' → k),
    ∑ i : ι', w1 i = 1 →
      ∑ i : ι', w2 i = 1 →
        ↑(Finset.affineCombination k Finset.univ p) w1 = ↑(Finset.affineCombination k Finset.univ p) w2 → w1 = w2

tactic: replace hweq' := congr_arg (fun w => A.vecMul w) hweq'
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
w₁ w₂ : ι' → k
hw₁ : ∑ i : ι', w₁ i = 1
hw₂ : ∑ i : ι', w₂ i = 1
hweq : ↑(Finset.affineCombination k Finset.univ p) w₁ = ↑(Finset.affineCombination k Finset.univ p) w₂
hweq' : vecMul w₁ (toMatrix b p) = vecMul w₂ (toMatrix b p)
⊢ w₁ = w₂

tactic: simpa only [Matrix.vecMul_vecMul, ← Matrix.mul_eq_mul, hA, Matrix.vecMul_one] using hweq'
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
w₁ w₂ : ι' → k
hw₁ : ∑ i : ι', w₁ i = 1
hw₂ : ∑ i : ι', w₂ i = 1
hweq : ↑(Finset.affineCombination k Finset.univ p) w₁ = ↑(Finset.affineCombination k Finset.univ p) w₂
hweq' : (fun w => vecMul w A) (vecMul w₁ (toMatrix b p)) = (fun w => vecMul w A) (vecMul w₂ (toMatrix b p))
⊢ w₁ = w₂

tactic: ext j
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
w₁ w₂ : ι' → k
hw₁ : ∑ i : ι', w₁ i = 1
hw₂ : ∑ i : ι', w₂ i = 1
hweq : ↑(Finset.affineCombination k Finset.univ p) w₁ = ↑(Finset.affineCombination k Finset.univ p) w₂
⊢ vecMul w₁ (toMatrix b p) = vecMul w₂ (toMatrix b p)

tactic: change (∑ i, w₁ i • b.coord j (p i)) = ∑ i, w₂ i • b.coord j (p i)
state_before: case h
ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
w₁ w₂ : ι' → k
hw₁ : ∑ i : ι', w₁ i = 1
hw₂ : ∑ i : ι', w₂ i = 1
hweq : ↑(Finset.affineCombination k Finset.univ p) w₁ = ↑(Finset.affineCombination k Finset.univ p) w₂
j : ι
⊢ vecMul w₁ (toMatrix b p) j = vecMul w₂ (toMatrix b p) j

tactic: rw [← Finset.univ.affineCombination_eq_linear_combination _ _ hw₁,
  ← Finset.univ.affineCombination_eq_linear_combination _ _ hw₂, u,
  ← Finset.univ.map_affineCombination p w₁ hw₁, ← Finset.univ.map_affineCombination p w₂ hw₂,
  hweq]
state_before: case h
ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁶ : AddCommGroup V
inst✝⁵ : AffineSpace V P
inst✝⁴ : Ring k
inst✝³ : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝² : Fintype ι'
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι'
p : ι' → P
A : Matrix ι ι' k
hA : toMatrix b p ⬝ A = 1
w₁ w₂ : ι' → k
hw₁ : ∑ i : ι', w₁ i = 1
hw₂ : ∑ i : ι', w₂ i = 1
hweq : ↑(Finset.affineCombination k Finset.univ p) w₁ = ↑(Finset.affineCombination k Finset.univ p) w₂
j : ι
u : (fun i => ↑(coord b j) (p i)) = ↑(coord b j) ∘ p
⊢ ∑ i : ι', w₁ i • ↑(coord b j) (p i) = ∑ i : ι', w₂ i • ↑(coord b j) (p i)