Documentation

CsdLean4.Mathlib.Dynamics.LyapunovExponent

Lyapunov exponents of linear maps, and the cat map's #

Category: 1-Mathlib (CSD-free; staged as a Mathlib-upstream candidate). BACKLOG #148; consumed by SigmaLayer/FibreLyapunov.lean.

Mathlib has no notion of Lyapunov exponent (MATHLIB-ABSENT(lyapunovExponent)). This file defines the one notion that needs no manifold: for a continuous linear map A of a real normed space and a direction v, HasLyapunovExponent A v l says log ‖Aⁿ v‖ / n → l. For the derivative of a smooth map this is the Lyapunov exponent of the tangent direction v; for a linear map the derivative is the map itself, and for a translation it is the identity.

The cat map #

catR : ℝ² →L ℝ² is the matrix [[2,1],[1,1]], the lift of cat (cat_coe) and the action catZ on frequencies (catR_intCast). Its eigenvalues are φ² and φ⁻² = 2 − φ; the expanding and contracting linear forms ellUR, ellSR of CatMapMixing.lean's integer argument are the real ones here, and the geometric sandwich hasLyapunovExponent_of_geometric_bounds turns their scaling into the exponents:

Honest scope #

References: Katok–Hasselblatt, Introduction to the Modern Theory of Dynamical Systems, §1.8 (the cat map's exponents) and Supplement S; Mathlib/Dynamics/CatMapWitness.lean (cat, catZ), Mathlib/Dynamics/CatMapMixing.lean (ellU, ellS, the golden-ratio facts); specs/BACKLOG.md #148.

The exponent of a direction under a linear map #

def HasLyapunovExponent {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] (A : E →L[ℝ] E) (v : E) (l : ℝ) :

HasLyapunovExponent A v l: the direction v has Lyapunov exponent l under the continuous linear map A, i.e. log ‖Aⁿ v‖ / n → l.

Equations
Instances For
    theorem HasLyapunovExponent.unique {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {A : E →L[ℝ] E} {v : E} {l l' : ℝ} (h : HasLyapunovExponent A v l) (h' : HasLyapunovExponent A v l') :
    l = l'

    The identity stretches nothing: exponent 0 in every direction.

    theorem hasLyapunovExponent_of_geometric_bounds {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] (A : E →L[ℝ] E) (v : E) {a b r : ℝ} (ha : 0 < a) (hb : 0 < b) (hr : 0 < r) (hlow : ∀ (n : ℕ), a * r ^ n ≤ ‖(A ^ n) v‖) (hup : ∀ (n : ℕ), ‖(A ^ n) v‖ ≤ b * r ^ n) :

    The geometric sandwich: a direction squeezed between two geometric envelopes with the same ratio r has exponent log r.

    The real cat matrix and its two eigenforms #

    The cat matrix [[2,1],[1,1]] as a continuous linear map of ℝ²: the lift of cat to the plane, and the derivative of cat at every point.

    Equations
    Instances For
      @[simp]
      theorem MeasureTheory.catR_apply (v : ℝ × ℝ) :
      catR v = (2 * v.1 + v.2, v.1 + v.2)
      theorem MeasureTheory.cat_coe (x y : ℝ) :
      cat (↑x, ↑y) = (↑(catR (x, y)).1, ↑(catR (x, y)).2)

      cat is catR read modulo ℤ².

      theorem MeasureTheory.catR_intCast (v : ℤ × ℤ) :
      catR (↑v.1, ↑v.2) = (↑(catZ v).1, ↑(catZ v).2)

      The frequency action catZ is catR on integer points.

      noncomputable def MeasureTheory.ellUR (v : ℝ × ℝ) :

      The expanding linear form v ↦ v₁ + (φ − 1) v₂ on ℝ²: catR scales it by φ².

      Equations
      Instances For
        noncomputable def MeasureTheory.ellSR (v : ℝ × ℝ) :

        The contracting linear form v ↦ v₁ − φ v₂ on ℝ²: catR scales it by 2 − φ = φ⁻².

        Equations
        Instances For
          theorem MeasureTheory.ellU_eq_ellUR (v : ℤ × ℤ) :
          ellU v = ellUR (↑v.1, ↑v.2)
          theorem MeasureTheory.ellS_eq_ellSR (v : ℤ × ℤ) :
          ellS v = ellSR (↑v.1, ↑v.2)

          The sup norm against the two forms #

          A vector is recovered from its two eigenforms: ‖v‖ ≤ |ℓU v| + |ℓS v|.

          The exponents of the cat map #

          ★★ The cat map stretches every direction off the stable line at rate 2 log φ: for v with ellUR v ≠ 0, log ‖catRⁿ v‖ / n → 2 log φ.

          theorem MeasureTheory.ellSR_ne_zero_of_ne_zero {v : ℝ × ℝ} (hv : v ≠ 0) (hU : ellUR v = 0) :

          ★ On the stable line the cat map contracts at rate 2 log φ: for v ≠ 0 with ellUR v = 0, log ‖catRⁿ v‖ / n → −2 log φ.