Documentation

LeanPool.ZetaH123.Lem41

Lemma 4.1 for Thakur's hypotheses on power sums #

Encoding of the Laurent field F_q((1/t)) #

We model F_q((1/t)) by LaurentSeries Fq = HahnSeries ℤ Fq, in which the formal variable X plays the role of the uniformizer 1/t. Thus t corresponds to X⁻¹, and the coefficient of Xⁿ of an element is precisely the coefficient of t ^ {-n} in its expansion in descending powers of t.

noncomputable def ZetaH123.Lem41.phi (Fq : Type) [Field Fq] :

The F_q-algebra embedding F_q[t] → F_q((1/t)) sending t ↦ X⁻¹, i.e. the expansion of a polynomial in descending powers of t. Since F_q((1/t)) is a field, this extends multiplicatively to inverses, which is how a ^ {-k} is interpreted below.

Equations
Instances For

    The e-th base-p digit of x, i.e. ⌊x / p ^ e⌋ mod p.

    Equations
    Instances For

      Definition 1 (Carry-free addition in base p). The addition of the nonnegative integers in xs is carry-free in base p if for every digit position e, the sum of the e-th base-p digits is at most p - 1.

      Equations
      Instances For
        def ZetaH123.Lem41.weight (d : ) (m : Fin d) :

        The weight w(m) = ∑ i (m i) = m_1 + 2 m_2 + … + d m_d. (Here m : Fin d → ℕ is 0-indexed, so the i-th coordinate carries the multiplier i + 1.)

        Equations
        Instances For
          def ZetaH123.Lem41.Tindex (p q d kk : ) (m : Fin d) :

          Definition 2 (The index set T_{d,k-1}). The membership predicate for the set of d-tuples (m_1,…,m_d) (0-indexed as m : Fin d → ℕ) such that:

          1. m i > 0 for all i;
          2. (q - 1) ∣ m i for all i;
          3. the addition (k - 1) + m_1 + … + m_d is carry-free in base p.
          Equations
          Instances For
            noncomputable def ZetaH123.Lem41.monicOf (Fq : Type) [Field Fq] (d : ) (θ : Fin dFq) :

            The monic polynomial of degree exactly d with prescribed lower coefficients θ : Fin d → Fq, namely t ^ d + ∑_{i<d} (θ i) t ^ i. As θ ranges over Fin d → Fq this enumerates the set A_d ^ + of monic polynomials of degree d without repetition (see monicOf_monic/monicOf_natDegree/monicOf_injective).

            Equations
            Instances For
              noncomputable def ZetaH123.Lem41.Sdk (Fq : Type) [Field Fq] [Fintype Fq] (d k : ) :

              Definition 3 (The power sum S_d(k)). S_d(k) = ∑_{a ∈ A_d ^ +} a ^ {-k}, summed over the monic polynomials of degree d (parameterized by their lower coefficients θ : Fin d → Fq), viewed as an element of F_q((1/t)) via the embedding phi. The inverse (phi a)⁻¹ is taken in the Laurent series field, which realizes the expansion of a ^ {-1} in descending powers of t.

              Equations
              Instances For

                The explicit witness family c_m #

                For a tuple m = (m_1,…,m_d) with y := ∑_i m_i, the witness coefficient is c_m = (-1) ^ d · (-1) ^ y · C(k+y-1, y) · multinomial(y; m_1,…,m_d) (mod p), where the global factor (-1) ^ d comes from ∑_{x∈F_q} x ^ {m_i} = -1 for each of the d variables.

                noncomputable def ZetaH123.Lem41.cwit (Fq : Type) [Field Fq] (d k : ) (m : Fin d) :
                Fq

                The explicit witness family. For m : Fin d → ℕ, with y = ∑ i, m i, cwit Fq k m is the F_q-image of the integer (-1) ^ d · (-1) ^ y · C(k + y - 1, y) · multinomial(y; m).

                Equations
                Instances For

                  Sub-lemmas of the structure theorem #

                  The proof of main factors through: L1 (Sdk_coeff_as_thetasum), the Laurent/multinomial expansion of coeff n (Sdk); L2 (finField_pow_sum), the finite-field power sum collapsing the θ-sum; L3/L4 (negChoose_cast_ne_zero_iff/multinomial_cast_ne_zero_iff), Lucas-type nonvanishing criteria; L5 (carryfree_combine), combining the carry-free conditions; then the assembly lemmas cwit_ne_zero and Sdk_coeff_eq_finsum.

                  theorem ZetaH123.Lem41.finField_pow_sum (Fq : Type) [Field Fq] [Fintype Fq] (m : ) :
                  x : Fq, x ^ m = if 0 < m Fintype.card Fq - 1 m then -1 else 0

                  L2 (finite-field power sum). For a finite field Fq and m : ℕ, ∑_{x∈Fq} x ^ m = -1 if m > 0 ∧ (q - 1) ∣ m, and = 0 otherwise (0 ^ 0 = 1).

                  theorem ZetaH123.Lem41.negChoose_cast_ne_zero_iff (Fq : Type) [Field Fq] (p k : ) (hp : Nat.Prime p) (hchar : CharP Fq p) (hk : 0 < k) (y : ) :
                  (-1) ^ y * ((k + y - 1).choose y) 0 CarryFree p [k - 1, y]

                  L3 (Lucas, binomial). The integer binom(-k, y) = (-1) ^ y · C(k+y-1, y) has nonzero image in F_q (char p) iff the addition (k - 1) + y is carry-free in base p, i.e. CarryFree p [k-1, y] (Kummer/Lucas).

                  theorem ZetaH123.Lem41.multinomial_cast_ne_zero_iff (Fq : Type) [Field Fq] (p d : ) (hp : Nat.Prime p) (hchar : CharP Fq p) (m : Fin d) :

                  L4 (Lucas, multinomial). With y = ∑ i, m i, the multinomial coefficient multinomial(y; m_1,…,m_d) has nonzero image in F_q iff the addition m_1 ⊕ m_2 ⊕ … ⊕ m_d is carry-free in base p, i.e. CarryFree p (List.ofFn m). (Telescoping product of binomial-Lucas, informal.tex Lemma 1.6.)

                  theorem ZetaH123.Lem41.crux_div (p a b : ) (hp : 1 < p) (h : ∀ (e : ), digit p a e + digit p b e p - 1) (e : ) :
                  (a + b) / p ^ e = a / p ^ e + b / p ^ e

                  Crux (division form). If, at every base-p digit position, the digits of a and b sum to at most p - 1 (no carry), then dividing by p ^ e distributes over the sum a + b. Requires 1 < p.

                  theorem ZetaH123.Lem41.crux_digit_two (p a b : ) (hp : 1 < p) (h : ∀ (e : ), digit p a e + digit p b e p - 1) (e : ) :
                  digit p (a + b) e = digit p a e + digit p b e

                  Crux (two-summand digit form). Under the no-carry hypothesis, the digit of the sum equals the sum of digits at every position.

                  theorem ZetaH123.Lem41.crux_list (p : ) (L : List ) (h : ∀ (e : ), (List.map (fun (x : ) => digit p x e) L).sum p - 1) (e : ) :
                  digit p L.sum e = (List.map (fun (x : ) => digit p x e) L).sum

                  Crux (list form, all p). If the addition of the entries of L is carry-free in base p, then for every digit position the digit of L.sum equals the sum of the digits of the entries. (Holds unconditionally for p ≤ 1.)

                  theorem ZetaH123.Lem41.carryfree_combine (p kk d : ) (m : Fin d) :
                  CarryFree p [kk, i : Fin d, m i] CarryFree p (List.ofFn m) CarryFree p (kk :: List.ofFn m)

                  L5 (carry-free combination). With y = ∑ i, m i, the two carry-free conditions CarryFree p [k-1, y] (binomial) and CarryFree p (List.ofFn m) (multinomial) hold simultaneously iff the combined addition is carry-free, i.e. CarryFree p ((k - 1) :: List.ofFn m).

                  L1 helper lemmas (PowerSeries / LaurentSeries infrastructure) #

                  The proof of L1 (Sdk_coeff_as_thetasum) is decomposed into helper lemmas H1–H5: H1 is the generalized binomial / unit-inverse power-series expansion; H2–H4 are the phi/monicOf → LaurentSeries bridge and the HahnSeries shift; H5 is the finite-vs-finsum bookkeeping.

                  theorem ZetaH123.Lem41.coeff_inv_one_add_pow (Fq : Type) [Field Fq] (k e : ) (g : PowerSeries Fq) (hg : PowerSeries.constantCoeff g = 0) :
                  (PowerSeries.coeff e) ((1 + g) ^ k)⁻¹ = yFinset.range (e + 1), (-1) ^ y * ((k + y - 1).choose y) * (PowerSeries.coeff e) (g ^ y)

                  H1 (generalized binomial / unit-inverse power-series expansion). For a power series g with zero constant term, the e-th coefficient of ((1 + g) ^ k)⁻¹ is the finite sum ∑_{y ≤ e} binom(-k, y) · coeff_e (g ^ y), where binom(-k, y) = (-1) ^ y · C(k+y-1, y). (Only y ≤ e contribute since order (g ^ y) ≥ y.)

                  theorem ZetaH123.Lem41.phi_monicOf_eq (Fq : Type) [Field Fq] (d : ) (θ : Fin dFq) :
                  (phi Fq) (monicOf Fq d θ) = (HahnSeries.single (-d)) 1 * (HahnSeries.ofPowerSeries Fq) (1 + i : Fin d, PowerSeries.C (θ i) * PowerSeries.X ^ (d - i))

                  H2 (phi (monicOf θ) made explicit). phi (monicOf θ) equals the shift single (-d) 1 times the coercion of the unit power series 1 + ∑_{i<d} θ_i X ^ {d-i}. (phi = aeval X⁻¹, X⁻¹ = single (-1) 1; pull out single (-d) 1 and identify the bracket with the coerced power series.)

                  theorem ZetaH123.Lem41.inv_phi_pow_eq_shift_mul (Fq : Type) [Field Fq] (d k : ) (θ : Fin dFq) :
                  ((phi Fq) (monicOf Fq d θ))⁻¹ ^ k = (HahnSeries.single (d * k)) 1 * (HahnSeries.ofPowerSeries Fq) ((1 + i : Fin d, PowerSeries.C (θ i) * PowerSeries.X ^ (d - i)) ^ k)⁻¹

                  H3 (inverse k-th power as shift × PowerSeries inverse). From H2: the k-th power of the inverse is single (d*k) 1 times the coercion of the PowerSeries inverse ((1 + g) ^ k)⁻¹, where g = ∑_{i<d} θ_i X ^ {d-i}. Uses that a power series with constant term 1 is a unit, so (↑u)⁻¹ = ↑(u⁻¹) in LaurentSeries.

                  theorem ZetaH123.Lem41.coeff_single_mul_coe_powerSeries (Fq : Type) [Field Fq] (s : ) (f : PowerSeries Fq) (n : ) :
                  ((HahnSeries.single s) 1 * (HahnSeries.ofPowerSeries Fq) f).coeff n = if _h : 0 n - s then (PowerSeries.coeff (n - s).toNat) f else 0

                  H4 (coefficient of single s 1 * ↑f, the Laurent shift). The n-th coefficient of single s 1 * (↑f) is the (n-s)-th PowerSeries coefficient of f when n - s ≥ 0, else 0.

                  theorem ZetaH123.Lem41.Sdk_coeff_per_theta (Fq : Type) [Field Fq] (d k : ) (θ : Fin dFq) (n : ) :
                  (((phi Fq) (monicOf Fq d θ))⁻¹ ^ k).coeff n = ∑ᶠ (m : Fin d) (_ : m {m : Fin d | ↑(d * k) + (weight d m) = n}), ((-1) ^ i : Fin d, m i) * ((k + i : Fin d, m i - 1).choose (∑ i : Fin d, m i)) * (Nat.multinomial Finset.univ m) * i : Fin d, θ i.rev ^ m i

                  H5 (per-θ coefficient identity). Assembling H1 (binomial expansion), the multinomial theorem (Finset.sum_pow_eq_sum_piAntidiag for g ^ y), and the re-indexing of the X ^ {d-i} exponents against weight d m = ∑ (i+1) m_i, the coefficient of X ^ n in (phi (monicOf θ))⁻¹ ^ k is the finsum over tuples m with d*k + weight(m) = n of binom(-k, ∑ m_i)·multinomial·∏ θ_i ^ {m_i}.

                  theorem ZetaH123.Lem41.Sdk_coeff_as_thetasum (Fq : Type) [Field Fq] [Fintype Fq] (d k : ) (n : ) :
                  (Sdk Fq d k).coeff n = θ : Fin dFq, ∑ᶠ (m : Fin d) (_ : m {m : Fin d | ↑(d * k) + (weight d m) = n}), ((-1) ^ i : Fin d, m i) * ((k + i : Fin d, m i - 1).choose (∑ i : Fin d, m i)) * (Nat.multinomial Finset.univ m) * i : Fin d, θ i ^ m i

                  L1 (Laurent/multinomial expansion). The coefficient of X ^ n in Sdk equals the θ-sum of single-monic-polynomial coefficients, each of which is the finite tuple-sum of binom(-k,y)·multinomial(y;m)·∏_i (θ i) ^ {m i} over tuples m with d*k + w(m) = n.

                  theorem ZetaH123.Lem41.cwit_ne_zero (Fq : Type) [Field Fq] [Fintype Fq] (p f d k : ) (hp : Nat.Prime p) (_hf : 1 f) (_hd : 1 d) (hk : 0 < k) (hchar : CharP Fq p) (_hq : Fintype.card Fq = p ^ f) (m : Fin d) (hm : Tindex p (Fintype.card Fq) d (k - 1) m) :
                  cwit Fq d k m 0

                  Assembly (b): nonvanishing of cwit on the index set. For m ∈ T_{d,k-1}, cwit Fq d k m ≠ 0. From L3, L4, and L5: membership in Tindex supplies both carry-free conditions, and the global (-1) ^ d is a unit.

                  theorem ZetaH123.Lem41.Sdk_coeff_eq_finsum (Fq : Type) [Field Fq] [Fintype Fq] (p f d k : ) (hp : Nat.Prime p) (_hf : 1 f) (_hd : 1 d) (hk : 0 < k) (hchar : CharP Fq p) (_hq : Fintype.card Fq = p ^ f) (n : ) :
                  (Sdk Fq d k).coeff n = ∑ᶠ (m : Fin d) (_ : m {m : Fin d | Tindex p (Fintype.card Fq) d (k - 1) m ↑(d * k) + (weight d m) = n}), cwit Fq d k m

                  Assembly (c): the coefficient identity with the explicit witness cwit. Combines L1 (expansion), L2 (the finite-field power sum collapsing the θ-sum to (-1) ^ d exactly when every m i > 0 ∧ (q - 1) ∣ m i), and L3/L4/L5 (a term has nonzero coefficient iff m ∈ Tindex), regrouped as the finsum of cwit over the admissible fiber {m ∈ Tindex | d*k + w(m) = n}.

                  theorem ZetaH123.Lem41.main (Fq : Type) [Field Fq] [Fintype Fq] (p f d k : ) (hp : Nat.Prime p) (hf : 1 f) (hd : 1 d) (hk : 0 < k) (hchar : CharP Fq p) (hq : Fintype.card Fq = p ^ f) :
                  ∃ (c : (Fin d)Fq), (∀ (m : Fin d), Tindex p (Fintype.card Fq) d (k - 1) mc m 0) ∀ (n : ), (Sdk Fq d k).coeff n = ∑ᶠ (m : Fin d) (_ : m {m : Fin d | Tindex p (Fintype.card Fq) d (k - 1) m ↑(d * k) + (weight d m) = n}), c m

                  Theorem. There exists a family of scalars c_m ∈ F_q indexed by d-tuples m, all nonzero on the index set T_{d,k-1}, such that S_d(k) = t ^ {-dk} ∑_{m ∈ T_{d,k-1}} c_m t ^ {-w(m)}.

                  The identity is expressed coefficient-by-coefficient in F_q((1/t)): working with the uniformizer X = 1/t, the coefficient of Xⁿ (equivalently of t ^ {-n}) in S_d(k) equals the sum of c_m over the (finite) set of tuples m ∈ T_{d,k-1} with d*k + w(m) = n. This faithfully captures that the right-hand side is a formal sum of monomials t ^ {-w(m)} indexed by the tuples (with repetition allowed): each individual c_m is nonzero, while the collected coefficient of a given power of t may vanish.

                  Correctness statements for the definitions #

                  The following auxiliary statements pin down that monicOf is the intended enumeration of the monic polynomials of degree exactly d, justifying that Sdk is the power sum S_d(k) = ∑_{a ∈ A_d ^ +} a ^ {-k}.

                  theorem ZetaH123.Lem41.monicOf_lower_degree (Fq : Type) [Field Fq] (d : ) (θ : Fin dFq) :
                  (∑ i : Fin d, Polynomial.C (θ i) * Polynomial.X ^ i).degree < d

                  The lower-degree part ∑_{i<d} C(θ i) X ^ i has degree < d.

                  theorem ZetaH123.Lem41.monicOf_monic (Fq : Type) [Field Fq] (d : ) (θ : Fin dFq) :
                  (monicOf Fq d θ).Monic

                  monicOf always produces a monic polynomial.

                  theorem ZetaH123.Lem41.monicOf_natDegree (Fq : Type) [Field Fq] (d : ) (θ : Fin dFq) :
                  (monicOf Fq d θ).natDegree = d

                  monicOf produces a polynomial of degree exactly d.

                  theorem ZetaH123.Lem41.monicOf_coeff (Fq : Type) [Field Fq] (d : ) (θ : Fin dFq) (i : Fin d) :
                  (monicOf Fq d θ).coeff i = θ i

                  The coefficient of X ^ i (for i < d) in monicOf θ is θ i.

                  Distinct coefficient tuples give distinct polynomials, so the parameterization of A_d ^ + by Fin d → Fq has no repetitions.

                  theorem ZetaH123.Lem41.monicOf_surjective (Fq : Type) [Field Fq] (d : ) (a : Polynomial Fq) (ha : a.Monic) (hdeg : a.natDegree = d) :
                  ∃ (θ : Fin dFq), monicOf Fq d θ = a

                  The parameterization is surjective onto A_d ^ +: every monic polynomial of degree exactly d arises as monicOf of its lower coefficients.