Documentation

Oseledets.Krieger.Coding

The coding layer for Krieger's finite generator theorem: two-sided recovery (Krieger M3) #

This file is the σ-algebra recovery core of Krieger's finite generator theorem. The classical proof (Krieger 1970; Einsiedler–Lindenstrauss–Ward Entropy in Ergodic Theory §3) builds a finite Fin k-valued partition P by coding the columns of a Rokhlin tower so that the two-sided P-itinerary of a.e. point recovers its full itinerary under a fixed countable generator Q. The combinatorial heart — that log k > h forces the number of N-names to be ≤ kᴺ up to ε, so a Fin k code exists — is supplied upstream (the name-count layer M2, the Rokhlin tower M1). What remains, and is proved here unconditionally, is the recovery half: once a candidate code P has the property that every cell of Q is recovered, mod 0, by the two-sided P-saturation, P two-sidedly generates mod 0 whenever Q does.

Why mod 0: generators in ergodic theory generate up to null sets #

The classical Krieger construction produces a code map that is defined and invertible only μ-almost everywhere, so it recovers each generator cell only modulo a μ-null set. This is not an artefact of the formalization: in ergodic theory a "generator" always means mod 0 — a partition generates the σ-algebra up to null sets — because the ambient σ-algebra of a standard-Borel space is not μ-complete, so an a.e.-defined code can never establish a literal σ-algebra equality with . (See Glasner, Ergodic Theory via Joinings; Einsiedler– Lindenstrauss–Ward, Entropy in Ergodic Theory, Ch. 2 on generators; Downarowicz §4.2, where the strong-generator condition is 𝓑 = σ(⋃ₙ Tⁿ α) mod μ.) The literal equality twoSidedSat e P = mα is therefore too strong / non-standard, and the unconditional Krieger construction provably cannot discharge it; the mod-0 condition is the faithful one.

We formalize "mod 0" with Mathlib's MeasureTheory.eventuallyMeasurableSpace m₀ (ae μ): the σ-algebra of sets that are =ᵐ[μ]-equal to an m₀-measurable set (the μ-completion of the sub-σ-algebra m₀). Crucially this keeps every statement at the level of an order relation between MeasurableSpace α values, with the ambient measure μ fixed against — so the proofs never rewrite the σ-algebra index of μ (which would break, since Measure α is indexed by its MeasurableSpace).

The two-sided saturation and its (literal and mod-0) shift-invariance #

For e : α ≃ᵐ α and a finite partition P, write twoSidedSat e P := ⨆ n : ℤ, comap (eⁿ) σ(P) for the σ-algebra generated by the whole two-sided P-itinerary. The single structural fact that drives everything is shift-invariance: pulling twoSidedSat e P back by any iterate eᵐ lands inside twoSidedSat e P again, because reindexing the -supremum n ↦ n + m is a bijection of (comap_twoSidedSat_le). This is precisely where two-sidedness ( over , not ) is load-bearing: a forward -supremum is not shift-invariant under the backward iterate e⁻¹.

The mod-0 layer lifts this: for a measure-preserving e, preimage under eᵐ commutes with the μ-completion (comap_eventuallyMeasurableSpace_le, using that a measure-preserving map is quasi-measure-preserving so s =ᵐ t ⟹ f⁻¹s =ᵐ f⁻¹t), and the completion is monotone and idempotent (eventuallyMeasurableSpace_mono, eventuallyMeasurableSpace_idem). These give mod-0 shift-invariance (comap_eventuallyMeasurableSpace_twoSidedSat_le) and the mod-0 recovery monotonicity (twoSidedSat_mono_of_codes), so a mod-0 generator Q lifts to a mod-0 generator P (IsGeneratingTwoSidedMod0.of_codes).

The coding interface consumed by the headline #

