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 PhyslibAlpha.SpaceAndTime.Space.Surfaces.SphericalShell public import Physlib.SpaceAndTime.Space.Translations public import Mathlib.MeasureTheory.Integral.BoundedContinuousFunction

Ring surface in Space 3

@[expose] public section

A. The definition of the ring surface

The embedding of the unit ring (a circle S¹ in Space 2) into Space 3.

def ring : Metric.sphere (0 : Space 2) 1 → Space 3 := fun x => (slice 2).symm (0, Space.sphericalShell 2 x)
lemma ring_eq : ring = (slice 2).symm ∘ (fun x => (0, sphericalShell 2 x)) := rfllemma ring_injective : Function.Injective ring := ⊢ Function.Injective ring x:↑(Metric.sphere 0 1)y:↑(Metric.sphere 0 1)h:ring x = ring y⊢ x = y x:↑(Metric.sphere 0 1)y:↑(Metric.sphere 0 1)h:sphericalShell 2 x = sphericalShell 2 y⊢ x = y All goals completed! 🐙@[fun_prop] lemma ring_continuous : Continuous ring := ⊢ Continuous ring ⊢ Continuous ⇑(slice 2).symm⊢ Continuous fun x => (0, sphericalShell 2 x) ⊢ Continuous ⇑(slice 2).symm All goals completed! 🐙 ⊢ Continuous fun x => (0, sphericalShell 2 x) All goals completed! 🐙lemma ring_measurableEmbedding : MeasurableEmbedding ring := Continuous.measurableEmbedding ring_continuous ring_injective

B. The measure associated with the ring

The measure on Space 3 corresponding to integration around a ring.

def ringMeasure : Measure (Space 3) := MeasureTheory.Measure.map ring (MeasureTheory.Measure.toSphere volume)
𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (Measure.map ring volume.toSphere).HasTemperateGrowth 𝕜: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 ring volume.toSphere) 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ Integrable (fun x => (1 + ‖x‖) ^ (-↑0)) (Measure.map ring volume.toSphere) All goals completed! 🐙instance ringMeasure_prod_volume_hasTemperateGrowth : (ringMeasure.prod (volume (α := Space))).HasTemperateGrowth := 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ (ringMeasure.prod volume).HasTemperateGrowth All goals completed! 🐙𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ SFinite (Measure.map ring volume.toSphere) All goals completed! 🐙𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ F⊢ IsFiniteMeasure (Measure.map ring volume.toSphere) All goals completed! 🐙f:Space → ℝhf:Continuous (f ∘ ring)⊢ Integrable (f ∘ ring) volume.toSpheref:Space → ℝhf:Continuous (f ∘ ring)⊢ MeasurableEmbedding ring f:Space → ℝhf:Continuous (f ∘ ring)⊢ Integrable (f ∘ ring) volume.toSphere f:Space → ℝhf:Continuous (f ∘ ring)f':BoundedContinuousFunction ↑(Metric.sphere 0 1) ℝ := BoundedContinuousFunction.mkOfCompact { toFun := f ∘ ring, continuous_toFun := hf }⊢ Integrable (f ∘ ring) volume.toSphere All goals completed! 🐙 f:Space → ℝhf:Continuous (f ∘ ring)⊢ MeasurableEmbedding ring All goals completed! 🐙n:ℕf:Space → EuclideanSpace ℝ (Fin n)hf:Continuous (f ∘ ring)⊢ Integrable (f ∘ ring) volume.toSpheren:ℕf:Space → EuclideanSpace ℝ (Fin n)hf:Continuous (f ∘ ring)⊢ MeasurableEmbedding ring n:ℕf:Space → EuclideanSpace ℝ (Fin n)hf:Continuous (f ∘ ring)⊢ Integrable (f ∘ ring) volume.toSphere All goals completed! 🐙 n:ℕf:Space → EuclideanSpace ℝ (Fin n)hf:Continuous (f ∘ ring)⊢ MeasurableEmbedding ring All goals completed! 🐙lemma ringMeasure_prod_volume_map : (ringMeasure.prod (volume (α := Space))).map (fun x : Space × Space => (x.1, x.2 + x.1)) = (ringMeasure.prod (volume (α := Space))) := ⊢ Measure.map (fun x => (x.1, x.2 + x.1)) (ringMeasure.prod volume) = ringMeasure.prod volume ⊢ MeasurePreserving id ringMeasure ringMeasure⊢ Measurable (Function.uncurry fun x y => y + x)⊢ ∀ᵐ (a : Space) ∂ringMeasure, Measure.map (fun y => y + a) volume = volume ⊢ MeasurePreserving id ringMeasure ringMeasure All goals completed! 🐙 ⊢ Measurable (Function.uncurry fun x y => y + x) All goals completed! 🐙 ⊢ ∀ᵐ (a : Space) ∂ringMeasure, Measure.map (fun y => y + a) volume = volume x:Space⊢ Measure.map (fun y => y + x) volume = volume All goals completed! 🐙⊢ volume.toSphere (ring ⁻¹' Set.univ) = ENNReal.ofReal (2 * π)⊢ Measurable ring⊢ MeasurableSet Set.univ ⊢ Measurable ring⊢ MeasurableSet Set.univ ⊢ Measurable ring All goals completed! 🐙 ⊢ MeasurableSet Set.univ All goals completed! 🐙

C. The distribution associated with the ring

The distribution on Space 3 corresponding to integration around a ring.

def ringDist : (Space 3) →d[ℝ] ℝ := SchwartzMap.integralCLM ℝ ringMeasure
All goals completed! 🐙f:𝓢(Space, ℝ)⊢ ∫ (x : Space), f x ∂ringMeasure = ∫ (z : Space), (diracDelta ℝ z) f ∂ringMeasure All goals completed! 🐙