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

tactic: induction n using Polynomial.Chebyshev.induct with
| zero => simp
| one => simp [one_add_one_eq_two, sin_two_mul]; ring
| add_two n ih1 ih2 =>
  simp only [U_add_two, add_sub_cancel_right, eval_sub, eval_mul, eval_X, eval_ofNat, sub_mul,
    mul_assoc, ih1, ih2, sub_eq_iff_eq_add, sin_add_sin]
  push_cast
  ring_nf
| neg_add_one n ih1 ih2 =>
  simp only [U_sub_one, add_sub_cancel_right, eval_sub, eval_mul, eval_X, eval_ofNat, sub_mul,
    mul_assoc, ih1, ih2, sub_eq_iff_eq_add', sin_add_sin]
  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 θ) (U ℂ n) * sin θ = sin ((↑n + 1) * θ)
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 θ) (U ℂ 0) * sin θ = sin ((↑0 + 1) * θ)
state_after: no goals

tactic: simp [one_add_one_eq_two, sin_two_mul]
state_before: case one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
⊢ eval (cos θ) (U ℂ 1) * sin θ = sin ((↑1 + 1) * θ)
state_after: case one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
⊢ 2 * cos θ * sin θ = 2 * sin θ * cos θ

tactic: ring
state_before: case one
R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
θ : ℂ
⊢ 2 * cos θ * sin θ = 2 * sin θ * cos θ
state_after: no goals

tactic: simp only [U_add_two, add_sub_cancel_right, eval_sub, eval_mul, eval_X, eval_ofNat, sub_mul,
  mul_assoc, ih1, ih2, sub_eq_iff_eq_add, sin_add_sin]
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 θ) (U ℂ (↑n + 1)) * sin θ = sin ((↑(↑n + 1) + 1) * θ)
ih2 : eval (cos θ) (U ℂ ↑n) * sin θ = sin ((↑↑n + 1) * θ)
⊢ eval (cos θ) (U ℂ (↑n + 2)) * sin θ = sin ((↑(↑n + 2) + 1) * θ)
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 θ) (U ℂ (↑n + 1)) * sin θ = sin ((↑(↑n + 1) + 1) * θ)
ih2 : eval (cos θ) (U ℂ ↑n) * sin θ = sin ((↑↑n + 1) * θ)
⊢ 2 * (cos θ * sin ((↑(↑n + 1) + 1) * θ)) =
    2 * (sin (((↑(↑n + 2) + 1) * θ + (↑↑n + 1) * θ) / 2) * cos (((↑(↑n + 2) + 1) * θ - (↑↑n + 1) * θ) / 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 θ) (U ℂ (↑n + 1)) * sin θ = sin ((↑(↑n + 1) + 1) * θ)
ih2 : eval (cos θ) (U ℂ ↑n) * sin θ = sin ((↑↑n + 1) * θ)
⊢ 2 * (cos θ * sin ((↑(↑n + 1) + 1) * θ)) =
    2 * (sin (((↑(↑n + 2) + 1) * θ + (↑↑n + 1) * θ) / 2) * cos (((↑(↑n + 2) + 1) * θ - (↑↑n + 1) * θ) / 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 θ) (U ℂ (↑n + 1)) * sin θ = sin ((↑(↑n + 1) + 1) * θ)
ih2 : eval (cos θ) (U ℂ ↑n) * sin θ = sin ((↑↑n + 1) * θ)
⊢ 2 * (cos θ * sin ((↑n + 1 + 1) * θ)) =
    2 * (sin (((↑n + 2 + 1) * θ + (↑n + 1) * θ) / 2) * cos (((↑n + 2 + 1) * θ - (↑n + 1) * θ) / 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 θ) (U ℂ (↑n + 1)) * sin θ = sin ((↑(↑n + 1) + 1) * θ)
ih2 : eval (cos θ) (U ℂ ↑n) * sin θ = sin ((↑↑n + 1) * θ)
⊢ 2 * (cos θ * sin ((↑n + 1 + 1) * θ)) =
    2 * (sin (((↑n + 2 + 1) * θ + (↑n + 1) * θ) / 2) * cos (((↑n + 2 + 1) * θ - (↑n + 1) * θ) / 2))
state_after: no goals

tactic: simp only [U_sub_one, add_sub_cancel_right, eval_sub, eval_mul, eval_X, eval_ofNat, sub_mul,
  mul_assoc, ih1, ih2, sub_eq_iff_eq_add', sin_add_sin]
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 θ) (U ℂ (-↑n)) * sin θ = sin ((↑(-↑n) + 1) * θ)
ih2 : eval (cos θ) (U ℂ (-↑n + 1)) * sin θ = sin ((↑(-↑n + 1) + 1) * θ)
⊢ eval (cos θ) (U ℂ (-↑n - 1)) * sin θ = sin ((↑(-↑n - 1) + 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 θ) (U ℂ (-↑n)) * sin θ = sin ((↑(-↑n) + 1) * θ)
ih2 : eval (cos θ) (U ℂ (-↑n + 1)) * sin θ = sin ((↑(-↑n + 1) + 1) * θ)
⊢ 2 * (cos θ * sin ((↑(-↑n) + 1) * θ)) =
    2 *
      (sin (((↑(-↑n + 1) + 1) * θ + (↑(-↑n - 1) + 1) * θ) / 2) *
        cos (((↑(-↑n + 1) + 1) * θ - (↑(-↑n - 1) + 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 θ) (U ℂ (-↑n)) * sin θ = sin ((↑(-↑n) + 1) * θ)
ih2 : eval (cos θ) (U ℂ (-↑n + 1)) * sin θ = sin ((↑(-↑n + 1) + 1) * θ)
⊢ 2 * (cos θ * sin ((↑(-↑n) + 1) * θ)) =
    2 *
      (sin (((↑(-↑n + 1) + 1) * θ + (↑(-↑n - 1) + 1) * θ) / 2) *
        cos (((↑(-↑n + 1) + 1) * θ - (↑(-↑n - 1) + 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 θ) (U ℂ (-↑n)) * sin θ = sin ((↑(-↑n) + 1) * θ)
ih2 : eval (cos θ) (U ℂ (-↑n + 1)) * sin θ = sin ((↑(-↑n + 1) + 1) * θ)
⊢ 2 * (cos θ * sin ((-↑n + 1) * θ)) =
    2 * (sin (((-↑n + 1 + 1) * θ + (-↑n - 1 + 1) * θ) / 2) * cos (((-↑n + 1 + 1) * θ - (-↑n - 1 + 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 θ) (U ℂ (-↑n)) * sin θ = sin ((↑(-↑n) + 1) * θ)
ih2 : eval (cos θ) (U ℂ (-↑n + 1)) * sin θ = sin ((↑(-↑n + 1) + 1) * θ)
⊢ 2 * (cos θ * sin ((-↑n + 1) * θ)) =
    2 * (sin (((-↑n + 1 + 1) * θ + (-↑n - 1 + 1) * θ) / 2) * cos (((-↑n + 1 + 1) * θ - (-↑n - 1 + 1) * θ) / 2))
state_after: no goals