Elementary worked examples of the multiplicative ergodic theorem #
This module instantiates the constant-cocycle Lyapunov spectrum
(Oseledets.exponents_const, Oseledets/Lyapunov/Extensions/ConstantCocycle.lean) on three
classical dynamical systems. In each case the cocycle generator is a fixed real matrix M, so the
Lyapunov exponents are exactly Real.log |λᵢ(M)| — the log-moduli of the eigenvalues of M,
sorted in non-increasing order. These are documentation examples: they show how to discharge the
ergodicity and integrability hypotheses on a concrete base, and how to read off the spectrum of a
small matrix.
The three systems are:
- the doubling map
y ↦ 2 • yon the circle, with generatorM = !; - an irrational rotation
y ↦ √2 + yon the circle, with generatorM = !; - the Arnold cat-map matrix
M = !![2,1;1,1], whose exponents arelog((3 ± √5)/2).
A key linear-algebra helper, Oseledets.absMatrix_eq_self_of_posSemidef, shows that for a positive
semidefinite generator the absolute value |M| = cfc |·| M is M itself, so its sorted
eigenvalues are the eigenvalues of M. All three generators above are positive semidefinite, so
the headline spectra are stated directly in terms of the eigenvalues of M.
Main results #
Oseledets.absMatrix_eq_self_of_posSemidef—|M| = Mfor positive semidefiniteM.Oseledets.doublingMap_topExponent_eq_log_two— the top Lyapunov exponent of the doubling-map constant cocycle (M = !![2]) isReal.log 2.Oseledets.irrationalRotation_exponents_eq_zero— the Lyapunov exponent of the irrational rotation by√2(constant cocycleM = !![1]) is0.Oseledets.catMapMatrix_exponents— the two Lyapunov exponents of the cat-map matrixM = !![2,1;1,1]areReal.log ((3 + √5) / 2)andReal.log ((3 - √5) / 2).
Implementation notes #
The genuine Arnold cat map is the toral automorphism of 𝕋² induced by !![2,1;1,1]. Mathlib has
no n-torus type and no proof that hyperbolic toral automorphisms are ergodic, so the cat-map
dynamics is not yet formalizable here. We therefore realize the cat-map matrix as a constant
cocycle over an arbitrary ergodic base (we reuse the doubling map); the Lyapunov exponents depend
only on M, so they coincide with the cat-map exponents even though the underlying dynamics
differs. See the docstring of catMapMatrix_exponents for the precise caveat.
References #
- M. Viana, Lectures on Lyapunov Exponents, Cambridge Studies in Adv. Math. 145 (2014).
The absolute value of a positive semidefinite matrix is itself #
For a positive semidefinite matrix the absolute value is the matrix itself. Since the
spectrum of M is contained in [0, ∞), the function |·| agrees with the identity on
spectrum ℝ M, so the continuous functional calculus collapses: |M| = cfc |·| M = cfc id M = M.
Consequently, for a positive semidefinite generator the sorted eigenvalues of |M| (which control
the Lyapunov spectrum of the constant cocycle) are just the eigenvalues of M.
The sorted-eigenvalue function depends only on the matrix, not on the chosen Hermitian witness:
equal matrices have equal eigenvalues₀. (IsHermitian is a Prop, hence proof-irrelevant once
the matrix is fixed.)
For a positive semidefinite M, the sorted eigenvalues of |M| are the sorted eigenvalues of
M: a direct consequence of absMatrix_eq_self_of_posSemidef.
Sums and products of sorted eigenvalues, via trace and determinant #
The trace and determinant of a Hermitian matrix are the sum and product of its eigenvalues. Both
Mathlib identities are phrased with eigenvalues (indexed by the matrix index type Fin d); we
reindex to eigenvalues₀ (indexed by Fin (Fintype.card (Fin d))) so they can be combined with
the Oseledets spectrum, which uses eigenvalues₀.
The sum of the sorted eigenvalues is the trace. A reindexing of
Matrix.IsHermitian.trace_eq_sum_eigenvalues from eigenvalues to eigenvalues₀.
The product of the sorted eigenvalues is the determinant. A reindexing of
Matrix.IsHermitian.det_eq_prod_eigenvalues from eigenvalues to eigenvalues₀.
The measure setup on the unit circle #
For the two circle examples the phase space is UnitAddCircle = AddCircle (1 : ℝ), equipped with
its volume measure, which is a probability measure (UnitAddCircle.measure_univ). We record the
two instances needed by the constant-cocycle machinery.
The unit circle has length 1 > 0, the standing fact for AddCircle (1 : ℝ).
The volume on UnitAddCircle is a probability measure (total mass 1,
UnitAddCircle.measure_univ).
Example 1 — the doubling map #
The doubling map T : y ↦ 2 • y on the unit circle is ergodic (AddCircle.ergodic_nsmul). Its
derivative is multiplication by 2, so the natural cocycle generator is M = !![2], a 1 × 1
matrix. Its single eigenvalue is 2, and the top Lyapunov exponent is Real.log 2.
The doubling map is ergodic for the volume (Haar) measure on the unit circle.
The constant cocycle generator of the doubling map: the 1 × 1 matrix !![2].
Equations
- Oseledets.doublingGen = !![2]
Instances For
doublingGen = !![2] is symmetric.
doublingGen = !![2] is Hermitian (over ℝ, the same as symmetric).
det !![2] = 2 ≠ 0, so the generator is invertible.
!![2] is positive semidefinite: xᵀ M x = 2 (x₀)² ≥ 0.
The single eigenvalue of !![2] is 2: the trace of a 1 × 1 matrix is its only entry, and
the trace equals the sum (here a single term) of the eigenvalues.
Doubling map: the top Lyapunov exponent is log 2. The constant cocycle with generator
M = !![2] over the (ergodic) doubling map has top Lyapunov exponent Real.log 2: the unique
exponent is log of the unique eigenvalue 2 of M. This is the priority worked example.
Example 2 — an irrational rotation #
The rotation T : y ↦ √2 + y on the unit circle is ergodic because √2 is irrational, hence has
infinite additive order (AddCircle.ergodic_add_left). A rotation is an isometry, so its
derivative is the identity; the natural cocycle generator is M = !![1], with eigenvalue 1 and
Lyapunov exponent log 1 = 0.
The constant cocycle generator of a circle rotation: the 1 × 1 identity !![1].
Equations
- Oseledets.rotationGen = !![1]
Instances For
rotationGen = !![1] is symmetric.
rotationGen = !![1] is Hermitian.
!![1] is positive semidefinite: xᵀ M x = (x₀)² ≥ 0.
The single eigenvalue of the identity generator !![1] is 1 (trace = 1).
A rotation by an angle of infinite order is ergodic, parametric version. For any
a : UnitAddCircle with addOrderOf a = 0 (equivalently, a is not a rational point of the
circle), the rotation y ↦ a + y is ergodic. We use this with a = √2.
The rotation angle √2, viewed as a point of the unit circle, has infinite additive order: a
point of AddCircle (1 : ℝ) has finite order iff its representative is rational, and √2 is
irrational.
The irrational rotation y ↦ √2 + y on the unit circle.
Equations
- Oseledets.irrationalRotation y = ↑√2 + y
Instances For
The rotation by √2 is ergodic.
Irrational rotation: the Lyapunov exponent is 0. The constant cocycle with the isometry
generator M = !![1] over the (ergodic) irrational rotation by √2 has Lyapunov exponent 0: the
unique eigenvalue of M is 1, and log 1 = 0. Rotations preserve lengths, so they exhibit no
exponential growth.
Example 3 — the Arnold cat-map matrix #
The Arnold cat map is the toral automorphism of 𝕋² induced by the matrix !![2,1;1,1]. Its
ergodicity (hyperbolicity of toral automorphisms) is not available in Mathlib, so we realize the
cat-map matrix as a constant cocycle over an ergodic base — concretely, the doubling map. The
Lyapunov exponents depend only on the generator, so they are the genuine cat-map exponents.
The matrix is symmetric and positive definite with trace 3 and determinant 1. If a ≥ b are
its (sorted) eigenvalues, then a + b = 3 and a b = 1, hence (a - b)² = (a+b)² - 4ab = 5, so
a - b = √5, giving a = (3 + √5)/2 and b = (3 - √5)/2. The Lyapunov exponents are log a and
log b.
catMapGen = !![2,1;1,1] is Hermitian.
The cat-map matrix is positive definite: xᵀ M x = (x₀)² + (x₀ + x₁)² > 0 for x ≠ 0.
The cat-map matrix is positive semidefinite.
det !![2,1;1,1] = 2·1 - 1·1 = 1 ≠ 0.
The sum of the two sorted eigenvalues of the cat-map matrix is the trace, 3.
The product of the two sorted eigenvalues of the cat-map matrix is the determinant, 1.
The larger sorted eigenvalue dominates the smaller: eigenvalues₀ 1 ≤ eigenvalues₀ 0
(eigenvalues₀ is antitone).
The two sorted eigenvalues of the cat-map matrix are (3 + √5)/2 and (3 - √5)/2.
From a + b = 3, a b = 1, and a ≥ b we get (a - b)² = (a+b)² - 4ab = 5, hence a - b = √5,
and solving the linear system gives the closed forms.
The constant cocycle realization of the cat-map matrix uses the doubling map as its ergodic
base; only the (constant) generator catMapGen matters for the spectrum.
The cat-map matrix: closed-form Lyapunov spectrum. Realized as a constant cocycle with
generator M = !![2,1;1,1] over the (ergodic) doubling map, the two Lyapunov exponents are
Real.log ((3 + √5)/2) and Real.log ((3 - √5)/2) — the logs of the eigenvalues of the cat-map
matrix.
Honesty caveat. The cocycle here is the constant matrix M = !![2,1;1,1], not the
derivative cocycle of the genuine Arnold cat map (the hyperbolic toral automorphism of 𝕋²). The
exponents nonetheless coincide with the cat-map exponents, because they are determined by M. The
genuine toral-automorphism dynamics requires the ergodicity of hyperbolic toral automorphisms,
which is not yet available in Mathlib (there is no n-torus type and no ℤ² Fourier basis).
The cat-map exponents sum to zero (the cocycle is conservative: det M = 1). Equivalently,
log a + log b = log (a b) = log 1 = 0.