Documentation

Oseledets.Lyapunov.SpectrumResiduals

Spectral residuals: hub_spec, hlb_spec, and the per-stratum lower bound #

This module discharges three residuals of the MET final composer Oseledets.oseledets_filtration_of_upper:

All three are derived from two hypotheses with fixed shapes: hident (band-projector convergence to the indicator CFC of lambdaHat) and hslowflag (vslow (exp t) = lambdaSublevel t).

Spectral foundation: eigenvalues of lambdaHat are exp (lamSing i) #

theorem Oseledets.spectrum_lambdaHat_eq_ae {X : Type u_1} [MeasurableSpace X] {d : } [NeZero d] {μ : MeasureTheory.Measure X} [MeasureTheory.IsProbabilityMeasure μ] {T : XX} (hT : Ergodic T μ) {A : XMatrix (Fin d) (Fin d) } (hA : ∀ (x : X), (A x).det 0) (hAmeas : Measurable A) (hint : IntegrableLogNorm A μ) (hint' : IntegrableLogNorm (fun (x : X) => (A x)⁻¹) μ) :
∀ᵐ (x : X) μ, spectrum (lambdaHat A T x) = Set.range fun (i : Fin d) => Real.exp (lamSing A T x i)

The spectrum of the sanitized limit is {exp (lamSing i)}. A.e., the Oseledets limit is Hermitian, so lambdaHat A T x = oseledetsLimit A T x; the -spectrum of a Hermitian matrix is the range of its eigenvalues (spectrum_real_eq_range_eigenvalues), the (unsorted) eigenvalue range equals the sorted-eigenvalue range, and the sorted eigenvalues are exp (lamSing i) (oseledetsLimit_eigenvalues₀_eq).

Local constancy of the slow projector across an eigenvalue-free gap #

theorem Oseledets.slowProjector_eq_of_gap {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {t₁ t₂ : } (hspec : spectrum (lambdaHat A T x) = Set.range fun (i : Fin d) => Real.exp (lamSing A T x i)) (ht : t₁ t₂) (hgap : ∀ (j : Fin d), lamSing A T x j t₁ t₂ < lamSing A T x j) :
slowProjector A T (Real.exp t₁) x = slowProjector A T (Real.exp t₂) x

slowProjector is constant across a gap with no eigenvalue. If the spectrum of lambdaHat A T x is {exp (lamSing j)} and no lamSing j lies in the half-open interval (t₁, t₂] (i.e. each is ≤ t₁ or > t₂), then the two indicator cutoffs Iic (exp t₁) and Iic (exp t₂) agree on the spectrum, so the corresponding slow projectors coincide.

theorem Oseledets.vslow_eq_of_gap {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {t₁ t₂ : } (hspec : spectrum (lambdaHat A T x) = Set.range fun (i : Fin d) => Real.exp (lamSing A T x i)) (ht : t₁ t₂) (hgap : ∀ (j : Fin d), lamSing A T x j t₁ t₂ < lamSing A T x j) :
vslow A T (Real.exp t₁) x = vslow A T (Real.exp t₂) x

vslow inherits local constancy from slowProjector.

Nested slow projectors and the difference (band) projector #

theorem Oseledets.slowProjector_mul_le {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {t₁ t₂ : } (h : t₁ t₂) :
slowProjector A T (Real.exp t₁) x * slowProjector A T (Real.exp t₂) x = slowProjector A T (Real.exp t₁) x

Nested slow projectors multiply to the smaller. For t₁ ≤ t₂, slowProjector (exp t₁) · slowProjector (exp t₂) = slowProjector (exp t₁), since the smaller sublevel indicator absorbs the larger on the spectrum.

theorem Oseledets.one_sub_slowProjector {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {c : } :
1 - slowProjector A T c x = cfc ((Set.Ioi c).indicator 1) (lambdaHat A T x)

The complementary (fast) projector. 1 - slowProjector (exp t) is the CFC of the indicator of (exp t, ∞), since 1 - 𝟙_{Iic} = 𝟙_{Ioi} pointwise.

theorem Oseledets.cfc_ne_zero_of_eigenvalue {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {g : } {j : Fin d} (hspec : spectrum (lambdaHat A T x) = Set.range fun (i : Fin d) => Real.exp (lamSing A T x i)) (hcont : ContinuousOn g (spectrum (lambdaHat A T x))) (hg : g (Real.exp (lamSing A T x j)) 0) :
cfc g (lambdaHat A T x) 0

A CFC is nonzero if its symbol is nonzero at some eigenvalue. If g is continuous on the spectrum of lambdaHat A T x and g (exp (lamSing j)) ≠ 0, then cfc g (lambdaHat A T x) ≠ 0 (via eqOn_of_cfc_eq_cfc against cfc 0).

theorem Oseledets.slowProjector_ne_zero_of_mem {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {s : } {j : Fin d} (hspec : spectrum (lambdaHat A T x) = Set.range fun (i : Fin d) => Real.exp (lamSing A T x i)) (hjs : lamSing A T x j s) :

The slow projector at exp s is nonzero when s is realized by some eigenvalue lamSing j: cfc (indicator (Iic (exp s))) lambdaHat takes value 1 at the eigenvalue exp (lamSing j) ≤ exp s, so it is not the zero CFC.

Range membership for idempotent matrices #

toEuclideanLin turns matrix multiplication into composition (applied form).

theorem Oseledets.exists_gap_below {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} {s : } (hnot : ∀ (j : Fin d), lamSing A T x j s) :
t' < s, ∀ (j : Fin d), lamSing A T x j t' s < lamSing A T x j

Finding a gap strictly below a non-eigenvalue. If s is not among the lamSing values, there is t' < s with no lamSing j in (t', s].

theorem Oseledets.exists_gap_below_open {X : Type u_1} {d : } {A : XMatrix (Fin d) (Fin d) } {T : XX} {x : X} (s : ) :
t' < s, ∀ (j : Fin d), lamSing A T x j t' s lamSing A T x j

Finding a gap with no eigenvalue in the open interval (t', s). For ANY s there is t' < s with no lamSing j strictly between t' and s (each lamSing j is ≤ t' or ≥ s).

a.e. identification lamSing = lam0 #

theorem Oseledets.ae_lamSing_eq_lam0 {X : Type u_1} [MeasurableSpace X] {d : } [NeZero d] {μ : MeasureTheory.Measure X} [MeasureTheory.IsProbabilityMeasure μ] {T : XX} {A : XMatrix (Fin d) (Fin d) } (lam0 : ) (hlam0 : i < d, ∀ᵐ (x : X) μ, Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log ((Matrix.toEuclideanLin (cocycle A T n x)).singularValues i)) Filter.atTop (nhds (lam0 i))) :
∀ᵐ (x : X) μ, ∀ (j : Fin d), lamSing A T x j = lam0 j

A.e., the per-point exponents lamSing A T x j equal the deterministic lam0 j for every j : Fin d.

Upper spectral bound: hub_spec #

theorem Oseledets.lyapunovSpectrum_subset_distinctExp_of_slowflag {X : Type u_1} [MeasurableSpace X] {d : } [NeZero d] {μ : MeasureTheory.Measure X} [MeasureTheory.IsProbabilityMeasure μ] {T : XX} (hT : Ergodic T μ) {A : XMatrix (Fin d) (Fin d) } (hA : ∀ (x : X), (A x).det 0) (hAmeas : Measurable A) (hint : IntegrableLogNorm A μ) (hint' : IntegrableLogNorm (fun (x : X) => (A x)⁻¹) μ) (hslowflag : ∀ᵐ (x : X) μ, ∀ (t : ), vslow A T (Real.exp t) x = lambdaSublevel A T x t) (lam0 : ) (hlam0 : i < d, ∀ᵐ (x : X) μ, Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log ((Matrix.toEuclideanLin (cocycle A T n x)).singularValues i)) Filter.atTop (nhds (lam0 i))) :
∀ᵐ (x : X) μ, lyapunovSpectrum A T x distinctExp lam0 d

hub_spec: every realized exponent is deterministic. A.e., the limsup spectrum is contained in the deterministic distinct-exponent set distinctExp lam0 d.

Lower spectral bound: hlb_spec #

theorem Oseledets.distinctExp_subset_lyapunovSpectrum_of_slowflag {X : Type u_1} [MeasurableSpace X] {d : } [NeZero d] {μ : MeasureTheory.Measure X} [MeasureTheory.IsProbabilityMeasure μ] {T : XX} (hT : Ergodic T μ) {A : XMatrix (Fin d) (Fin d) } (hA : ∀ (x : X), (A x).det 0) (hAmeas : Measurable A) (hint : IntegrableLogNorm A μ) (hint' : IntegrableLogNorm (fun (x : X) => (A x)⁻¹) μ) (hslowflag : ∀ᵐ (x : X) μ, ∀ (t : ), vslow A T (Real.exp t) x = lambdaSublevel A T x t) (lam0 : ) (hlam0 : i < d, ∀ᵐ (x : X) μ, Filter.Tendsto (fun (n : ) => (↑n)⁻¹ * Real.log ((Matrix.toEuclideanLin (cocycle A T n x)).singularValues i)) Filter.atTop (nhds (lam0 i))) :
∀ᵐ (x : X) μ, distinctExp lam0 d lyapunovSpectrum A T x

hlb_spec: every deterministic exponent is realized. A.e., the deterministic distinct-exponent set is contained in the limsup spectrum: each lam0 j (j < d) is the value lambdaBar A T x v of some nonzero v, exhibited by the rank-jump of the slow projector at the eigenvalue exp (lamSing j) = exp (lam0 j).

Per-stratum liminf lower bound #

theorem Oseledets.specList_le_liminf_inv_mul_log_norm_cocycle_apply_of_slowflag {X : Type u_1} [MeasurableSpace X] {d : } [NeZero d] {μ : MeasureTheory.Measure X} [MeasureTheory.IsProbabilityMeasure μ] {T : XX} (hT : Ergodic T μ) {A : XMatrix (Fin d) (Fin d) } (hA : ∀ (x : X), (A x).det 0) (hAmeas : Measurable A) (hint : IntegrableLogNorm A μ) (hint' : IntegrableLogNorm (fun (x : X) => (A x)⁻¹) μ) (hident : ∀ᵐ (x : X) μ, ∀ (c : ), 0 < c(∀ (i : Fin d), Real.exp (lamSing A T x i) c)Filter.Tendsto (fun (n : ) => bandProjector A T ((Set.Ioi c).indicator 1) n x) Filter.atTop (nhds (cfc ((Set.Ioi c).indicator 1) (lambdaHat A T x)))) (hslowflag : ∀ᵐ (x : X) μ, ∀ (t : ), vslow A T (Real.exp t) x = lambdaSublevel A T x t) :
∀ᵐ (x : X) μ, ∀ (i : Fin (specCard A T x)), v(vflag A T x i.castSucc), vvflag A T x i.succspecList A T x i Filter.liminf (fun (n : ) => (↑n)⁻¹ * Real.log (Matrix.toEuclideanLin (cocycle A T n x)) v) Filter.atTop

Per-stratum liminf lower bound (hlb). On each stratum vflag i.castSucc \ vflag i.succ, the cocycle grows at least at rate specList A T x i. The argument sweeps thresholds c = exp (specList i − ε') strictly below the stratum eigenvalue up to it: for each such c (not an eigenvalue), 1 - slowProjector c = cfc (indicator (Ioi c)) lambdaHat has nonzero action on v (else v ∈ vslow c, contradicting lambdaBar v = specList i > log c), and hident supplies the band-projector convergence feeding log_le_liminf_log_cocycle_apply.