Theorem: Matrix.stdBasis_eq_stdBasisMatrix
File: Mathlib/LinearAlgebra/StdBasis.lean

tactic: ext a b
state_before: R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
⊢ (stdBasis R m n) (i, j) = stdBasisMatrix i j 1
state_after: case a
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b

tactic: by_cases hi : i = a <;> by_cases hj : j = b
state_before: case a
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b
state_after: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b

case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : ¬j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b

case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b

case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : ¬j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b

tactic: simp [stdBasis, hi, hj, Basis.coe_reindex, comp_apply, Equiv.sigmaEquivProd_symm_apply,
  StdBasisMatrix.apply_same]
state_before: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b
state_after: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨a, b⟩ a b = 1

tactic: erw [Pi.basis_apply]
state_before: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨a, b⟩ a b = 1
state_after: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨a, b⟩.fst) ((Pi.basisFun R n) ⟨a, b⟩.snd) a b = 1

tactic: simp
state_before: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨a, b⟩.fst) ((Pi.basisFun R n) ⟨a, b⟩.snd) a b = 1
state_after: no goals

tactic: simp only [stdBasis, hi, Basis.coe_reindex, comp_apply, Equiv.sigmaEquivProd_symm_apply,
  hj, and_false, not_false_iff, StdBasisMatrix.apply_of_ne]
state_before: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : ¬j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b
state_after: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : ¬j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨a, j⟩ a b = 0

tactic: erw [Pi.basis_apply]
state_before: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : ¬j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨a, j⟩ a b = 0
state_after: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : ¬j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨a, j⟩.fst) ((Pi.basisFun R n) ⟨a, j⟩.snd) a b = 0

tactic: simp [hj]
state_before: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : i = a
hj : ¬j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨a, j⟩.fst) ((Pi.basisFun R n) ⟨a, j⟩.snd) a b = 0
state_after: no goals

tactic: simp only [stdBasis, hj, Basis.coe_reindex, comp_apply, Equiv.sigmaEquivProd_symm_apply,
  hi, and_true, not_false_iff, StdBasisMatrix.apply_of_ne]
state_before: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b
state_after: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨i, b⟩ a b = 0

tactic: erw [Pi.basis_apply]
state_before: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨i, b⟩ a b = 0
state_after: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨i, b⟩.fst) ((Pi.basisFun R n) ⟨i, b⟩.snd) a b = 0

tactic: simp [hi, hj, Ne.symm hi, LinearMap.stdBasis_ne]
state_before: case pos
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨i, b⟩.fst) ((Pi.basisFun R n) ⟨i, b⟩.snd) a b = 0
state_after: no goals

tactic: simp only [stdBasis, Basis.coe_reindex, comp_apply, Equiv.sigmaEquivProd_symm_apply,
  hi, hj, and_self, not_false_iff, StdBasisMatrix.apply_of_ne]
state_before: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : ¬j = b
⊢ (stdBasis R m n) (i, j) a b = stdBasisMatrix i j 1 a b
state_after: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : ¬j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨i, j⟩ a b = 0

tactic: erw [Pi.basis_apply]
state_before: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : ¬j = b
⊢ (Pi.basis fun x => Pi.basisFun R n) ⟨i, j⟩ a b = 0
state_after: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : ¬j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨i, j⟩.fst) ((Pi.basisFun R n) ⟨i, j⟩.snd) a b = 0

tactic: simp [hi, hj, Ne.symm hj, Ne.symm hi, LinearMap.stdBasis_ne]
state_before: case neg
R : Type u_1
m : Type u_2
n : Type u_3
inst✝⁴ : Fintype m
inst✝³ : Finite n
inst✝² : Semiring R
i : m
j : n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
a : m
b : n
hi : ¬i = a
hj : ¬j = b
⊢ (LinearMap.stdBasis R (fun a => n → R) ⟨i, j⟩.fst) ((Pi.basisFun R n) ⟨i, j⟩.snd) a b = 0
state_after: no goals