l : Type ?u.150094
m : Type u_1
n : Type ?u.150100
o : Type ?u.150103
m' : o → Type ?u.150108
n' : o → Type ?u.150113
R : Type ?u.150116
S : Type ?u.150119
α : Type v
β : Type w
γ : Type ?u.150126
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → diagonal v i j * w j = 0
⊢ diagonal v i ⬝ᵥ w = v i * w i
l : Type ?u.150094
m : Type u_1
n : Type ?u.150100
o : Type ?u.150103
m' : o → Type ?u.150108
n' : o → Type ?u.150113
R : Type ?u.150116
S : Type ?u.150119
α : Type v
β : Type w
γ : Type ?u.150126
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
⊢ diagonal v i ⬝ᵥ w = v i * w i
have : ∀ (j) (_ : j ≠ i), diagonal v i j * w j = 0 := fun j hij => by
  simp [diagonal_apply_ne' _ hij]
no goals
l : Type ?u.150094
m : Type u_1
n : Type ?u.150100
o : Type ?u.150103
m' : o → Type ?u.150108
n' : o → Type ?u.150113
R : Type ?u.150116
S : Type ?u.150119
α : Type v
β : Type w
γ : Type ?u.150126
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → diagonal v i j * w j = 0
⊢ diagonal v i ⬝ᵥ w = v i * w i
convert Finset.sum_eq_single i (fun j _ => this j) _ using 1 <;> simp
no goals
l : Type ?u.150094
m : Type u_1
n : Type ?u.150100
o : Type ?u.150103
m' : o → Type ?u.150108
n' : o → Type ?u.150113
R : Type ?u.150116
S : Type ?u.150119
α : Type v
β : Type w
γ : Type ?u.150126
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i j : m
hij : j ≠ i
⊢ diagonal v i j * w j = 0
simp [diagonal_apply_ne' _ hij]