Imports
/- Copyright (c) 2026 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ module public import Physlib.SpaceAndTime.Space.Module public import Mathlib.MeasureTheory.Measure.Lebesgue.VolumeOfBalls

Integrals in Space

i. Overview

In this module we give general properties of integrals over Space d. We focus here on the volume measure, which is the usual measure on Space d, i.e. dx dy dz.

ii. Key results

    volume_eq_addHaar : The volume measure on Space d is the same as the Haar measure associated with the basis of Space d.

    integral_volume_eq_spherical : The integral of a function over Space d with respect to the volume measure can be expressed as an integral over the unit sphere and the positive reals.

    lintegral_volume_eq_spherical : The lower Lebesgue integral of a function over Space d with respect to the volume measure can be expressed as a lower Lebesgue integral over the unit sphere and the positive reals.

@[expose] public section

A. Properties of the volume measure

lemma volume_eq_addHaar {d} : (volume (α := Space d)) = Space.basis.toBasis.addHaar := d:volume = basis.toBasis.addHaar All goals completed! 🐙ENNReal.ofReal 1 ^ Module.finrank Space * ENNReal.ofReal (Real.pi ^ 1 * 2 ^ (1 + 1) / (Module.finrank Space).doubleFactorial) = ENNReal.ofReal (4 / 3 * Real.pi)Module.finrank Space = 2 * 1 + 1 ENNReal.ofReal (Real.pi * 2 ^ 2 / 3) = ENNReal.ofReal (4 / 3 * Real.pi)Module.finrank Space = 2 * 1 + 1 Module.finrank Space = 2 * 1 + 1 All goals completed! 🐙ENNReal.ofReal 1 ^ Module.finrank (Space 2) * ENNReal.ofReal (Real.pi ^ 1 / (Nat.factorial 1)) = ENNReal.ofReal Real.piModule.finrank (Space 2) = 2 * 1 Module.finrank (Space 2) = 2 * 1 All goals completed! 🐙(ENNReal.ofReal Real.pi).toReal = Real.pi 0 Real.pi All goals completed! 🐙(ENNReal.ofReal (4 / 3 * Real.pi)).toReal = 4 / 3 * Real.pi 0 4 / 3 * Real.pi All goals completed! 🐙

B. Integrals over one-dimensional space

All goals completed! 🐙

C. Integrals over volume to spherical

F:Type u_1d:inst✝²:NeZero df:Space d Finst✝¹:NormedAddCommGroup Finst✝:NormedSpace Ff':Space d F := fun x => f (x x⁻¹ x)h1:∀ᵐ (x : Space d), x 0x:Space dhx✝:x 0hx:x 0x = (x * x⁻¹) x F:Type u_1d:inst✝²:NeZero df:Space d Finst✝¹:NormedAddCommGroup Finst✝:NormedSpace Ff':Space d F := fun x => f (x x⁻¹ x)h1:∀ᵐ (x : Space d), x 0x:Space dhx✝:x 0hx:x 0x = 1 x All goals completed! 🐙d:F:Type u_1inst✝¹:NormedAddCommGroup Finst✝:NormedSpace Ff:Space d Fhf:Integrable f volumes:Set (Space d) := {0}h1:Integrable (fun x => f x) (Measure.comap Subtype.val volume)he:MeasurePreserving (⇑(homeomorphUnitSphereProd (Space d))) (Measure.comap Subtype.val volume) (volume.toSphere.prod (Measure.volumeIoiPow (Module.finrank (Space d) - 1)))hcomp:Integrable ((fun x => f x) (homeomorphUnitSphereProd (Space d)).symm) (volume.toSphere.prod (Measure.volumeIoiPow (Module.finrank (Space d) - 1)))Integrable (fun x => f (x.2 x.1)) (volume.toSphere.prod (Measure.volumeIoiPow (Module.finrank (Space d) - 1))) All goals completed! 🐙d:inst✝²:NeZero dF:Type u_1inst✝¹:NormedAddCommGroup Finst✝:NormedSpace Ff:Space d Fhf:Integrable f volumeIntegrable (fun x => f (x.2 x.1)) (volume.toSphere.prod (Measure.volumeIoiPow (Module.finrank (Space d) - 1))) All goals completed! 🐙m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sh2: (s : Set ), volume s = (Measure.sum m) svolume (Subtype.val '' s) = (Measure.sum m) (Subtype.val '' s)m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sh2: (s : Set ), volume s = (Measure.sum m) sMeasurableSet (Subtype.val '' s)m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableSet sm: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableEmbedding Subtype.val m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sh2: (s : Set ), volume s = (Measure.sum m) sMeasurableSet (Subtype.val '' s)m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableSet sm: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableEmbedding Subtype.val m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableSet sm: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableEmbedding Subtype.val m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableEmbedding Subtype.val m: Measure h:(∀ (n : ), IsFiniteMeasure (m n)) volume = Measure.sum ms:Set (Set.Ioi 0)hs:MeasurableSet sMeasurableSet (Set.Ioi 0) All goals completed! 🐙All goals completed! 🐙

