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

AutoSamplingTheory.ExampleCases.SmoothedPicardHMC.RGOClosure

Read the mathematical statements and proofs in order

1 named declarations scanned from AutoSamplingTheory/ExampleCases/SmoothedPicardHMC/RGOClosure.lean.

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

Declarations

theorem AutoSamplingTheory.ExampleCases.SmoothedPicardHMC.RGOClosure.quadratic_tilt_tilt Partial Not mapped

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

- Applying two normalized quadratic exponential reweightings gives a single reweighting with summed precision and precision-weighted centre. All normalizing integrals are positive and finite by boundedness of the weights and probability of the base; no such hypotheses are supplied by the caller. This is the distribution-level calculation, not a sampler or curvature result.

theorem quadratic_tilt_tilt (μ : Measure E) [IsProbabilityMeasure μ]
    {r s : ℝ} (hr : 0 ≤ r) (hs : 0 < s) (u y : E) :
    (μ.tilted (fun x => -(r / 2) * ‖x - u‖ ^ 2)).tilted
        (fun x => -(s / 2) * ‖x - y‖ ^ 2) =
      μ.tilted (fun x => -((r + s) / 2) *
        ‖x - (r + s)⁻¹ • (r • u + s • y)‖ ^ 2) := by
  have hint : ∀ (t : ℝ), 0 ≤ t → ∀ (v : E),
      Integrable (fun x => Real.exp (-(t / 2) * ‖x - v‖ ^ 2)) μ := by
    intro t ht v
    have hcont : Continuous (fun x : E => Real.exp (-(t / 2) * ‖x - v‖ ^ 2)) :=
      Real.continuous_exp.comp (continuous_const.mul ((continuous_id.sub continuous_const).norm.pow 2))
    refine (integrable_const (1 : ℝ)).mono' hcont.aestronglyMeasurable ?_
    filter_upwards with x
    rw [Real.norm_eq_abs, abs_of_pos (Real.exp_pos _)]
    apply Real.exp_le_one_iff.mpr
    exact mul_nonpos_of_nonpos_of_nonneg (neg_nonpos.mpr (by positivity)) (sq_nonneg _)
  have hrs : 0 < r + s := add_pos_of_nonneg_of_pos hr hs
  let w : E := (r + s)⁻¹ • (r • u + s • y)
  let c : ℝ := -(r * s / (2 * (r + s))) * ‖u - y‖ ^ 2
  have hsq : (fun x => -(r / 2) * ‖x - u‖ ^ 2) +
      (fun x => -(s / 2) * ‖x - y‖ ^ 2) =
      (fun x => -((r + s) / 2) * ‖x - w‖ ^ 2) + (fun _ => c) := by
    funext x
    simp only [Pi.add_apply, w, c, ← real_inner_self_eq_norm_sq,
      inner_sub_left, inner_sub_right, inner_add_left, inner_add_right,
      real_inner_smul_left, real_inner_smul_right]
    rw [real_inner_comm y u, real_inner_comm u x, real_inner_comm y x]
    field_simp
    ring
  have : IsProbabilityMeasure
      (μ.tilted (fun x => -((r + s) / 2) * ‖x - w‖ ^ 2)) :=
    isProbabilityMeasure_tilted (hint (r + s) hrs.le w)
  rw [tilted_tilted (hint r hr u), hsq,
    ← tilted_tilted (hint (r + s) hrs.le w), tilted_const]

end AutoSamplingTheory.ExampleCases.SmoothedPicardHMC.RGOClosure