Documentation

LeanPool.KloostermanWeil.Carlitz.DicksonFiniteAlgebra

Adapted from Charlie Dorsey’s Apache-2.0 Weil Bounds Toolkit for Lean Pool’s module system, Mathlib version, quality requirements and compilation performance.

Finite-field and Dickson-polynomial algebra #

The finite-field notation, elementary Kloosterman sums and Dickson-polynomial identities used in the Carlitz recurrence. See Carlitz (1969) for the method.

@[reducible, inline]

The prime residue ring used as the base field when p is prime.

Equations
Instances For
    @[reducible, inline]

    Polynomials over the prime residue ring.

    Equations
    Instances For
      noncomputable def KloostermanWeil.Dickson.baseKloosterman (p : ℕ) [Fact (Nat.Prime p)] (t : Fp p) :

      Base-field one-parameter Kloosterman sum in the source-normalized sign convention.

      Equations
      Instances For
        noncomputable def KloostermanWeil.Dickson.etaPoly (p : ℕ) [Fact (Nat.Prime p)] (t : Fp p) (f : FpPoly p) :

        Carlitz's multiplicative polynomial weight, specialized to K(1,t). It is only used on monic polynomials; the zero-constant case is extended by zero.

        Equations
        Instances For
          theorem KloostermanWeil.Dickson.etaPoly_mul_of_monic (p : ℕ) [Fact (Nat.Prime p)] (t : Fp p) {f g : FpPoly p} (hf : Polynomial.Monic f) (hg : Polynomial.Monic g) :
          etaPoly p t (f * g) = etaPoly p t f * etaPoly p t g
          noncomputable def KloostermanWeil.Dickson.monicFromCoeffs (p n : ℕ) [Fact (Nat.Prime p)] (a : Fin n → Fp p) :

          Canonical monic polynomial with prescribed lower coefficients.

          Equations
          Instances For
            noncomputable def KloostermanWeil.Dickson.A (p : ℕ) [Fact (Nat.Prime p)] (t : Fp p) (n : ℕ) :

            The degree-n coefficient sum in the Carlitz L-polynomial.

            Equations
            Instances For
              theorem KloostermanWeil.Dickson.A_one_eq_K (p : ℕ) [Fact (Nat.Prime p)] (t : Fp p) :
              A p t 1 = baseKloosterman p t

              Degree one coefficient is the base Kloosterman sum.

              theorem KloostermanWeil.Dickson.A_zero_eq_one (p : ℕ) [Fact (Nat.Prime p)] (t : Fp p) :
              A p t 0 = 1
              noncomputable def KloostermanWeil.Dickson.monicQuadratic {p : ℕ} [Fact (Nat.Prime p)] (b c : Fp p) :

              The monic quadratic with linear coefficient b and constant coefficient c.

              Equations
              Instances For
                theorem KloostermanWeil.Dickson.sum_etaPoly_monicQuadratic (p : ℕ) [Fact (Nat.Prime p)] {t c : Fp p} (ht : t ≠ 0) :
                ∑ b : Fp p, etaPoly p t (monicQuadratic b c) = if c = -t then ↑p else 0
                noncomputable def KloostermanWeil.Dickson.finTwoCoeffEquiv (p : ℕ) :
                (Fin 2 → Fp p) ≃ Fp p × Fp p

                Identify a two-entry coefficient vector with an ordered pair.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem KloostermanWeil.Dickson.A_two_eq_card (p : ℕ) [Fact (Nat.Prime p)] {t : Fp p} (ht : t ≠ 0) :
                  A p t 2 = ↑p
                  theorem KloostermanWeil.Dickson.coeff_fintype_sum {R : Type u_1} {ι : Type u_2} [Semiring R] [Fintype ι] (f : ι → Polynomial R) (j : ℕ) :
                  (∑ i : ι, f i).coeff j = ∑ i : ι, (f i).coeff j
                  theorem KloostermanWeil.Dickson.monicFromCoeffs_coeff_lt (p n j : ℕ) [Fact (Nat.Prime p)] (hj : j < n) (a : Fin n → Fp p) :
                  noncomputable def KloostermanWeil.Dickson.lastIndex (n : ℕ) (hn : 0 < n) :
                  Fin n

                  The index of the final lower coefficient of a positive-degree monic polynomial.

                  Equations
                  Instances For
                    noncomputable def KloostermanWeil.Dickson.shiftLastEquiv (p n : ℕ) [Fact (Nat.Prime p)] (hn : 0 < n) (u : Fp p) :
                    (Fin n → Fp p) ≃ (Fin n → Fp p)

                    Translate the final lower coefficient by u, keeping the other coefficients fixed.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem KloostermanWeil.Dickson.shiftLastEquiv_at_last (p n : ℕ) [Fact (Nat.Prime p)] (hn : 0 < n) (u : Fp p) (a : Fin n → Fp p) :
                      (shiftLastEquiv p n hn u) a (lastIndex n hn) = a (lastIndex n hn) + u
                      theorem KloostermanWeil.Dickson.shiftLastEquiv_at_zero (p n : ℕ) [Fact (Nat.Prime p)] (hn2 : 2 ≤ n) (u : Fp p) (a : Fin n → Fp p) :
                      (shiftLastEquiv p n ⋯ u) a ⟨0, ⋯⟩ = a ⟨0, ⋯⟩
                      theorem KloostermanWeil.Dickson.shiftLastEquiv_at_one (p n : ℕ) [Fact (Nat.Prime p)] (hn3 : 3 ≤ n) (u : Fp p) (a : Fin n → Fp p) :
                      (shiftLastEquiv p n ⋯ u) a ⟨1, ⋯⟩ = a ⟨1, ⋯⟩
                      theorem KloostermanWeil.Dickson.etaPoly_shiftLast (p n : ℕ) [Fact (Nat.Prime p)] (hn3 : 3 ≤ n) (t u : Fp p) (a : Fin n → Fp p) :
                      theorem KloostermanWeil.Dickson.A_eq_zero_of_three_le (p n : ℕ) [Fact (Nat.Prime p)] (hn3 : 3 ≤ n) (t : Fp p) :
                      A p t n = 0
                      theorem KloostermanWeil.Dickson.dickson_one_eval_add_of_mul {R : Type u_1} [CommRing R] (x y a : R) (hxy : x * y = a) (n : ℕ) :
                      Polynomial.eval (x + y) (Polynomial.dickson 1 a n) = x ^ n + y ^ n