production module
AutoSamplingTheory.ExampleCases.GaussianComplexity.GaussianMixtureLaws
Read the mathematical statements and proofs in order
1 named declarations scanned from AutoSamplingTheory/ExampleCases/GaussianComplexity/GaussianMixtureLaws.lean.
Declarations
theorem AutoSamplingTheory.ExampleCases.GaussianComplexity.GaussianMixtureLaws.actual_mixture_laws Partial Not mapped
Read the complete mathematical statement and proof, with Lean below each
No declaration docstring.
theorem actual_mixture_laws {n : ℕ} (hn : 3 ≤ n) {κ : ℝ} (hκ : 4 ≤ κ) :
let μ := orthogonalHaar n
let νpos := (2 : ℝ≥0∞) • μ.restrict
{O : Matrix.orthogonalGroup (Fin n) ℝ | (O : Matrix (Fin n) (Fin n) ℝ).det = 1}
let νneg := (2 : ℝ≥0∞) • μ.restrict
{O : Matrix.orthogonalGroup (Fin n) ℝ | (O : Matrix (Fin n) (Fin n) ℝ).det = -1}
let γ : Matrix.orthogonalGroup (Fin n) ℝ → Measure (EuclideanSpace ℝ (Fin n)) :=
fun O => multivariateGaussian (0 : EuclideanSpace ℝ (Fin n))
(singleBlockPrecision κ O)⁻¹
Measurable γ ∧ IsProbabilityMeasure (νpos.bind γ) ∧
IsProbabilityMeasure (νneg.bind γ) ∧
(∀ B : Set (EuclideanSpace ℝ (Fin n)), MeasurableSet B →
(νpos.bind γ) B = ∫⁻ O, γ O B ∂νpos) ∧
(∀ B : Set (EuclideanSpace ℝ (Fin n)), MeasurableSet B →
(νneg.bind γ) B = ∫⁻ O, γ O B ∂νneg) := by
classical
dsimp only
let G := Matrix.orthogonalGroup (Fin n) ℝ
let E := EuclideanSpace ℝ (Fin n)
let μ := orthogonalHaar n
let νpos := (2 : ℝ≥0∞) • μ.restrict
{O : G | (O : Matrix (Fin n) (Fin n) ℝ).det = 1}
let νneg := (2 : ℝ≥0∞) • μ.restrict
{O : G | (O : Matrix (Fin n) (Fin n) ℝ).det = -1}
let γ : G → Measure E := fun O =>
multivariateGaussian (0 : E) (singleBlockPrecision κ O)⁻¹
let p : G → E → ℝ := fun O x =>
Real.sqrt (singleBlockPrecision κ O).det / (2 * Real.pi) ^ ((n : ℝ) / 2) *
Real.exp (-((WithLp.ofLp x) ⬝ᵥ
(singleBlockPrecision κ O *ᵥ WithLp.ofLp x)) / 2)
have hAc : Continuous (fun O : G => singleBlockPrecision κ O) := by
unfold singleBlockPrecision
exact continuous_const.sub
((continuous_subtype_val.add continuous_subtype_val.matrix_transpose).const_smul ((κ - 1) / 4))
have hpc : Continuous (fun z : G × E => p z.1 z.2) := by
dsimp only [p, E]
fun_prop
have hpm : Measurable (Function.uncurry (fun O x => ENNReal.ofReal (p O x))) :=
ENNReal.measurable_ofReal.comp hpc.measurable
have hd : γ = fun O => (volume : Measure E).withDensity
(fun x => ENNReal.ofReal (p O x)) := by
funext O
exact gaussian_law_eq_density hn hκ O
have hm : Measurable γ := by
-- Source excerpt truncated; follow the exact source link.
AutoSamplingTheory/ExampleCases/GaussianComplexity/GaussianMixtureLaws.lean:24published source at ed709a7f320d
Excerpt truncated; the exact source link is authoritative.
Complete Lean source
AutoSamplingTheory/ExampleCases/GaussianComplexity/GaussianMixtureLaws.lean — full module with imports and context
import AutoSamplingTheory.ExampleCases.GaussianComplexity.GaussianLawDensity
import AutoSamplingTheory.ExampleCases.GaussianComplexity.DeterminantComponents
import Mathlib.MeasureTheory.Measure.ProbabilityMeasure
/-!
# Actual determinant-conditioned Gaussian mixture laws
Zhou--Suzuki arXiv:2610.20492v1, Section 3.1 single-block definition before Eq6,
Section2 determinant priors and AppendixB2.2. The source leaves measurable-family
and probability-construction bookkeeping implicit. Those producers are proved
here for the actual Gaussian constructor, using the identical law-density and
component-prior nodes. Product targets, H-to-TV and main bounds are separate.
-/
open Matrix MeasureTheory ProbabilityTheory
open scoped ENNReal
open AutoSamplingTheory.TechnicalLemmas.Probability.OrthogonalHaar
open AutoSamplingTheory.ExampleCases.GaussianComplexity.DeterminantFamily
open AutoSamplingTheory.ExampleCases.GaussianComplexity.GaussianLawDensity
open AutoSamplingTheory.ExampleCases.GaussianComplexity.DeterminantComponents
namespace AutoSamplingTheory.ExampleCases.GaussianComplexity.GaussianMixtureLaws
theorem actual_mixture_laws {n : ℕ} (hn : 3 ≤ n) {κ : ℝ} (hκ : 4 ≤ κ) :
let μ := orthogonalHaar n
let νpos := (2 : ℝ≥0∞) • μ.restrict
{O : Matrix.orthogonalGroup (Fin n) ℝ | (O : Matrix (Fin n) (Fin n) ℝ).det = 1}
let νneg := (2 : ℝ≥0∞) • μ.restrict
{O : Matrix.orthogonalGroup (Fin n) ℝ | (O : Matrix (Fin n) (Fin n) ℝ).det = -1}
let γ : Matrix.orthogonalGroup (Fin n) ℝ → Measure (EuclideanSpace ℝ (Fin n)) :=
fun O => multivariateGaussian (0 : EuclideanSpace ℝ (Fin n))
(singleBlockPrecision κ O)⁻¹
Measurable γ ∧ IsProbabilityMeasure (νpos.bind γ) ∧
IsProbabilityMeasure (νneg.bind γ) ∧
(∀ B : Set (EuclideanSpace ℝ (Fin n)), MeasurableSet B →
(νpos.bind γ) B = ∫⁻ O, γ O B ∂νpos) ∧
(∀ B : Set (EuclideanSpace ℝ (Fin n)), MeasurableSet B →
(νneg.bind γ) B = ∫⁻ O, γ O B ∂νneg) := by
classical
dsimp only
let G := Matrix.orthogonalGroup (Fin n) ℝ
let E := EuclideanSpace ℝ (Fin n)
let μ := orthogonalHaar n
let νpos := (2 : ℝ≥0∞) • μ.restrict
{O : G | (O : Matrix (Fin n) (Fin n) ℝ).det = 1}
let νneg := (2 : ℝ≥0∞) • μ.restrict
{O : G | (O : Matrix (Fin n) (Fin n) ℝ).det = -1}
let γ : G → Measure E := fun O =>
multivariateGaussian (0 : E) (singleBlockPrecision κ O)⁻¹
let p : G → E → ℝ := fun O x =>
Real.sqrt (singleBlockPrecision κ O).det / (2 * Real.pi) ^ ((n : ℝ) / 2) *
Real.exp (-((WithLp.ofLp x) ⬝ᵥ
(singleBlockPrecision κ O *ᵥ WithLp.ofLp x)) / 2)
have hAc : Continuous (fun O : G => singleBlockPrecision κ O) := by
unfold singleBlockPrecision
exact continuous_const.sub
((continuous_subtype_val.add continuous_subtype_val.matrix_transpose).const_smul ((κ - 1) / 4))
have hpc : Continuous (fun z : G × E => p z.1 z.2) := by
dsimp only [p, E]
fun_prop
have hpm : Measurable (Function.uncurry (fun O x => ENNReal.ofReal (p O x))) :=
ENNReal.measurable_ofReal.comp hpc.measurable
have hd : γ = fun O => (volume : Measure E).withDensity
(fun x => ENNReal.ofReal (p O x)) := by
funext O
exact gaussian_law_eq_density hn hκ O
have hm : Measurable γ := by
rw [hd]
exact measurable_withDensity hpm
have hpriors := component_probabilities (lt_of_lt_of_le (by decide : 0 < 3) hn)
let : IsProbabilityMeasure νpos := hpriors.2.2.1
let : IsProbabilityMeasure νneg := hpriors.2.2.2
have hprob (O : G) : IsProbabilityMeasure (γ O) := by
dsimp [γ]
infer_instance
refine ⟨hm, isProbabilityMeasure_bind hm.aemeasurable
(Filter.Eventually.of_forall hprob),
isProbabilityMeasure_bind hm.aemeasurable (Filter.Eventually.of_forall hprob), ?_, ?_⟩
· intro B hB
exact Measure.bind_apply hB hm.aemeasurable
· intro B hB
exact Measure.bind_apply hB hm.aemeasurable
end AutoSamplingTheory.ExampleCases.GaussianComplexity.GaussianMixtureLaws