Theorem: Polynomial.coeff_det_X_add_C_zero
File: Mathlib/LinearAlgebra/Matrix/Polynomial.lean

Proof steps:
state_before: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
⊢ (X • A.map ⇑C + B.map ⇑C).det.coeff 0 = B.det
state_after: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
⊢ ∑ b : Equiv.Perm n, (sign b • ∏ i : n, (X • A.map ⇑C + B.map ⇑C) (b i) i).coeff 0 =
    ∑ σ : Equiv.Perm n, sign σ • ∏ i : n, B (σ i) i
tactic: rw [det_apply, finset_sum_coeff, det_apply]
state_before: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
⊢ ∑ b : Equiv.Perm n, (sign b • ∏ i : n, (X • A.map ⇑C + B.map ⇑C) (b i) i).coeff 0 =
    ∑ σ : Equiv.Perm n, sign σ • ∏ i : n, B (σ i) i
state_after: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
⊢ ∀ x ∈ Finset.univ, (sign x • ∏ i : n, (X • A.map ⇑C + B.map ⇑C) (x i) i).coeff 0 = sign x • ∏ i : n, B (x i) i
tactic: refine Finset.sum_congr rfl ?_
state_before: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
⊢ ∀ x ∈ Finset.univ, (sign x • ∏ i : n, (X • A.map ⇑C + B.map ⇑C) (x i) i).coeff 0 = sign x • ∏ i : n, B (x i) i
state_after: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ (sign g • ∏ i : n, (X • A.map ⇑C + B.map ⇑C) (g i) i).coeff 0 = sign g • ∏ i : n, B (g i) i
tactic: rintro g -
state_before: n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ (sign g • ∏ i : n, (X • A.map ⇑C + B.map ⇑C) (g i) i).coeff 0 = sign g • ∏ i : n, B (g i) i
state_after: case h.e'_3.h.e'_6
n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ ∏ i : n, B (g i) i = (∏ i : n, (X • A.map ⇑C + B.map ⇑C) (g i) i).coeff 0
tactic: convert coeff_smul (R := α) (sign g) _ 0
state_before: case h.e'_3.h.e'_6
n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ ∏ i : n, B (g i) i = (∏ i : n, (X • A.map ⇑C + B.map ⇑C) (g i) i).coeff 0
state_after: case h.e'_3.h.e'_6
n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ ∏ i : n, B (g i) i = ∏ i : n, ((X • A.map ⇑C + B.map ⇑C) (g i) i).coeff 0
tactic: rw [coeff_zero_prod]
state_before: case h.e'_3.h.e'_6
n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ ∏ i : n, B (g i) i = ∏ i : n, ((X • A.map ⇑C + B.map ⇑C) (g i) i).coeff 0
state_after: case h.e'_3.h.e'_6
n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ ∀ x ∈ Finset.univ, B (g x) x = ((X • A.map ⇑C + B.map ⇑C) (g x) x).coeff 0
tactic: refine Finset.prod_congr rfl ?_
state_before: case h.e'_3.h.e'_6
n : Type u_1
α : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : CommRing α
A B : Matrix n n α
g : Equiv.Perm n
⊢ ∀ x ∈ Finset.univ, B (g x) x = ((X • A.map ⇑C + B.map ⇑C) (g x) x).coeff 0
state_after: no goals
tactic: simp