Exact source context
import AutoSamplingTheory.TechnicalLemmas.Probability.KernelMixture
import AutoSamplingTheory.TechnicalLemmas.Probability.HeatBath
import AutoSamplingTheory.TechnicalLemmas.Probability.KernelInvariance
namespace AutoSamplingTheory.Tests.KernelMixture
open MeasureTheory ProbabilityTheory
open scoped NNReal ENNReal
open AutoSamplingTheory.TechnicalLemmas.Probability
open AutoSamplingTheory.TechnicalLemmas.Probability.KernelMixture
variable {ι α β : Type*} [Fintype ι] [MeasurableSpace α] [MeasurableSpace β]
-- No finite/SFinite hypothesis on the target measure.
example (w : ι → ℝ≥0) (κ : ι → Kernel α α) [∀ i, IsSFiniteKernel (κ i)]
(μ : Measure α) (hsum : ∑ i, w i = 1) (hκ : ∀ i, (κ i).Invariant μ) :
(finiteMixture w κ).Invariant μ := finiteMixture_invariant w κ μ hsum hκ
-- An actual zero-weight component disappears at the measure level.
example (κ : Bool → Kernel α α) [∀ i, IsSFiniteKernel (κ i)] (a : α) :
finiteMixture (fun b => if b then 1 else 0) κ a = κ true a := by
simp [finiteMixture_apply]
variable [StandardBorelSpace β] [Nonempty β]
private noncomputable def lazyHeatBathComponents (μ : Measure (α × β))
[IsFiniteMeasure μ] (b : Bool) : Kernel (α × β) (α × β) :=
if b then Kernel.id else HeatBath.heatBathSnd μ
private instance (μ : Measure (α × β)) [IsFiniteMeasure μ] (b : Bool) :
IsMarkovKernel (lazyHeatBathComponents μ b) := by
cases b <;> dsimp [lazyHeatBathComponents] <;> infer_instance
example (μ : Measure (α × β)) [IsFiniteMeasure μ] (w : Bool → ℝ≥0)
(hsum : ∑ b, w b = 1) : IsMarkovKernel (finiteMixture w (lazyHeatBathComponents μ)) :=
finiteMixture_isMarkovKernel w (lazyHeatBathComponents μ) hsum
-- Identity/heat-bath is a concrete lazy-update consumer; zero weights remain
-- possible. Finite iteration reuses invariant_pow, not a new wrapper theorem.
example (μ : Measure (α × β)) [IsFiniteMeasure μ] (w : Bool → ℝ≥0)
(hsum : ∑ b, w b = 1) (n : ℕ) :
((finiteMixture w (lazyHeatBathComponents μ)) ^ n).Invariant μ := by
apply KernelInvariance.invariant_pow
apply finiteMixture_invariant w (lazyHeatBathComponents μ) μ hsum
intro b
cases b
· exact HeatBath.heatBathSnd_invariant μ
· exact Measure.id_comp
end AutoSamplingTheory.Tests.KernelMixture