Mathlib.Probability.Finite­Marked­Poisson­Partition.Partition

Finite measurable partitions of a marked observation space: restriction maps, exact independent cell experiments, and marginal cell-count laws.

Basic 9 core · 8 supporting 9 to review This file represents a finite measurable partition by its measurable cell classifier. ★ measurable_restrictPartition

Finite measurable partitions and restriction maps

This file represents a finite measurable partition by its measurable cell classifier. It defines the cell sets, their normalized observation laws, and the measurable restriction maps that stably filter a finite marked sequence.

structure FiniteMeasurablePartition unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition

A finite measurable partition of the sample space X into cells indexed by ι, represented by a classifier assigning each observation to its cell — the cells are the fibres of this map — where that classifier is measurable.

Definition (Lean source)
X :
Type*
ι :
Type*
The cell containing an observation.
cell :
X → ι
Cell membership is measurable.
measurable_cell :
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:22
def ofSets unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

A finite family of measurable, pairwise disjoint sets covering the whole space determines its unique measurable classifier partition.

Definition (Lean source)
noncomputable def ofSets (A : ι → Set X) (hA : ∀ j, MeasurableSet (A j)) (hdis : Pairwise (fun i j => Disjoint (A i) (A j))) (hcover : ⋃ j, A j = univ) : FiniteMeasurablePartition X ι := by classical have hex : ∀ x : X, ∃ j : ι, x ∈ A j := by intro x have hx : x ∈ ⋃ j, A j := by rw [hcover]; exact Set.mem_univ x simpa only [Set.mem_iUnion] using hx let c : X → ι := fun x => choose (hex x) have hc_mem (x : X) : x ∈ A (c x) := Classical.choose_spec (hex x) have hc_fiber (j : ι) : c ⁻¹' {j} = A j := by ext x simp only [Set.mem_preimage, Set.mem_singleton_iff] constructor · intro hx rw [← hx] exact hc_mem x · intro hx by_contra hne exact Set.disjoint_left.1 (hdis hne) (hc_mem x) hx exact ⟨c, measurable_to_countable' fun j => hc_fiber j ▸ hA j⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.ofSets · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:34 · uses FiniteMeasurablePartition
def cellSet unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

The measurable set forming cell j of a classifier partition.

Definition (Lean source)
def cellSet (p : FiniteMeasurablePartition X ι) (j : ι) : Set X := p.cell ⁻¹' {j}
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.cellSet · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:85 · uses FiniteMeasurablePartition
def cellMass unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

The probability mass of a cell, represented as a nonnegative real.

Definition (Lean source)
noncomputable def cellMass (p : FiniteMeasurablePartition X ι) (P : Measure X) (j : ι) : ℝ≥0 := (P (p.cellSet j)).toNNReal
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.cellMass · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:107 · uses FiniteMeasurablePartition
def cellObservationLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

The within-cell observation law is the normalised restriction when the cell has positive mass and the ambient probability law when its mass is zero.

Definition (Lean source)
noncomputable def cellObservationLaw (p : FiniteMeasurablePartition X ι) (P : Measure X) [IsProbabilityMeasure P] (j : ι) : Measure X := if h : P (p.cellSet j) = 0 then P else (P (p.cellSet j))⁻¹ • P.restrict (p.cellSet j)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.cellObservationLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:131 · uses FiniteMeasurablePartition
def cellIndices unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

Indices of the marked observations belonging to cell j.

Definition (Lean source)
noncomputable def cellIndices (p : FiniteMeasurablePartition X ι) (j : ι) (s : FiniteSample (X × ℝ)) : Finset (Fin s.count) := by classical exact Finset.univ.filter (fun k => p.cell (s.points k).1 = j)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.cellIndices · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:161 · uses FiniteMeasurablePartition , FiniteSample , count
def restrictCell unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

Restrict a finite marked sequence to one cell, preserving the original relative order of all points that lie in that cell.

Definition (Lean source)
noncomputable def restrictCell (p : FiniteMeasurablePartition X ι) (j : ι) (s : FiniteSample (X × ℝ)) : FiniteSample (X × ℝ) := by classical let t := p.cellIndices j s exact ⟨t.card, fun k => s.points (t.orderIsoOfFin rfl k)⟩
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.restrictCell · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:167 · uses FiniteMeasurablePartition , FiniteSample
def restrictPartition unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

Restrict a finite marked sequence simultaneously to every partition cell.

