Documentation

Oseledets.Ergodic.Kingman.Companion

Reduction to the non-positive companion cocycle #

Karlsson's §3.3 reduction running the argument on the non-positive companion cocycle: the T^[M]-subsequence cocycle algebra and the EReal-envelope T-invariance in the non-positive case.

Internal infrastructure for Kingman's theorem (the Oseledets.Kingman namespace); the public statement is in Oseledets.Ergodic.Kingman.Core.

Reduction to the non-positive companion cocycle #

Karlsson's §3.3 argument is run on the non-positive companion vcoc g n := g n − birkhoffSum T (g 1) n. Since birkhoffSum (g 1) is an additive cocycle, vcoc g is again subadditive, and le_birkhoffSum_one gives vcoc g (n+1) ≤ 0. The normalized gap is unchanged: cdiv g − cdiv (vcoc g) = birkhoffAverage (g 1) (·+1), which converges a.e. (Birkhoff) to the finite μ[g 1 | invariants T], so liminf = limsup for ecdiv g follows from the same statement for ecdiv (vcoc g).

noncomputable def Oseledets.Kingman.vcoc {X : Type u_1} {T : XX} (g : X) (n : ) (x : X) :

The non-positive companion cocycle vcoc g n x := g n x − birkhoffSum T (g 1) n x.

