The cross-section embedding into the suspension space, and the section measure bridge #
This module supplies the cross-section plumbing that connects the section-level full-time
special-flow exponent λ_flow = λ_base / ∫τ
(Oseledets.coverCocycle_tendsto_exponent_of_bddRoof, a μ-a.e. statement over the base) to the
suspension quotient space Oseledets.SuspensionSpace and its invariant probability measure
Oseledets.suspensionMeasure. It lands the genuinely self-contained building blocks that the
existing API already supports, and documents precisely the disintegration gap that the full
μ̂-a.e. space-level statement still needs.
This is the Ambrose–Kakutani cross-section / flow-under-a-roof construction of Cornfeld–Fomin–Sinai,
Ergodic Theory (Springer 1982), Ch. 11 (special/suspension flows), the first-return / ceiling
construction underlying Abramov's entropy formula h(flow) = h(base)/∫τ (L.M. Abramov, On the
entropy of a flow, Dokl. Akad. Nauk SSSR 128 (1959) 873–875); the Lyapunov-exponent analogue
λ_flow = λ_base / ∫τ is the headline of Issue #5.
The cross-section embedding #
The base X embeds into the suspension as the height-0 cross-section x ↦ [x, 0]:
suspensionSection T hτ x := suspensionMk T hτ (x, 0).
This is the Ambrose–Kakutani cross-section read inside the quotient. Three facts make it the right object:
- it is measurable (
measurable_suspensionSection), beingsuspensionMk ∘ (· , 0); - the suspension flow flows the section to height
t:ζ_t [x, 0] = [x, t](suspensionFlowMap_section); in particular the flow over the roof time lands back on the section at the base image,ζ_(τ x) [x, 0] = [T x, 0](suspensionFlowMap_roof_section); - the section realizes the orbit-gluing
(x, τ x) ∼ (T x, 0)that defines the suspension:[x, τ x] = [T x, 0](suspensionMk_roof_eq_section_base).
The section measure bridge #
The suspension measure is μ̂ = (∫τ)⁻¹ · ((μ × volume)|_𝓕 ↦ π) for the fundamental box
𝓕 = suspensionDomain τ. Its total mass is 1 (isProbabilityMeasure_suspensionMeasure) and the
raw measure's mass is the box mass (μ × volume) 𝓕 = ofReal (∫τ) (suspensionMeasure₀_univ). We
record the clean section box-mass bridge suspensionMeasure₀_univ recast on the suspension:
the raw quotient measure assigns the full base–roof box mass to the whole space, so against the
normalised μ̂ the box carries the unit of measure. The bridge lemma
suspensionMeasure_univ_eq_one (re-export) and the box-mass identity
suspensionMeasure₀_univ_eq_ofReal_integral package this so downstream descent arguments can read
the section against μ̂ without re-deriving the Fubini box mass.
The headline at section points #
coverCocycle_tendsto_exponent_section restates the bounded-roof headline exponent
coverCocycle_tendsto_exponent_of_bddRoof with its starting cover point named as the section point
(x, 0) whose quotient class is suspensionSection T hτ x. This is the cleanest descent that the
cover cocycle admits: the growth rate Real.log ‖coverCocycle (x, 0) t‖ / t → λ_base / ∫τ is read
from the base cross-section, the orbit representative of [x, 0] ∈ SuspensionSpace.
What is not in this file — the precise remaining gap #
The genuine space-level statement — λ_flow = λ_base / ∫τ as a μ̂-a.e. property of points of
SuspensionSpace against the invariant measure suspensionMeasure — needs two pieces that the
cross-section plumbing here deliberately does not supply:
Disintegration of
μ̂over the cross-section. The base-μ-a.e. quantifier ofcoverCocycle_tendsto_exponent_of_bddRoofranges overx ∈ X; promoting it to aμ̂-a.e. quantifier over[x, s] ∈ SuspensionSpacerequires the disintegration ofμ̂over the cross-sectionX(the fundamental-box Fubini slicingμ̂ = (∫τ)⁻¹ ∫_X (Leb|_{[0, τ x)}) dμ, transported throughπ). The cross-section imagesuspensionSection '' univis aμ̂-null set (a height-0slice of a two-dimensional space), so the section statement here is not directly aμ̂-a.e. statement; it must be spread along the fibres by the disintegration. That measure-theoretic disintegration (Fubini over the fundamental domain, pushed through the quotient) is the heavy missing infrastructure.A
FlowCocycleoverSuspensionSpace— and the structural reason the matrix cocycle does not descend. Reading the exponent againstμ̂ultimately wants a flow cocycle defined onSuspensionSpace. The matrix cover cocyclecoverCocycledoes not descend to the quotient as a matrix-valued function: the orbit gluing(x, τ x) ∼ (T x, 0)re-bases the accumulated matrix by the base stepA x(this is exactlycoverCocycle_section_returnTimespecialized to one lap), so the matrix is well-defined only up to the leftcocycle-conjugation along the orbit — it is a cocycle over the flow, not a function on the quotient. Only the scalar growth rate / exponent is orbit-invariant (thelog‖·‖ / tlimit is unchanged by left-multiplication by the fixed matrixcocycle A T n x), which is why this file descends the exponent at section points but not the matrix cocycle. The per-time measure-preservation needed to even phrase aμ̂-a.e. flow statement is already available (measurePreserving_suspensionFlowMap,suspensionFlow); the open keystone is the disintegration of (1).
The height-0 cross-section embedding of the base into the suspension space:
suspensionSection T hτ x = [x, 0], the orbit class of the base point x placed at height 0
along the flow direction. This is the Ambrose–Kakutani cross-section read inside the quotient
SuspensionSpace.
Equations
- Oseledets.suspensionSection T hτ x = Oseledets.suspensionMk T hτ (x, 0)
Instances For
The cross-section embedding x ↦ [x, 0] is measurable: it is the measurable quotient
projection suspensionMk (measurable_suspensionMk) composed with the measurable height-0
inclusion x ↦ (x, 0).
The flow carries the section to height t. Starting from the cross-section point [x, 0],
the suspension flow over time t reaches [x, t]: ζ_t [x, 0] = [x, t]. This is the descent
identity suspensionFlowMap_mk with the translation S t (x, 0) = (x, t) evaluated.
The orbit gluing realized on the section. The defining suspension identification
(x, τ x) ∼ (T x, 0) says the ceiling point above x is the base point above T x:
[x, τ x] = [T x, 0] = suspensionSection (T x). The orbit witness is one step of the generator,
suspensionGen (x, τ x) = (T x, τ x − τ x) = (T x, 0).
The flow over one roof time returns to the section at the base image. Flowing for time
τ x from the section point [x, 0] lands back on the cross-section, at the base image T x:
ζ_(τ x) [x, 0] = [T x, 0] = suspensionSection (T x). This is the first-return map of the
Ambrose–Kakutani cross-section: it composes suspensionFlowMap_section (the flow reaches
[x, τ x]) with the orbit gluing suspensionMk_roof_eq_section_base.
The box-mass bridge for the raw suspension measure. The raw quotient measure μ̂₀ assigns
to the whole suspension space exactly the base–roof box mass ∫τ, pushed through the quotient:
μ̂₀ univ = ENNReal.ofReal (∫ x, τ x ∂μ). This is the normalising constant of the suspension's
invariant probability measure (re-export of suspensionMeasure₀_univ, the Fubini box mass
measure_suspensionDomain carried through suspensionMeasure₀_univ_eq_measure_box). It is the
measure-theoretic bridge from the base integral ∫τ (Abramov's denominator) to the suspension
quotient: the cross-section box carries the full unit of base–roof mass.
The suspension probability normalisation. Against the invariant probability measure μ̂,
the whole suspension space has unit mass: μ̂ univ = 1. This is the normalised companion of the
box-mass bridge suspensionMeasure₀_univ_eq_ofReal_integral: dividing the box mass ∫τ out of the
raw measure yields a probability measure (re-export of suspensionMeasure_univ). Downstream descent
arguments read the cross-section against this unit-mass μ̂.
The full-time special-flow exponent at the cross-section points (headline, section form).
This restates coverCocycle_tendsto_exponent_of_bddRoof with the starting cover point named as the
section point (x, 0), whose quotient class is suspensionSection T hτ x ∈ SuspensionSpace. Under
the base growth rate lam, the convergent roof average ∫τ ≠ 0, and the bounded roof c ≤ τ ≤ C,
the cover flow cocycle log-norm rescaled by the real elapsed flow time converges μ-a.e. to
lam / ∫τ:
Real.log ‖coverCocycle (x, 0) t‖ / t → lam / ∫τ as the real t → ∞,
read from the cross-section orbit representative of [x, 0].
This is the cleanest descent the cover cocycle admits to SuspensionSpace: only the scalar growth
rate is orbit-invariant (the matrix cover cocycle re-bases by the base step along the gluing, see
the module header). Promoting the base-μ-a.e. quantifier to a μ̂-a.e. quantifier over points of
SuspensionSpace is the disintegration gap documented in the module header.