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.SphericalShell public import Physlib.SpaceAndTime.Space.Integrals.Basic public import Mathlib.MeasureTheory.Measure.Lebesgue.EqHaar

Line surfaces in Space d

@[expose] public section

A. The definition of the line surface

The coordinate line embedded in Space d.

def line (d : ) [NeZero d] : Space d := fun r => r basis (0 : Fin d)
lemma line_eq_smul_basis (d : ) [NeZero d] : line d = fun r => r basis (0 : Fin d) := rfllemma line_injective (d : ) [NeZero d] : Function.Injective (line d) := d:inst✝:NeZero dFunction.Injective (line d) d:inst✝:NeZero dx:y:h:line d x = line d yx = y d:inst✝:NeZero dx:y:h:line d x = line d yh0:(line d x).val 0 = (line d y).val 0x = y All goals completed! 🐙d:inst✝:NeZero dContinuous fun r => r basis 0 All goals completed! 🐙lemma line_measurableEmbedding (d : ) [NeZero d] : MeasurableEmbedding (line d) := Continuous.measurableEmbedding (line_continuous d) (line_injective d)d:inst✝:NeZero dr:r * basis 0 = r All goals completed! 🐙

B. The measure associated with the line

The measure on Space d corresponding to integration along a coordinate line.

def lineMeasure (d : ) [NeZero d] : Measure (Space d) := MeasureTheory.Measure.map (line d) volume
𝕜:TypeE:TypeF:TypeF':Typeinst✝⁶:RCLike 𝕜inst✝⁵:NormedAddCommGroup Einst✝⁴:NormedAddCommGroup Finst✝³:NormedAddCommGroup F'inst✝²:NormedSpace Einst✝¹:NormedSpace Fd:inst✝:NeZero dr:hr:Integrable (fun x => (1 + x) ^ (-r)) volumeIntegrable ((fun x => (1 + x) ^ (-r)) line d) volume𝕜:TypeE:TypeF:TypeF':Typeinst✝⁶:RCLike 𝕜inst✝⁵:NormedAddCommGroup Einst✝⁴:NormedAddCommGroup Finst✝³:NormedAddCommGroup F'inst✝²:NormedSpace Einst✝¹:NormedSpace Fd:inst✝:NeZero dr:hr:Integrable (fun x => (1 + x) ^ (-r)) volumeMeasurableEmbedding (line d) 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁶:RCLike 𝕜inst✝⁵:NormedAddCommGroup Einst✝⁴:NormedAddCommGroup Finst✝³:NormedAddCommGroup F'inst✝²:NormedSpace Einst✝¹:NormedSpace Fd:inst✝:NeZero dr:hr:Integrable (fun x => (1 + x) ^ (-r)) volumeIntegrable ((fun x => (1 + x) ^ (-r)) line d) volume 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁶:RCLike 𝕜inst✝⁵:NormedAddCommGroup Einst✝⁴:NormedAddCommGroup Finst✝³:NormedAddCommGroup F'inst✝²:NormedSpace Einst✝¹:NormedSpace Fd:inst✝:NeZero dr:hr:Integrable (fun x => (1 + x) ^ (-r)) volume(fun x => (1 + x) ^ (-r)) line d = fun x => (1 + x) ^ (-r) 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁶:RCLike 𝕜inst✝⁵:NormedAddCommGroup Einst✝⁴:NormedAddCommGroup Finst✝³:NormedAddCommGroup F'inst✝²:NormedSpace Einst✝¹:NormedSpace Fd:inst✝:NeZero dr:hr:Integrable (fun x => (1 + x) ^ (-r)) volumex:((fun x => (1 + x) ^ (-r)) line d) x = (1 + x) ^ (-r) All goals completed! 🐙 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁶:RCLike 𝕜inst✝⁵:NormedAddCommGroup Einst✝⁴:NormedAddCommGroup Finst✝³:NormedAddCommGroup F'inst✝²:NormedSpace Einst✝¹:NormedSpace Fd:inst✝:NeZero dr:hr:Integrable (fun x => (1 + x) ^ (-r)) volumeMeasurableEmbedding (line d) All goals completed! 🐙

C. The distribution associated with the line

The distribution on Space d corresponding to integration along a coordinate line. One can roughly think of this distribution as taking a test function f to its integral against a mass, charge or current density concentrated on a line.

def lineDist (d : ) [NeZero d] : (Space d) →d[] := SchwartzMap.integralCLM (lineMeasure d)
All goals completed! 🐙All goals completed! 🐙

D. The line has ambient volume zero

The linear subspace spanned by the coordinate line in Space d.

def lineSubmodule (d : ) [NeZero d] : Submodule (Space d) := basis (0 : Fin d)
d:inst✝:NeZero dr:(fun r => r basis 0) r lineSubmodule d All goals completed! 🐙lemma range_line_subset_lineSubmodule (d : ) [NeZero d] : Set.range (line d) (lineSubmodule d : Set (Space d)) := d:inst✝:NeZero dSet.range (line d) (lineSubmodule d) d:inst✝:NeZero dr:line d r (lineSubmodule d) All goals completed! 🐙d:inst✝:NeZero dhd:2 dhtop:lineSubmodule d = hbasis:basis 1 lineSubmodule dc:hc:c basis 0 = basis 1hcoord:(c basis 0).val 1 = (basis 1).val 1hd1:d 1False All goals completed! 🐙d:inst✝:NeZero dhd:2 dbasis.toBasis.addHaar (lineSubmodule d) = 0 All goals completed! 🐙