Mathlib.Probability.Finite­Marked­Poisson­Partition

Finite marked Poisson experiment infrastructure: finite samples, exact partition splitting, canonical mark-ordered superposition, retained independent prefixes, depoissonization bridges, and the finite-measure KL identity.

Partition 11 to review 11 core · 9 supporting · 3 submodules Finite measurable partitions of a marked observation space: restriction maps, exact independent cell experiments, and marginal cell-count laws. Superposition 8 to review 8 core · 14 supporting · 2 submodules Finite superposition of cell configurations, canonical ordering by independent real marks, and the retained-prefix product-law bridge.
Basic 6 core · 9 supporting 6 to review This file turns an independent Poisson count and infinite i.i.d. ★ finiteMarkedPoissonSampleLaw_restrict_count_eq

Finite Poisson samples

This file turns an independent Poisson count and infinite i.i.d. stream into a genuine finite sequence. It records the count law and the exact, unnormalised fixed-count fibre law. The latter is the convenient measure-theoretic form of the statement that, conditional on the count, the observations are i.i.d.

abbrev FiniteSample unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

A finite sequence is a length together with coordinates indexed by that length.

Definition (Lean source)
abbrev FiniteSample (X : Type*) [MeasurableSpace X] := Σ n : ℕ, Fin n → X
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteSample · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:34
def fixedSizeEmbed unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Embed a fixed-length tuple into the space of all finite sequences.

Definition (Lean source)
def fixedSizeEmbed (n : ℕ) (x : Fin n → X) : FiniteSample X := ⟨n, x⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.fixedSizeEmbed · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:44 · uses FiniteSample
def streamToFiniteSample unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Truncate a count-and-stream outcome to the prefix selected by its count.

Definition (Lean source)
def streamToFiniteSample (z : ℕ × (ℕ → X)) : FiniteSample X := ⟨z.1, fun i => z.2 i⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.streamToFiniteSample · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:47 · uses FiniteSample
def finitePoissonSampleLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

The finite Poisson sample law is obtained by drawing an independent scalar Poisson count and i.i.d. stream and retaining exactly the selected prefix.

Definition (Lean source)
noncomputable def finitePoissonSampleLaw (P : Measure X) [IsProbabilityMeasure P] (lam : ℝ≥0) : Measure (FiniteSample X) := Measure.map streamToFiniteSample (poissonIIDStreamLaw P lam)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finitePoissonSampleLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:96 · uses FiniteSample
def finiteMarkedPoissonSampleLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

A finite marked Poisson sample has i.i.d. observation-mark pairs, with observation law P, independent mark law R, and Poisson mean lam.

Definition (Lean source)
noncomputable def finiteMarkedPoissonSampleLaw (P : Measure X) [IsProbabilityMeasure P] (R : Measure ℝ) [IsProbabilityMeasure R] (lam : ℝ≥0) : Measure (FiniteSample (X × ℝ)) := finitePoissonSampleLaw (P.prod R) lam
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMarkedPoissonSampleLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:143 · uses FiniteSample
lemma finiteMarkedPoissonSampleLaw_restrict_count_eq unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Fix a nonnegative Poisson rate lam. For an observation law P and an independent mark law R, restricting the finite marked Poisson sample law to the event that the observed count equals n yields exactly poissonMeasure lam {n} times the pushforward, under the fixed-size embedding, of n independent draws from the product measure P.prod R.

