Documentation

Oseledets.Continuous.Suspension

The suspension (mapping-torus) of a measure-preserving map #

This module builds the suspension (also called the mapping torus or flow under a roof function) of a measure-preserving base map T : X ≃ᵐ X with a strictly positive roof function τ : X → ℝ. The suspension carries the natural one-parameter flow [x, s] ↦ [x, s + t], and it is the standard device for transferring the discrete-time Oseledets multiplicative ergodic theorem to the continuous-flow setting (Ambrose–Kakutani; Bessa–Varandas).

Following the quotient model, the suspension space is

Xᵗ := Quotient (AddAction.orbitRel ℤ (X × ℝ)),

where the -action is generated by the measurable automorphism

G (x, s) = (T x, s − τ x)

identifying (x, s) with (T x, s − τ x). The half-open box under the roof

suspensionDomain τ = {p : X × ℝ | 0 ≤ p.2 ∧ p.2 < τ p.1}

is a fundamental domain for this action with respect to μ.prod volume, and that is the keystone result of this file: Oseledets.isAddFundamentalDomain_suspensionDomain. It is the Ambrose–Kakutani cross-section structure from which the suspension's invariant probability measure (μ × Leb)|_box / ∫ τ and the per-time measure-preservation of the flow are subsequently obtained.

Main definitions #

Main results #

What is not in this file #

The downstream construction — the invariant probability measure μ̂ on Xᵗ, the per-time measure-preservation of the suspension flow ζ_t, the packaging as a MeasurePreservingFlow, and the exponent-transfer identity λ_flow = λ_base / ∫ τ — is left to follow-up modules. Establishing those requires the -invariance of μ.prod volume (the "shear preserves the product measure" lemma) and the descent of the -translation through the quotient, neither of which is included here. This file deliberately stops at the fundamental-domain keystone, which is self-contained and sorry-free.

def Oseledets.suspensionGen {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) :

