Theorem: Polynomial.Chebyshev.U_neg_sub_one
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

tactic: induction n using Polynomial.Chebyshev.induct with
| zero => simp
| one => simp
| add_two n ih1 ih2 =>
  have h₁ := U_add_one R n
  have h₂ := U_sub_two R (-n - 1)
  linear_combination (norm := ring_nf) 2 * (X:R[X]) * ih1 - ih2 + h₁ + h₂
| neg_add_one n ih1 ih2 =>
  have h₁ := U_eq R n
  have h₂ := U_sub_two R (-n)
  linear_combination (norm := ring_nf) 2 * (X:R[X]) * ih1 - ih2 + h₁ + h₂
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℤ
⊢ U R (-n - 1) = -U R (n - 1)
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ U R (-0 - 1) = -U R (0 - 1)
state_after: no goals

tactic: simp
state_before: case one
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ U R (-1 - 1) = -U R (1 - 1)
state_after: no goals

tactic: have h₁ := U_add_one R n
state_before: case add_two
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (-(↑n + 1) - 1) = -U R (↑n + 1 - 1)
ih2 : U R (-↑n - 1) = -U R (↑n - 1)
⊢ U R (-(↑n + 2) - 1) = -U R (↑n + 2 - 1)
state_after: case add_two
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (-(↑n + 1) - 1) = -U R (↑n + 1 - 1)
ih2 : U R (-↑n - 1) = -U R (↑n - 1)
h₁ : U R (↑n + 1) = 2 * X * U R ↑n - U R (↑n - 1)
⊢ U R (-(↑n + 2) - 1) = -U R (↑n + 2 - 1)

tactic: have h₂ := U_sub_two R (-n - 1)
state_before: case add_two
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (-(↑n + 1) - 1) = -U R (↑n + 1 - 1)
ih2 : U R (-↑n - 1) = -U R (↑n - 1)
h₁ : U R (↑n + 1) = 2 * X * U R ↑n - U R (↑n - 1)
⊢ U R (-(↑n + 2) - 1) = -U R (↑n + 2 - 1)
state_after: case add_two
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (-(↑n + 1) - 1) = -U R (↑n + 1 - 1)
ih2 : U R (-↑n - 1) = -U R (↑n - 1)
h₁ : U R (↑n + 1) = 2 * X * U R ↑n - U R (↑n - 1)
h₂ : U R (-↑n - 1 - 2) = 2 * X * U R (-↑n - 1 - 1) - U R (-↑n - 1)
⊢ U R (-(↑n + 2) - 1) = -U R (↑n + 2 - 1)

tactic: linear_combination (norm := ring_nf) 2 * (X:R[X]) * ih1 - ih2 + h₁ + h₂
state_before: case add_two
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (-(↑n + 1) - 1) = -U R (↑n + 1 - 1)
ih2 : U R (-↑n - 1) = -U R (↑n - 1)
h₁ : U R (↑n + 1) = 2 * X * U R ↑n - U R (↑n - 1)
h₂ : U R (-↑n - 1 - 2) = 2 * X * U R (-↑n - 1 - 1) - U R (-↑n - 1)
⊢ U R (-(↑n + 2) - 1) = -U R (↑n + 2 - 1)
state_after: no goals

tactic: have h₁ := U_eq R n
state_before: case neg_add_one
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (- -↑n - 1) = -U R (-↑n - 1)
ih2 : U R (-(-↑n + 1) - 1) = -U R (-↑n + 1 - 1)
⊢ U R (-(-↑n - 1) - 1) = -U R (-↑n - 1 - 1)
state_after: case neg_add_one
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (- -↑n - 1) = -U R (-↑n - 1)
ih2 : U R (-(-↑n + 1) - 1) = -U R (-↑n + 1 - 1)
h₁ : U R ↑n = 2 * X * U R (↑n - 1) - U R (↑n - 2)
⊢ U R (-(-↑n - 1) - 1) = -U R (-↑n - 1 - 1)

tactic: have h₂ := U_sub_two R (-n)
state_before: case neg_add_one
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (- -↑n - 1) = -U R (-↑n - 1)
ih2 : U R (-(-↑n + 1) - 1) = -U R (-↑n + 1 - 1)
h₁ : U R ↑n = 2 * X * U R (↑n - 1) - U R (↑n - 2)
⊢ U R (-(-↑n - 1) - 1) = -U R (-↑n - 1 - 1)
state_after: case neg_add_one
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (- -↑n - 1) = -U R (-↑n - 1)
ih2 : U R (-(-↑n + 1) - 1) = -U R (-↑n + 1 - 1)
h₁ : U R ↑n = 2 * X * U R (↑n - 1) - U R (↑n - 2)
h₂ : U R (-↑n - 2) = 2 * X * U R (-↑n - 1) - U R (-↑n)
⊢ U R (-(-↑n - 1) - 1) = -U R (-↑n - 1 - 1)

tactic: linear_combination (norm := ring_nf) 2 * (X:R[X]) * ih1 - ih2 + h₁ + h₂
state_before: case neg_add_one
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
ih1 : U R (- -↑n - 1) = -U R (-↑n - 1)
ih2 : U R (-(-↑n + 1) - 1) = -U R (-↑n + 1 - 1)
h₁ : U R ↑n = 2 * X * U R (↑n - 1) - U R (↑n - 2)
h₂ : U R (-↑n - 2) = 2 * X * U R (-↑n - 1) - U R (-↑n)
⊢ U R (-(-↑n - 1) - 1) = -U R (-↑n - 1 - 1)
state_after: no goals