Theorem: Polynomial.Chebyshev.T_complex_cos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev.lean

tactic: induction n using Polynomial.Chebyshev.induct with
| zero => simp
| one => simp
| add_two n ih1 ih2 =>
  simp only [T_add_two, eval_sub, eval_mul, eval_X, eval_ofNat, ih1, ih2, sub_eq_iff_eq_add,
    cos_add_cos]
  push_cast
  ring_nf
| neg_add_one n ih1 ih2 =>
  simp only [T_sub_one, eval_sub, eval_mul, eval_X, eval_ofNat, ih1, ih2, sub_eq_iff_eq_add',
    cos_add_cos]
  push_cast
  ring_nf
state_before: R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℤ
⊢ eval (cos θ) (T ℂ n) = cos (↑n * θ)
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
⊢ eval (cos θ) (T ℂ 0) = cos (↑0 * θ)
state_after: no goals

tactic: simp
state_before: case one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
⊢ eval (cos θ) (T ℂ 1) = cos (↑1 * θ)
state_after: no goals

tactic: simp only [T_add_two, eval_sub, eval_mul, eval_X, eval_ofNat, ih1, ih2, sub_eq_iff_eq_add,
  cos_add_cos]
state_before: case add_two
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (↑n + 1)) = cos (↑(↑n + 1) * θ)
ih2 : eval (cos θ) (T ℂ ↑n) = cos (↑↑n * θ)
⊢ eval (cos θ) (T ℂ (↑n + 2)) = cos (↑(↑n + 2) * θ)
state_after: case add_two
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (↑n + 1)) = cos (↑(↑n + 1) * θ)
ih2 : eval (cos θ) (T ℂ ↑n) = cos (↑↑n * θ)
⊢ 2 * cos θ * cos (↑(↑n + 1) * θ) = 2 * cos ((↑(↑n + 2) * θ + ↑↑n * θ) / 2) * cos ((↑(↑n + 2) * θ - ↑↑n * θ) / 2)

tactic: push_cast
state_before: case add_two
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (↑n + 1)) = cos (↑(↑n + 1) * θ)
ih2 : eval (cos θ) (T ℂ ↑n) = cos (↑↑n * θ)
⊢ 2 * cos θ * cos (↑(↑n + 1) * θ) = 2 * cos ((↑(↑n + 2) * θ + ↑↑n * θ) / 2) * cos ((↑(↑n + 2) * θ - ↑↑n * θ) / 2)
state_after: case add_two
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (↑n + 1)) = cos (↑(↑n + 1) * θ)
ih2 : eval (cos θ) (T ℂ ↑n) = cos (↑↑n * θ)
⊢ 2 * cos θ * cos ((↑n + 1) * θ) = 2 * cos (((↑n + 2) * θ + ↑n * θ) / 2) * cos (((↑n + 2) * θ - ↑n * θ) / 2)

tactic: ring_nf
state_before: case add_two
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (↑n + 1)) = cos (↑(↑n + 1) * θ)
ih2 : eval (cos θ) (T ℂ ↑n) = cos (↑↑n * θ)
⊢ 2 * cos θ * cos ((↑n + 1) * θ) = 2 * cos (((↑n + 2) * θ + ↑n * θ) / 2) * cos (((↑n + 2) * θ - ↑n * θ) / 2)
state_after: no goals

tactic: simp only [T_sub_one, eval_sub, eval_mul, eval_X, eval_ofNat, ih1, ih2, sub_eq_iff_eq_add',
  cos_add_cos]
state_before: case neg_add_one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (-↑n)) = cos (↑(-↑n) * θ)
ih2 : eval (cos θ) (T ℂ (-↑n + 1)) = cos (↑(-↑n + 1) * θ)
⊢ eval (cos θ) (T ℂ (-↑n - 1)) = cos (↑(-↑n - 1) * θ)
state_after: case neg_add_one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (-↑n)) = cos (↑(-↑n) * θ)
ih2 : eval (cos θ) (T ℂ (-↑n + 1)) = cos (↑(-↑n + 1) * θ)
⊢ 2 * cos θ * cos (↑(-↑n) * θ) =
    2 * cos ((↑(-↑n + 1) * θ + ↑(-↑n - 1) * θ) / 2) * cos ((↑(-↑n + 1) * θ - ↑(-↑n - 1) * θ) / 2)

tactic: push_cast
state_before: case neg_add_one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (-↑n)) = cos (↑(-↑n) * θ)
ih2 : eval (cos θ) (T ℂ (-↑n + 1)) = cos (↑(-↑n + 1) * θ)
⊢ 2 * cos θ * cos (↑(-↑n) * θ) =
    2 * cos ((↑(-↑n + 1) * θ + ↑(-↑n - 1) * θ) / 2) * cos ((↑(-↑n + 1) * θ - ↑(-↑n - 1) * θ) / 2)
state_after: case neg_add_one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (-↑n)) = cos (↑(-↑n) * θ)
ih2 : eval (cos θ) (T ℂ (-↑n + 1)) = cos (↑(-↑n + 1) * θ)
⊢ 2 * cos θ * cos (-↑n * θ) = 2 * cos (((-↑n + 1) * θ + (-↑n - 1) * θ) / 2) * cos (((-↑n + 1) * θ - (-↑n - 1) * θ) / 2)

tactic: ring_nf
state_before: case neg_add_one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
n : ℕ
ih1 : eval (cos θ) (T ℂ (-↑n)) = cos (↑(-↑n) * θ)
ih2 : eval (cos θ) (T ℂ (-↑n + 1)) = cos (↑(-↑n + 1) * θ)
⊢ 2 * cos θ * cos (-↑n * θ) = 2 * cos (((-↑n + 1) * θ + (-↑n - 1) * θ) / 2) * cos (((-↑n + 1) * θ - (-↑n - 1) * θ) / 2)
state_after: no goals