Definition (Lean source)
noncomputable def restrictPartition (p : FiniteMeasurablePartition X ι) (s : FiniteSample (X × ℝ)) : ι → FiniteSample (X × ℝ) := fun j => p.restrictCell j s
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.restrictPartition · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:175 · uses FiniteMeasurablePartition , FiniteSample
lemma measurable_restrictPartition unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

For a finite measurable partition p of the sample space into cells indexed by ι, the map sending a finite marked sequence to its family of restrictions to every cell simultaneously is measurable.

Formal statement
Measurable p.restrictPartition
Proof (Lean source)
lemma measurable_restrictPartition (p : FiniteMeasurablePartition X ι) : Measurable p.restrictPartition := by unfold restrictPartition exact measurable_pi_lambda _ fun j => p.measurable_restrictCell j
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.measurable_restrictPartition · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/Basic.lean:254 · uses FiniteMeasurablePartition , restrictPartition , FiniteSample
8 supporting declarations (lemmas, instances)
Cell­Laws 1 core · 1 supporting 1 to review This file derives each cell's Poisson count law and its exact conditional marked sample law from the joint finite-partition splitting theorem. ★ map_restrictCell_count_finiteMarkedPoissonSampleLaw

Marginal laws for partition cells

This file derives each cell's Poisson count law and its exact conditional marked sample law from the joint finite-partition splitting theorem.

lemma map_restrictCell_count_finiteMarkedPoissonSampleLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

Cell counts are Poisson. Under the marked Poisson sample law with base probability measure P, mark distribution R, and nonnegative intensity lam, the number of marked observations landing in cell j of the finite measurable partition p, viewed as a random variable, is Poisson distributed with mean equal to lam times the P-mass of cell j.

Formal statement
Measure.map (fun s => (p.restrictCell j s).count) (finiteMarkedPoissonSampleLaw P R lam)
= poissonMeasure (lam * p.cellMass P j)
Proof (Lean source)
lemma map_restrictCell_count_finiteMarkedPoissonSampleLaw [StandardBorelSpace X] (p : FiniteMeasurablePartition X ι) (P : Measure X) [IsProbabilityMeasure P] (R : Measure ℝ) [IsProbabilityMeasure R] (lam : ℝ≥0) (j : ι) : Measure.map (fun s => (p.restrictCell j s).count) (finiteMarkedPoissonSampleLaw P R lam) = poissonMeasure (lam * p.cellMass P j) := by /- Prefer deriving this from the joint splitting theorem by mapping the `j`th coordinate and then the measurable count map; `Measure.pi_map_eval` gives the marginal of the finite product. A separate thinning calculation should only be used if it materially shortens the proof. -/ classical let μ := finiteMarkedPoissonSampleLaw P R lam let ν : ι → Measure (FiniteSample (X × ℝ)) := fun k => finiteMarkedPoissonSampleLaw (p.cellObservationLaw P k) R (lam * p.cellMass P k) have hjoint : Measure.map p.restrictPartition μ = Measure.pi ν := by exact map_restrictPartition_finiteMarkedPoissonSampleLaw p P R lam have hcell : Measure.map (p.restrictCell j) μ = ν j := by calc Measure.map (p.restrictCell j) μ = Measure.map (Function.eval j) (Measure.map p.restrictPartition μ) := by rw [Measure.map_map (measurable_pi_apply j) p.measurable_restrictPartition] rfl _ = Measure.map (Function.eval j) (Measure.pi ν) := by rw [hjoint] _ = ν j := by rw [Measure.pi_map_eval] simp [ν] change Measure.map (FiniteSample.count ∘ p.restrictCell j) μ = poissonMeasure (lam * p.cellMass P j) rw [← Measure.map_map measurable_finiteSample_count (p.measurable_restrictCell j), hcell] exact finiteMarkedPoissonSampleLaw_map_count (p.cellObservationLaw P j) R (lam * p.cellMass P j)
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition.map_restrictCell_count_finiteMarkedPoissonSampleLaw · Causalean/Mathlib/Probability/FiniteMarkedPoissonPartition/Partition/CellLaws.lean:20 · uses FiniteMeasurablePartition , cellMass , restrictCell , FiniteSample , count, finiteMarkedPoissonSampleLaw
1 supporting declaration (lemmas, instances)
Splitting 1 core · 0 supporting 1 to review This file proves the exact joint law of the restrictions of a finite marked Poisson sample to the cells of a finite measurable partition. ★ map_restrictPartition_finiteMarkedPoissonSampleLaw

Poisson splitting across a finite partition

