Theorem: LinearMap.toMatrix'_apply
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp only [LinearMap.toMatrix', LinearEquiv.coe_mk, of_apply]
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ toMatrix' f i j = f (fun j' => if j' = j then 1 else 0) i
state_after: R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ f ((stdBasis R (fun x => R) j) 1) i = f (fun j' => if j' = j then 1 else 0) i

tactic: refine congr_fun ?_ _
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ f ((stdBasis R (fun x => R) j) 1) i = f (fun j' => if j' = j then 1 else 0) i
state_after: R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ f ((stdBasis R (fun x => R) j) 1) = f fun j' => if j' = j then 1 else 0

tactic: congr
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ f ((stdBasis R (fun x => R) j) 1) = f fun j' => if j' = j then 1 else 0
state_after: case h.e_6.h
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ (stdBasis R (fun x => R) j) 1 = fun j' => if j' = j then 1 else 0

tactic: ext j'
state_before: case h.e_6.h
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j : n
⊢ (stdBasis R (fun x => R) j) 1 = fun j' => if j' = j then 1 else 0
state_after: case h.e_6.h.h
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j j' : n
⊢ (stdBasis R (fun x => R) j) 1 j' = if j' = j then 1 else 0

tactic: split_ifs with h
state_before: case h.e_6.h.h
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j j' : n
⊢ (stdBasis R (fun x => R) j) 1 j' = if j' = j then 1 else 0
state_after: case pos
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j j' : n
h : j' = j
⊢ (stdBasis R (fun x => R) j) 1 j' = 1

case neg
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j j' : n
h : ¬j' = j
⊢ (stdBasis R (fun x => R) j) 1 j' = 0

tactic: apply stdBasis_ne _ _ _ _ h
state_before: case neg
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j j' : n
h : ¬j' = j
⊢ (stdBasis R (fun x => R) j) 1 j' = 0
state_after: no goals

tactic: rw [h, stdBasis_same]
state_before: case pos
R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] m → R
i : m
j j' : n
h : j' = j
⊢ (stdBasis R (fun x => R) j) 1 j' = 1
state_after: no goals