Equations
Instances For
    theorem Oseledets.Kingman.vcoc_subadditive {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) :

    vcoc g is a subadditive cocycle: subtracting the additive cocycle birkhoffSum (g 1) from the subadditive g preserves subadditivity.

    theorem Oseledets.Kingman.vcoc_nonpos {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (n : ) (x : X) :
    vcoc g (n + 1) x 0

    vcoc g (n+1) x ≤ 0: exactly le_birkhoffSum_one.

    theorem Oseledets.Kingman.vcoc_integrable {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (n : ) :

    Each level of vcoc g is integrable (a difference of integrable g n and birkhoffSum).

    theorem Oseledets.Kingman.integral_vcoc {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (n : ) :
    (x : X), vcoc g (n + 1) x μ = (x : X), g (n + 1) x μ - (n + 1) * (x : X), g 1 x μ

    The integral of vcoc g (n+1) is (∫ g (n+1)) − (n+1)·(∫ g 1): the additive cocycle birkhoffSum (g 1) integrates to (n+1)·∫ g 1 by measure preservation.

    theorem Oseledets.Kingman.vcoc_bddBelow {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (hbdd : BddBelow (Set.range fun (n : ) => ( (x : X), g (n + 1) x μ) / (n + 1))) :
    BddBelow (Set.range fun (n : ) => ( (x : X), vcoc g (n + 1) x μ) / (n + 1))

    The normalized integrals of vcoc g are bounded below: (∫ vcoc(n+1))/(n+1) = (∫ g(n+1))/(n+1) − ∫ g 1, a shift of the bounded-below sequence hbdd.

    theorem Oseledets.Kingman.ecdiv_eq_ecdiv_vcoc_add {X : Type u_1} {T : XX} {g : X} (n : ) (x : X) :
    ecdiv g n x = ecdiv (vcoc g) n x + (birkhoffAverage T (g 1) (n + 1) x)

    Gap-transfer identity. Pointwise in EReal, the normalized g-cocycle is the normalized companion plus the Birkhoff average of g 1: ecdiv g n x = ecdiv (vcoc g) n x + ↑(birkhoffAverage ℝ T (g 1) (n+1) x).

    The Tᴹ-subsequence cocycle algebra #

    For a non-positive subadditive cocycle g over T and a block length M, the Tᴹ-subsequence cocycle vM g M n x := g (n*M) x − ∑_{i<n} g M (T^[i*M] x) is a non-positive subadditive cocycle for T^[M]. This is a pure-algebra layer; no measure theory is used.

    noncomputable def Oseledets.Kingman.vM {X : Type u_1} {T : XX} (g : X) (M n : ) (x : X) :

    The Tᴹ-subsequence cocycle vM g M n x := g (n*M) x − ∑_{i<n} g M (T^[i*M] x).

    Equations
    Instances For
      theorem Oseledets.Kingman.vM_subadditive {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (M : ) :

      vM g M is a subadditive cocycle for T^[M]. Block subadditivity of g over the split (n+p)·M = n·M + p·M gives the g-term bound; the sum splits as range (n+p) = range n ∪ tail, and reindexing the tail i = n+j lines up T^[i*M] = (T^[M])^[n] (T^[j*M]).

      theorem Oseledets.Kingman.vM_nonpos {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (M n : ) (hn : 1 n) (x : X) :
      vM g M n x 0

      vM g M n ≤ 0 for n ≥ 1 when g is non-positive subadditive: block subadditivity (le_sum_blocks with all n blocks equal to M) gives g (n*M) ≤ ∑_{i<n} g M (T^[i*M]).

      theorem Oseledets.Kingman.vM_integrable {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (M n : ) :

      Each level vM g M n is integrable for measure-preserving T (a finite difference of integrable terms; each g M (T^[i*M] ·) is integrable since T^[i*M] is measure-preserving).

      T^[M] is measure-preserving for measure-preserving T (stated for downstream use).

      theorem Oseledets.Kingman.integral_vM {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (M n : ) :
      (x : X), vM g M n x μ = (x : X), g (n * M) x μ - n * (x : X), g M x μ

      The integral of vM g M n is (∫ g (n*M)) − n·(∫ g M): the orbit-sum integrates to n·∫ g M by measure preservation.

      theorem Oseledets.Kingman.block_sandwich {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (hnonpos : ∀ (n : ) (x : X), g (n + 1) x 0) (M k m : ) (hkm : k * M m) (hmk : m (k + 1) * M) (x : X) :
      g ((k + 1) * M) x g m x g m x g (k * M) x

      Block sandwich (non-positive case). For a non-positive subadditive cocycle and a block length M, when k*M ≤ m ≤ (k+1)*M the cocycle value g m x is sandwiched: g ((k+1)*M) x ≤ g m x ≤ g (k*M) x. (Upper bound: g m = g (kM + (m−kM)) ≤ g (kM) + g (m−kM)(…) ≤ g (kM) since g (m−kM) ≤ 0; the offset 0 case is equality. Lower bound symmetric using (k+1)M = m + ((k+1)M − m).)

      theorem Oseledets.Kingman.cdiv_le_shift {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (n : ) (x : X) :
      cdiv g n x g 1 x / (n + 1) + g n (T x) / (n + 1)

      The pointwise subadditivity bound, normalized: cdiv g n x ≤ g 1 x / (n+1) + g n (T x)/(n+1).

      EReal-envelope T-invariance (non-positive case) #

      The -valued envelope invariance (liminf_div_comp_ae) requires the normalized cocycle to be bounded below a.e. — a fact available only after ae_tendsto_cdiv. For the non-positive case we need the envelope invariance before convergence, so we work directly in EReal, where the liminf/limsup are total and no boundedness is needed.

      theorem Oseledets.Kingman.ereal_liminf_add_coe (u : ) (c : ) :
      Filter.liminf (fun (n : ) => (u n) + c) Filter.atTop = Filter.liminf (fun (n : ) => (u n)) Filter.atTop + c

      EReal liminf of a finite shift. Liminf analogue of ereal_limsup_add_coe.

      theorem Oseledets.Kingman.ereal_liminf_le_of_sub_tendsto_zero {a b : } (hab : Filter.Tendsto (fun (n : ) => a n - b n) Filter.atTop (nhds 0)) :
      Filter.liminf (fun (n : ) => (b n)) Filter.atTop Filter.liminf (fun (n : ) => (a n)) Filter.atTop

      EReal perturbation (liminf), one-sided. If a n − b n → 0 then liminf ↑b ≤ liminf ↑a in EReal. Via EReal.le_liminf_add with the vanishing perturbation ↑(a − b), whose liminf is 0. No boundedness is required (EReal is a complete lattice).

      theorem Oseledets.Kingman.ereal_liminf_eq_of_sub_tendsto_zero {u v : } (h : Filter.Tendsto (fun (n : ) => u n - v n) Filter.atTop (nhds 0)) :
      Filter.liminf (fun (n : ) => (u n)) Filter.atTop = Filter.liminf (fun (n : ) => (v n)) Filter.atTop

      EReal perturbation (liminf). If two real sequences differ by a sequence tending to 0, their EReal-coerced liminfs coincide.

      theorem Oseledets.Kingman.ereal_limsup_eq_of_sub_tendsto_zero {u v : } (h : Filter.Tendsto (fun (n : ) => u n - v n) Filter.atTop (nhds 0)) :
      Filter.limsup (fun (n : ) => (u n)) Filter.atTop = Filter.limsup (fun (n : ) => (v n)) Filter.atTop

      EReal perturbation (limsup). If two real sequences differ by a sequence tending to 0, their EReal-coerced limsups coincide. Via limsup_neg and ereal_liminf_eq_of_sub_tendsto_zero on the negated sequences.

      theorem Oseledets.Kingman.ereal_liminf_le_ratio {c z : } (hz : ∀ (n : ), z n 0) (_hc1 : ∀ (n : ), 1 c n) (hctend : Filter.Tendsto c Filter.atTop (nhds 1)) :
      Filter.liminf (fun (n : ) => (z n)) Filter.atTop Filter.liminf (fun (n : ) => ↑(c n * z n)) Filter.atTop

      EReal ratio squeeze (liminf), one-sided. If z n ≤ 0, c n → 1, 1 ≤ c n, then the nonpositive EReal-coerced products ↑(c n · z n) (which are ≤ ↑(z n)) have liminf no smaller than that of ↑z: liminf ↑z ≤ liminf ↑(c · z). (The reverse is monotonicity.) For each ε > 0, eventually (1+ε)·z n ≤ c n · z n (as z ≤ 0), and liminf ↑((1+ε)·z) = (1+ε)·liminf ↑z → liminf ↑z as ε → 0; the EReal scalar law EReal.liminf_const_mul_of_nonneg_of_ne_top handles the −∞ case uniformly.

      theorem Oseledets.Kingman.ereal_limsup_le_ratio {c z : } (hz : ∀ (n : ), z n 0) (_hc1 : ∀ (n : ), 1 c n) (hctend : Filter.Tendsto c Filter.atTop (nhds 1)) :
      Filter.limsup (fun (n : ) => (z n)) Filter.atTop Filter.limsup (fun (n : ) => ↑(c n * z n)) Filter.atTop

      EReal ratio squeeze (limsup), one-sided. Dual of ereal_liminf_le_ratio: limsup ↑z ≤ limsup ↑(c · z) when z n ≤ 0, c n → 1, 1 ≤ c n.

      theorem Oseledets.Kingman.ereal_ratio_le_limsup {c z : } (hz : ∀ (n : ), z n 0) (_hc1 : ∀ (n : ), c n 1) (hctend : Filter.Tendsto c Filter.atTop (nhds 1)) :
      Filter.limsup (fun (n : ) => ↑(c n * z n)) Filter.atTop Filter.limsup (fun (n : ) => (z n)) Filter.atTop

      EReal ratio squeeze (limsup), c ≤ 1 companion. If z n ≤ 0, 0 ≤ c n ≤ 1, c n → 1, then limsup ↑(c · z) ≤ limsup ↑z. (The reverse is monotonicity, since c ≤ 1, z ≤ 0 ⟹ z ≤ c·z.) For each ε ∈ (0,1), eventually 1 − ε ≤ c n, so c n · z n ≤ (1−ε)·z n (as z ≤ 0), and limsup ↑((1−ε)·z) = (1−ε)·limsup ↑z → limsup ↑z as ε → 0.

      theorem Oseledets.Kingman.ereal_ratio_le_liminf {c z : } (hz : ∀ (n : ), z n 0) (_hc1 : ∀ (n : ), c n 1) (hctend : Filter.Tendsto c Filter.atTop (nhds 1)) :
      Filter.liminf (fun (n : ) => ↑(c n * z n)) Filter.atTop Filter.liminf (fun (n : ) => (z n)) Filter.atTop

      EReal ratio squeeze (liminf), c ≤ 1 companion. Dual of ereal_ratio_le_limsup: liminf ↑(c · z) ≤ liminf ↑z when z n ≤ 0, 0 ≤ c n ≤ 1, c n → 1.

      theorem Oseledets.Kingman.ereal_limsup_add_tendsto {b s : } {σ : } (hs : Filter.Tendsto s Filter.atTop (nhds σ)) :
      Filter.limsup (fun (n : ) => ↑(b n + s n)) Filter.atTop = Filter.limsup (fun (n : ) => (b n)) Filter.atTop + σ

      EReal limsup with a convergent real shift. If s n → σ then limsup ↑(b n + s n) = limsup ↑(b n) + ↑σ.

      theorem Oseledets.Kingman.ereal_liminf_add_tendsto {b s : } {σ : } (hs : Filter.Tendsto s Filter.atTop (nhds σ)) :
      Filter.liminf (fun (n : ) => ↑(b n + s n)) Filter.atTop = Filter.liminf (fun (n : ) => (b n)) Filter.atTop + σ

      EReal liminf with a convergent real shift. If s n → σ then liminf ↑(b n + s n) = liminf ↑(b n) + ↑σ.

      theorem Oseledets.Kingman.ereal_limsup_const_mul {r : } (hr : 0 r) (b : ) :
      Filter.limsup (fun (n : ) => ↑(r * b n)) Filter.atTop = r * Filter.limsup (fun (n : ) => (b n)) Filter.atTop

      EReal limsup under positive real scaling. For 0 ≤ r, limsup ↑(r * b n) = ↑r * limsup ↑(b n).

      theorem Oseledets.Kingman.ereal_liminf_const_mul {r : } (hr : 0 r) (b : ) :
      Filter.liminf (fun (n : ) => ↑(r * b n)) Filter.atTop = r * Filter.liminf (fun (n : ) => (b n)) Filter.atTop

      EReal liminf under positive real scaling. For 0 ≤ r, liminf ↑(r * b n) = ↑r * liminf ↑(b n).

      theorem Oseledets.Kingman.aemeasurable_ereal_liminf {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) :
      AEMeasurable (fun (x : X) => Filter.liminf (fun (n : ) => ecdiv g n x) Filter.atTop) μ

      The EReal liminf envelope x ↦ liminf (ecdiv g · x) is a.e. measurable: it agrees a.e. with the EReal liminf of measurable representatives of each level.

      theorem Oseledets.Kingman.aemeasurable_ereal_limsup {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {g : X} (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) :
      AEMeasurable (fun (x : X) => Filter.limsup (fun (n : ) => ecdiv g n x) Filter.atTop) μ

      The EReal limsup envelope x ↦ limsup (ecdiv g · x) is a.e. measurable.

      theorem Oseledets.Kingman.cdiv_comp_ge_ratio {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (k : ) (x : X) :
      (k + 2) / (k + 1) * cdiv g (k + 1) x - g 1 x / (k + 1) cdiv g k (T x)

      The shift-and-ratio lower bound on the cocycle at T x (non-positive case): for every k, cdiv g k (T x) ≥ c k · z k − g 1 x/(k+1), where z k := cdiv g (k+1) x ≤ 0 and c k := (k+2)/(k+1) ≥ 1. From g (k+2) x ≤ g 1 x + g (k+1) (T x) (subadditivity, first block of length 1), so g (k+1) (T x) ≥ g (k+2) x − g 1 x; dividing by k+1 and rewriting g (k+2) x/(k+1) = (k+2)/(k+1) · cdiv g (k+1) x.

      theorem Oseledets.Kingman.ratio_succ_tendsto_one :
      Filter.Tendsto (fun (k : ) => (k + 2) / (k + 1)) Filter.atTop (nhds 1)

      The ratio sequence c k := (k+2)/(k+1) is ≥ 1 and tends to 1.

      theorem Oseledets.Kingman.ereal_liminf_le_comp {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (hnonpos : ∀ (n : ) (x : X), g (n + 1) x 0) (x : X) :
      Filter.liminf (fun (n : ) => ecdiv g n x) Filter.atTop Filter.liminf (fun (n : ) => ecdiv g n (T x)) Filter.atTop

      EReal liminf comparison (non-positive case). For every x, liminf (ecdiv g · x) ≤ liminf (ecdiv g · (T x)). From the shift-and-ratio lower bound cdiv_comp_ge_ratio, the ratio squeeze ereal_liminf_le_ratio (using cdiv g (k+1) x ≤ 0), the vanishing perturbation g 1 x/(k+1) → 0, and the index shift liminf (cdiv g · x) = liminf (cdiv g (·+1) x).

      theorem Oseledets.Kingman.ereal_limsup_le_comp {X : Type u_1} {T : XX} {g : X} (hsub : IsSubadditiveCocycle T g) (hnonpos : ∀ (n : ) (x : X), g (n + 1) x 0) (x : X) :
      Filter.limsup (fun (n : ) => ecdiv g n x) Filter.atTop Filter.limsup (fun (n : ) => ecdiv g n (T x)) Filter.atTop

      EReal limsup comparison (non-positive case). For every x, limsup (ecdiv g · x) ≤ limsup (ecdiv g · (T x)). Same route as ereal_liminf_le_comp with ereal_limsup_le_ratio and ereal_limsup_eq_of_sub_tendsto_zero.

      theorem Oseledets.Kingman.ereal_ae_eq_comp_of_le_comp {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} [MeasureTheory.IsFiniteMeasure μ] (hT : MeasureTheory.MeasurePreserving T μ μ) {F : XEReal} (hF : AEMeasurable F μ) (hle : ∀ᵐ (x : X) μ, F x F (T x)) :
      F T =ᵐ[μ] F

      EReal version of ae_eq_comp_of_le_comp. For an a.e.-measurable EReal-valued F with F x ≤ F (T x) a.e., F ∘ T =ᵐ[μ] F. Verbatim adaptation of the proof, with rational levels ↑(c : ℚ) : EReal and EReal.exists_rat_btwn_of_lt for the separation step.

      theorem Oseledets.Kingman.liminf_ecdiv_comp_ae {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} [MeasureTheory.IsFiniteMeasure μ] (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hsub : IsSubadditiveCocycle T g) (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (hnonpos : ∀ (n : ) (x : X), g (n + 1) x 0) :
      (fun (x : X) => Filter.liminf (fun (n : ) => ecdiv g n x) Filter.atTop) T =ᵐ[μ] fun (x : X) => Filter.liminf (fun (n : ) => ecdiv g n x) Filter.atTop

      EReal liminf-envelope T-invariance (non-positive case). (fun x => liminf (ecdiv g · x)) ∘ T =ᵐ[μ] ….

      theorem Oseledets.Kingman.limsup_ecdiv_comp_ae {X : Type u_1} [MeasurableSpace X] {μ : MeasureTheory.Measure X} {T : XX} [MeasureTheory.IsFiniteMeasure μ] (hT : MeasureTheory.MeasurePreserving T μ μ) {g : X} (hsub : IsSubadditiveCocycle T g) (hint : ∀ (n : ), MeasureTheory.Integrable (g n) μ) (hnonpos : ∀ (n : ) (x : X), g (n + 1) x 0) :
      (fun (x : X) => Filter.limsup (fun (n : ) => ecdiv g n x) Filter.atTop) T =ᵐ[μ] fun (x : X) => Filter.limsup (fun (n : ) => ecdiv g n x) Filter.atTop

      EReal limsup-envelope T-invariance (non-positive case). (fun x => limsup (ecdiv g · x)) ∘ T =ᵐ[μ] ….