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 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 yx = y x:(Metric.sphere 0 1)y:(Metric.sphere 0 1)h:sphericalShell 2 x = sphericalShell 2 yx = y All goals completed! 🐙@[fun_prop] lemma ring_continuous : Continuous ring := Continuous ring Continuous (slice 2).symmContinuous 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 FIntegrable (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 FSFinite (Measure.map ring volume.toSphere) All goals completed! 🐙𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace Einst✝:NormedSpace FIsFiniteMeasure (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 ringMeasureMeasurable (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:SpaceMeasure.map (fun y => y + x) volume = volume All goals completed! 🐙volume.toSphere (ring ⁻¹' Set.univ) = ENNReal.ofReal (2 * π)Measurable ringMeasurableSet Set.univ Measurable ringMeasurableSet 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! 🐙