Documentation

Oseledets.Lyapunov.Forward

Forward exact growth and the measurable Oseledets filtration #

This module connects the analytic core of the one-sided Oseledets multiplicative ergodic theorem (the Oseledets limit Λ = lim ((A⁽ⁿ⁾)ᵀA⁽ⁿ⁾)^{1/2n} of OseledetsLimit.lean, its band-projector convergence, and the limsup flag of Filtration.lean) to the target theorem oseledets_filtration.

The mathematical content of this module is the per-vector exact growth limit (1/n) log‖A⁽ⁿ⁾(x) v‖ → λᵢ for v in the stratum Vᵢ \ Vᵢ₊₁:

Together they upgrade the limsup flag's lambdaBar = λᵢ (lambdaBar_eq_on_stratum) to a genuine limit, identify the Λ-spectral filtration with lambdaSublevel a.e. (so it inherits strict antitonicity and A-equivariance), and — with the deterministic exponents from exists_lam_tendsto_singularValue and the CFC measurability of Measurable.lean — yield the target theorem.

Main results #

Distinct descending exponent enumeration #

The deterministic singular-value exponents lam : ℕ → ℝ (from exists_lam_tendsto_singularValue) are antitone on [0, d); their distinct values, enumerated descending, are the k Lyapunov exponents λ₀ > ⋯ > λ_{k-1} of the target theorem. This mirrors Filtration.specList.

noncomputable def Oseledets.distinctExp (lam : ) (d : ) :

The finite set of distinct exponent values on [0, d).

