Documentation

Oseledets.Fourier.Torus2

Fourier analysis on the 2-torus 𝕋² = (ℝ/ℤ)² #

This module packages the Fourier-analytic infrastructure on the 2-torus that the toral-automorphism ergodicity argument (issue #3) consumes: the ℤ²-indexed family of additive characters

e_{(m,n)} : (a, b) ↦ exp(2πi(m·a + n·b))

is a Hilbert basis (orthonormal and complete) of L²(𝕋², Haar), together with Parseval. The single interface the ergodicity proof needs is eq_zero_of_forall_char_inner_eq_zero: an function that is orthogonal to every character is 0.

Provenance: this is a thin specialization, not a re-proof #

Mathlib already builds the full d-dimensional torus Fourier theory in Mathlib.Analysis.Fourier.AddCircleMulti for UnitAddTorus d = (d → ℝ/ℤ):

Taking d := Fin 2 is exactly the 2-torus. We re-export those results under 2-torus-flavoured names, verify the explicit closed form e_{(m,n)}(a,b) = exp(2πi(m·a + n·b)), and add the orthogonality interface, all sorry-free and reducing to the Mathlib statements.

A measure-normalisation subtlety (load-bearing) #

AddCircleMulti states all of its results relative to a file-local measure instance MeasureSpace UnitAddCircle := ⟨AddCircle.haarAddCircle⟩ (the Haar probability measure, total mass 1). That local instance does not leak to importers, where the ambient MeasureSpace (AddCircle 1) instead resolves to AddCircle.measureSpace 1 (volume = ENNReal.ofReal 1 • addHaarMeasure ⊤). The two measures are propositionally equal but not definitionally equal, so without intervention every reference to mFourierBasis, mFourierLp, … fails to typecheck in an importing file (Lp ℂ 2 volume is a different type). No Mathlib file imports AddCircleMulti, so this was never exercised upstream.

We resolve it the same way AddCircleMulti does: re-declare the same local instance MeasureSpace UnitAddCircle := ⟨haarAddCircle⟩ here, so our volume agrees with Mathlib's. The resulting volume on 𝕋² = UnitAddTorus (Fin 2) is then the product of the normalised Haar probability measures on the two circle factors, i.e. the normalised Haar probability measure on 𝕋² — exactly the measure the ergodicity statement is about. Downstream consumers (the toral-automorphism slice) must adopt the same instance; for an ergodicity statement, which is about an invariant probability measure, this is the intended normalisation.

Main definitions #

Main statements #

@[implicit_reducible]

Normalise the measure on each circle factor ℝ/ℤ to be the Haar probability measure (total mass 1). This re-declares the file-local instance of Mathlib.Analysis.Fourier.AddCircleMulti, so that volume in this file agrees with the measure mFourierBasis/mFourierLp are stated for. Without it, the ambient AddCircle.measureSpace 1 (a propositionally-but-not-definitionally equal mass-1 Haar measure) makes those Mathlib results fail to typecheck.

Equations
Instances For
    @[reducible, inline]

    The 2-torus 𝕋² = (ℝ/ℤ)², modelled as UnitAddTorus (Fin 2) = Fin 2 → ℝ/ℤ. With the local Haar-probability instance above, its volume is the product of the normalised Haar probability measures on the two circle factors, i.e. the normalised Haar probability measure on 𝕋².

    Equations
    Instances For

      The characters and their algebra #

      noncomputable def Oseledets.Fourier.torusChar (m n : ) :

      The (m, n)-th additive character e_{(m,n)} : (a,b) ↦ exp(2πi(m·a + n·b)) of the 2-torus, bundled as a continuous map. Definitionally it is UnitAddTorus.mFourier ![m, n].

      Equations
      Instances For
        theorem Oseledets.Fourier.torusChar_apply_coe (m n : ) (a b : ) :
        (torusChar m n) ![a, b] = Complex.exp (2 * Real.pi * Complex.I * m * a) * Complex.exp (2 * Real.pi * Complex.I * n * b)

        The 2-torus character at a point given by two real coordinate representatives: e_{(m,n)}((a, b)) = exp(2πi·m·a) · exp(2πi·n·b).

        theorem Oseledets.Fourier.torusChar_apply (m n : ) (a b : ) :
        (torusChar m n) ![a, b] = Complex.exp (2 * Real.pi * Complex.I * (m * a + n * b))

        The explicit closed form of the 2-torus character as a single exponential: e_{(m,n)}((a, b)) = exp(2πi(m·a + n·b)).

        theorem Oseledets.Fourier.torusChar_conj (m n : ) (x : Torus2) :
        (starRingEnd ) ((torusChar m n) x) = (torusChar (-m) (-n)) x

        The conjugate of a 2-torus character is the character with negated indices.

        theorem Oseledets.Fourier.torusChar_mul (m n p q : ) (x : Torus2) :
        (torusChar m n) x * (torusChar p q) x = (torusChar (m + p) (n + q)) x

        Characters multiply by adding indices: e_{(m,n)} · e_{(p,q)} = e_{(m+p, n+q)}.

        The trivial character e_{(0,0)} is the constant function 1.

        Each character has sup-norm 1 (it is unimodular).

        The characters, orthonormality, and the Hilbert basis #

        The character e_{(m,n)} as an element of L²(𝕋²). Definitionally mFourierLp 2 ![m, n].

        Equations
        Instances For

          Orthonormality. The 2-torus characters form an orthonormal family in L²(𝕋²).

          The Hilbert basis. The (Fin 2 → ℤ)-indexed family of characters is a Hilbert basis of L²(𝕋²): it is orthonormal and its span is dense (completeness). This is exactly UnitAddTorus.mFourierBasis for d = Fin 2; the (m, n) face is recovered through ![m, n].

          Equations
          Instances For

            The basis vector of torusFourierBasis at ![m, n] is the character torusCharLp m n.

            Fourier coefficients, series convergence and Parseval #

            noncomputable def Oseledets.Fourier.torusFourierCoeff (f : Torus2) (m n : ) :

            The (m, n)-th Fourier coefficient of f : 𝕋² → ℂ: ∫ exp(-2πi(m·a + n·b)) · f(a,b) d(a,b). Definitionally mFourierCoeff f ![m, n].

            Equations
            Instances For

              The basis coordinate of f at ![m, n] is its (m, n)-th Fourier coefficient.

              L² convergence of the Fourier series. Every function on 𝕋² is the -limit of its Fourier series ∑ c_n · e_n (indexed over n : Fin 2 → ℤ, i.e. (m, n) ∈ ℤ²).

              Parseval's identity (norms): the sum of squared moduli of the Fourier coefficients over (m, n) ∈ ℤ² equals the squared norm ∫ |f|².

              The ergodicity interface: orthogonal to all characters ⟹ zero #

              If every Fourier coefficient of an function vanishes, the function is 0 in . This is the completeness of the character system in its bare form: the only function whose all Fourier coefficients are zero is the zero function.

              The ergodicity interface. An function on 𝕋² that is orthogonal to every character e_{(m,n)} is 0. (The inner is the inner product ⟪e_{(m,n)}, f⟫ = ∫ conj(e)·f.)

              Restatement of the interface for ergodicity: two functions with equal Fourier coefficients against every character are equal.