Leading Coefficient of Chebyshev T_N

StatusFully Proven
TypeTheorem
ModuleChebyshevCircles.Proofs.MainTheoremSupport

Statement

Theorem Leading Coefficient of Chebyshev T_N

For $N \geq 1$, $\mathrm{lc}(T_N) = 2^{N-1}$. The base case $T_1 = X$ has leading coefficient $1 = 2^0$. The inductive step uses the recurrence: the leading term of $2X \cdot T_{n+1}$ dominates $T_n$ since $\deg(T_n) < \deg(2X \cdot T_{n+1})$, giving $\mathrm{lc}(T_{n+2}) = 2 \cdot \mathrm{lc}(T_{n+1}) = 2 \cdot 2^n = 2^{n+1}$.

theorem chebyshev_T_leadingCoeff (N : ) (hN : 0 < N) :
    (Polynomial.Chebyshev.T  N).leadingCoeff = 2 ^ (N - 1) := by
Proof

Strong induction on $N$. Base: $T_1 = X$, $\mathrm{lc} = 1 = 2^0$. Step: by the recurrence, $\mathrm{lc}(T_{n+2}) = \mathrm{lc}(2X \cdot T_{n+1})$ since $\deg(T_n) < \deg(2X \cdot T_{n+1})$, and the product formula gives $2 \cdot 2^n$.


  induction N using Nat.strong_induction_on with
  | h n IH =>
    cases n with
    | zero => omega
    | succ n' =>
      cases n' with
      | zero =>
        -- Base case: N = 1, T_1 = X has leading coeff 1 = 2^0
        norm_num [Polynomial.Chebyshev.T_one, Polynomial.leadingCoeff_X]
      | succ m =>
        -- N = m + 2 ≥ 2, use recurrence T_{n+2} = 2X·T_{n+1} - T_n
        have h_rec : Chebyshev.T  ((m + 2) : ) =
            2 * X * Chebyshev.T  ((m + 1) : ) - Chebyshev.T  (m : ) := by
          have := Polynomial.Chebyshev.T_add_two  (m : )
          convert this using 2

        -- Apply IH to get leadingCoeff of T_{m+1}
        have IH_m1 : (Chebyshev.T  (m + 1)).leadingCoeff = 2 ^ m := by
          have h := IH (m + 1) (by omega : m + 1 < m + 2) (by omega : 0 < m + 1)
          simp only [Nat.add_sub_cancel] at h
          exact h

        -- Show degree(T_m) < degree(2*X*T_{m+1})
        have deg_T_m1 : (Chebyshev.T  (m + 1)).degree = (m + 1) := by
          apply chebyshev_T_degree (m + 1)
          omega

        have deg_prod : (2 * X * Chebyshev.T  (m + 1)).degree = (m + 2) := by
          have h_rearrange : (2 : [X]) * X * Chebyshev.T  (m + 1) =
              2 * (X * Chebyshev.T  (m + 1)) := by ring
          simp only [Polynomial.degree_mul, deg_T_m1, Polynomial.degree_X]
          have : (2 : [X]).degree = 0 := Polynomial.degree_C (show (2 : )  0 by norm_num)
          simp [this]; ring

        have deg_T_m :
            (Chebyshev.T  m).degree < (2 * X * Chebyshev.T  (m + 1)).degree := by
          rw [deg_prod]
          by_cases hm : m = 0
          · simp [hm]
          · have deg_m : (Chebyshev.T  m).degree = m := by
              apply chebyshev_T_degree m
              omega
            rw [deg_m]
            norm_cast
            omega

        -- Apply leadingCoeff_sub_of_degree_lt
        have lc_rec : (2 * X * Chebyshev.T  (m + 1) - Chebyshev.T  m).leadingCoeff =
            (2 * X * Chebyshev.T  (m + 1)).leadingCoeff := by
          apply Polynomial.leadingCoeff_sub_of_degree_lt deg_T_m

        -- Calculate leadingCoeff(2*X*T_{m+1})
        have lc_prod : (2 * X * Chebyshev.T  (m + 1)).leadingCoeff = 2 * 2 ^ m := by
          have h_two : (2 : [X]) = C (2 : ) := by rfl
          conv_lhs => rw [h_two]
          rw [Polynomial.leadingCoeff_mul, Polynomial.leadingCoeff_mul,
              Polynomial.leadingCoeff_C, Polynomial.leadingCoeff_X, IH_m1]
          ring

        -- Finish the proof
        simp only [Nat.add_sub_cancel]
        calc (Chebyshev.T  (m + 2)).leadingCoeff
            = (2 * X * Chebyshev.T  (m + 1) -
                Chebyshev.T  m).leadingCoeff := by rw [ h_rec]
          _ = (2 * X * Chebyshev.T  (m + 1)).leadingCoeff := lc_rec
          _ = 2 * 2 ^ m := lc_prod
          _ = 2 ^ (m + 1) := by ring

Dependencies (uses)

Dependents (used by)

Neighborhood

Legend
Not Ready
Work in Progress
Sorry (theorems only)
Proven/Defined
Fully Proven (theorems only)
Axiom
Mathlib Ready
Theorems/Lemmas
Definitions
Axioms