Equations
Instances For
    noncomputable def Oseledets.numExp (lam : ) (d : ) :

    The number of distinct exponents.

    Equations
    Instances For
      noncomputable def Oseledets.expEnum (lam : ) (d : ) :
      Fin (numExp lam d)

      The descending enumeration of the distinct exponents (index 0 = largest).

      Equations
      Instances For
        theorem Oseledets.expEnum_strictAnti (lam : ) (d : ) :
        theorem Oseledets.expEnum_mem (lam : ) (d : ) (i : Fin (numExp lam d)) :
        expEnum lam d i distinctExp lam d
        theorem Oseledets.mem_distinctExp (lam : ) (d : ) {r : } :
        r distinctExp lam d j < d, lam j = r

        Membership: r is an enumerated value iff r = lam j for some j < d.

        theorem Oseledets.exists_expEnum_eq (lam : ) {d j : } (hj : j < d) :
        ∃ (i : Fin (numExp lam d)), expEnum lam d i = lam j

        Every exponent lam j (j < d) is one of the enumerated distinct values.

        theorem Oseledets.expEnum_eq_lam (lam : ) (d : ) (i : Fin (numExp lam d)) :
        j < d, expEnum lam d i = lam j

        Every enumerated value is realized by some lam j.

        theorem Oseledets.numExp_pos (lam : ) {d : } (hd : 0 < d) :
        0 < numExp lam d
        theorem Oseledets.numExp_le (lam : ) (d : ) :
        numExp lam d d

        The Gram quadratic-form band bound (lower-bound foundation) #

        For a self-adjoint Q and a 0/1 band indicator χ = 𝟙_{(c,∞)}, a continuous shape f ≥ 0 with f ≥ a above c controls the band projection: a · ‖(cfc χ Q) v‖² ≤ ⟪(cfc f Q) v, v⟫. Applied with Q = qpow, f = (·)^{2n} (so cfc f Q = gram) and a = c^{2n} it gives the per-vector lower bound c^{2n} ‖Pᶜₙ v‖² ≤ ‖A⁽ⁿ⁾ v‖².

        The norm identity ‖toEuclideanLin M v‖² = ⟪toEuclideanLin (Mᵀ * M) v, v⟫ (generic real matrix; the cocycle specialization is norm_sq_cocycle_apply_eq_inner_gram).

        theorem Oseledets.inner_cfc_ge_band {d : } [NeZero d] (Q : Matrix (Fin d) (Fin d) ) (hQ : IsSelfAdjoint Q) (c a : ) (f : ) (hf : ContinuousOn f (spectrum Q)) (hfnn : tspectrum Q, 0 f t) (hfband : tspectrum Q, c < ta f t) (v : EuclideanSpace (Fin d)) :

        Gram quadratic-form band bound. For self-adjoint Q, a 0/1 band indicator χ = 𝟙_{(c,∞)}, and a continuous f ≥ 0 on the spectrum with a ≤ f t whenever c < t: a · ‖(cfc χ Q) v‖² ≤ ⟪(cfc f Q) v, v⟫. The band projector is a self-adjoint idempotent (‖Pv‖² = ⟪Pv,v⟫); the gap cfc (f − a·χ) Q is PosSemidef since f − a·χ ≥ 0 on the spectrum.

        The per-vector lower bound: Gram–CFC identity, band bound, and liminf #

        The Gram matrix gramₙ = (A⁽ⁿ⁾)ᵀA⁽ⁿ⁾ is recovered from qpowₙ = (gramₙ)^{1/(2n)} by raising to the 2n-th power (gram_eq_cfc_qpow). Feeding qpowₙ into the quadratic-form band bound (inner_cfc_ge_band) with f = (·)^{2n} and threshold c then gives the per-vector bound c^{2n} ‖Pᶜₙ v‖² ≤ ‖A⁽ⁿ⁾ v‖² (cocycle_apply_sq_ge_band). Taking logs, dividing by 2n, and sending the band-projector correction to 0 (tendsto_inv_mul_log_norm_bandProjector_apply) yields the per-vector liminf lower bound log c ≤ liminf (1/n) log‖A⁽ⁿ⁾ v‖ (log_le_liminf_log_cocycle_apply).

        theorem Oseledets.gram_eq_cfc_qpow {d : } {X : Type u_1} [MeasurableSpace X] [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) {n : } (hn : 1 n) (x : X) :
        cfc (fun (t : ) => t ^ (2 * n)) (qpow A T n x) = gram A T n x

        Gram–CFC identity. Raising qpowₙ = (gramₙ)^{1/(2n)} to the 2n-th power (via the CFC) recovers the Gram matrix gramₙ.

        theorem Oseledets.cocycle_apply_sq_ge_band {d : } {X : Type u_1} [MeasurableSpace X] [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) {n : } (hn : 1 n) (x : X) {c : } (hc : 0 c) (v : EuclideanSpace (Fin d)) :

        Band lower bound. For c ≥ 0, the band projection of v (for the band (c,∞) of qpowₙ) is controlled by the cocycle growth: c^{2n} · ‖Pᶜₙ v‖² ≤ ‖A⁽ⁿ⁾ v‖².

        theorem Oseledets.tendsto_inv_mul_log_norm_bandProjector_apply {d : } {X : Type u_1} [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) {c : } {x : X} {P : Matrix (Fin d) (Fin d) } {v : EuclideanSpace (Fin d)} (hP : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c).indicator 1) n x) Filter.atTop (nhds P)) (hPv : (Matrix.toEuclideanLin P) v 0) :

        Band correction vanishes. If the band projectors Pᶜₙ converge to P with P v ≠ 0, then the normalized log of the band projection ‖Pᶜₙ v‖ tends to 0: the norm converges to a positive limit, so its log is bounded, and dividing by n → ∞ kills it.

        theorem Oseledets.log_add_correction_le_inv_mul_log_cocycle_apply {d : } {X : Type u_1} [MeasurableSpace X] [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) (hA : ∀ (x : X), (A x).det 0) {c : } (hc : 0 < c) {x : X} {P : Matrix (Fin d) (Fin d) } {v : EuclideanSpace (Fin d)} (hP : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c).indicator 1) n x) Filter.atTop (nhds P)) (hPv : (Matrix.toEuclideanLin P) v 0) :

        Per-vector lower bound, eventual form (the analytic core of the liminf bound). If the band projectors for (c,∞) (with c > 0) converge to P with P v ≠ 0, then eventually log c + (1/n) log‖Pᶜₙ v‖ ≤ (1/n) log‖A⁽ⁿ⁾ v‖, where the left band-correction term tends to 0 (tendsto_inv_mul_log_norm_bandProjector_apply). Taking n → ∞ (the band correction vanishing) yields log c ≤ liminf (1/n) log‖A⁽ⁿ⁾ v‖, which is packaged as log_le_liminf_log_cocycle_apply below.

        theorem Oseledets.log_le_liminf_log_cocycle_apply {d : } {X : Type u_1} [MeasurableSpace X] [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) (hA : ∀ (x : X), (A x).det 0) {c : } (hc : 0 < c) {x : X} {P : Matrix (Fin d) (Fin d) } {v : EuclideanSpace (Fin d)} (hP : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c).indicator 1) n x) Filter.atTop (nhds P)) (hPv : (Matrix.toEuclideanLin P) v 0) (hcobdd : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) :

        Per-vector liminf lower bound. If the band projectors for (c,∞) (with c > 0) converge to P with P v ≠ 0, then log c ≤ liminf (1/n) log‖A⁽ⁿ⁾ v‖.

        The proof combines the eventual lower bound log_add_correction_le_inv_mul_log_cocycle_apply (whose left side converges to log c, the band correction vanishing by tendsto_inv_mul_log_norm_bandProjector_apply) with liminf monotonicity. The IsCoboundedUnder (· ≥ ·) side-condition on the right-hand cocycle sequence — which fails in general without an a-priori upper growth bound on (1/n) log‖A⁽ⁿ⁾‖, a Furstenberg–Kesten input — is taken as a hypothesis hcobdd; at the application site it is supplied by the integrability of the top Furstenberg–Kesten exponent.

        Band-projector nesting #

        For c ≤ c', the spectral bands satisfy Ioi c' ⊆ Ioi c, so the finer band projector (threshold c') has range contained in the coarser one (threshold c); algebraically Pᶜₙ · Pᶜ'ₙ = Pᶜ'ₙ. Passing to the limit and applying to a vector gives the kernel-propagation form consumed by the upper-bound proof: a vector killed by the coarser (lower-threshold) limit projector is killed by every finer (higher-threshold) one above it.

        theorem Oseledets.bandProjector_mul_of_le {d : } {X : Type u_1} (A : XMatrix (Fin d) (Fin d) ) (T : XX) (n : ) (x : X) {c c' : } (h : c c') :
        bandProjector A T ((Set.Ioi c).indicator 1) n x * bandProjector A T ((Set.Ioi c').indicator 1) n x = bandProjector A T ((Set.Ioi c').indicator 1) n x

        Band-projector nesting (finite n, operator form). For c ≤ c', the band projectors are nested: cfc 𝟙_{(c,∞)} · cfc 𝟙_{(c',∞)} = cfc 𝟙_{(c',∞)} on qpow. The coarser band (threshold c) contains the finer one (threshold c').

        theorem Oseledets.limitBandProjector_mul_of_le {d : } {X : Type u_1} (A : XMatrix (Fin d) (Fin d) ) (T : XX) {x : X} {c c' : } (h : c c') {P P' : Matrix (Fin d) (Fin d) } (hP : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c).indicator 1) n x) Filter.atTop (nhds P)) (hP' : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c').indicator 1) n x) Filter.atTop (nhds P')) :
        P * P' = P'

        Band-projector nesting (limit, operator form). Passing bandProjector_mul_of_le through the two convergent band-projector sequences (matrix multiplication is continuous) gives P · P' = P' for the limit projectors, where c ≤ c'.

        theorem Oseledets.limitBandProjector_apply_eq_zero_of_le {d : } {X : Type u_1} [MeasurableSpace X] [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) {x : X} {c c' : } (h : c c') {P P' : Matrix (Fin d) (Fin d) } (hP : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c).indicator 1) n x) Filter.atTop (nhds P)) (hP' : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c').indicator 1) n x) Filter.atTop (nhds P')) {v : EuclideanSpace (Fin d)} (hv : (Matrix.toEuclideanLin P) v = 0) :

        Band-projector nesting (limit, kernel-propagation form). With c ≤ c', a vector with P v = 0 for the coarser (threshold c) limit projector also has P' v = 0 for the finer (threshold c') one: transposing P · P' = P' (both limit projectors are symmetric) gives P' · P = P', hence P' v = P' (P v) = 0.

        The exact frame Parseval identity #

        In the eventual straddled regime where exactly k qpow-eigenvalues exceed the cut c and the top-k sorted ones all exceed it, bandProjector_indicator_eq_sortedTopFrame gives P = W Wᵀ with Wᵀ W = 1, W = sortedTopFrame. The band projection applied to v therefore has squared norm equal to the sum of squared overlaps with the top sorted Gram eigenvectors.

        theorem Oseledets.norm_sq_bandProjector_apply_eq_sum {d : } {X : Type u_1} [MeasurableSpace X] [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (T : XX) (n : ) (x : X) (c : ) {k : } (hk : k Fintype.card (Fin d)) (htop : ∀ (j : Fin k), c < .eigenvalues₀ j, ) (hcount : Fintype.card { i : Fin d // c < .eigenvalues i } = k) (v : EuclideanSpace (Fin d)) :

        Frame Parseval identity. Under the eventual straddled-regime hypotheses (htop, hcount) of bandProjector_indicator_eq_sortedTopFrame, the squared norm of the band projection equals the sum of squared overlaps of v with the top-k sorted Gram eigenvectors (the columns of sortedTopFrame, recovered by colE_sortedTopFrame).

        The per-overlap limsup bound #

        The handle identity ⟪v, uⱼ(n)⟫ = ⟪v, (Pₙ − Pinf) uⱼ(n)⟫ for slow v/fast uⱼ, its Cauchy–Schwarz consequence |⟪v,uⱼ⟫| ≤ ‖v‖ · ‖(Pₙ − Pinf) uⱼ‖, the k = 1 Gram residual via Pythagoras, and the assembled normalized-log/limsup bounds. Everything is parametrized over a tilt/overlap-rate hypothesis, supplied at the application site by the band-projector convergence theory.

        theorem Oseledets.inner_eq_inner_bandProjector_sub_limit {d : } [NeZero d] {Pn Pinf : Matrix (Fin d) (Fin d) } (_hPnsa : Pn.transpose = Pn) (hPinfsa : Pinf.transpose = Pinf) {v uj : EuclideanSpace (Fin d)} (hslow : (Matrix.toEuclideanLin Pinf) v = 0) (hfast : (Matrix.toEuclideanLin Pn) uj = uj) :
        inner v uj = inner v ((Matrix.toEuclideanLin (Pn - Pinf)) uj)

        Handle identity. If v is slow (toEuclideanLin Pinf v = 0) and uⱼ(n) lies in the step-n fast band (toEuclideanLin Pₙ uⱼ = uⱼ), then ⟪v, uⱼ⟫ = ⟪v, (Pₙ − Pinf) uⱼ⟫. Both Pₙ and Pinf are self-adjoint.

        theorem Oseledets.abs_inner_le_norm_mul_bandProjector_tilt {d : } [NeZero d] {Pn Pinf : Matrix (Fin d) (Fin d) } (hPnsa : Pn.transpose = Pn) (hPinfsa : Pinf.transpose = Pinf) {v uj : EuclideanSpace (Fin d)} (hslow : (Matrix.toEuclideanLin Pinf) v = 0) (hfast : (Matrix.toEuclideanLin Pn) uj = uj) :

        Handle + Cauchy–Schwarz (per-step bound). For slow v and a step-n fast eigenvector uj (toEuclideanLin Pn uj = uj), the overlap is controlled by the tilt of the band projector on uj: |⟪v, uj⟫| ≤ ‖v‖ · ‖(Pn − Pinf) uj‖.

        theorem Oseledets.norm_sub_inner_smul_sq {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace E] (C : E →ₗ[] E) {v₀ : E} (hv₀ : v₀ = 1) :
        C v₀ - inner (C v₀) v₀ v₀ ^ 2 = C v₀ ^ 2 - inner (C v₀) v₀ ^ 2

        Off-diagonal residual (Pythagoras). The off-diagonal residual numerator squared: ‖C v₀ − ⟪C v₀, v₀⟫ v₀‖² = ‖C v₀‖² − ⟪C v₀, v₀⟫² for a unit vector v₀. This is the elementary k = 1 Gram off-diagonal residual, requiring no exterior-power machinery.

        theorem Oseledets.norm_sub_inner_smul_le {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace E] (C : E →ₗ[] E) {v₀ : E} (hv₀ : v₀ = 1) :
        C v₀ - inner (C v₀) v₀ v₀ C v₀

        Off-diagonal residual (bound form). The off-diagonal residual numerator is at most ‖C v₀‖.

        theorem Oseledets.normLog_overlap_le {a t : } {nv : } {n : } (hbound : a n nv * t n) (hapos : 0 < a n) (hnvpos : 0 < nv) (htpos : 0 < t n) :
        (↑n)⁻¹ * Real.log (a n) (↑n)⁻¹ * Real.log nv + (↑n)⁻¹ * Real.log (t n)

        Per-step log overlap bound. With the per-step handle bound |⟪v,uⱼₙ⟫| ≤ ‖v‖ · tₙ (hbound) and both sides positive, the normalized-log overlap exponent is dominated by the tilt exponent plus a vanishing (1/n) log ‖v‖ shift.

        theorem Oseledets.limsup_normLog_overlap_le {a t : } {nv r : } (hbound : ∀ᶠ (n : ) in Filter.atTop, a n nv * t n) (hapos : ∀ᶠ (n : ) in Filter.atTop, 0 < a n) (hnvpos : 0 < nv) (htpos : ∀ᶠ (n : ) in Filter.atTop, 0 < t n) (hnvvanish : Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log nv) Filter.atTop (nhds 0)) (htilt : Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (t n)) Filter.atTop r) (hcob : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (a n)) (hcobt : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (t n)) (hbddt : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (t n)) :
        Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (a n)) Filter.atTop r

        Limsup overlap bound. Combining normLog_overlap_le over n with the vanishing of (1/n) log ‖v‖ and the supplied tilt-rate limsup ((1/n) log tₙ) ≤ r, the overlap exponent has limsup ≤ r.

        theorem Oseledets.limsup_normLog_inner_le {d : } [NeZero d] {Pn : Matrix (Fin d) (Fin d) } {Pinf : Matrix (Fin d) (Fin d) } {v : EuclideanSpace (Fin d)} {uj : EuclideanSpace (Fin d)} {r : } (hvpos : 0 < v) (hPnsa : ∀ᶠ (n : ) in Filter.atTop, (Pn n).transpose = Pn n) (hPinfsa : Pinf.transpose = Pinf) (hslow : (Matrix.toEuclideanLin Pinf) v = 0) (hfast : ∀ᶠ (n : ) in Filter.atTop, (Matrix.toEuclideanLin (Pn n)) (uj n) = uj n) (hapos : ∀ᶠ (n : ) in Filter.atTop, 0 < |inner v (uj n)|) (htpos : ∀ᶠ (n : ) in Filter.atTop, 0 < (Matrix.toEuclideanLin (Pn n - Pinf)) (uj n)) (hnvvanish : Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log v) Filter.atTop (nhds 0)) (htilt : Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (Pn n - Pinf)) (uj n)) Filter.atTop r) (hcob : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log |inner v (uj n)|) (hcobt : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (Pn n - Pinf)) (uj n)) (hbddt : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (Pn n - Pinf)) (uj n)) :
        Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log |inner v (uj n)|) Filter.atTop r

        Limsup overlap bound (band-projector form). Ties the abstract limsup bound to the genuine band projectors. Given, eventually in n, self-adjointness of Pₙ/Pinf, the slow hypothesis Pinf v = 0, and fast-band membership Pₙ uⱼ(n) = uⱼ(n), the handle + Cauchy–Schwarz supply the per-step bound, and with the tilt rate htilt the overlap exponent has limsup ≤ r.

        theorem Oseledets.normLog_bandProj_le {k : } {P : } {c : Fin k} {B : } {n : } (hPpos : 0 < P) (hsum : P ^ 2 = j : Fin k, c j) (hcB : ∀ (j : Fin k), c j B) :
        (↑n)⁻¹ * Real.log P (↑n)⁻¹ * (2⁻¹ * Real.log (k * B))

        Band-projection leakage bound (per-step log form). With ‖P v‖² = Σⱼ cⱼ, cⱼ ≥ 0, and a common per-step ceiling cⱼ ≤ B, the band-projection leakage exponent is bounded by (1/2n) log (k·B).

        The per-vector growth upper bound and the per-vector limit #

        The per-vector upper bound limsup (1/n) log‖A⁽ⁿ⁾v‖ ≤ λᵢ, conditional on the per-index leakage envelopes, and the assembled per-vector exact-growth limit.

        theorem Oseledets.limsup_inv_mul_log_sum_le {s : Type u_2} [Fintype s] [Nonempty s] (t : s) (L : ) (_htnn : ∀ (m : s) (n : ), 0 t m n) (hbound : ∀ (m : s), ε > 0, ∀ᶠ (n : ) in Filter.atTop, t m n Real.exp (n * (L + ε))) (hpos : ∀ᶠ (n : ) in Filter.atTop, 0 < m : s, t m n) (hcobdd : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (∑ m : s, t m n)) :
        Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (∑ m : s, t m n)) Filter.atTop L

        Helper (log of a finite sum). Let s be a finite index type and t : s → ℕ → ℝ with t m n ≥ 0. If for every m and every ε > 0, eventually t m n ≤ exp (n (L + ε)), and the total sum is eventually positive, then limsup_n (1/n) log (∑_m t m n) ≤ L.

        theorem Oseledets.eventually_le_exp_of_limsup_le {a : } (hann : ∀ (n : ), 0 a n) {M : } (hbdd : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (a n)) (hlim : Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (a n)) Filter.atTop M) (ε : ) ( : 0 < ε) :
        ∀ᶠ (n : ) in Filter.atTop, a n Real.exp (n * (M + ε))

        Helper (limsup ⟹ exp envelope). If a n ≥ 0 and limsup_n (1/n) log (a n) ≤ M, then for every ε > 0 eventually a n ≤ exp (n (M + ε)).

        theorem Oseledets.inner_gram_apply_eq_sum_eigenvalues₀ {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (n : ) (x : X) (v : EuclideanSpace (Fin d)) :
        inner ((Matrix.toEuclideanLin (gram A T n x)) v) v = j : Fin (Fintype.card (Fin d)), .eigenvalues₀ j * inner v ((sortedGramEigenbasis A T n x) j) ^ 2

        Spectral Parseval for the Gram quadratic form against the sorted Gram eigenbasis: ⟪gram v, v⟫ = ∑ⱼ (eigenvalues₀ (gram) j) · ⟪v, uⱼ⟫².

        theorem Oseledets.norm_sq_cocycle_apply_eq_sum_singularValues {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (n : ) (x : X) (v : EuclideanSpace (Fin d)) :

        Spectral Parseval (cocycle form). The squared cocycle norm is the sum of squared singular values times squared overlaps with the sorted Gram eigenbasis: ‖A⁽ⁿ⁾ v‖² = ∑ⱼ σⱼ(n)² · ⟪v, uⱼ(n)⟫².

        noncomputable def Oseledets.specTerm {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (n : ) (x : X) (v : EuclideanSpace (Fin d)) (j : Fin (Fintype.card (Fin d))) :

        The j-th spectral term σⱼ(n)² · ⟪v,uⱼ(n)⟫².

        Equations
        Instances For
          theorem Oseledets.sum_specTerm_eq_norm_sq {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (n : ) (x : X) (v : EuclideanSpace (Fin d)) :
          j : Fin (Fintype.card (Fin d)), specTerm T A n x v j = (Matrix.toEuclideanLin (cocycle A T n x)) v ^ 2

          ∑ⱼ specTermⱼ = ‖A⁽ⁿ⁾ v‖².

          theorem Oseledets.specTerm_nonneg {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (n : ) (x : X) (v : EuclideanSpace (Fin d)) (j : Fin (Fintype.card (Fin d))) :
          0 specTerm T A n x v j
          theorem Oseledets.limsup_inv_mul_log_norm_cocycle_apply_le {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] (A : XMatrix (Fin d) (Fin d) ) (x : X) (v : EuclideanSpace (Fin d)) (lami : ) (henv : ∀ (j : Fin (Fintype.card (Fin d))), ε > 0, ∀ᶠ (n : ) in Filter.atTop, specTerm T A n x v j Real.exp (n * (2 * lami + ε))) (hpos : ∀ᶠ (n : ) in Filter.atTop, 0 < (Matrix.toEuclideanLin (cocycle A T n x)) v) (hcobdd : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) :

          Conditional upper bound. Given, for each spectral index j, the per-index exp-envelope tⱼ(n) ≤ exp(n(2λᵢ + ε)), and eventual positivity of ‖A⁽ⁿ⁾ v‖, the per-vector growth limsup is ≤ λᵢ.

          theorem Oseledets.eventually_mul_le_exp {a b : } (_hann : ∀ (n : ), 0 a n) (hbnn : ∀ (n : ), 0 b n) {p q : } (ha : ∀ᶠ (n : ) in Filter.atTop, a n Real.exp (n * p)) (hb : ∀ᶠ (n : ) in Filter.atTop, b n Real.exp (n * q)) :
          ∀ᶠ (n : ) in Filter.atTop, a n * b n Real.exp (n * (p + q))

          Product envelope. If a n ≤ exp(n·p) and b n ≤ exp(n·q) eventually (a, b ≥ 0), then a n · b n ≤ exp(n·(p+q)) eventually.

          theorem Oseledets.eventually_sq_singularValue_le_exp {d : } {X : Type u_1} (T : XX) {A : XMatrix (Fin d) (Fin d) } {x : X} (j : Fin (Fintype.card (Fin d))) (hσpos : ∀ (n : ), 1 n0 < (Matrix.toEuclideanLin (cocycle A T n x)).singularValues j) {lamj : } ( : Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log ((Matrix.toEuclideanLin (cocycle A T n x)).singularValues j)) Filter.atTop (nhds lamj)) (δ : ) ( : 0 < δ) :
          ∀ᶠ (n : ) in Filter.atTop, (Matrix.toEuclideanLin (cocycle A T n x)).singularValues j ^ 2 Real.exp (n * (2 * lamj + δ))

          Singular-value square envelope. If (1/n) log σⱼ(n) → λⱼ and each σⱼ(n) > 0, then for every δ > 0, eventually σⱼ(n)² ≤ exp(n(2λⱼ + δ)).

          theorem Oseledets.specTerm_envelope_of_rate {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] {A : XMatrix (Fin d) (Fin d) } {x : X} {v : EuclideanSpace (Fin d)} {lami lamj rj : } (j : Fin (Fintype.card (Fin d))) (hσpos : ∀ (n : ), 1 n0 < (Matrix.toEuclideanLin (cocycle A T n x)).singularValues j) ( : Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log ((Matrix.toEuclideanLin (cocycle A T n x)).singularValues j)) Filter.atTop (nhds lamj)) (hovbdd : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (inner v ((sortedGramEigenbasis A T n x) j) ^ 2)) (hov : Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (inner v ((sortedGramEigenbasis A T n x) j) ^ 2)) Filter.atTop 2 * rj) (hrate : lamj + rj lami) (ε : ) :
          ε > 0∀ᶠ (n : ) in Filter.atTop, specTerm T A n x v j Real.exp (n * (2 * lami + ε))

          Per-index envelope (slow & fast unified). If (1/n) log σⱼ(n) → λⱼ, each σⱼ(n) > 0, the overlap satisfies the leakage bound limsup (1/n) log ⟪v,uⱼ(n)⟫² ≤ 2 rⱼ (with the boundedness side-condition), and λⱼ + rⱼ ≤ λᵢ, then specTermⱼ(n) ≤ exp(n(2λᵢ + ε)) for every ε > 0.

          theorem Oseledets.tendsto_inv_mul_log_norm_cocycle_apply {d : } {X : Type u_1} (T : XX) (A : XMatrix (Fin d) (Fin d) ) (x : X) (v : EuclideanSpace (Fin d)) (lami : ) (hsup : Filter.limsup (fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) Filter.atTop lami) (hinf : lami Filter.liminf (fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) Filter.atTop) (hbddabove : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) (hbddbelow : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) :

          Per-vector exact growth limit (from limsup ≤ λᵢ and λᵢ ≤ liminf).

          theorem Oseledets.tendsto_inv_mul_log_norm_cocycle_apply_of_bandProjector_envelope {d : } {X : Type u_1} [MeasurableSpace X] (T : XX) [NeZero d] {A : XMatrix (Fin d) (Fin d) } (hA : ∀ (x : X), (A x).det 0) {x : X} {v : EuclideanSpace (Fin d)} {lami : } {P : Matrix (Fin d) (Fin d) } (hP : Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi (Real.exp lami)).indicator 1) n x) Filter.atTop (nhds P)) (hPv : (Matrix.toEuclideanLin P) v 0) (henv : ∀ (j : Fin (Fintype.card (Fin d))), ε > 0, ∀ᶠ (n : ) in Filter.atTop, specTerm T A n x v j Real.exp (n * (2 * lami + ε))) (hpos : ∀ᶠ (n : ) in Filter.atTop, 0 < (Matrix.toEuclideanLin (cocycle A T n x)) v) (hcobdd : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) (hcobdd' : Filter.IsCoboundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) (hbddabove : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) (hbddbelow : Filter.IsBoundedUnder (fun (x1 x2 : ) => x1 x2) Filter.atTop fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) :

          Per-vector exact growth limit (assembled). The lower bound is log_le_liminf_log_cocycle_apply at threshold c = e^{λᵢ}; the upper bound is limsup_inv_mul_log_norm_cocycle_apply_le. Given band-projector convergence (hP, hPv), the per-index leakage envelopes (henv), positivity (hpos), the cobounded inputs, and the boundedness side-conditions, the per-vector growth converges to λᵢ.