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.SolidSphere
public import Physlib.SpaceAndTime.Space.Integrals.Basic
public import Mathlib.MeasureTheory.Integral.Prod
Solid cylinder surface in Space 3
The solid cylinder is the closed unit disk in Space 2 extruded along the third coordinate.
It is the solid analogue of the spherical cylinder, in the same way that the solid sphere is the
solid analogue of the spherical shell. Like the solid sphere it is a region of positive ambient
volume, so the measure associated with it is built from the ambient volume of the cross-sectional
disk (the solid-sphere measure in Space 2) extruded along the axis, rather than a pushforward of
a lower-dimensional surface measure. The measure-zero requirement is therefore not applicable here
and is replaced by a statement that the solid cylinder has positive ambient volume.
@[expose] public sectionA. The definition of the solid cylinder surface
The map embedding a cross-sectional disk extruded along the axis into Space 3. The disk is
cut out by the solid-cylinder measure, which is supported on the closed unit disk.
lemma solidCylinder_eq :
solidCylinder = (slice 2).symm ∘ (fun x : Space 2 × ℝ => (x.2, x.1)) := rfllemma solidCylinder_injective : Function.Injective solidCylinder := ⊢ Function.Injective solidCylinder
x:Space 2 × ℝy:Space 2 × ℝh:solidCylinder x = solidCylinder y⊢ x = y
x:Space 2 × ℝy:Space 2 × ℝh:solidCylinder x = solidCylinder yh':(slice 2) (solidCylinder x) = (slice 2) (solidCylinder y)⊢ x = y
x:Space 2 × ℝy:Space 2 × ℝh:solidCylinder x = solidCylinder yh':x.2 = y.2 ∧ x.1 = y.1⊢ x = y
All goals completed! 🐙⊢ Continuous (⇑(slice 2).symm ∘ fun x => (x.2, x.1))
fun_prop All goals completed! 🐙lemma solidCylinder_measurableEmbedding : MeasurableEmbedding solidCylinder :=
Continuous.measurableEmbedding solidCylinder_continuous solidCylinder_injective
@[simp]
lemma norm_solidCylinder (x : Space 2 × ℝ) :
‖solidCylinder x‖ = √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2) := by x:Space 2 × ℝ⊢ ‖solidCylinder x‖ = √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2)
rw [solidCylinder, x:Space 2 × ℝ⊢ ‖(slice 2).symm (x.2, x.1)‖ = √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2) All goals completed! 🐙 norm_slice_symm_eq x:Space 2 × ℝ⊢ √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2) = √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2) All goals completed! 🐙] All goals completed! 🐙B. The measure associated with the solid cylinder
The measure on Space 3 corresponding to integration over a solid cylinder, i.e. the
pushforward of the product of the solid-sphere (closed unit disk) measure on Space 2 with the
line measure along the axis.
def solidCylinderMeasure : Measure (Space 3) :=
MeasureTheory.Measure.map solidCylinder ((solidSphereMeasure 2).prod (volume (α := ℝ)))
instance solidCylinderMeasure_hasTemperateGrowth :
solidCylinderMeasure.HasTemperateGrowth := by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ solidCylinderMeasure.HasTemperateGrowth
rw [solidCylinderMeasure 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map solidCylinder ((solidSphereMeasure 2).prod volume)).HasTemperateGrowth 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map solidCylinder ((solidSphereMeasure 2).prod volume)).HasTemperateGrowth] 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map solidCylinder ((solidSphereMeasure 2).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 solidCylinder ((solidSphereMeasure 2).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 solidCylinder ((solidSphereMeasure 2).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 solidCylinder ((solidSphereMeasure 2).prod volume))
rw [MeasurableEmbedding.integrable_map_iff solidCylinder_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)) ∘ solidCylinder) ((solidSphereMeasure 2).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)) ∘ solidCylinder) ((solidSphereMeasure 2).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)) ∘ solidCylinder) ((solidSphereMeasure 2).prod volume)
change Integrable
(fun x : Space 2 × ℝ => (1 + ‖solidCylinder x‖) ^ (-(n : ℝ)))
((solidSphereMeasure 2).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 + ‖solidCylinder x‖) ^ (-↑n)) ((solidSphereMeasure 2).prod volume)
apply Integrable.mono' (hn.comp_snd (solidSphereMeasure 2)) 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 + ‖solidCylinder x‖) ^ (-↑n)) ((solidSphereMeasure 2).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 : Space 2 × ℝ) ∂(solidSphereMeasure 2).prod volume, ‖(1 + ‖solidCylinder 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 + ‖solidCylinder x‖) ^ (-↑n)) ((solidSphereMeasure 2).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 + ‖solidCylinder x‖) ^ (-↑n)) ((solidSphereMeasure 2).prod volume)
exact ((continuous_const.add solidCylinder_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:Space 2 × ℝ⊢ 1 + ‖solidCylinder x‖ ≠ 0 positivity All goals completed! 🐙 : (1 : ℝ) + ‖solidCylinder 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 : Space 2 × ℝ) ∂(solidSphereMeasure 2).prod volume, ‖(1 + ‖solidCylinder 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:Space 2 × ℝ⊢ ‖(1 + ‖solidCylinder 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:Space 2 × ℝ⊢ |(1 + ‖solidCylinder 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:Space 2 × ℝ⊢ (1 + ‖solidCylinder 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:Space 2 × ℝ⊢ 0 ≤ 1 + ‖solidCylinder 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:Space 2 × ℝ⊢ (1 + ‖solidCylinder 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:Space 2 × ℝ⊢ (1 + ‖solidCylinder 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:Space 2 × ℝ⊢ (1 + ‖solidCylinder 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:Space 2 × ℝ⊢ 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:Space 2 × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + ‖solidCylinder 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:Space 2 × ℝ⊢ -↑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:Space 2 × ℝ⊢ 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:Space 2 × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + ‖solidCylinder x‖ rw [norm_solidCylinder 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:Space 2 × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 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:Space 2 × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 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:Space 2 × ℝ⊢ 1 + ‖x.2‖ ≤ 1 + √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2)
gcongr 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:Space 2 × ℝ⊢ ‖x.2‖ ≤ √(‖x.2‖ ^ 2 + ‖x.1‖ ^ 2)
refine Real.le_sqrt_of_sq_le ?_ 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:Space 2 × ℝ⊢ ‖x.2‖ ^ 2 ≤ ‖x.2‖ ^ 2 + ‖x.1‖ ^ 2
nlinarith [sq_nonneg ‖x.1‖, norm_nonneg x.2] 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:Space 2 × ℝ⊢ -↑n ≤ 0 simp All goals completed! 🐙
instance solidCylinderMeasure_sFinite : SFinite solidCylinderMeasure := by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite solidCylinderMeasure
rw [solidCylinderMeasure 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map solidCylinder ((solidSphereMeasure 2).prod volume)) 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map solidCylinder ((solidSphereMeasure 2).prod volume))] 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map solidCylinder ((solidSphereMeasure 2).prod volume))
exact Measure.instSFiniteMap ((solidSphereMeasure 2).prod (volume (α := ℝ))) solidCylinder All goals completed! 🐙C. The distribution associated with the solid cylinder
The distribution on Space 3 corresponding to integration over a solid cylinder.
One can roughly think of this distribution as taking a test function f to its integral against
a mass, charge or current density spread over a solid cylinder.
def solidCylinderDist : (Space 3) →d[ℝ] ℝ :=
SchwartzMap.integralCLM ℝ solidCylinderMeasure
lemma solidCylinderDist_apply_eq_integral_solidCylinderMeasure (f : 𝓢(Space 3, ℝ)) :
solidCylinderDist f = ∫ x, f x ∂solidCylinderMeasure := by f:𝓢(Space, ℝ)⊢ solidCylinderDist f = ∫ (x : Space), f x ∂solidCylinderMeasure
rw [solidCylinderDist, f:𝓢(Space, ℝ)⊢ (integralCLM ℝ solidCylinderMeasure) f = ∫ (x : Space), f x ∂solidCylinderMeasure All goals completed! 🐙 SchwartzMap.integralCLM_apply f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂solidCylinderMeasure = ∫ (x : Space), f x ∂solidCylinderMeasure All goals completed! 🐙] All goals completed! 🐙
lemma solidCylinderDist_apply_eq_integral_disk_volume (f : 𝓢(Space 3, ℝ)) :
solidCylinderDist f =
∫ x, f (solidCylinder x) ∂((solidSphereMeasure 2).prod (volume (α := ℝ))) := by f:𝓢(Space, ℝ)⊢ solidCylinderDist f = ∫ (x : Space 2 × ℝ), f (solidCylinder x) ∂(solidSphereMeasure 2).prod volume
rw [solidCylinderDist_apply_eq_integral_solidCylinderMeasure, f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂solidCylinderMeasure = ∫ (x : Space 2 × ℝ), f (solidCylinder x) ∂(solidSphereMeasure 2).prod volume All goals completed! 🐙 solidCylinderMeasure, f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂Measure.map solidCylinder ((solidSphereMeasure 2).prod volume) =
∫ (x : Space 2 × ℝ), f (solidCylinder x) ∂(solidSphereMeasure 2).prod volume All goals completed! 🐙
MeasurableEmbedding.integral_map solidCylinder_measurableEmbedding f:𝓢(Space, ℝ)⊢ ∫ (x : Space 2 × ℝ), f (solidCylinder x) ∂(solidSphereMeasure 2).prod volume =
∫ (x : Space 2 × ℝ), f (solidCylinder x) ∂(solidSphereMeasure 2).prod volume All goals completed! 🐙] All goals completed! 🐙D. The solid cylinder has positive ambient volume
lemma solidCylinderMeasure_univ_pos : 0 < solidCylinderMeasure Set.univ := by ⊢ 0 < solidCylinderMeasure Set.univ
rw [solidCylinderMeasure, ⊢ 0 < (Measure.map solidCylinder ((solidSphereMeasure 2).prod volume)) Set.univ ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ Measure.map_apply solidCylinder_measurableEmbedding.measurable
MeasurableSet.univ, ⊢ 0 < ((solidSphereMeasure 2).prod volume) (solidCylinder ⁻¹' Set.univ) ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ Set.preimage_univ, ⊢ 0 < ((solidSphereMeasure 2).prod volume) Set.univ ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ ← Set.univ_prod_univ, ⊢ 0 < ((solidSphereMeasure 2).prod volume) (Set.univ ×ˢ Set.univ) ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ Measure.prod_prod ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ] ⊢ 0 < (solidSphereMeasure 2) Set.univ * volume Set.univ
refine ENNReal.mul_pos (solidSphereMeasure_univ_pos 2).ne' ?_ ⊢ volume Set.univ ≠ 0
simp All goals completed! 🐙