The upstream coding construction is exposed to the headline through the predicate CodesTwoSidedMod0 e Q P, which packages the mod-0 recovery hypothesis σ(Q) ≤ eventuallyMeasurableSpace (twoSidedSat e P) (ae μ) — every cell of Q is, mod 0, in the two-sided P-saturation. The headline (Oseledets.Krieger.krieger_finite_generator) takes the existence of a Fin k-valued P with CodesTwoSidedMod0 e Q P (the conclusion of the M1+M2 combinatorics) and concludes IsGeneratingTwoSidedMod0 e P via CodesTwoSidedMod0.isGeneratingTwoSidedMod0.

For the symbolic-code construction (C1–C3) the convenient sufficient condition is provided by codesTwoSidedMod0_of_aeRecovery: it suffices to exhibit, for each cell of Q, a twoSidedSat e P-measurable set =ᵐ[μ]-equal to it — exactly what an a.e.-injective measurable code recovering the Q-name produces.

Main definitions #

Main results #

References #

@[reducible]
noncomputable def Oseledets.Krieger.twoSidedSat {α : Type u_1} {ι : Type u_2} [ : MeasurableSpace α] [Fintype ι] {μ : MeasureTheory.Measure α} (e : α ≃ᵐ α) (P : Entropy.MeasurePartition μ ι) :

The two-sided itinerary σ-algebra of a finite partition P under the automorphism e: the supremum, over all integer iterates eⁿ (n : ℤ), of the pulled-back generating σ-algebra σ(P). A set is twoSidedSat e P-measurable exactly when it is determined by the (two-sided) P-itinerary n ↦ (the cell of P containing eⁿ x). By the design note above, the correct two-sided generation condition asks for twoSidedSat e P to be the ambient σ-algebra mod 0 (IsGeneratingTwoSidedMod0), not literally. Marked @[reducible] (its value is a MeasurableSpace, a class type) so it unfolds for instance resolution and definitional rewriting, mirroring Oseledets.Entropy.generatedSigmaAlgebra.

