Samplinglib
Lean gate not recorded for this source state main · 0e31a3cda412

Exact source context

import AutoSamplingTheory.TechnicalLemmas.Probability.HeatBath
import AutoSamplingTheory.TechnicalLemmas.Probability.KernelInvariance

namespace AutoSamplingTheory.Tests.HeatBath

open MeasureTheory ProbabilityTheory
open AutoSamplingTheory.TechnicalLemmas.Probability
open AutoSamplingTheory.TechnicalLemmas.Probability.HeatBath

variable {α β : Type*} [MeasurableSpace α] [MeasurableSpace β]
  [StandardBorelSpace β] [Nonempty β]

example (μ : Measure (α × β)) [IsFiniteMeasure μ] :
    IsMarkovKernel (heatBathSnd μ) := inferInstance

example (μ : Measure (α × β)) [IsFiniteMeasure μ] (x : α × β) :
    heatBathSnd μ x = (Measure.dirac x.1).prod (condDistrib Prod.snd Prod.fst μ x.1) :=
  heatBathSnd_apply μ x

example (μ : Measure (α × β)) [IsFiniteMeasure μ] :
    (heatBathSnd μ).Invariant μ := heatBathSnd_invariant μ

-- A real shared consumer: the new concrete update instantiates the existing
-- kernel-power interface. No duplicate iteration theorem is declared.
example (μ : Measure (α × β)) [IsFiniteMeasure μ] (n : ℕ) :
    ((heatBathSnd μ) ^ n).Invariant μ :=
  KernelInvariance.invariant_pow (heatBathSnd_invariant μ) n

-- Zero target mass still permits a Markov conditional version and invariance.
example : IsMarkovKernel (heatBathSnd (0 : Measure (α × β))) := inferInstance

example : (heatBathSnd (0 : Measure (α × β))).Invariant 0 :=
  heatBathSnd_invariant 0

end AutoSamplingTheory.Tests.HeatBath