l : Type ?u.153650
m : Type u_1
n : Type ?u.153656
o : Type ?u.153659
m' : o → Type ?u.153664
n' : o → Type ?u.153669
R : Type ?u.153672
S : Type ?u.153675
α : Type v
β : Type w
γ : Type ?u.153682
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → v j * diagonal w i j = 0
⊢ v ⬝ᵥ diagonal w i = v i * w i
l : Type ?u.153650
m : Type u_1
n : Type ?u.153656
o : Type ?u.153659
m' : o → Type ?u.153664
n' : o → Type ?u.153669
R : Type ?u.153672
S : Type ?u.153675
α : Type v
β : Type w
γ : Type ?u.153682
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
⊢ v ⬝ᵥ diagonal w i = v i * w i
have : ∀ (j) (_ : j ≠ i), v j * diagonal w i j = 0 := fun j hij => by
  simp [diagonal_apply_ne' _ hij]
no goals
l : Type ?u.153650
m : Type u_1
n : Type ?u.153656
o : Type ?u.153659
m' : o → Type ?u.153664
n' : o → Type ?u.153669
R : Type ?u.153672
S : Type ?u.153675
α : Type v
β : Type w
γ : Type ?u.153682
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → v j * diagonal w i j = 0
⊢ v ⬝ᵥ diagonal w i = v i * w i
convert Finset.sum_eq_single i (fun j _ => this j) _ using 1 <;> simp
no goals
l : Type ?u.153650
m : Type u_1
n : Type ?u.153656
o : Type ?u.153659
m' : o → Type ?u.153664
n' : o → Type ?u.153669
R : Type ?u.153672
S : Type ?u.153675
α : Type v
β : Type w
γ : Type ?u.153682
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i j : m
hij : j ≠ i
⊢ v j * diagonal w i j = 0
simp [diagonal_apply_ne' _ hij]