File: Mathlib/Probability/Kernel/Disintegration/Basic.lean

full_name: MeasureTheory.Measure.IsCondKernel.disintegrate
code: /-- A kernel `ρCond` is a conditional kernel for a measure `ρ` if it disintegrates it in the sense
that `ρ.fst ⊗ₘ ρCond = ρ`. -/
class IsCondKernel : Prop where
  disintegrate : ρ.fst ⊗ₘ ρCond = ρ
goal: ρ.fst ⊗ₘ ρCond = ρ

full_name: MeasureTheory.Measure.IsCondKernel
code: /-- A kernel `ρCond` is a conditional kernel for a measure `ρ` if it disintegrates it in the sense
that `ρ.fst ⊗ₘ ρCond = ρ`. -/
class IsCondKernel : Prop where
  disintegrate : ρ.fst ⊗ₘ ρCond = ρ
goal: Prop

full_name: MeasureTheory.Measure.disintegrate
code: lemma disintegrate : ρ.fst ⊗ₘ ρCond = ρ 
goal: ρ.fst ⊗ₘ ρCond = ρ

full_name: MeasureTheory.Measure.IsCondKernel.isSFiniteKernel
code: lemma IsCondKernel.isSFiniteKernel (hρ : ρ ≠ 0) : IsSFiniteKernel ρCond 
goal: ProbabilityTheory.IsSFiniteKernel ρCond

full_name: _private.Mathlib.Probability.Kernel.Disintegration.Basic.0.MeasureTheory.Measure.IsCondKernel.apply_of_ne_zero_of_measurableSet
code: /-- Auxiliary lemma for `IsCondKernel.apply_of_ne_zero`. -/
private lemma IsCondKernel.apply_of_ne_zero_of_measurableSet [MeasurableSingletonClass α] {x : α}
    (hx : ρ.fst {x} ≠ 0) {s : Set Ω} (hs : MeasurableSet s) :
    ρCond x s = (ρ.fst {x})⁻¹ * ρ ({x} ×ˢ s) 
goal: (ρCond x) s = (ρ.fst {x})⁻¹ * ρ ({x} ×ˢ s)

full_name: MeasureTheory.Measure.IsCondKernel.apply_of_ne_zero
code: /-- If the singleton `{x}` has non-zero mass for `ρ.fst`, then for all `s : Set Ω`,
`ρCond x s = (ρ.fst {x})⁻¹ * ρ ({x} ×ˢ s)` . -/
lemma IsCondKernel.apply_of_ne_zero [MeasurableSingletonClass α] {x : α}
    (hx : ρ.fst {x} ≠ 0) (s : Set Ω) : ρCond x s = (ρ.fst {x})⁻¹ * ρ ({x} ×ˢ s) 
goal: (ρCond x) s = (ρ.fst {x})⁻¹ * ρ ({x} ×ˢ s)

full_name: MeasureTheory.Measure.IsCondKernel.isProbabilityMeasure
code: lemma IsCondKernel.isProbabilityMeasure [MeasurableSingletonClass α] {a : α} (ha : ρ.fst {a} ≠ 0) :
    IsProbabilityMeasure (ρCond a) 
goal: MeasureTheory.IsProbabilityMeasure (ρCond a)

full_name: MeasureTheory.Measure.IsCondKernel.isMarkovKernel
code: lemma IsCondKernel.isMarkovKernel [MeasurableSingletonClass α] (hρ : ∀ a, ρ.fst {a} ≠ 0) :
    IsMarkovKernel ρCond 
goal: ProbabilityTheory.IsMarkovKernel ρCond

full_name: ProbabilityTheory.Kernel.IsCondKernel.disintegrate
code: /-- A kernel `κCond` is a conditional kernel for a kernel `κ` if it disintegrates it in the sense
that `κ.fst ⊗ₖ κCond = κ`. -/
class IsCondKernel : Prop where
  protected disintegrate : κ.fst ⊗ₖ κCond = κ
goal: κ.fst ⊗ₖ κCond = κ

full_name: ProbabilityTheory.Kernel.IsCondKernel
code: /-- A kernel `κCond` is a conditional kernel for a kernel `κ` if it disintegrates it in the sense
that `κ.fst ⊗ₖ κCond = κ`. -/
class IsCondKernel : Prop where
  protected disintegrate : κ.fst ⊗ₖ κCond = κ
goal: Prop

full_name: ProbabilityTheory.Kernel.instIsCondKernel_zero
code: instance instIsCondKernel_zero (κCond : Kernel (α × β) Ω) : IsCondKernel 0 κCond 
goal: ProbabilityTheory.Kernel.IsCondKernel 0 κCond

full_name: ProbabilityTheory.Kernel.disintegrate
code: lemma disintegrate : κ.fst ⊗ₖ κCond = κ 
goal: κ.fst ⊗ₖ κCond = κ

full_name: ProbabilityTheory.Kernel.condKernelCountable
code: /-- Auxiliary definition for `ProbabilityTheory.Kernel.condKernel`.

A conditional kernel for `κ : Kernel α (β × Ω)` where `α` is countable and `Ω` is a measurable
space. -/
noncomputable def condKernelCountable (h_atom : ∀ x y, x ∈ measurableAtom y → κCond x = κCond y) :
    Kernel (α × β) Ω 
goal: ProbabilityTheory.Kernel (α × β) Ω

full_name: ProbabilityTheory.Kernel.condKernelCountable_apply
code: lemma condKernelCountable_apply (h_atom : ∀ x y, x ∈ measurableAtom y → κCond x = κCond y)
    (p : α × β) : condKernelCountable κCond h_atom p = κCond p.1 p.2 
goal: (ProbabilityTheory.Kernel.condKernelCountable κCond h_atom) p = (κCond p.1) p.2

full_name: ProbabilityTheory.Kernel.condKernelCountable.instIsMarkovKernel
code: instance condKernelCountable.instIsMarkovKernel [∀ a, IsMarkovKernel (κCond a)]
     (h_atom : ∀ x y, x ∈ measurableAtom y → κCond x = κCond y) :
    IsMarkovKernel (condKernelCountable κCond h_atom) 
goal: ProbabilityTheory.IsMarkovKernel (ProbabilityTheory.Kernel.condKernelCountable κCond h_atom)

full_name: ProbabilityTheory.Kernel.condKernelCountable.instIsCondKernel
code: instance condKernelCountable.instIsCondKernel [∀ a, IsMarkovKernel (κCond a)]
    (h_atom : ∀ x y, x ∈ measurableAtom y → κCond x = κCond y) (κ : Kernel α (β × Ω))
    [IsSFiniteKernel κ] [∀ a, (κ a).IsCondKernel (κCond a)] :
    κ.IsCondKernel (condKernelCountable κCond h_atom) 
goal: κ.IsCondKernel (ProbabilityTheory.Kernel.condKernelCountable κCond h_atom)