Samplinglib
Lean gate not recorded for this source state main · 0e31a3cda412
6.2 · Book p. 178 · PDF p. 190

Analysis of LMC via Girsanov's Theorem

Compares LMC and Langevin path laws by Girsanov's theorem and converts the result to a Rényi terminal bound.

Open this section in the canonical August 9 source ↗
Formal topologyOpen this section in the underlying Lean graph
Why is this valid?

Prove adaptedness, moment bounds, integrated drift error, absolute continuity of path laws, and the terminal-time data-processing step independently.

Source assumptions

  • smooth drift
  • stable step size

Formal assumptions

  • moment and path-law hypotheses not yet fully formalized
View Lean formalization
partial · faithful paraphrase

The website exposes the compiled divergence and Girsanov leaves, while the full stochastic interpolation chain remains red.

AutoSamplingTheory.TechnicalLemmas.StochasticProcesses.Girsanov.finiteGaussianGirsanovCylinderMeasure_eq_withDensity

compiled Samplinglib leaf · AutoSamplingTheory/TechnicalLemmas/StochasticProcesses/Girsanov.lean:56
theorem finiteGaussianGirsanovCylinderMeasure_eq_withDensity
    {ι : Type*} [Fintype ι] (h : ι → ℝ) :
    finiteShiftedGaussianPathMeasure h =
      (stdGaussian (EuclideanSpace ℝ ι)).withDensity
        (fun z => ENNReal.ofReal (finiteGaussianGirsanovWeight h z)) := by
  classical
  let μ0 : Measure (ι → ℝ) :=
    Measure.pi (fun _ : ι => gaussianReal 0 (1 : NNReal))
  let coordDensity : (ι → ℝ) → ℝ≥0∞ :=
    fun x => ENNReal.ofReal
      (Real.exp ((∑ i, h i * x i) - (∑ i, (h i) ^ 2) / 2))
  let e : (ι → ℝ) ≃ᵐ EuclideanSpace ℝ ι :=
    MeasurableEquiv.toLp 2 (ι → ℝ)
  have hProduct :
      Measure.pi (fun i : ι => gaussianReal (h i) (1 : NNReal)) =
        μ0.withDensity coordDensity := by
    simpa [μ0, coordDensity] using
      (_root_.AutoSamplingTheory.TechnicalLemmas.Gaussian.pi_gaussianReal_withDensity_exp_shift h).symm
  have hMapDensity :
      (μ0.withDensity coordDensity).map e =
        (μ0.map e).withDensity (fun z => coordDensity (e.symm z)) :=
    AutoSamplingTheory.TechnicalLemmas.Measure.RadonNikodym.measurableEquiv_map_withDensity
      e μ0 (by fun_prop)
  have hStd : μ0.map e = stdGaussian (EuclideanSpace ℝ ι) := by
    simpa [μ0, e, MeasurableEquiv.coe_toLp] using
      ProbabilityTheory.map_pi_eq_stdGaussian (ι := ι)
  have hDensityEq :
      (fun z : EuclideanSpace ℝ ι => coordDensity (e.symm z)) =
        fun z => ENNReal.ofReal (finiteGaussianGirsanovWeight h z) := by
    funext z
    have hInner :
        inner ℝ (WithLp.toLp 2 h : EuclideanSpace ℝ ι) z =
          ∑ i, h i * (WithLp.ofLp z) i := by
      simpa using
        _root_.AutoSamplingTheory.TechnicalLemmas.Gaussian.inner_toLp_toLp_eq_sum_mul
          h (WithLp.ofLp z)
    have hNorm :
        ‖(WithLp.toLp 2 h : EuclideanSpace ℝ ι)‖ ^ 2 =
          ∑ i, (h i) ^ 2 :=
      _root_.AutoSamplingTheory.TechnicalLemmas.Gaussian.norm_sq_toLp_eq_sum_sq h
    simp [coordDensity, finiteGaussianGirsanovWeight, e, hInner, hNorm]
  calc
    finiteShiftedGaussianPathMeasure h
        = (μ0.withDensity coordDensity).map e := by
          simpa [finiteShiftedGaussianPathMeasure, e, μ0,
            MeasurableEquiv.coe_toLp] using congrArg (fun ν => ν.map e) hProduct
    _ = (μ0.map e).withDensity (fun z => coordDensity (e.symm z)) := hMapDensity
    _ = (stdGaussian (EuclideanSpace ℝ ι)).withDensity
          (fun z => ENNReal.ofReal (finiteGaussianGirsanovWeight h z)) := by
          rw [hDensityEq, hStd]

/-- The finite-dimensional Girsanov weight has unit mass under the centered
`stdGaussian` cylinder. -/
Imports
  • AutoSamplingTheory.TechnicalLemmas.ProbabilityDistributions.Gaussian
Local dependencies

Downstream consumers

  • LMC complexity
  • ULMC complexity