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 L² 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 → ℝ/ℤ):
UnitAddTorus.mFourier n— the monomialx ↦ ∏ i, exp(2πi·nᵢ·xᵢ)(aContinuousMap);UnitAddTorus.orthonormal_mFourier— orthonormality inL²;UnitAddTorus.span_mFourierLp_closure_eq_top— completeness (theLᵖspan is dense), itself obtained by Stone–Weierstrass directly on the product torus (mFourierSubalgebra_closure_eq_top), so completeness needs no separate product-Hilbert- basis / tensor construction;UnitAddTorus.mFourierBasis— the resultingHilbertBasis (d → ℤ) ℂ L²;UnitAddTorus.hasSum_sq_mFourierCoeff— Parseval.
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 L² 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 #
Torus2— abbreviation forUnitAddTorus (Fin 2) = Fin 2 → ℝ/ℤ.torusChar m n— the charactere_{(m,n)}, aContinuousMap.torusCharLp m n—torusChar m nas an element ofL²(𝕋²).torusFourierBasis— the(Fin 2 → ℤ)-indexed Hilbert basis ofL²(𝕋²)(defeqUnitAddTorus.mFourierBasis).torusFourierCoeff f m n— the(m,n)-th Fourier coefficient.
Main statements #
torusChar_apply— the explicit formulae_{(m,n)}(a,b) = exp(2πi(m·a + n·b)).orthonormal_torusChar— the characters are orthonormal inL².torusFourierBasis_repr— the basis coordinates are the Fourier coefficients.hasSum_sq_torusFourierCoeff— Parseval's identity.eq_zero_of_forall_torusFourierCoeff_eq_zero— completeness in bare form: anL²function with all Fourier coefficients zero is0.eq_zero_of_forall_char_inner_eq_zero— the ergodicity interface: anL²function orthogonal to every character is0.
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
- Oseledets.Fourier.instMeasureSpaceUnitAddCircle' = { toMeasurableSpace := QuotientAddGroup.measurableSpace (AddSubgroup.zmultiples 1), volume := AddCircle.haarAddCircle }
Instances For
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 #
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
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).
The trivial character e_{(0,0)} is the constant function 1.
The L² 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].
Instances For
The basis vector of torusFourierBasis at ![m, n] is the L² character torusCharLp m n.
Fourier coefficients, series convergence and Parseval #
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 L² function on 𝕋² is the L²-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 L² norm ∫ |f|².
The ergodicity interface: orthogonal to all characters ⟹ zero #
If every Fourier coefficient of an L² function vanishes, the function is 0 in L². This is
the completeness of the character system in its bare form: the only L² function whose all Fourier
coefficients are zero is the zero function.
The ergodicity interface. An L² function on 𝕋² that is orthogonal to every character
e_{(m,n)} is 0. (The inner is the L² inner product ⟪e_{(m,n)}, f⟫ = ∫ conj(e)·f.)
Restatement of the interface for ergodicity: two L² functions with equal Fourier
coefficients against every character are equal.