Theorem: Matrix.StdBasisMatrix.mul_of_ne
File: Mathlib/Data/Matrix/Basis.lean

tactic: ext (a b)
state_before: l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
⊢ stdBasisMatrix i j c ⬝ stdBasisMatrix k l d = 0

tactic: simp only [mul_apply, boole_mul, stdBasisMatrix]
state_before: case a.h
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
⊢ (stdBasisMatrix i j c ⬝ stdBasisMatrix k l d) a b = OfNat.ofNat 0 a b

tactic: by_cases h₁ : i = a
state_before: case a.h
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
⊢ (∑ j_1 : n, (if i = a ∧ j = j_1 then c else 0) * if k = j_1 ∧ l = b then d else 0) = OfNat.ofNat 0 a b

tactic: simp only [h₁, true_and, mul_ite, ite_mul, zero_mul, mul_zero, ← ite_and, zero_apply]
state_before: case pos
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
h₁ : i = a
⊢ (∑ j_1 : n, (if i = a ∧ j = j_1 then c else 0) * if k = j_1 ∧ l = b then d else 0) = OfNat.ofNat 0 a b

tactic: refine Finset.sum_eq_zero (fun x _ => ?_)
state_before: case pos
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
h₁ : i = a
⊢ (∑ x : n, if (k = x ∧ l = b) ∧ j = x then c * d else 0) = 0

tactic: apply if_neg
state_before: case pos
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
h₁ : i = a
x : n
x✝ : x ∈ Finset.univ
⊢ (if (k = x ∧ l = b) ∧ j = x then c * d else 0) = 0

tactic: rintro ⟨⟨rfl, rfl⟩, h⟩
state_before: case pos.hnc
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
h₁ : i = a
x : n
x✝ : x ∈ Finset.univ
⊢ ¬((k = x ∧ l = b) ∧ j = x)

tactic: contradiction
state_before: case pos.hnc.intro.intro
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h✝ : j ≠ k
d : α
a : n
h₁ : i = a
x✝ : k ∈ Finset.univ
h : j = k
⊢ False

tactic: simp only [h₁, false_and, ite_false, mul_ite, zero_mul, mul_zero, ite_self,
  Finset.sum_const_zero, zero_apply]
state_before: case neg
l✝ : Type ?u.47153
m : Type ?u.47156
n : Type u_1
R : Type ?u.47162
α : Type u_2
inst✝⁴ : DecidableEq l✝
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
k l : n
h : j ≠ k
d : α
a b : n
h₁ : ¬i = a
⊢ (∑ j_1 : n, (if i = a ∧ j = j_1 then c else 0) * if k = j_1 ∧ l = b then d else 0) = OfNat.ofNat 0 a b