Imports
/-
Copyright (c) 2026 Robert Sneiderman. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Robert Sneiderman
-/
module
public import PhyslibAlpha.SpaceAndTime.Space.Surfaces.Ring
public import Physlib.SpaceAndTime.Space.Integrals.Basic
public import Mathlib.MeasureTheory.Integral.Prod
Spherical cylinder surface in Space 3
The spherical cylinder is the unit circular shell in Space 2 extruded along the
third coordinate.
@[expose] public sectionA. The definition of the spherical cylinder surface
The map embedding the unit circular shell extruded along the axis into Space 3.
def sphericalCylinder : Metric.sphere (0 : Space 2) 1 × ℝ → Space 3 := fun x =>
(slice 2).symm (x.2, sphericalShell 2 x.1)lemma sphericalCylinder_eq :
sphericalCylinder = (slice 2).symm ∘ (fun x => (x.2, sphericalShell 2 x.1)) := rfllemma sphericalCylinder_injective : Function.Injective sphericalCylinder := ⊢ Function.Injective sphericalCylinder
x:↑(Metric.sphere 0 1) × ℝy:↑(Metric.sphere 0 1) × ℝh:sphericalCylinder x = sphericalCylinder y⊢ x = y
x:↑(Metric.sphere 0 1) × ℝy:↑(Metric.sphere 0 1) × ℝh:sphericalCylinder x = sphericalCylinder yh':(slice 2) (sphericalCylinder x) = (slice 2) (sphericalCylinder y)⊢ x = y
x:↑(Metric.sphere 0 1) × ℝy:↑(Metric.sphere 0 1) × ℝh:sphericalCylinder x = sphericalCylinder yh':x.2 = y.2 ∧ sphericalShell 2 x.1 = sphericalShell 2 y.1⊢ x = y
All goals completed! 🐙@[fun_prop]
lemma sphericalCylinder_continuous : Continuous sphericalCylinder := ⊢ Continuous sphericalCylinder
⊢ Continuous ⇑(slice 2).symm⊢ Continuous fun x => (x.2, sphericalShell 2 x.1)
⊢ Continuous ⇑(slice 2).symm All goals completed! 🐙
⊢ Continuous fun x => (x.2, sphericalShell 2 x.1) All goals completed! 🐙lemma sphericalCylinder_measurableEmbedding : MeasurableEmbedding sphericalCylinder :=
Continuous.measurableEmbedding sphericalCylinder_continuous sphericalCylinder_injectivex:↑(Metric.sphere 0 1) × ℝ⊢ √(‖x.2‖ ^ 2 + 1 ^ 2) = √(‖x.2‖ ^ 2 + 1)
norm_num All goals completed! 🐙B. The measure associated with the spherical cylinder
The measure on Space 3 corresponding to integration over a spherical cylinder.
def sphericalCylinderMeasure : Measure (Space 3) :=
MeasureTheory.Measure.map sphericalCylinder
((MeasureTheory.Measure.toSphere volume).prod (volume (α := ℝ)))
instance sphericalCylinderMeasure_hasTemperateGrowth :
sphericalCylinderMeasure.HasTemperateGrowth := by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ sphericalCylinderMeasure.HasTemperateGrowth
rw [sphericalCylinderMeasure 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map sphericalCylinder (volume.toSphere.prod volume)).HasTemperateGrowth 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map sphericalCylinder (volume.toSphere.prod volume)).HasTemperateGrowth] 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map sphericalCylinder (volume.toSphere.prod volume)).HasTemperateGrowth
refine { exists_integrable := ?_ } 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ ∃ n, Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) (Measure.map sphericalCylinder (volume.toSphere.prod volume))
obtain ⟨n, hn⟩ := MeasureTheory.Measure.HasTemperateGrowth.exists_integrable
(μ := volume (α := ℝ)) 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ ∃ n, Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) (Measure.map sphericalCylinder (volume.toSphere.prod volume))
use n h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) (Measure.map sphericalCylinder (volume.toSphere.prod volume))
rw [MeasurableEmbedding.integrable_map_iff sphericalCylinder_measurableEmbedding h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ Integrable ((fun x => (1 + ‖x‖) ^ (-↑n)) ∘ sphericalCylinder) (volume.toSphere.prod volume) h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ Integrable ((fun x => (1 + ‖x‖) ^ (-↑n)) ∘ sphericalCylinder) (volume.toSphere.prod volume)]h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ Integrable ((fun x => (1 + ‖x‖) ^ (-↑n)) ∘ sphericalCylinder) (volume.toSphere.prod volume)
change Integrable
(fun x : Metric.sphere (0 : Space 2) 1 × ℝ =>
(1 + ‖sphericalCylinder x‖) ^ (-(n : ℝ)))
((MeasureTheory.Measure.toSphere volume).prod (volume (α := ℝ))) h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ Integrable (fun x => (1 + ‖sphericalCylinder x‖) ^ (-↑n)) (volume.toSphere.prod volume)
apply Integrable.mono' (hn.comp_snd (MeasureTheory.Measure.toSphere volume)) h.hf 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ AEStronglyMeasurable (fun x => (1 + ‖sphericalCylinder x‖) ^ (-↑n)) (volume.toSphere.prod volume)h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ ∀ᵐ (a : ↑(Metric.sphere 0 1) × ℝ) ∂volume.toSphere.prod volume,
‖(1 + ‖sphericalCylinder a‖) ^ (-↑n)‖ ≤ (1 + ‖a.2‖) ^ (-↑n)
· h.hf 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ AEStronglyMeasurable (fun x => (1 + ‖sphericalCylinder x‖) ^ (-↑n)) (volume.toSphere.prod volume) apply AEMeasurable.aestronglyMeasurable h.hf 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ AEMeasurable (fun x => (1 + ‖sphericalCylinder x‖) ^ (-↑n)) (volume.toSphere.prod volume)
exact ((continuous_const.add sphericalCylinder_continuous.norm).rpow_const
(fun x => Or.inl (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 1 + ‖sphericalCylinder x‖ ≠ 0 positivity All goals completed! 🐙 : (1 : ℝ) + ‖sphericalCylinder x‖ ≠ 0))).aemeasurable
· h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volume⊢ ∀ᵐ (a : ↑(Metric.sphere 0 1) × ℝ) ∂volume.toSphere.prod volume,
‖(1 + ‖sphericalCylinder a‖) ^ (-↑n)‖ ≤ (1 + ‖a.2‖) ^ (-↑n) filter_upwards with x h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ ‖(1 + ‖sphericalCylinder x‖) ^ (-↑n)‖ ≤ (1 + ‖x.2‖) ^ (-↑n)
rw [Real.norm_eq_abs, h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ |(1 + ‖sphericalCylinder x‖) ^ (-↑n)| ≤ (1 + ‖x.2‖) ^ (-↑n) h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ (1 + ‖sphericalCylinder x‖) ^ (-↑n) ≤ (1 + ‖x.2‖) ^ (-↑n) abs_of_nonneg (Real.rpow_nonneg (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 0 ≤ 1 + ‖sphericalCylinder x‖h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ (1 + ‖sphericalCylinder x‖) ^ (-↑n) ≤ (1 + ‖x.2‖) ^ (-↑n) positivity All goals completed! 🐙h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ (1 + ‖sphericalCylinder x‖) ^ (-↑n) ≤ (1 + ‖x.2‖) ^ (-↑n)) _)]h.h 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ (1 + ‖sphericalCylinder x‖) ^ (-↑n) ≤ (1 + ‖x.2‖) ^ (-↑n)
apply Real.rpow_le_rpow_of_nonpos h.h.hx 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 0 < 1 + ‖x.2‖h.h.hxy 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + ‖sphericalCylinder x‖h.h.hz 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ -↑n ≤ 0
· h.h.hx 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 0 < 1 + ‖x.2‖ positivity All goals completed! 🐙
· h.h.hxy 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + ‖sphericalCylinder x‖ simp only [norm_sphericalCylinder] h.h.hxy 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + √(‖x.2‖ ^ 2 + 1)
exact add_le_add_right (Real.le_sqrt_of_sq_le (le_add_of_nonneg_right zero_le_one)) 1 All goals completed! 🐙
· h.h.hz 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fn:ℕhn:Integrable (fun x => (1 + ‖x‖) ^ (-↑n)) volumex:↑(Metric.sphere 0 1) × ℝ⊢ -↑n ≤ 0 simp All goals completed! 🐙
instance sphericalCylinderMeasure_sFinite : SFinite sphericalCylinderMeasure := by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite sphericalCylinderMeasure
rw [sphericalCylinderMeasure 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map sphericalCylinder (volume.toSphere.prod volume)) 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map sphericalCylinder (volume.toSphere.prod volume))] 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map sphericalCylinder (volume.toSphere.prod volume))
exact Measure.instSFiniteMap ((MeasureTheory.Measure.toSphere volume).prod (volume (α := ℝ)))
sphericalCylinder All goals completed! 🐙C. The distribution associated with the spherical cylinder
The distribution on Space 3 corresponding to integration over a spherical cylinder.
def sphericalCylinderDist : (Space 3) →d[ℝ] ℝ :=
SchwartzMap.integralCLM ℝ sphericalCylinderMeasure
lemma sphericalCylinderDist_apply_eq_integral_sphericalCylinderMeasure (f : 𝓢(Space 3, ℝ)) :
sphericalCylinderDist f = ∫ x, f x ∂sphericalCylinderMeasure := by f:𝓢(Space, ℝ)⊢ sphericalCylinderDist f = ∫ (x : Space), f x ∂sphericalCylinderMeasure
rw [sphericalCylinderDist, f:𝓢(Space, ℝ)⊢ (integralCLM ℝ sphericalCylinderMeasure) f = ∫ (x : Space), f x ∂sphericalCylinderMeasure All goals completed! 🐙 SchwartzMap.integralCLM_apply f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂sphericalCylinderMeasure = ∫ (x : Space), f x ∂sphericalCylinderMeasure All goals completed! 🐙] All goals completed! 🐙
lemma sphericalCylinderDist_apply_eq_integral_sphere_volume (f : 𝓢(Space 3, ℝ)) :
sphericalCylinderDist f =
∫ x, f (sphericalCylinder x)
∂((MeasureTheory.Measure.toSphere volume).prod (volume (α := ℝ))) := by f:𝓢(Space, ℝ)⊢ sphericalCylinderDist f = ∫ (x : ↑(Metric.sphere 0 1) × ℝ), f (sphericalCylinder x) ∂volume.toSphere.prod volume
rw [sphericalCylinderDist_apply_eq_integral_sphericalCylinderMeasure, f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂sphericalCylinderMeasure =
∫ (x : ↑(Metric.sphere 0 1) × ℝ), f (sphericalCylinder x) ∂volume.toSphere.prod volume All goals completed! 🐙 sphericalCylinderMeasure, f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂Measure.map sphericalCylinder (volume.toSphere.prod volume) =
∫ (x : ↑(Metric.sphere 0 1) × ℝ), f (sphericalCylinder x) ∂volume.toSphere.prod volume All goals completed! 🐙
MeasurableEmbedding.integral_map sphericalCylinder_measurableEmbedding f:𝓢(Space, ℝ)⊢ ∫ (x : ↑(Metric.sphere 0 1) × ℝ), f (sphericalCylinder x) ∂volume.toSphere.prod volume =
∫ (x : ↑(Metric.sphere 0 1) × ℝ), f (sphericalCylinder x) ∂volume.toSphere.prod volume All goals completed! 🐙] All goals completed! 🐙