Documentation

Mathlib.RingTheory.Polynomial.Dickson

Dickson polynomials #

The (generalised) Dickson polynomials are a family of polynomials indexed by ℕ × ℕ, with coefficients in a commutative ring R depending on an element a∈R. More precisely, the they satisfy the recursion dickson k a (n + 2) = X * (dickson k a n + 1) - a * (dickson k a n) with starting values dickson k a 0 = 3 - k and dickson k a 1 = X. In the literature, dickson k a n is called the n-th Dickson polynomial of the k-th kind associated to the parameter a : R. They are closely related to the Chebyshev polynomials in the case that a=1. When a=0 they are just the family of monomials X ^ n.

Main definition #

Main statements #

References #

TODO #

noncomputable def Polynomial.dickson {R : Type u_1} [CommRing R] (k : ) (a : R) :

dickson is the n-th (generalised) Dickson polynomial of the k-th kind associated to the element a ∈ R.

Equations
Instances For
    @[simp]
    theorem Polynomial.dickson_zero {R : Type u_1} [CommRing R] (k : ) (a : R) :
    Polynomial.dickson k a 0 = 3 - k
    @[simp]
    theorem Polynomial.dickson_one {R : Type u_1} [CommRing R] (k : ) (a : R) :
    Polynomial.dickson k a 1 = Polynomial.X
    theorem Polynomial.dickson_two {R : Type u_1} [CommRing R] (k : ) (a : R) :
    Polynomial.dickson k a 2 = Polynomial.X ^ 2 - Polynomial.C a * (3 - k)
    @[simp]
    theorem Polynomial.dickson_add_two {R : Type u_1} [CommRing R] (k : ) (a : R) (n : ) :
    Polynomial.dickson k a (n + 2) = Polynomial.X * Polynomial.dickson k a (n + 1) - Polynomial.C a * Polynomial.dickson k a n
    theorem Polynomial.dickson_of_two_le {R : Type u_1} [CommRing R] (k : ) (a : R) {n : } (h : 2 n) :
    Polynomial.dickson k a n = Polynomial.X * Polynomial.dickson k a (n - 1) - Polynomial.C a * Polynomial.dickson k a (n - 2)
    theorem Polynomial.map_dickson {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {k : } {a : R} (f : R →+* S) (n : ) :
    @[simp]
    theorem Polynomial.dickson_two_zero {R : Type u_1} [CommRing R] (n : ) :
    Polynomial.dickson 2 0 n = Polynomial.X ^ n

    A Lambda structure on ℤ[X] #

    Mathlib doesn't currently know what a Lambda ring is. But once it does, we can endow ℤ[X] with a Lambda structure in terms of the dickson 1 1 polynomials defined below. There is exactly one other Lambda structure on ℤ[X] in terms of binomial polynomials.

    theorem Polynomial.dickson_one_one_eval_add_inv {R : Type u_1} [CommRing R] (x y : R) (h : x * y = 1) (n : ) :
    Polynomial.eval (x + y) (Polynomial.dickson 1 1 n) = x ^ n + y ^ n
    theorem Polynomial.dickson_one_one_eq_chebyshev_T (R : Type u_1) [CommRing R] [Invertible 2] (n : ) :
    Polynomial.dickson 1 1 n = 2 * (Polynomial.Chebyshev.T R n).comp (Polynomial.C 2 * Polynomial.X)
    theorem Polynomial.chebyshev_T_eq_dickson_one_one (R : Type u_1) [CommRing R] [Invertible 2] (n : ) :
    Polynomial.Chebyshev.T R n = Polynomial.C 2 * (Polynomial.dickson 1 1 n).comp (2 * Polynomial.X)
    theorem Polynomial.dickson_one_one_mul (R : Type u_1) [CommRing R] (m n : ) :

    The (m * n)-th Dickson polynomial of the first kind is the composition of the m-th and n-th.

    theorem Polynomial.dickson_one_one_charP (R : Type u_1) [CommRing R] (p : ) [Fact (Nat.Prime p)] [CharP R p] :
    Polynomial.dickson 1 1 p = Polynomial.X ^ p