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 1 to review 13 core · 11 supporting · 3 submodules Finite measurable partitions of a marked observation space: restriction maps, exact independent cell experiments, and marginal cell-count laws. Superposition 1 to review 12 core · 18 supporting · 2 submodules Finite superposition of cell configurations, canonical ordering by independent real marks, and the retained-prefix product-law bridge.
Basic 12 core · 12 supporting This file turns an independent Poisson count and infinite i.i.d. ★ finiteMarkedPoissonSampleLaw_restrict_count_eq★ map_totalizedPrefix_restrict_nonoverflow

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 reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

For an observation space, a finite sample is a nonnegative integer sample size together with one observation for each position below that size.

Definition (Lean source)
X :
FiniteSample X :
Type (max 0 u_2)
Σ n : ℕ, Fin n → X
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteSample · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:37
def count reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteSample

The number of observations in a finite sequence.

Definition (Lean source)
X :
Type u_1
shared
s :
count s :
s.1
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteSample.count · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:40 · uses FiniteSample
def points reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteSample

The coordinates of a finite sequence at its dependent finite index type.

Definition (Lean source)
X :
Type u_1
shared
s :
points s :
Fin s.count → X
s.2
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteSample.points · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:43 · uses FiniteSample , count
def fixedSizeEmbed reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a nonnegative integer sample size and a tuple of observations indexed by its positions, the fixed-size embedding is the finite sample having that size and those observations.

Definition (Lean source)
X :
Type u_1
shared
n :
x :
Fin n → X
fixedSizeEmbed n x :
⟨n, x⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.fixedSizeEmbed · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:46 · uses FiniteSample
def streamToFiniteSample reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a pair consisting of a nonnegative integer and an infinite observation stream, the associated finite sample has that integer as its size and retains exactly the corresponding initial segment of the stream.

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

Given a probability measure on the observation space and a nonnegative Poisson mean, the finite Poisson sample law is the distribution obtained by drawing a Poisson count with that mean and an independent infinite sequence of independent observations from that probability measure, then retaining the initial segment selected by the count.

Definition (Lean source)
X :
Type u_1
shared
lam :
ℝ≥0
finitePoissonSampleLaw P lam :
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finitePoissonSampleLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:101 · uses FiniteSample
def finiteMarkedPoissonSampleLaw reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a probability measure for observations, a probability measure for real-valued marks, and a nonnegative Poisson mean, the finite marked Poisson sample law is the finite Poisson sample law whose independent observation--mark pairs have the product of those two measures as their common distribution.

Definition (Lean source)
X :
Type u_1
shared
lam :
ℝ≥0
finiteMarkedPoissonSampleLaw P R lam :
Measure (FiniteSample (X × ℝ))
finitePoissonSampleLaw (P.prod R) lam
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMarkedPoissonSampleLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:147 · uses FiniteSample
lemma finiteMarkedPoissonSampleLaw_restrict_count_eq reviewed
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
X :
Type u_1
shared
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:170 · uses FiniteSample , count , finiteMarkedPoissonSampleLaw , fixedSizeEmbed
def prefixOfLE reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a fixed array, a requested prefix length, and a proof that the request fits in the array, the finite sample consisting of exactly that prefix retains the first m coordinates.

Definition (Lean source)
X :
Type u_1
shared
n :
x :
Fin n → X
m :
h :
m ≤ n
prefixOfLE x m h :
⟨m, fun i ↦ x ⟨i, lt_of_lt_of_le i.isLt h⟩⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.prefixOfLE · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:197 · uses FiniteSample
def cappedPrefix reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

For a fixed array and a requested length, the capped prefix is the genuine prefix in the right summand when the request fits and the distinguished left summand on overflow, so overflow is never confused with an empty observation.

Definition (Lean source)
X :
Type u_1
shared
n :
x :
Fin n → X
m :
cappedPrefix x m :
if h : m ≤ n then inr (prefixOfLE x m h) else inl ()
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.cappedPrefix · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:203 · uses FiniteSample
def totalizedPrefix reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

For an overflow finite sample, a fixed array, and a requested length, the totalized capped prefix agrees with the genuine prefix off overflow and uses the specified value on overflow.

Definition (Lean source)
X :
Type u_1
shared
n :
overflow :
x :
Fin n → X
m :
totalizedPrefix overflow x m :
elim (fun _ ↦ overflow) id (cappedPrefix x m)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.totalizedPrefix · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:210 · uses FiniteSample
theorem map_totalizedPrefix_restrict_nonoverflow reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

For an observation probability law, a Poisson mean, for a fixed sample size, and an arbitrary overflow totalization, the totalized prefix of that many iid observations and an independent Poisson count, restricted to nonoverflow, has exactly the finite Poisson sample law restricted to counts at most n.

