[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : Fintype p
inst✝¹ : DecidableEq n
inst✝ : AddCommMonoidWithOne R
⊢ trace 1 = ↑(Fintype.card n)
[PROOFSTEP]
simp_rw [trace, diag_one, Pi.one_def, Finset.sum_const, nsmul_one, Finset.card_univ]
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : Fintype p
inst✝¹ : AddCommMonoid R
inst✝ : CommSemigroup R
A : Matrix m n R
B : Matrix n m R
⊢ trace (A * B) = trace (B * A)
[PROOFSTEP]
rw [← trace_transpose, ← trace_transpose_mul, transpose_mul]
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : NonUnitalCommSemiring R
A : Matrix m n R
B : Matrix n p R
C : Matrix p m R
⊢ trace (A * B * C) = trace (C * A * B)
[PROOFSTEP]
rw [trace_mul_comm, Matrix.mul_assoc]
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : NonUnitalCommSemiring R
A : Matrix m n R
B : Matrix n p R
C : Matrix p m R
⊢ trace (A * (B * C)) = trace (C * (A * B))
[PROOFSTEP]
rw [← Matrix.mul_assoc, trace_mul_comm]
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : NonUnitalNonAssocSemiring R
a b : n → R
⊢ trace (col a * row b) = a ⬝ᵥ b
[PROOFSTEP]
apply Finset.sum_congr rfl
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : NonUnitalNonAssocSemiring R
a b : n → R
⊢ ∀ (x : n), x ∈ Finset.univ → diag (col a * row b) x = a x * b x
[PROOFSTEP]
simp [mul_apply]
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : AddCommMonoid R
A : Matrix (Fin 3) (Fin 3) R
⊢ trace A = A 0 0 + A 1 1 + A 2 2
[PROOFSTEP]
rw [← add_zero (A 2 2), add_assoc]
[GOAL]
ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : AddCommMonoid R
A : Matrix (Fin 3) (Fin 3) R
⊢ trace A = A 0 0 + (A 1 1 + (A 2 2 + 0))
[PROOFSTEP]
rfl
