Theorem: Matrix.toLinearMap₂'Aux_stdBasis
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: rw [Matrix.toLinearMap₂'Aux, mk₂'ₛₗ_apply]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
⊢ ((toLinearMap₂'Aux σ₁ σ₂ f) ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1)) ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1) =
    f i j
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
⊢ ∑ i_1 : n,
      ∑ j_1 : m,
        σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 i_1) * f i_1 j_1 *
          σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1) =
    f i j

tactic: have : (∑ i', ∑ j', (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j := by
  simp_rw [mul_assoc, ← Finset.mul_sum]
  simp only [boole_mul, Finset.sum_ite_eq, Finset.mem_univ, if_true, mul_comm (f _ _)]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
⊢ ∑ i_1 : n,
      ∑ j_1 : m,
        σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 i_1) * f i_1 j_1 *
          σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1) =
    f i j
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
this : (∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j
⊢ ∑ i_1 : n,
      ∑ j_1 : m,
        σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 i_1) * f i_1 j_1 *
          σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1) =
    f i j

tactic: rw [← this]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
this : (∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j
⊢ ∑ i_1 : n,
      ∑ j_1 : m,
        σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 i_1) * f i_1 j_1 *
          σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1) =
    f i j
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
this : (∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j
⊢ ∑ i_1 : n,
      ∑ j_1 : m,
        σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 i_1) * f i_1 j_1 *
          σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1) =
    ∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0

tactic: exact Finset.sum_congr rfl fun _ _ => Finset.sum_congr rfl fun _ _ => by simp
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
this : (∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j
⊢ ∑ i_1 : n,
      ∑ j_1 : m,
        σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 i_1) * f i_1 j_1 *
          σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1) =
    ∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0
state_after: no goals

tactic: simp_rw [mul_assoc, ← Finset.mul_sum]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
⊢ (∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
⊢ (∑ x : n, (if i = x then 1 else 0) * ∑ i : m, f x i * if j = i then 1 else 0) = f i j

tactic: simp only [boole_mul, Finset.sum_ite_eq, Finset.mem_univ, if_true, mul_comm (f _ _)]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
⊢ (∑ x : n, (if i = x then 1 else 0) * ∑ i : m, f x i * if j = i then 1 else 0) = f i j
state_after: no goals

tactic: simp
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring R₁
inst✝⁴ : Semiring R₂
inst✝³ : Fintype n
inst✝² : Fintype m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq m
f : Matrix n m R
i : n
j : m
this : (∑ i' : n, ∑ j' : m, (if i = i' then 1 else 0) * f i' j' * if j = j' then 1 else 0) = f i j
x✝³ : n
x✝² : x✝³ ∈ univ
x✝¹ : m
x✝ : x✝¹ ∈ univ
⊢ σ₁ ((LinearMap.stdBasis R₁ (fun x => R₁) i) 1 x✝³) * f x✝³ x✝¹ * σ₂ ((LinearMap.stdBasis R₂ (fun x => R₂) j) 1 x✝¹) =
    (if i = x✝³ then 1 else 0) * f x✝³ x✝¹ * if j = x✝¹ then 1 else 0
state_after: no goals