Theorem: Polynomial.multiset_prod_X_sub_C_coeff_card_pred
File: Mathlib/Algebra/Polynomial/BigOperators.lean

Proof steps:
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) = -t.sum
state_after: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) = -t.sum
tactic: nontriviality R
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) = -t.sum
state_after: case h.e'_2
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) =
    (Multiset.map (fun x => X - C x) t).prod.nextCoeff
tactic: convert multiset_prod_X_sub_C_nextCoeff (by assumption)
state_before: case h.e'_2
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) =
    (Multiset.map (fun x => X - C x) t).prod.nextCoeff
state_after: case h.e'_2
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) =
    (Multiset.map (fun x => X - C x) t).prod.coeff ((Multiset.map (fun x => X - C x) t).prod.natDegree - 1)

case h.e'_2.hnc
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ ¬(Multiset.map (fun x => X - C x) t).prod.natDegree = 0
tactic: rw [nextCoeff, if_neg]
state_before: case h.e'_2
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) =
    (Multiset.map (fun x => X - C x) t).prod.coeff ((Multiset.map (fun x => X - C x) t).prod.natDegree - 1)

case h.e'_2.hnc
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ ¬(Multiset.map (fun x => X - C x) t).prod.natDegree = 0
state_after: case h.e'_2.hnc
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ ¬(Multiset.map (fun x => X - C x) t).prod.natDegree = 0

case h.e'_2
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) =
    (Multiset.map (fun x => X - C x) t).prod.coeff ((Multiset.map (fun x => X - C x) t).prod.natDegree - 1)
tactic: swap
state_before: case h.e'_2
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ (Multiset.map (fun x => X - C x) t).prod.coeff (Multiset.card t - 1) =
    (Multiset.map (fun x => X - C x) t).prod.coeff ((Multiset.map (fun x => X - C x) t).prod.natDegree - 1)
state_after: case h.e'_2.e_a.e_a
R : Type u
ι : Type w
s : Finset ι
inst✝ : CommRing R
t : Multiset R
ht : 0 < Multiset.card t
a✝ : Nontrivial R
⊢ Multiset.card t = (Multiset.map (fun x => X - C x) t).prod.natDegree
tactic: congr