Documentation

Mathlib.NumberTheory.Padics.MahlerBasis

The Mahler basis of continuous functions #

In this file we introduce the Mahler basis function mahler k, for k : ℕ, which is the unique continuous map ℤ_[p] → ℚ_[p] agreeing with n ↦ n.choose k for n ∈ ℕ.

Using this, we prove Mahler's theorem, showing that for any any continuous function f on ℤ_[p] (valued in a p-adic normed space E), the Mahler series x ↦ ∑' k, mahler k x • Δ^[n] f 0 converges (uniformly) to f, and this construction defines a Banach-space isomorphism between C(ℤ_[p], E) and the space of sequences ℕ → E tending to 0.

For this, we follow the argument of Bojanić [Boj74].

The formalisation of Mahler's theorem presented here is based on code written by Giulio Caflisch for his bachelor's thesis at ETH Zürich.

References #

Tags #

Bojanic

theorem PadicInt.norm_ascPochhammer_le {p : } [hp : Fact (Nat.Prime p)] (k : ) (x : ℤ_[p]) :

Bound for norms of ascending Pochhammer symbols.

noncomputable instance PadicInt.instBinomialRing {p : } [hp : Fact (Nat.Prime p)] :

The p-adic integers are a binomial ring, i.e. a ring where binomial coefficients make sense.

Equations
  • One or more equations did not get rendered due to their size.
theorem PadicInt.continuous_choose {p : } [hp : Fact (Nat.Prime p)] (k : ) :
Continuous fun (x : ℤ_[p]) => Ring.choose x k
noncomputable def mahler {p : } [hp : Fact (Nat.Prime p)] (k : ) :

The k-th Mahler basis function, i.e. the unique continuous function ℤ_[p] → ℚ_[p] agreeing with n ↦ n.choose k for n ∈ ℕ. See [Col10], §1.2.1.

Equations
Instances For
    theorem mahler_apply {p : } [hp : Fact (Nat.Prime p)] (k : ) (x : ℤ_[p]) :
    (mahler k) x = (Ring.choose x k)
    theorem mahler_natCast_eq {p : } [hp : Fact (Nat.Prime p)] (k n : ) :
    (mahler k) n = (n.choose k)

    The function mahler k extends n ↦ n.choose k on .

    @[simp]
    theorem norm_mahler_eq {p : } [hp : Fact (Nat.Prime p)] (k : ) :

    The uniform norm of the k-th Mahler basis function is 1, for every k.

    Bound for iterated forward differences of a continuous function from a compact space to a nonarchimedean seminormed group.

    theorem PadicInt.fwdDiff_iter_le_of_forall_le {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] {f : C(ℤ_[p], E)} {s t : } (hst : ∀ (x y : ℤ_[p]), x - y p ^ (-t)f x - f y f / p ^ s) (n : ) :
    (fwdDiff 1)^[n + s * p ^ t] (⇑f) 0 f / p ^ s

    Explicit bound for the decay rate of the Mahler coefficients of a continuous function on ℤ_[p]. This will be used to prove Mahler's theorem.

    theorem PadicInt.fwdDiff_tendsto_zero {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] (f : C(ℤ_[p], E)) :
    Filter.Tendsto (fun (x : ) => (fwdDiff 1)^[x] (⇑f) 0) Filter.atTop (nhds 0)

    Key lemma for Mahler's theorem: for f a continuous function on ℤ_[p], the sequence n ↦ Δ^[n] f 0 tends to 0. See PadicInt.fwdDiff_iter_le_of_forall_le for an explicit estimate of the decay rate.

    noncomputable def PadicInt.mahlerTerm {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] (a : E) (n : ) :

    A single term of a Mahler series, given by the product of the scalar-valued continuous map mahler n : ℤ_[p] → ℚ_[p] with a constant vector in some normed ℚ_[p]-vector space.

    Equations
    Instances For
      theorem PadicInt.mahlerTerm_apply {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] (a : E) (n : ) (x : ℤ_[p]) :
      noncomputable def PadicInt.mahlerSeries {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] (a : E) :

      A series of the form considered in Mahler's theorem.

      Equations
      Instances For
        theorem PadicInt.hasSum_mahlerSeries {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] [CompleteSpace E] {a : E} (ha : Filter.Tendsto a Filter.atTop (nhds 0)) :

        A Mahler series whose coefficients tend to 0 is convergent.

        theorem PadicInt.mahlerSeries_apply {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] [CompleteSpace E] {a : E} (ha : Filter.Tendsto a Filter.atTop (nhds 0)) (x : ℤ_[p]) :
        (PadicInt.mahlerSeries a) x = ∑' (n : ), (mahler n) x a n

        Evaluation of a Mahler series is just the pointwise sum.

        theorem PadicInt.mahlerSeries_apply_nat {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] [CompleteSpace E] {a : E} (ha : Filter.Tendsto a Filter.atTop (nhds 0)) {m n : } (hmn : m n) :
        (PadicInt.mahlerSeries a) m = iFinset.range (n + 1), m.choose i a i

        The value of a Mahler series at a natural number n is given by the finite sum of the first m terms, for any n ≤ m.

        theorem PadicInt.fwdDiff_mahlerSeries {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] [CompleteSpace E] {a : E} (ha : Filter.Tendsto a Filter.atTop (nhds 0)) (n : ) :
        (fwdDiff 1)^[n] (⇑(PadicInt.mahlerSeries a)) 0 = a n

        The coefficients of a Mahler series can be recovered from the sum by taking forward differences at 0.

        theorem PadicInt.hasSum_mahler {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] [CompleteSpace E] (f : C(ℤ_[p], E)) :
        HasSum (fun (n : ) => PadicInt.mahlerTerm ((fwdDiff 1)^[n] (⇑f) 0) n) f

        Mahler's theorem: for any continuous function f from ℤ_[p] to a p-adic Banach space, the Mahler series with coeffients n ↦ Δ_[1]^[n] f 0 converges to the original function f.

        The isometric equivalence from C(ℤ_[p], E) to the space of sequences in E tending to 0 given by Mahler's theorem, for E a nonarchimedean ℚ_[p]-Banach space.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem PadicInt.mahlerEquiv_apply {p : } [hp : Fact (Nat.Prime p)] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℚ_[p] E] [IsUltrametricDist E] [CompleteSpace E] (f : C(ℤ_[p], E)) :
          ((PadicInt.mahlerEquiv E) f) = fun (n : ) => (fwdDiff 1)^[n] (⇑f) 0