Formal statement
X :
Type u_1
shared
lambda :
ℝ≥0
n :
overflow :
Measure.map (fun z : (Fin n → X) × ℕ ↦ totalizedPrefix overflow z.1 z.2) (((Measure.pi (fun _ : Fin n ↦ P)).prod (poissonMeasure lambda)).restrict (snd ⁻¹' Iic n))
= (finitePoissonSampleLaw P lambda).restrict (FiniteSample.count ⁻¹' Iic n)
Proof (Lean source)
theorem map_totalizedPrefix_restrict_nonoverflow (P : Measure X) [IsProbabilityMeasure P] (lambda : ℝ≥0) (n : ℕ) (overflow : FiniteSample X) : Measure.map (fun z : (Fin n → X) × ℕ ↦ totalizedPrefix overflow z.1 z.2) (((Measure.pi (fun _ : Fin n ↦ P)).prod (poissonMeasure lambda)).restrict (Prod.snd ⁻¹' Iic n)) = (finitePoissonSampleLaw P lambda).restrict (FiniteSample.count ⁻¹' Iic n) := by -- Decompose both restrictions as the countable sum over `m : Iic n`. -- On each fibre, product restriction and `finitePoissonSampleLaw_restrict_count_eq` -- both reduce to the Poisson atom at `m` times the map of the same `m`-prefix law. classical let Qn : Measure (Fin n → X) := Measure.pi (fun _ : Fin n ↦ P) let μ : Measure ((Fin n → X) × ℕ) := Qn.prod (poissonMeasure lambda) let ν : Measure (FiniteSample X) := finitePoissonSampleLaw P lambda let f : ((Fin n → X) × ℕ) → FiniteSample X := fun z ↦ totalizedPrefix overflow z.1 z.2 have hf : Measurable f := measurable_totalizedPrefix overflow have hfiber (m : Fin (n + 1)) : Measure.map f (μ.restrict (Prod.snd ⁻¹' ({m.val} : Set ℕ))) = ν.restrict (FiniteSample.count ⁻¹' ({m.val} : Set ℕ)) := by have hm : m.val ≤ n := Nat.le_of_lt_succ m.isLt have hs : Prod.snd ⁻¹' ({m.val} : Set ℕ) = (Set.univ : Set (Fin n → X)) ×ˢ ({m.val} : Set ℕ) := by ext z simp rw [finitePoissonSampleLaw_restrict_count_eq] rw [hs, ← Measure.prod_restrict, Measure.restrict_univ, Measure.restrict_singleton, Measure.prod_smul_right, Measure.map_smul, Measure.prod_dirac, Measure.map_map hf (by fun_prop)] have hfun : f ∘ (fun x : Fin n → X ↦ (x, m.val)) = fixedSizeEmbed m.val ∘ (fun x : Fin n → X ↦ fun i : Fin m.val ↦ x ⟨i, lt_of_lt_of_le i.isLt hm⟩) := by funext x simp [f, totalizedPrefix, cappedPrefix, hm, prefixOfLE, fixedSizeEmbed] rw [hfun, ← Measure.map_map (measurable_fixedSizeEmbed m.val) (by fun_prop), map_prefixCoordinates_pi P hm] have hsource : (Prod.snd : ((Fin n → X) × ℕ) → ℕ) ⁻¹' Iic n = ⋃ m : Fin (n + 1), (Prod.snd : ((Fin n → X) × ℕ) → ℕ) ⁻¹' ({m.val} : Set ℕ) := by ext z simp only [Set.mem_preimage, Set.mem_Iic, Set.mem_iUnion, Set.mem_singleton_iff] constructor · intro hz exact ⟨⟨z.2, Nat.lt_succ_of_le hz⟩, rfl⟩ · rintro ⟨m, hm⟩ rw [hm] exact Nat.le_of_lt_succ m.isLt have htarget : (FiniteSample.count : FiniteSample X → ℕ) ⁻¹' Iic n = ⋃ m : Fin (n + 1), (FiniteSample.count : FiniteSample X → ℕ) ⁻¹' ({m.val} : Set ℕ) := by ext z simp only [Set.mem_preimage, Set.mem_Iic, Set.mem_iUnion, Set.mem_singleton_iff] constructor · intro hz exact ⟨⟨z.count, Nat.lt_succ_of_le hz⟩, rfl⟩ · rintro ⟨m, hm⟩ rw [hm] exact Nat.le_of_lt_succ m.isLt have hsource_disjoint : Pairwise (onFun Disjoint (fun m : Fin (n + 1) ↦ (Prod.snd : ((Fin n → X) × ℕ) → ℕ) ⁻¹' ({m.val} : Set ℕ))) := by intro a b hab change Disjoint ((Prod.snd : ((Fin n → X) × ℕ) → ℕ) ⁻¹' ({a.val} : Set ℕ)) ((Prod.snd : ((Fin n → X) × ℕ) → ℕ) ⁻¹' ({b.val} : Set ℕ)) rw [Set.disjoint_left] intro z hza hzb simp only [Set.mem_preimage, Set.mem_singleton_iff] at hza hzb apply hab apply Fin.ext exact hza.symm.trans hzb have htarget_disjoint : Pairwise (onFun Disjoint (fun m : Fin (n + 1) ↦ (FiniteSample.count : FiniteSample X → ℕ) ⁻¹' ({m.val} : Set ℕ))) := by intro a b hab change Disjoint ((FiniteSample.count : FiniteSample X → ℕ) ⁻¹' ({a.val} : Set ℕ)) ((FiniteSample.count : FiniteSample X → ℕ) ⁻¹' ({b.val} : Set ℕ)) rw [Set.disjoint_left] intro z hza hzb simp only [Set.mem_preimage, Set.mem_singleton_iff] at hza hzb apply hab apply Fin.ext exact hza.symm.trans hzb change Measure.map f (μ.restrict (Prod.snd ⁻¹' Iic n)) = ν.restrict (FiniteSample.count ⁻¹' Iic n) rw [hsource, Measure.restrict_iUnion hsource_disjoint (fun m ↦ measurable_snd (measurableSet_singleton m.val)), Measure.map_sum hf.aemeasurable, htarget, Measure.restrict_iUnion htarget_disjoint (fun m ↦ measurable_finiteSample_count (measurableSet_singleton m.val))] congr 1 funext m exact hfiber m
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.map_totalizedPrefix_restrict_nonoverflow · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Basic.lean:299 · uses FiniteSample , count , finitePoissonSampleLaw , totalizedPrefix
12 supporting declarations (lemmas, instances)
KL 4 core · 4 supporting 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 reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a finite measure on the observation space, the finite-measure mass is its total mass on the whole observation space, represented as a nonnegative real number.

Definition (Lean source)
X :
Type u_1
shared
finiteMeasureMass ν :
ℝ≥0
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMeasureMass · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:329
def normalizedFiniteMeasure reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a finite measure on the observation space and a fallback probability measure on that space, the normalized finite measure is the fallback probability measure when the finite measure is zero, and otherwise is that finite measure divided by its total mass.

Definition (Lean source)
X :
Type u_1
shared
normalizedFiniteMeasure ν P₀ :
by classical exact if h : ν = 0 then P₀ else (ν univ)⁻¹ • ν
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.normalizedFiniteMeasure · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:333
def finiteMeasureMarkedPoissonLaw reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a finite intensity measure on the observation space, a fallback probability measure on that space, a probability measure for real-valued marks, and a nonnegative scalar intensity, the finite-measure marked Poisson law is the finite marked Poisson sample law with observation distribution equal to the normalized intensity measure and Poisson mean equal to the scalar intensity times the total intensity mass.

Definition (Lean source)
X :
Type u_1
shared
lam :
ℝ≥0
finiteMeasureMarkedPoissonLaw ν P₀ R lam :
Measure (FiniteSample (X × ℝ))
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.finiteMeasureMarkedPoissonLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/KL.lean:369 · uses FiniteSample
lemma klDiv_finiteMeasureMarkedPoissonLaw reviewed
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
X :
shared
ν₀ ν₁ :
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:398 · uses FiniteSample , finiteMeasureMarkedPoissonLaw
4 supporting declarations (lemmas, instances)
Depoissonization 4 core · 12 supporting 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 reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a map from one observation space to another and a finite sample in the first space, the mapped finite sample has the same size and applies the map to every observation.

Definition (Lean source)
f :
X → Y
s :
finiteSampleMap f s :
⟨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 reviewed
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)
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:69 · uses FiniteSample , finiteMeasureMarkedPoissonLaw
def canonicalPrefixObservations reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a fallback observation, a nonnegative integer prefix length, and a finite sample of observation--real-mark pairs, the canonical prefix observations are the first nn observations when the sample has at least nn pairs, and otherwise are the constant nn-tuple of the fallback observation.

Definition (Lean source)
X :
x₀ :
X
n :
s :
FiniteSample (X × ℝ)
canonicalPrefixObservations x₀ n s :
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:127 · uses FiniteSample
def finiteSamplePaddedStream reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a fallback observation and a finite sample, the padded stream representation is the pair consisting of its size and an infinite stream that agrees with the sample at positions below that size and equals the fallback observation thereafter.

Definition (Lean source)
X :
x0 :
X
s :
finiteSamplePaddedStream x0 s :
ℕ × (ℕ → 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:251 · uses FiniteSample
12 supporting declarations (lemmas, instances)
IIDPoisson 3 core · 4 supporting 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 reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a probability measure on a measurable sample space, the law of an infinite independent and identically distributed stream is the product probability measure on infinite sequences whose every coordinate has that measure as its marginal.

Definition (Lean source)
X :
Type u_1
shared
iidStreamLaw P :
Measure (ℕ → X)
Measure.infinitePi (fun _ : ℕ => P)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.iidStreamLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/IIDPoisson.lean:20
lemma iidStreamLaw_map_finPrefix reviewed
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
X :
Type u_1
shared
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:33 · uses iidStreamLaw
def poissonIIDStreamLaw reviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

Given a probability measure on a measurable sample space and a nonnegative Poisson rate, the joint count-and-stream law is the product law of a Poisson count with that rate and an independent infinite stream whose coordinates are independent with the given common distribution.

Definition (Lean source)
X :
Type u_1
shared
lam :
ℝ≥0
poissonIIDStreamLaw P lam :
Measure (ℕ × (ℕ → X))
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.poissonIIDStreamLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/IIDPoisson.lean:68
4 supporting declarations (lemmas, instances)