This file proves the exact joint law of the restrictions of a finite marked Poisson sample to the cells of a finite measurable partition. The proof tracks the complete vector of cell counts and combines the multinomial count allocation with the conditional product laws within cells.

lemma map_restrictPartition_finiteMarkedPoissonSampleLaw unreviewed
Causalean.Mathlib.Probability.FiniteMarkedPoissonPartition.FiniteMeasurablePartition

Partition splitting. Under the marked Poisson sample law with base probability measure P, mark distribution R, and nonnegative intensity lam, restricting the sample to each cell of the finite measurable partition p yields, jointly across cells, the product of independent marked Poisson sample laws, one per cell j, each with base measure p.cellObservationLaw P j, mark distribution R, and intensity lam times the P-mass of cell j.

Formal statement
Measure.map p.restrictPartition (finiteMarkedPoissonSampleLaw P R lam)
= Measure.pi (fun j : ι => finiteMarkedPoissonSampleLaw (p.cellObservationLaw P j) R (lam * p.cellMass P j))
Proof (Lean source)
lemma map_restrictPartition_finiteMarkedPoissonSampleLaw [StandardBorelSpace X] (p : FiniteMeasurablePartition X ι) (P : Measure X) [IsProbabilityMeasure P] (R : Measure ℝ) [IsProbabilityMeasure R] (lam : ℝ≥0) : Measure.map p.restrictPartition (finiteMarkedPoissonSampleLaw P R lam) = Measure.pi (fun j : ι => finiteMarkedPoissonSampleLaw (p.cellObservationLaw P j) R (lam * p.cellMass P j)) := by /- Proof route for the filler: disintegrate both sides over the complete cell-count vector `c : ι → ℕ`. On a fixed global count, partition the i.i.d. tuple by its classifier word; each word with histogram `c` pushes forward to the same product of the fixed-size within-cell laws, up to coordinate reindexing. Count the words in that histogram fibre and combine its multinomial factor with the scalar Poisson mass. The resulting coefficient is the product of the cell Poisson masses. Treat zero-mass cells before cancelling cell masses. `Measure.pi_map_piCongrLeft` and `measurePreserving_piCongrLeft` are the intended permutation tools. -/ let μ := Measure.map p.restrictPartition (finiteMarkedPoissonSampleLaw P R lam) let ν := Measure.pi (fun j : ι => finiteMarkedPoissonSampleLaw (p.cellObservationLaw P j) R (lam * p.cellMass P j)) have hrest (c : ι → ℕ) : μ.restrict (partitionCountFiber (Y := X × ℝ) c) = ν.restrict (partitionCountFiber (Y := X × ℝ) c) := by rw [show μ = Measure.map p.restrictPartition (finiteMarkedPoissonSampleLaw P R lam) by rfl, map_restrictPartition_restrict_partitionCountFiber p P R lam c] rw [show ν = Measure.pi (fun j : ι => finiteMarkedPoissonSampleLaw (p.cellObservationLaw P j) R (lam * p.cellMass P j)) by rfl, pi_cellLaws_restrict_partitionCountFiber p P R lam c] rw [poisson_multinomial_coefficient lam (p.cellMass P) (p.sum_cellMass P) c] have hdis : Pairwise (onFun Disjoint (fun c : ι → ℕ => partitionCountFiber (Y := X × ℝ) c)) := by intro c d hcd apply Set.disjoint_left.2 intro q hqc hqd apply hcd funext j exact (hqc j).symm.trans (hqd j) have hcover : ⋃ c : ι → ℕ, partitionCountFiber (Y := X × ℝ) c = univ := by ext q simp only [Set.mem_iUnion, Set.mem_univ, iff_true] exact ⟨fun j => (q j).count, fun _ => rfl⟩ change μ = ν calc μ = μ.restrict univ := by rw [Measure.restrict_univ] _ = μ.restrict (⋃ c : ι → ℕ, partitionCountFiber (Y := X × ℝ) c) := by rw [hcover] _ = Measure.sum (fun c : ι → ℕ => μ.restrict (partitionCountFiber (Y := X × ℝ) c)) := by exact Measure.restrict_iUnion hdis measurableSet_partitionCountFiber _ = Measure.sum (fun c : ι → ℕ => ν.restrict (partitionCountFiber (Y := X × ℝ) c)) := by congr 1 funext c exact hrest c _ = ν.restrict (⋃ c : ι → ℕ, partitionCountFiber (Y := X × ℝ) c) := by exact (Measure.restrict_iUnion hdis measurableSet_partitionCountFiber).symm _ = ν.restrict univ := by rw [hcover] _ = ν := Measure.restrict_univ