File: Mathlib/RingTheory/Polynomial/Dickson.lean

full_name: Polynomial.dickson
code: /-- `dickson` is the `n`-th (generalised) Dickson polynomial of the `k`-th kind associated to the
element `a ∈ R`. -/
noncomputable def dickson : ℕ → R[X]
  
goal: ℕ → Polynomial R

full_name: Polynomial.dickson_zero
code: @[simp]
theorem dickson_zero : dickson k a 0 = 3 - k 
goal: Polynomial.dickson k a 0 = 3 - ↑k

full_name: Polynomial.dickson_one
code: @[simp]
theorem dickson_one : dickson k a 1 = X 
goal: Polynomial.dickson k a 1 = Polynomial.X

full_name: Polynomial.dickson_two
code: theorem dickson_two : dickson k a 2 = X ^ 2 - C a * (3 - k : R[X]) 
goal: Polynomial.dickson k a 2 = Polynomial.X ^ 2 - Polynomial.C a * (3 - ↑k)

full_name: Polynomial.dickson_add_two
code: @[simp]
theorem dickson_add_two (n : ℕ) :
    dickson k a (n + 2) = X * dickson k a (n + 1) - C a * dickson k a n 
goal: Polynomial.dickson k a (n + 2) =
  Polynomial.X * Polynomial.dickson k a (n + 1) - Polynomial.C a * Polynomial.dickson k a n

full_name: Polynomial.dickson_of_two_le
code: theorem dickson_of_two_le {n : ℕ} (h : 2 ≤ n) :
    dickson k a n = X * dickson k a (n - 1) - C a * dickson k a (n - 2) 
goal: Polynomial.dickson k a n =
  Polynomial.X * Polynomial.dickson k a (n - 1) - Polynomial.C a * Polynomial.dickson k a (n - 2)

full_name: Polynomial.map_dickson
code: theorem map_dickson (f : R →+* S) : ∀ n : ℕ, map f (dickson k a n) = dickson k (f a) n
  
goal: Polynomial.map f (Polynomial.dickson k a n) = Polynomial.dickson k (f a) n

full_name: Polynomial.dickson_two_zero
code: @[simp]
theorem dickson_two_zero : ∀ n : ℕ, dickson 2 (0 : R) n = X ^ n
  
goal: Polynomial.dickson 2 0 n = Polynomial.X ^ n

full_name: Polynomial.dickson_one_one_eval_add_inv
code: theorem dickson_one_one_eval_add_inv (x y : R) (h : x * y = 1) :
    ∀ n, (dickson 1 (1 : R) n).eval (x + y) = x ^ n + y ^ n
  
goal: Polynomial.eval (x + y) (Polynomial.dickson 1 1 n) = x ^ n + y ^ n

full_name: _private.Mathlib.RingTheory.Polynomial.Dickson.0.Polynomial.two_mul_C_half_eq_one
code: private theorem two_mul_C_half_eq_one [Invertible (2 : R)] : 2 * C (⅟ 2 : R) = 1 
goal: 2 * Polynomial.C ⅟2 = 1

full_name: _private.Mathlib.RingTheory.Polynomial.Dickson.0.Polynomial.C_half_mul_two_eq_one
code: private theorem C_half_mul_two_eq_one [Invertible (2 : R)] : C (⅟ 2 : R) * 2 = 1 
goal: Polynomial.C ⅟2 * 2 = 1

full_name: Polynomial.dickson_one_one_eq_chebyshev_T
code: theorem dickson_one_one_eq_chebyshev_T [Invertible (2 : R)] :
    ∀ n, dickson 1 (1 : R) n = 2 * (Chebyshev.T R n).comp (C (⅟ 2) * X)
  
goal: Polynomial.dickson 1 1 n = 2 * (Polynomial.Chebyshev.T R ↑n).comp (Polynomial.C ⅟2 * Polynomial.X)

full_name: Polynomial.chebyshev_T_eq_dickson_one_one
code: theorem chebyshev_T_eq_dickson_one_one [Invertible (2 : R)] (n : ℕ) :
    Chebyshev.T R n = C (⅟ 2) * (dickson 1 1 n).comp (2 * X) 
goal: Polynomial.Chebyshev.T R ↑n = Polynomial.C ⅟2 * (Polynomial.dickson 1 1 n).comp (2 * Polynomial.X)

full_name: Polynomial.dickson_one_one_mul
code: /-- The `(m * n)`-th Dickson polynomial of the first kind is the composition of the `m`-th and
`n`-th. -/
theorem dickson_one_one_mul (m n : ℕ) :
    dickson 1 (1 : R) (m * n) = (dickson 1 1 m).comp (dickson 1 1 n) 
goal: Polynomial.dickson 1 1 (m * n) = (Polynomial.dickson 1 1 m).comp (Polynomial.dickson 1 1 n)

full_name: Polynomial.dickson_one_one_comp_comm
code: theorem dickson_one_one_comp_comm (m n : ℕ) :
    (dickson 1 (1 : R) m).comp (dickson 1 1 n) = (dickson 1 1 n).comp (dickson 1 1 m) 
goal: (Polynomial.dickson 1 1 m).comp (Polynomial.dickson 1 1 n) = (Polynomial.dickson 1 1 n).comp (Polynomial.dickson 1 1 m)

full_name: Polynomial.dickson_one_one_zmod_p
code: theorem dickson_one_one_zmod_p (p : ℕ) [Fact p.Prime] : dickson 1 (1 : ZMod p) p = X ^ p 
goal: Polynomial.dickson 1 1 p = Polynomial.X ^ p

full_name: Polynomial.dickson_one_one_charP
code: theorem dickson_one_one_charP (p : ℕ) [Fact p.Prime] [CharP R p] : dickson 1 (1 : R) p = X ^ p 
goal: Polynomial.dickson 1 1 p = Polynomial.X ^ p