Documentation

Oseledets.Entropy.MargulisRuelleSharpened

Sharpening the Margulis–Ruelle reduction: the positive-part singular-value product #

This module sharpens the abstract Margulis–Ruelle reduction of Oseledets.Entropy.MargulisRuelleAbstract along two independent, honest, sorry-free axes. It does not discharge the genuinely geometric atom-counting hypothesis hgeo — that needs Lyapunov / Pesin charts and a dynamical covering-count argument absent from Mathlib (see the module-level ## The minimal absent geometric atom below). Instead it lands the two reachable atoms around that wall.

The positive-part singular-value product (part A) #

The right-hand side of the Ruelle inequality is built from the positive parts of the Lyapunov exponents, Σ λᵢ⁺. Finitely, before passing to the ergodic limit, the per-step object the geometric covering bound produces is the positive-part singular-value product ∏ᵢ max(1, σᵢ) — the local volume-expansion factor of the differential, counting only the expanding directions. Its logarithm is exactly ∑ᵢ log⁺ σᵢ = ∑ᵢ max(0, log σᵢ), the finite-n incarnation of Σ λᵢ⁺. This file proves that identity as a standalone det-free linear-algebra / analysis fact, in both the abstract-LinearMap form and the concrete Matrix form the cocycle layer uses (Matrix.toEuclideanLin):

∑ i, Real.posLog (σ i) = Real.log (∏ i, max 1 (σ i)).

The key Mathlib input is Real.posLog_eq_log_max_one : 0 ≤ x → log⁺ x = log (max 1 x), valid because singular values are nonnegative (LinearMap.singularValues_nonneg), combined with Real.log_prod (each factor max 1 (σ i) ≥ 1 > 0).

The sharpened reduction (part B) #

We also restate Oseledets.margulisRuelle_le_sumPosExp with the opaque per-partition hypothesis hgeo repackaged through the already-proved entropy plumbing. The sharpened corollary margulisRuelle_le_sumPosExp' is definitionally the same statement — it merely renames the geometric input as hcount, the per-partition Ruelle counting bound, to make explicit that the single remaining open input is a finite-n, per-partition estimate (not the supremum conclusion). It is an honest cosmetic clarification: no new mathematical content is created, and crucially no sorry is introduced.

Main results #

The minimal absent geometric atom #

The one piece that remains open is the dynamical covering-count lemma: for a self-map T of EuclideanSpace ℝ (Fin d), the image T(B(x, ε)) of an ε-ball is coverable by at most C · ∏ᵢ max(1, σᵢ(D_x T)) balls of radius ε, where σᵢ(D_x T) are the singular values of the differential — i.e. the local volume-expansion is governed by the positive-part singular-value product ∏ᵢ max(1, σᵢ) whose log is the object of part (A). Iterating this along an orbit through Lyapunov / Pesin charts upgrades the per-step bound to exp(n · (Σ λᵢ⁺ + ε)) for the refinement ⋁_{k<n} T⁻ᵏ α of a fine partition α. Feeding that atom-count into entropy_le_log_card (Oseledets.Entropy.Partition) and the Fekete limit (Oseledets.Entropy.ksEntropyPartition) reproduces hgeo. Formalizing this covering bound requires smooth-ergodic-theory infrastructure (Lyapunov charts, the Mañé/Katok covering argument, orbit-averaging) that Mathlib does not have; it is a multi-month build, out of scope here.

References #

The positive-part singular-value product (part A) #

The positive-part singular-value product (abstract form). For a linear map f between finite-dimensional real inner product spaces and any finite index set of singular-value indices, the sum of the positive-part logarithms ∑ i, log⁺ σᵢ(f) equals the logarithm of the positive-part singular-value product ∏ i, max 1 σᵢ(f).

This is the finite-n incarnation of the right-hand side Σ λᵢ⁺ of the Margulis–Ruelle inequality: ∏ᵢ max(1, σᵢ) is the local volume-expansion factor counting only the expanding directions, and its log is the positive-part exponent sum. The proof rewrites each log⁺ σᵢ = log (max 1 σᵢ) (valid since σᵢ ≥ 0, Real.posLog_eq_log_max_one) and pulls the sum of logs through the product of the positive factors max 1 σᵢ ≥ 1 (Real.log_prod).

The positive-part singular-value product (matrix / toEuclideanLin form). The specialization of sum_posLog_singularValues_eq_log_prod_max_one to the singular values of Matrix.toEuclideanLin M, which is how the derivative cocycle accesses singular values (Oseledets.sprod, Oseledets/Lyapunov/OseledetsLimit/SingularValues.lean). The sum of the positive-part logarithms of the singular values of M equals the log of the positive-part singular-value product ∏ i, max 1 σᵢ(M).

The sharpened Margulis–Ruelle reduction (part B) #

theorem Oseledets.margulisRuelle_le_sumPosExp' {d : } [NeZero d] {μ : MeasureTheory.Measure (EuclideanSpace (Fin d))} [MeasureTheory.IsProbabilityMeasure μ] {T : EuclideanSpace (Fin d)EuclideanSpace (Fin d)} (hT : Ergodic T μ) (hdiff : Differentiable T) (hdet : ∀ (x : EuclideanSpace (Fin d)), (derivativeCocycle T x).det 0) (hint : IntegrableLogNorm (derivativeCocycle T) μ) (hint' : IntegrableLogNorm (fun (x : EuclideanSpace (Fin d)) => (derivativeCocycle T x)⁻¹) μ) (hcount : ∀ (n : ) (P : Entropy.MeasurePartition μ (Fin n)), (Entropy.ksEntropyPartition P) (sumPosExp hT hdet hint hint')) :
Entropy.ksEntropy (sumPosExp hT hdet hint hint')

The Margulis–Ruelle inequality, sharpened restatement. This is EReal-for-EReal the same conclusion as margulisRuelle_le_sumPosExp, but with the geometric input renamed to hcount to make explicit that the single remaining open hypothesis is a finite-n, per-partition Ruelle counting bound — the entropy of the n-fold refinement of each partition, relative to T, is bounded by the (deterministic, ergodic-constant) positive-exponent sum. The conclusion h(T) ≤ Σ λᵢ⁺ then follows by the abstract supremum reduction (margulisRuelle_le_sumPosExp), which is purely lattice-theoretic.

The renaming clarifies the wall: hcount is not a restatement of the conclusion (which is a supremum over all partitions); it is the per-partition covering estimate produced — for a fixed partition P — by the dynamical covering-count lemma described in the module ## The minimal absent geometric atom. The positive-part singular-value product ∏ᵢ max(1, σᵢ(D T^[n])), whose log is sum_posLog_singularValues_toEuclideanLin_eq (part A), is precisely the per-step volume factor that bound counts.