Theorem: Polynomial.ascPochhammer_smeval_neg_eq_descPochhammer
File: Mathlib/RingTheory/Binomial.lean

tactic: induction k with
| zero => simp only [ascPochhammer_zero, descPochhammer_zero, smeval_one, npow_zero, one_mul]
| succ k ih =>
  simp only [ascPochhammer_succ_right, smeval_mul, ih, descPochhammer_succ_right, sub_eq_add_neg]
  have h : (X + (k : ℕ[X])).smeval (-r) = - (X + (-k : ℤ[X])).smeval r := by
    simp only [smeval_add, smeval_X, npow_one, smeval_neg, smeval_natCast, npow_zero, nsmul_one]
    abel
  rw [h, ← neg_mul_comm, neg_mul_eq_neg_mul, ← mul_neg_one, ← neg_npow_assoc, npow_add, npow_one]
state_before: R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
⊢ (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
state_after: no goals

tactic: simp only [ascPochhammer_zero, descPochhammer_zero, smeval_one, npow_zero, one_mul]
state_before: case zero
R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
⊢ (ascPochhammer ℕ 0).smeval (-r) = (-1) ^ 0 * (descPochhammer ℤ 0).smeval r
state_after: no goals

tactic: simp only [ascPochhammer_succ_right, smeval_mul, ih, descPochhammer_succ_right, sub_eq_add_neg]
state_before: case succ
R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
⊢ (ascPochhammer ℕ (k + 1)).smeval (-r) = (-1) ^ (k + 1) * (descPochhammer ℤ (k + 1)).smeval r
state_after: case succ
R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
⊢ (-1) ^ k * (descPochhammer ℤ k).smeval r * (X + ↑k).smeval (-r) =
    (-1) ^ (k + 1) * ((descPochhammer ℤ k).smeval r * (X + -↑k).smeval r)

tactic: have h : (X + (k : ℕ[X])).smeval (-r) = - (X + (-k : ℤ[X])).smeval r := by
  simp only [smeval_add, smeval_X, npow_one, smeval_neg, smeval_natCast, npow_zero, nsmul_one]
  abel
state_before: case succ
R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
⊢ (-1) ^ k * (descPochhammer ℤ k).smeval r * (X + ↑k).smeval (-r) =
    (-1) ^ (k + 1) * ((descPochhammer ℤ k).smeval r * (X + -↑k).smeval r)
state_after: case succ
R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
h : (X + ↑k).smeval (-r) = -(X + -↑k).smeval r
⊢ (-1) ^ k * (descPochhammer ℤ k).smeval r * (X + ↑k).smeval (-r) =
    (-1) ^ (k + 1) * ((descPochhammer ℤ k).smeval r * (X + -↑k).smeval r)

tactic: rw [h, ← neg_mul_comm, neg_mul_eq_neg_mul, ← mul_neg_one, ← neg_npow_assoc, npow_add, npow_one]
state_before: case succ
R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
h : (X + ↑k).smeval (-r) = -(X + -↑k).smeval r
⊢ (-1) ^ k * (descPochhammer ℤ k).smeval r * (X + ↑k).smeval (-r) =
    (-1) ^ (k + 1) * ((descPochhammer ℤ k).smeval r * (X + -↑k).smeval r)
state_after: no goals

tactic: simp only [smeval_add, smeval_X, npow_one, smeval_neg, smeval_natCast, npow_zero, nsmul_one]
state_before: R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
⊢ (X + ↑k).smeval (-r) = -(X + -↑k).smeval r
state_after: R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
⊢ -r + ↑k = -(r + -↑k)

tactic: abel
state_before: R : Type u_1
S : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
r : R
k : ℕ
ih : (ascPochhammer ℕ k).smeval (-r) = (-1) ^ k * (descPochhammer ℤ k).smeval r
⊢ -r + ↑k = -(r + -↑k)
state_after: no goals