# 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 #

• Polynomial.dickson: the generalised Dickson polynomials.

## Main statements #

• Polynomial.dickson_one_one_mul, the (m * n)-th Dickson polynomial of the first kind for parameter 1 : R is the composition of the m-th and n-th Dickson polynomials of the first kind for 1 : R.
• Polynomial.dickson_one_one_charP, for a prime number p, the p-th Dickson polynomial of the first kind associated to parameter 1 : R is congruent to X ^ p modulo p.

## TODO #

• Redefine dickson in terms of LinearRecurrence.
• Show that dickson 2 1 is equal to the characteristic polynomial of the adjacency matrix of a type A Dynkin diagram.
• Prove that the adjacency matrices of simply laced Dynkin diagrams are precisely the adjacency matrices of simple connected graphs which annihilate dickson 2 1.
noncomputable def Polynomial.dickson {R : Type u_1} [] (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} [] (k : ) (a : R) :
= 3 - k
@[simp]
theorem Polynomial.dickson_one {R : Type u_1} [] (k : ) (a : R) :
= Polynomial.X
theorem Polynomial.dickson_two {R : Type u_1} [] (k : ) (a : R) :
= Polynomial.X ^ 2 - Polynomial.C a * (3 - k)
@[simp]
theorem Polynomial.dickson_add_two {R : Type u_1} [] (k : ) (a : R) (n : ) :
Polynomial.dickson k a (n + 2) = Polynomial.X * Polynomial.dickson k a (n + 1) - Polynomial.C a *
theorem Polynomial.dickson_of_two_le {R : Type u_1} [] (k : ) (a : R) {n : } (h : 2 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} [] [] {k : } {a : R} (f : R →+* S) (n : ) :
@[simp]
theorem Polynomial.dickson_two_zero {R : Type u_1} [] (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} [] (x : R) (y : R) (h : x * y = 1) (n : ) :
Polynomial.eval (x + y) () = x ^ n + y ^ n
theorem Polynomial.dickson_one_one_eq_chebyshev_T (R : Type u_1) [] [] (n : ) :
= 2 * ().comp (Polynomial.C 2 * Polynomial.X)
theorem Polynomial.chebyshev_T_eq_dickson_one_one (R : Type u_1) [] [] (n : ) :
= Polynomial.C 2 * ().comp (2 * Polynomial.X)
theorem Polynomial.dickson_one_one_mul (R : Type u_1) [] (m : ) (n : ) :
Polynomial.dickson 1 1 (m * n) = ().comp ()

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_comp_comm (R : Type u_1) [] (m : ) (n : ) :
().comp () = ().comp ()
theorem Polynomial.dickson_one_one_zmod_p (p : ) [Fact ()] :
= Polynomial.X ^ p
theorem Polynomial.dickson_one_one_charP (R : Type u_1) [] (p : ) [Fact ()] [CharP R p] :
= Polynomial.X ^ p