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

AutoSamplingTheory.ExampleCases.ProximalBPS.GaussianAugmentation

Read the mathematical statements and proofs in order

1 named declarations scanned from AutoSamplingTheory/ExampleCases/ProximalBPS/GaussianAugmentation.lean.

Imports
Imported by
Placeholder scan
0 declaration(s) flagged
Gate status
Partial

Declarations

theorem AutoSamplingTheory.ExampleCases.ProximalBPS.GaussianAugmentation.augmentation_eq_withDensity Partial Not mapped

Read the complete mathematical statement and proof, with Lean below each

- The law of independent `X ~ μ`, `Z ~ stdGaussian E` and `Y = X + sqrt η • Z` has the displayed joint density relative to `μ.prod volume`. The input law may be singular with respect to volume.

theorem augmentation_eq_withDensity (μ : Measure E) [IsProbabilityMeasure μ]
    (η : ℝ) (hη : 0 < η) :
    Measure.map (fun p : E × E => (p.1, p.1 + Real.sqrt η • p.2))
        (μ.prod (stdGaussian E)) =
      (μ.prod (volume : Measure E)).withDensity (fun p =>
        ENNReal.ofReal
          (((Real.sqrt (2 * Real.pi * η))⁻¹) ^ Module.finrank ℝ E *
            Real.exp (-‖p.2 - p.1‖ ^ 2 / (2 * η)))) := by
  let σ : E → E := fun z => Real.sqrt η • z
  let q : E → ℝ≥0∞ := fun z => ENNReal.ofReal
    (((Real.sqrt (2 * Real.pi * η))⁻¹) ^ Module.finrank ℝ E *
      Real.exp (-‖z‖ ^ 2 / (2 * η)))
  let S : E × E ≃ᵐ E × E := MeasurableEquiv.shearAddRight E
  have hq : Measurable q := by fun_prop
  have hnoise : (stdGaussian E).map σ = (volume : Measure E).withDensity q :=
    TechnicalLemmas.Measure.IsotropicGaussianDensity.map_sqrt_smul_stdGaussian_eq_withDensity
      η hη
  have hprod : Measure.map (Prod.map id σ) (μ.prod (stdGaussian E)) =
      μ.prod ((volume : Measure E).withDensity q) := by
    rw [← Measure.map_prod_map μ (stdGaussian E) measurable_id (by fun_prop),
      hnoise, Measure.map_id]
  have hΦ : (fun p : E × E => (p.1, p.1 + Real.sqrt η • p.2)) =
      S ∘ Prod.map id σ := rfl
  have hvol : (μ.prod (volume : Measure E)).map S = μ.prod volume :=
    (measurePreserving_prod_add μ volume).map_eq
  rw [hΦ, ← Measure.map_map S.measurable (by fun_prop), hprod,
    prod_withDensity_right hq,
    TechnicalLemmas.Measure.RadonNikodym.measurableEquiv_map_withDensity
      S _ (f := fun p : E × E => q p.2) (by fun_prop), hvol]
  congr 1
  funext p
  change q (-p.1 + p.2) = q (p.2 - p.1)
  rw [neg_add_eq_sub]

end AutoSamplingTheory.ExampleCases.ProximalBPS.GaussianAugmentation