Documentation

Exchangeability.DeFinetti.ViaKoopman.BlockInjection

Block Injection for Disjoint-Block Averaging #

This file defines the block injection map used in the disjoint-block averaging argument for de Finetti's theorem via contractability. The block injection allows us to select one element from each of m disjoint blocks, while preserving strict monotonicity (required for contractability).

Main definitions #

Main results #

Mathematical context #

The disjoint-block averaging argument (Kallenberg's "first proof") works as follows:

  1. Partition into m blocks of size n each: [0, n), [n, 2n), ..., [(m-1)n, mn)
  2. For each choice function j : Fin m → Fin n, the block injection selects one element from each block while being strictly monotone
  3. Average over all n^m such choices to get block averages
  4. As n → ∞, block averages converge to conditional expectations

This approach avoids permutations entirely, using only strictly monotone injections, which is exactly what contractability requires.

References #

Block Injection Definition #

Block injection: for i < m, select element j(i) from block i; for i ≥ m, shift by m * n - m to avoid collision.

The result is strictly monotone when n > 0, making it suitable for contractability arguments.

Equations
Instances For
    @[simp]
    theorem Exchangeability.DeFinetti.blockInjection_apply_lt {m n : } {j : Fin mFin n} {i : } (hi : i < m) :
    blockInjection m n j i = i * n + (j i, hi)
    @[simp]
    theorem Exchangeability.DeFinetti.blockInjection_apply_ge {m n : } {j : Fin mFin n} {i : } (hi : m i) :
    blockInjection m n j i = i + (m * n - m)

    Strict Monotonicity #

    Block injection is strictly monotone when block size n > 0.

    def Exchangeability.DeFinetti.blockInjectionEmb (m n : ) (hn : 0 < n) (j : Fin mFin n) :

    Block injection is an embedding (strictly monotone implies injective).

    Equations
    Instances For

      Reindexing by Block Injection #

      def Exchangeability.DeFinetti.reindexBlock {α : Type u_1} (m n : ) (j : Fin mFin n) (ω : α) :
      α

      Reindex a sequence by block injection.

      Given ω : ℕ → α, j : Fin m → Fin n, produces the sequence where position i has value ω (blockInjection m n j i).

      Equations
      Instances For
        @[simp]
        theorem Exchangeability.DeFinetti.reindexBlock_apply {α : Type u_1} (m n : ) (j : Fin mFin n) (ω : α) (i : ) :
        reindexBlock m n j ω i = ω (blockInjection m n j i)

        Reindexing by block injection is measurable.

        Block Injection Properties for First m Coordinates #

        theorem Exchangeability.DeFinetti.blockInjection_val_lt (m n : ) (j : Fin mFin n) (i : Fin m) :
        blockInjection m n j i = i * n + (j i)

        The first m values under block injection hit positions in disjoint blocks.

        theorem Exchangeability.DeFinetti.blockInjection_mem_block (m n : ) (j : Fin mFin n) (k : Fin m) :
        blockInjection m n j k Set.Ico (k * n) ((k + 1) * n)

        Block injection at position k yields a value in block k.

        theorem Exchangeability.DeFinetti.blockInjection_disjoint_blocks (m n : ) (j : Fin mFin n) (k₁ k₂ : Fin m) (hk : k₁ k₂) :
        blockInjection m n j k₁ blockInjection m n j k₂

        Block injection values for different k are in different blocks (hence disjoint).

        Shift-Invariance of Reindexing #

        For mSI-sets, reindexing by blockInjection preserves membership because:

        1. For i ≥ m: blockInjection(i) = i + (m*n - m) (constant shift)
        2. mSI-sets are determined by the tail (coordinates ≥ any M)
        3. Therefore membership is preserved
        theorem Exchangeability.DeFinetti.reindex_blockInjection_preimage_shiftInvariant {α : Type u_1} [MeasurableSpace α] {m n : } (hn : 0 < n) (j : Fin mFin n) (s : Set Ω[α]) (hs : isShiftInvariant s) :
        (fun (ω : α) => ω blockInjection m n j) ⁻¹' s = s

        Reindexing by blockInjection preserves membership in shift-invariant sets.

        The key insight is that blockInjection is eventually a constant shift: for i ≥ m, blockInjection(i) = i + (m*n - m).

        For shift-invariant sets s (where shift⁻¹(s) = s), membership is determined by the eventual behavior of the sequence. Since blockInjection only permutes finitely many coordinates and then shifts, it preserves membership in s.