The generating measurable automorphism of the suspension -action: G (x, s) = (T x, s − τ x). Its inverse is (x, s) ↦ (T⁻¹ x, s + τ (T⁻¹ x)).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem Oseledets.suspensionGen_apply {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (p : X × ) :
    (suspensionGen T ) p = (T p.1, p.2 - τ p.1)
    @[simp]
    theorem Oseledets.suspensionGen_symm_apply {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (p : X × ) :
    (suspensionGen T ).symm p = (T.symm p.1, p.2 + τ (T.symm p.1))
    @[reducible]
    def Oseledets.suspensionAddAction {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) :

    The -action on X × ℝ generated by the suspension automorphism suspensionGen, defined as n +ᵥ p = ((suspensionGen) ^ n) p via the zpow of the underlying permutation. This is the suspension orbit relation: (x, s) is identified with (T x, s − τ x). The action laws zero_vadd and add_vadd are read off from zpow_zero and zpow_add in the permutation group.

    This is bundled as a def rather than a global instance because it depends on the data T and ; it is activated locally (via letI) in the statements and proofs that use it. The bundled VAdd is available as (suspensionAddAction T hτ).toVAdd.

    Equations
    Instances For
      def Oseledets.suspensionAct {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (p : X × ) :

      The underlying function of the suspension -action, written without typeclass notation: suspensionAct T hτ n p = ((suspensionGen) ^ n) p. This agrees with the +ᵥ of suspensionAddAction (see suspension_vadd_eq_act). Using a plain function lets the structural lemmas be stated without activating the data-dependent AddAction instance.

      Equations
      Instances For
        theorem Oseledets.suspension_vadd_eq_act {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (p : X × ) :
        VAdd.vadd n p = suspensionAct T n p
        @[simp]
        theorem Oseledets.suspensionAct_zero {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (p : X × ) :
        suspensionAct T 0 p = p
        theorem Oseledets.suspensionAct_add {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (m n : ) (p : X × ) :
        suspensionAct T (m + n) p = suspensionAct T m (suspensionAct T n p)
        @[simp]
        theorem Oseledets.suspensionAct_one {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (p : X × ) :
        suspensionAct T 1 p = (suspensionGen T ) p
        @[simp]
        theorem Oseledets.suspensionAct_neg_one {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (p : X × ) :
        suspensionAct T (-1) p = (suspensionGen T ).symm p
        def Oseledets.roofSum {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) :

        The signed (integer-indexed) Birkhoff sum τ⁽ⁿ⁾ of the roof function τ along T, defined as the drop in the -coordinate produced by suspensionAct n. For n ≥ 0 this is the ordinary Birkhoff sum τ x + τ (T x) + … + τ (Tⁿ⁻¹ x); for n < 0 it is its backward counterpart with a sign.

        Equations
        Instances For
          def Oseledets.baseIter {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) :
          X

          The first coordinate of suspensionAct n (x, s), i.e. the n-th -iterate of T applied to x. It is independent of the -coordinate s.

          Equations
          Instances For
            theorem Oseledets.suspensionAct_eq {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) (s : ) :
            suspensionAct T n (x, s) = (baseIter T n x, s - roofSum T n x)

            Structural form of the action: suspensionAct n (x, s) = (baseIter n x, s − roofSum n x). The action translates the -coordinate by −roofSum n x, a quantity independent of s, and moves the X-coordinate by the -iterate of T.

            theorem Oseledets.suspensionAct_snd {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) (s : ) :
            (suspensionAct T n (x, s)).2 = s - roofSum T n x
            theorem Oseledets.suspensionAct_fst {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) (s : ) :
            (suspensionAct T n (x, s)).1 = baseIter T n x
            @[simp]
            theorem Oseledets.roofSum_zero {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (x : X) :
            roofSum T 0 x = 0
            theorem Oseledets.roofSum_add_one {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) :
            roofSum T (n + 1) x = roofSum T n x + τ (baseIter T n x)

            The roof-cocycle step: τ⁽ⁿ⁺¹⁾ x = τ⁽ⁿ⁾ x + τ (Tⁿ x), where Tⁿ x = baseIter n x.

            theorem Oseledets.strictMono_roofSum {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {c : } (hc : ∀ (x : X), c τ x) (hcpos : 0 < c) (x : X) :
            StrictMono fun (n : ) => roofSum T n x

            With inf τ ≥ c > 0, the roof sum strictly increases in the integer index.

            theorem Oseledets.roofSum_ge {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {c : } (hc : ∀ (x : X), c τ x) (x : X) (n : ) :
            c * n roofSum T (↑n) x

            Telescoping lower bound: for 0 ≤ n, the roof sum is at least c * n.

            theorem Oseledets.roofSum_le_of_nonpos {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {c : } (hc : ∀ (x : X), c τ x) (x : X) (n : ) :
            roofSum T (-n) x c * -n

            Telescoping upper bound: for n ≤ 0, the roof sum is at most c * n (a negative quantity).

            theorem Oseledets.tendsto_roofSum_atTop {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {c : } (hc : ∀ (x : X), c τ x) (hcpos : 0 < c) (x : X) :
            theorem Oseledets.tendsto_roofSum_atBot {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {c : } (hc : ∀ (x : X), c τ x) (hcpos : 0 < c) (x : X) :

            A strictly monotone -indexed real sequence tending to +∞ along atTop and to −∞ along atBot partitions into the half-open intervals [a n, a (n+1)): every real s lies in exactly one of them. This is the pure real-analysis core of the suspension fundamental-domain result.

            def Oseledets.suspensionDomain {X : Type u_1} (τ : X) :
            Set (X × )

            The half-open box under the roof, {p : X × ℝ | 0 ≤ p.2 ∧ p.2 < τ p.1}. It is the Ambrose–Kakutani cross-section of the suspension and a fundamental domain for the suspension -action with respect to μ × volume.

            Equations
            Instances For
              theorem Oseledets.suspensionAct_mem_domain_iff {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) (n : ) (x : X) (s : ) :
              suspensionAct T n (x, s) suspensionDomain τ roofSum T n x s s < roofSum T (n + 1) x

              Membership of suspensionAct n (x, s) in the box is equivalent to the half-open interval condition roofSum n x ≤ s < roofSum (n+1) x.

              theorem Oseledets.suspension_exists_unique_act_mem {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {c : } (hc : ∀ (x : X), c τ x) (hcpos : 0 < c) (x : X) (s : ) :

              Every orbit meets the box exactly once. For each (x, s) there is a unique integer n with suspensionAct n (x, s) in the half-open box. This is the heart of the fundamental-domain property; it follows from the half-open-interval partition exists_unique_lt_of_strictMono applied to the strictly increasing, two-sided-unbounded sequence n ↦ roofSum n x.

              theorem Oseledets.isAddFundamentalDomain_suspensionDomain {X : Type u_1} [MeasurableSpace X] (T : X ≃ᵐ X) {τ : X} ( : Measurable τ) {μ : MeasureTheory.Measure X} {c : } (hc : ∀ (x : X), c τ x) (hcpos : 0 < c) :

              The box is a fundamental domain. With inf τ ≥ c > 0 and T measure-preserving, the half-open box suspensionDomain τ is a fundamental domain for the suspension -action on X × ℝ with respect to μ × volume. This is the Ambrose–Kakutani cross-section structure of the suspension.

              The action is the locally-activated suspensionAddAction T hτ; the statement uses letI to bring its VAdd instance into scope. The proof is IsAddFundamentalDomain.mk', whose sole content is the exactly-once meeting suspension_exists_unique_act_mem.