Equations
Instances For
    @[simp]
    theorem Oseledets.Krieger.comap_twoSidedSat_le {α : Type u_1} {ι : Type u_2} [ : MeasurableSpace α] [Fintype ι] {μ : MeasureTheory.Measure α} (e : α ≃ᵐ α) (P : Entropy.MeasurePartition μ ι) (m : ) :

    Shift-invariance of the two-sided saturation. Pulling the two-sided itinerary σ-algebra twoSidedSat e P back by any iterate eᵐ lands inside it again: comap (eᵐ) (twoSidedSat e P) ≤ twoSidedSat e P.

    A generator of comap (eᵐ) (twoSidedSat e P) is eᵐ⁻¹ of a generator of one of the -terms, namely comap (eᵐ) (comap (eⁿ) σ(P)) = comap (eⁿ ∘ eᵐ) σ(P) = comap (e^{n+m}) σ(P) (using ziter_add), which is the (n + m)-th term of the same -supremum. This is exactly where the two-sided () indexing is essential: the reindexing n ↦ n + m is a bijection of , so no terms are lost — a forward () supremum would lose terms under a backward shift.

    theorem Oseledets.Krieger.twoSidedSat_le {α : Type u_1} {ι : Type u_2} [ : MeasurableSpace α] [Fintype ι] {μ : MeasureTheory.Measure α} (e : α ≃ᵐ α) (P : Entropy.MeasurePartition μ ι) :

    The two-sided saturation twoSidedSat e P is always below the ambient σ-algebra : each cell of P is measurable (σ(P) ≤ mα), and each iterate eⁿ is measurable, so every term comap (eⁿ) σ(P) ≤ mα.

    The μ-completion of a sub-σ-algebra, and its functoriality #

    We use MeasureTheory.eventuallyMeasurableSpace m₀ (ae μ) — the σ-algebra of sets =ᵐ[μ]-equal to an m₀-measurable set — as the μ-completion of the sub-σ-algebra m₀. The three lemmas below (monotonicity, idempotence, and comap-commutation for a measure-preserving map) are all that the mod-0 recovery needs; each keeps everything at the level of MeasurableSpace-.

    Monotonicity of the μ-completion. If m₀ ≤ m₁ then their μ-completions are ordered the same way: an m₀-measurable approximant of s is in particular an m₁-measurable approximant.

    Idempotence of the μ-completion (the "closure" half). The completion of the completion of m₀ is contained in the completion of m₀: if s =ᵐ t and t =ᵐ u with u m₀-measurable, then s =ᵐ u.

    Preimage commutes with the μ-completion for a quasi-measure-preserving map f (in particular a measure-preserving one). If s =ᵐ[μ] t then f⁻¹s =ᵐ[μ] f⁻¹t (QuasiMeasurePreserving.preimage_ae_eq), so an m₀-completion set pulled back by f is an comap f m₀-completion set: comap f (completion m₀) ≤ completion (comap f m₀).

    Mod-0 two-sided generation and coding #

    def Oseledets.Krieger.IsGeneratingTwoSidedMod0 {α : Type u_1} {ι : Type u_2} [ : MeasurableSpace α] [Fintype ι] {μ : MeasureTheory.Measure α} (e : α ≃ᵐ α) (P : Entropy.MeasurePartition μ ι) :

    P two-sidedly generates (α, e, μ) mod 0 when the ambient σ-algebra is contained in the μ-completion of the two-sided P-saturation: mα ≤ eventuallyMeasurableSpace (twoSidedSat e P) (ae μ).

    Equivalently (since twoSidedSat e P ≤ mα always, twoSidedSat_le), the μ-completions of twoSidedSat e P and of agree: every measurable set is recovered, up to a μ-null set, by the two-sided P-itinerary. This is the standard "generator mod 0" condition of ergodic theory (see the file header) and the faithful hypothesis/conclusion of Krieger's theorem — the literal equality twoSidedSat e P = mα (IsGeneratingTwoSided) is strictly stronger and is not what the classical construction produces.

    Equations
    Instances For
      def Oseledets.Krieger.CodesTwoSidedMod0 {α : Type u_1} {ι : Type u_2} {κ : Type u_3} [ : MeasurableSpace α] [Fintype ι] [Fintype κ] {μ : MeasureTheory.Measure α} (e : α ≃ᵐ α) (Q : Entropy.MeasurePartition μ κ) (P : Entropy.MeasurePartition μ ι) :

      The mod-0 coding predicate. A finite Fin k-valued (or ι-valued) partition P codes a partition Q two-sidedly mod 0 under e when every cell of Q is recovered, up to a μ-null set, by the two-sided P-itinerary: σ(Q) ≤ eventuallyMeasurableSpace (twoSidedSat e P) (ae μ).

      This is the exact conclusion of the Krieger coding construction (Rokhlin tower + name count): the column-coding partition P is built so that, off a null set, the two-sided P-itinerary of a point determines its Q-itinerary, hence in particular which Q-cell it lies in. The headline consumes the existence of such a P and turns it into a generator via CodesTwoSidedMod0.isGeneratingTwoSidedMod0.

      Equations
      Instances For

        Mod-0 shift-invariance of the two-sided saturation. For a measure-preserving e, pulling the μ-completion of twoSidedSat e P back by any iterate eᵐ lands inside it again. Preimage commutes with the completion (comap_eventuallyMeasurableSpace_le, since eᵐ is quasi-measure-preserving), and comap (eᵐ) (twoSidedSat e P) ≤ twoSidedSat e P literally (comap_twoSidedSat_le), so completion-monotonicity (eventuallyMeasurableSpace_mono) finishes.

        Mod-0 recovery / refinement monotonicity. If every cell of Q is recovered mod 0 by the two-sided P-saturation (σ(Q) ≤ completion (twoSidedSat e P)), then the entire two-sided saturation of Q is contained in that completion: twoSidedSat e Q ≤ completion (twoSidedSat e P).

        Each -term comap (eᵐ) σ(Q) of twoSidedSat e Q is bounded, by comap-monotonicity in the hypothesis, by comap (eᵐ) (completion (twoSidedSat e P)), which is bounded by completion (twoSidedSat e P) by mod-0 shift-invariance (comap_eventuallyMeasurableSpace_twoSidedSat_le). Taking the supremum over m gives the claim.

        Recovery lifts a mod-0 two-sided generator. If Q two-sidedly generates (α, e, μ) mod 0 and the two-sided P-itinerary recovers each cell of Q mod 0 (σ(Q) ≤ completion (twoSidedSat e P)), then P two-sidedly generates mod 0 as well.

        mα ≤ completion (twoSidedSat e Q) (by Q's mod-0 generation) and completion (twoSidedSat e Q) ≤ completion (completion (twoSidedSat e P)) ≤ completion (twoSidedSat e P) by mod-0 recovery monotonicity (twoSidedSat_mono_of_codes), completion-monotonicity (eventuallyMeasurableSpace_mono), and completion-idempotence (eventuallyMeasurableSpace_idem). Chaining gives mα ≤ completion (twoSidedSat e P). This is the mod-0 two-sided analogue of Oseledets.Entropy.IsGenerating.mono_refine.

        A mod-0 code of a mod-0 two-sided generator is itself a mod-0 two-sided generator — the headline reduction. Immediate from IsGeneratingTwoSidedMod0.of_codes and the definition of CodesTwoSidedMod0.

        theorem Oseledets.Krieger.codesTwoSidedMod0_self {α : Type u_1} {κ : Type u_3} [ : MeasurableSpace α] [Fintype κ] {μ : MeasureTheory.Measure α} (e : α ≃ᵐ α) (Q : Entropy.MeasurePartition μ κ) :

        Reflexivity of mod-0 coding. Every partition codes itself two-sidedly mod 0: its own static σ-algebra σ(Q) is the n = 0 term of twoSidedSat e Q, which embeds into its μ-completion (le_eventuallyMeasurableSpace). (Sanity check: a mod-0 two-sided generator codes itself, recovering IsGeneratingTwoSidedMod0 e Q from itself.)

        Faithfulness, and the convenient sufficient condition for the coding layer #

        Faithfulness: the literal condition is stronger than the mod-0 one. If P two-sidedly generates in the (non-standard) literal sense twoSidedSat e P = mα (IsGeneratingTwoSided), then it does so mod 0. Hence the mod-0 statement is a genuine weakening of the literal one, and the headline phrased with IsGeneratingTwoSidedMod0 is faithful to Krieger's theorem (whose generators are mod 0) while remaining provable by the classical a.e. construction.

        mα = twoSidedSat e P (literal generation) embeds into its own μ-completion by le_eventuallyMeasurableSpace; le_of_eq … .symm supplies the equality without rewriting under the μ-indexed completion (which would fail the motive check). The hypothesis h is, definitionally, the equality twoSidedSat e P = mα (IsGeneratingTwoSided is @[reducible]-unfolds to the same -σ-algebra as twoSidedSat).

        theorem Oseledets.Krieger.codesTwoSidedMod0_of_aeRecovery {α : Type u_1} {ι : Type u_2} {κ : Type u_3} [ : MeasurableSpace α] [Fintype ι] [Fintype κ] {μ : MeasureTheory.Measure α} {e : α ≃ᵐ α} {Q : Entropy.MeasurePartition μ κ} {P : Entropy.MeasurePartition μ ι} (hcode : ∀ (j : κ), ∃ (t : Set α), MeasurableSet t Q.cells j =ᵐ[μ] t) :

        The convenient sufficient condition for the symbolic-code layer (C1–C3). To establish a mod-0 code CodesTwoSidedMod0 e Q P it suffices to exhibit, for each cell Q.cells j, a twoSidedSat e P-measurable set t with Q.cells j =ᵐ[μ] t — i.e. to recover every Q-cell, up to a μ-null set, from the two-sided P-itinerary. This is exactly the output of an a.e.-injective measurable code π : α → (ℤ → Fin k) that recovers the Q-name a.e.: each Q-cell is, mod 0, a cylinder event in the P-itinerary, hence twoSidedSat e P-measurable mod 0.

        Formally, σ(Q) = generateFrom (range Q.cells), so generateFrom_le reduces the goal to the cells, each handled by the hypothesis.