Formal statement
lam :
ℝ≥0
n :
(finiteMarkedPoissonSampleLaw P R lam).restrict (FiniteSample.count ⁻¹' ({n} : Set ℕ))
= (poissonMeasure lam) ({n} : Set ℕ) • Measure.map (fixedSizeEmbed n) (Measure.pi (fun _ : Fin n => P.prod R))
Proof (Lean source)
lemma finiteMarkedPoissonSampleLaw_restrict_count_eq (P : Measure X) [IsProbabilityMeasure P] (R : Measure ℝ) [IsProbabilityMeasure R] (lam : ℝ≥0) (n : ℕ) : (finiteMarkedPoissonSampleLaw P R lam).restrict (FiniteSample.count ⁻¹' ({n} : Set ℕ)) = (poissonMeasure lam) ({n} : Set ℕ) • Measure.map (fixedSizeEmbed n) (Measure.pi (fun _ : Fin n => P.prod R)) := by exact finitePoissonSampleLaw_restrict_count_eq (P.prod R) lam n
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMarkedPoissonSampleLaw_restrict_count_eq · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:167 · uses FiniteSample , count, finiteMarkedPoissonSampleLaw , fixedSizeEmbed
9 supporting declarations (lemmas, instances)
KL 4 core · 4 supporting 4 to review This file packages a finite measure as a Poisson count with mean equal to its mass times a scalar intensity and conditionally i.i.d. ★ klDiv_finiteMeasureMarkedPoissonLaw

Relative entropy of finite Poisson experiments

This file packages a finite measure as a Poisson count with mean equal to its mass times a scalar intensity and conditionally i.i.d. points from its normalisation. It states the extended-real KL identity for two equal-mass finite intensity measures and the monotone upper-bound form used in testing arguments. A shared independent real mark law is carried throughout.

def finiteMeasureMass unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

The total mass of a finite measure as a nonnegative real.

Definition (Lean source)
noncomputable def finiteMeasureMass (ν : Measure X) [IsFiniteMeasure ν] : ℝ≥0 := (ν univ).toNNReal
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMeasureMass · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:329
def normalizedFiniteMeasure unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Normalise a nonzero finite measure to a probability measure, using the supplied probability law only on the zero-measure branch.

Definition (Lean source)
noncomputable def normalizedFiniteMeasure (ν : Measure X) [IsFiniteMeasure ν] (P₀ : Measure X) [IsProbabilityMeasure P₀] : Measure X := by classical exact if h : ν = 0 then P₀ else (ν univ)⁻¹ • ν
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.normalizedFiniteMeasure · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:333
def finiteMeasureMarkedPoissonLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

The marked Poisson experiment generated by finite intensity measure ν has count mean lam * ν(univ) and conditionally i.i.d. points from the normalisation of ν, with independent marks from R.

Definition (Lean source)
noncomputable def finiteMeasureMarkedPoissonLaw (ν : Measure X) [IsFiniteMeasure ν] (P₀ : Measure X) [IsProbabilityMeasure P₀] (R : Measure ℝ) [IsProbabilityMeasure R] (lam : ℝ≥0) : Measure (FiniteSample (X × ℝ)) := finiteMarkedPoissonSampleLaw (normalizedFiniteMeasure ν P₀) R (lam * finiteMeasureMass ν)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMeasureMarkedPoissonLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:369 · uses FiniteSample
lemma klDiv_finiteMeasureMarkedPoissonLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Fix a nonnegative Poisson rate lam and suppose the finite intensity measures ν₀ and ν₁ have equal total mass. Then, for a common baseline probability measure P₀ and mark law R, the KL divergence between the finite-measure marked Poisson experiments generated by ν₀ and by ν₁ equals lam times the KL divergence between ν₀ and ν₁.

Formal statement
ν₀ ν₁ :
lam :
ℝ≥0
hmass :
ν₀ univ = ν₁ univ
= (lam : ℝ≥0∞) * klDiv ν₀ ν₁
Proof (Lean source)
lemma klDiv_finiteMeasureMarkedPoissonLaw [StandardBorelSpace X] (ν₀ ν₁ : Measure X) [IsFiniteMeasure ν₀] [IsFiniteMeasure ν₁] (P₀ : Measure X) [IsProbabilityMeasure P₀] (R : Measure ℝ) [IsProbabilityMeasure R] (lam : ℝ≥0) (hmass : ν₀ univ = ν₁ univ) : klDiv (finiteMeasureMarkedPoissonLaw ν₀ P₀ R lam) (finiteMeasureMarkedPoissonLaw ν₁ P₀ R lam) = (lam : ℝ≥0∞) * klDiv ν₀ ν₁ := by by_cases hν₀ : ν₀ = 0 · subst ν₀ have hν₁ : ν₁ = 0 := by apply Measure.measure_univ_eq_zero.mp simpa using hmass.symm subst ν₁ simp [finiteMeasureMarkedPoissonLaw, finiteMeasureMass, normalizedFiniteMeasure] have hν₁ : ν₁ ≠ 0 := by intro h apply hν₀ apply Measure.measure_univ_eq_zero.mp simpa [h] using hmass have hm : finiteMeasureMass ν₀ = finiteMeasureMass ν₁ := by simp only [finiteMeasureMass] rw [hmass] unfold finiteMeasureMarkedPoissonLaw rw [← hm, klDiv_finiteMarkedPoissonSampleLaw] have hrecover₀ := finiteMeasureMass_smul_normalizedFiniteMeasure ν₀ P₀ hν₀ have hrecover₁ := finiteMeasureMass_smul_normalizedFiniteMeasure ν₁ P₀ hν₁ have hrecover₁' : finiteMeasureMass ν₀ • normalizedFiniteMeasure ν₁ P₀ = ν₁ := by rw [hm] exact hrecover₁ have hKL : klDiv ν₀ ν₁ = (finiteMeasureMass ν₀ : ℝ≥0∞) * klDiv (normalizedFiniteMeasure ν₀ P₀) (normalizedFiniteMeasure ν₁ P₀) := by calc klDiv ν₀ ν₁ = klDiv (finiteMeasureMass ν₀ • normalizedFiniteMeasure ν₀ P₀) (finiteMeasureMass ν₀ • normalizedFiniteMeasure ν₁ P₀) := by exact congrArg₂ klDiv hrecover₀.symm hrecover₁'.symm _ = _ := InformationTheory.klDiv_smul_same (finiteMeasureMass ν₀) calc ((lam * finiteMeasureMass ν₀ : ℝ≥0) : ℝ≥0∞) * klDiv (normalizedFiniteMeasure ν₀ P₀) (normalizedFiniteMeasure ν₁ P₀) = (lam : ℝ≥0∞) * ((finiteMeasureMass ν₀ : ℝ≥0∞) * klDiv (normalizedFiniteMeasure ν₀ P₀) (normalizedFiniteMeasure ν₁ P₀)) := by simp only [ENNReal.coe_mul] rw [mul_assoc] _ = (lam : ℝ≥0∞) * klDiv ν₀ ν₁ := by rw [hKL]
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.klDiv_finiteMeasureMarkedPoissonLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:400 · uses FiniteSample , finiteMeasureMarkedPoissonLaw
4 supporting declarations (lemmas, instances)
Depoissonization 4 core · 12 supporting 4 to review This file provides measurable maps between dependent finite samples, padded streams, and canonical marked configurations. ★ markedPoissonKL_le_two_mul_of_piKL

Finite-sample maps and de-Poissonization

This file provides measurable maps between dependent finite samples, padded streams, and canonical marked configurations. It also records the Poisson count identity and a reusable exponential lower-tail bound used to transfer random-size experiments to fixed sample sizes.

def finiteSampleMap unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Mapping every point of a finite sample preserves its random count.

Definition (Lean source)
-- @node: finiteSampleMap def finiteSampleMap {X Y : Type*} [MeasurableSpace X] [MeasurableSpace Y] (f : X → Y) (s : FiniteSample X) : FiniteSample Y := ⟨s.count, fun i => f (s.points i)⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteSampleMap · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Depoissonization.lean:27 · uses FiniteSample
lemma markedPoissonKL_le_two_mul_of_piKL unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Consider a sample size n that is at least 1 and a nonnegative KL budget B, and suppose the KL divergence between n independent identically distributed draws from P and from Q is at most B. Then the KL divergence between the marked Poisson experiments with mean count 2n, mark law R, and intensity measures P and Q respectively (both built over the same baseline P) is at most 2B.

Formal statement
n :
hn :
1 ≤ n
B :
hB :
0 ≤ B
hpi :
klDiv (Measure.pi (fun _ : Fin n => P)) (Measure.pi (fun _ : Fin n => Q))
ofReal B
ofReal (2 * B)
Proof (Lean source)
-- @node: markedPoissonKL_le_two_mul_of_piKL lemma markedPoissonKL_le_two_mul_of_piKL {X : Type*} [MeasurableSpace X] [StandardBorelSpace X] (P Q : Measure X) [IsProbabilityMeasure P] [IsProbabilityMeasure Q] (R : Measure ℝ) [IsProbabilityMeasure R] (n : ℕ) (hn : 1 ≤ n) {B : ℝ} (hB : 0 ≤ B) (hpi : klDiv (Measure.pi (fun _ : Fin n => P)) (Measure.pi (fun _ : Fin n => Q)) ≤ ofReal B) : klDiv (finiteMeasureMarkedPoissonLaw P P R (2 * n)) (finiteMeasureMarkedPoissonLaw Q P R (2 * n)) ≤ ofReal (2 * B) := by let i : Fin n := ⟨0, lt_of_lt_of_le Nat.zero_lt_one hn⟩ have hone_le : klDiv P Q ≤ klDiv (Measure.pi (fun _ : Fin n => P)) (Measure.pi (fun _ : Fin n => Q)) := by have h := klDiv_map_le (measurable_pi_apply i) (μ := Measure.pi (fun _ : Fin n => P)) (ν := Measure.pi (fun _ : Fin n => Q)) rw [Measure.pi_map_eval, Measure.pi_map_eval] at h simpa using h have hprod_ne : klDiv (Measure.pi (fun _ : Fin n => P)) (Measure.pi (fun _ : Fin n => Q)) ≠ ⊤ := ne_top_of_le_ne_top ENNReal.ofReal_ne_top hpi have hone_ne : klDiv P Q ≠ ⊤ := ne_top_of_le_ne_top hprod_ne hone_le have hguards := InformationTheory.klDiv_ne_top_iff.mp hone_ne have hreal := Causalean.Mathlib.InformationTheory.productKL_tensorization_of_finite n P Q hguards.1 hguards.2 have heq : klDiv (Measure.pi (fun _ : Fin n => P)) (Measure.pi (fun _ : Fin n => Q)) = (n : ℝ≥0∞) * klDiv P Q := by have hmul : (n : ℝ≥0∞) * klDiv P Q ≠ ⊤ := ENNReal.mul_ne_top (ENNReal.natCast_ne_top n) hone_ne apply (ENNReal.toReal_eq_toReal_iff' hprod_ne hmul).mp rw [ENNReal.toReal_mul, ENNReal.toReal_natCast] exact hreal rw [klDiv_finiteMeasureMarkedPoissonLaw P Q P R (2 * n) (by simp)] rw [show (((2 : ℝ≥0) * (n : ℝ≥0) : ℝ≥0) : ℝ≥0∞) = (2 : ℝ≥0∞) * (n : ℝ≥0∞) by norm_num, mul_assoc, ← heq] calc (2 : ℝ≥0∞) * klDiv (Measure.pi (fun _ : Fin n => P)) (Measure.pi (fun _ : Fin n => Q)) ≤ 2 * ofReal B := mul_le_mul_right hpi 2 _ = ofReal (2 * B) := by rw [ENNReal.ofReal_mul (by norm_num : (0 : ℝ) ≤ 2)] norm_num
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.markedPoissonKL_le_two_mul_of_piKL · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Depoissonization.lean:72 · uses FiniteSample , finiteMeasureMarkedPoissonLaw
def canonicalPrefixObservations unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

A marked finite sample supplies its first n observation coordinates when it is long enough, and otherwise supplies a fixed fallback tuple.

Definition (Lean source)
-- @node: canonicalPrefixObservations def canonicalPrefixObservations {X : Type*} [MeasurableSpace X] (x₀ : X) (n : ℕ) (s : FiniteSample (X × ℝ)) : Fin n → X := if h : n ≤ s.count then fun k => (s.points (Fin.castLE h k)).1 else fun _ => x₀
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.canonicalPrefixObservations · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Depoissonization.lean:131 · uses FiniteSample
def finiteSamplePaddedStream unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

A finite sample embeds into a count-and-stream representation by padding all coordinates beyond its count with a fixed fallback observation.

Definition (Lean source)
-- @node: finiteSamplePaddedStream def finiteSamplePaddedStream {X : Type*} [MeasurableSpace X] (x0 : X) (s : FiniteSample X) : ℕ × (ℕ → X) := (s.count, fun k => if h : k < s.count then s.points ⟨k, h⟩ else x0)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteSamplePaddedStream · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Depoissonization.lean:258 · uses FiniteSample
12 supporting declarations (lemmas, instances)
IIDPoisson 3 core · 4 supporting 3 to review This file provides the paper-neutral count-and-stream probability space used as the elementary input to finite marked Poisson constructions. ★ iidStreamLaw_map_finPrefix

I.i.d. streams paired with an independent Poisson count

This file provides the paper-neutral count-and-stream probability space used as the elementary input to finite marked Poisson constructions. An infinite i.i.d. stream has exact finite product marginals, and pairing it with an independent scalar Poisson count preserves both the count and prefix laws.

def iidStreamLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

The law of an infinite i.i.d. stream with one-coordinate law P.

Definition (Lean source)
noncomputable def iidStreamLaw (P : Measure X) [IsProbabilityMeasure P] : Measure (ℕ → X) := Measure.infinitePi (fun _ : ℕ => P)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.iidStreamLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/IIDPoisson.lean:20
lemma iidStreamLaw_map_finPrefix unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Every finite prefix of length n of an infinite stream whose coordinates are i.i.d. with common law P has exactly the corresponding n-fold product law.

Formal statement
n :
Measure.map (fun z : ℕ → X => fun i : Fin n => z i) (iidStreamLaw P)
= Measure.pi (fun _ : Fin n => P)
Proof (Lean source)
lemma iidStreamLaw_map_finPrefix (P : Measure X) [IsProbabilityMeasure P] (n : ℕ) : Measure.map (fun z : ℕ → X => fun i : Fin n => z i) (iidStreamLaw P) = Measure.pi (fun _ : Fin n => P) := by unfold iidStreamLaw symm apply Measure.pi_eq intro s hs rw [Measure.map_apply (by fun_prop) (.univ_pi hs)] rw [show (fun z : ℕ → X => fun i : Fin n => z i) ⁻¹' Set.univ.pi s = pi (range n) (fun i : ℕ => if h : i < n then s ⟨i, h⟩ else univ) by ext z simp only [Set.mem_preimage, Set.mem_pi, Set.mem_univ, forall_const] constructor · intro hz i hi have hin : i < n := by simpa using hi rw [dif_pos hin] simpa using hz ⟨i, hin⟩ · intro hz i have hi := hz (i : ℕ) (show (i : ℕ) ∈ range n from Finset.mem_range.mpr i.2) rw [dif_pos i.2] at hi simpa using hi] rw [Measure.infinitePi_pi (μ := fun _ : ℕ => P) (s := range n) (t := fun i : ℕ => if h : i < n then s ⟨i, h⟩ else univ)] · rw [Finset.prod_range] simp · intro i hi rw [dif_pos (Finset.mem_range.1 hi)] exact hs _
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.iidStreamLaw_map_finPrefix · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/IIDPoisson.lean:31 · uses iidStreamLaw
def poissonIIDStreamLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

An independent scalar Poisson count and infinite i.i.d. stream.

Definition (Lean source)
noncomputable def poissonIIDStreamLaw (P : Measure X) [IsProbabilityMeasure P] (lam : ℝ≥0) : Measure (ℕ × (ℕ → X)) := (poissonMeasure lam).prod (iidStreamLaw P)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.poissonIIDStreamLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/IIDPoisson.lean:66
4 supporting declarations (lemmas, instances)