D. Lower Lebesgue integral over volume to spherical

All goals completed! 🐙d:inst✝:NeZero df:Space d ENNRealhf:Measurable f∫⁻ (a : (Metric.sphere 0 1) × (Set.Ioi 0)), ((fun z => ENNReal.ofReal (z.2 ^ (Module.finrank (Space d) - 1))) * fun x => f (x.2 x.1)) a volume.toSphere.prod (Measure.comap Subtype.val volume) = ∫⁻ (a : (Metric.sphere 0 1) × (Set.Ioi 0)), ((fun z => ENNReal.ofReal (z.2 ^ 0)) * fun x => f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1))) a volume.toSphere.prod (Measure.comap Subtype.val volume)d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable fun z => ENNReal.ofReal (z.2 ^ 0)d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable fun x => f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1))d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable fun r => ENNReal.ofReal (r ^ 0)d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable fun z => ENNReal.ofReal (z.2 ^ (Module.finrank (Space d) - 1))d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable fun x => f (x.2 x.1)d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable fun r => ENNReal.ofReal (r ^ (Module.finrank (Space d) - 1))d:inst✝:NeZero df:Space d ENNRealhf:Measurable fMeasurable f d:inst✝:NeZero df:Space d ENNRealhf:Measurable f∫⁻ (a : (Metric.sphere 0 1) × (Set.Ioi 0)), ((fun z => ENNReal.ofReal (z.2 ^ (Module.finrank (Space d) - 1))) * fun x => f (x.2 x.1)) a volume.toSphere.prod (Measure.comap Subtype.val volume) = ∫⁻ (a : (Metric.sphere 0 1) × (Set.Ioi 0)), ((fun z => ENNReal.ofReal (z.2 ^ 0)) * fun x => f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1))) a volume.toSphere.prod (Measure.comap Subtype.val volume) d:inst✝:NeZero df:Space d ENNRealhf:Measurable f((fun z => ENNReal.ofReal (z.2 ^ (Module.finrank (Space d) - 1))) * fun x => f (x.2 x.1)) =ᵐ[volume.toSphere.prod (Measure.comap Subtype.val volume)] (fun z => ENNReal.ofReal (z.2 ^ 0)) * fun x => f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1)) d:inst✝:NeZero df:Space d ENNRealhf:Measurable f((fun z => ENNReal.ofReal (z.2 ^ (d - 1))) * fun x => f (x.2 x.1)) =ᵐ[volume.toSphere.prod (Measure.comap Subtype.val volume)] (fun z => 1) * fun x => f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1)) d:inst✝:NeZero df:Space d ENNRealhf:Measurable fx:(Metric.sphere 0 1) × (Set.Ioi 0)((fun z => ENNReal.ofReal (z.2 ^ (d - 1))) * fun x => f (x.2 x.1)) x = ((fun z => 1) * fun x => f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1))) x d:inst✝:NeZero df:Space d ENNRealhf:Measurable fx:(Metric.sphere 0 1) × (Set.Ioi 0)ENNReal.ofReal (x.2 ^ (d - 1)) * f (x.2 x.1) = f (x.2 x.1) * ENNReal.ofReal (x.2 ^ (d - 1)) All goals completed! 🐙 all_goals All goals completed! 🐙