Imports
/- Copyright (c) 2026 Gregory J. Loges. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Adam Bornemann, Gregory J. Loges -/ module public import Mathlib.Analysis.Distribution.SchwartzSpace.Basic public import Physlib.QuantumMechanics.HilbertSpaces.SpaceD.Basic

Schwartz submodule

i. Overview

In this module we define the Schwartz submodule of SpaceDHilbertSpace d μ. SchwartzSubmodule d μ consists of the μ-a.e. equal equivalence classes of Schwartz maps on Space d.

This is an import subspace of the Hilbert space. For one, the Fourier transform maps the Schwartz submodule into itself. It also is a convenient dense domain on which to define derivative operators.

ii. Key results

    SchwartzSubmodule d μ: Submodule of SpaceDHilbertSpace d μ consisting of the L² equivalence classes of Schwartz maps 𝓢(Space d, ℂ).

    SchwartzSubmoduleOn Ω μ: The projection of SchwartzSubmodule d μ onto SpaceDHilbertSpaceOn Ω μ.

iii. Table of contents

    A. SchwartzSubmodule

      A.1. Coercions

      A.2. Misc.

    B. SchwartzSubmoduleOn

iv. References

@[expose] public section

A. SchwartzSubmodule

The continuous linear map including Schwartz maps into SpaceDHilbertSpace d μ.

def schwartzIncl {d : } (μ : Measure (Space d)) [μ.HasTemperateGrowth] : 𝓢(Space d, ) →L[] SpaceDHilbertSpace d μ := toLpCLM 2 μ

The submodule of SpaceDHilbertSpace d corresponding to Schwartz maps.

abbrev SchwartzSubmodule (d : ) (μ : Measure (Space d) := volume) [μ.HasTemperateGrowth] : Submodule (SpaceDHilbertSpace d μ) := (schwartzIncl μ).range

The linear equivalence between the Schwartz maps 𝓢(Space d, ℂ) and the Schwartz submodule of SpaceDHilbertSpace d μ.

def schwartzEquiv {d : } (μ : Measure (Space d)) [μ.HasTemperateGrowth] [μ.IsOpenPosMeasure] : 𝓢(Space d, ) ≃ₗ[] SchwartzSubmodule d μ := LinearEquiv.ofInjective (schwartzIncl μ).toLinearMap (injective_toLp 2 μ)

A.1. Coercions

instance : CoeFun (SchwartzSubmodule d μ) fun _ Space d := fun ψ ψ.vallemma schwartzEquiv_apply_coe : (schwartzEquiv μ f) = schwartzIncl μ f := d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasuref:𝓢(Space d, )((schwartzEquiv μ) f) = (schwartzIncl μ) f All goals completed! 🐙lemma schwartzEquiv_coe_ae : schwartzEquiv μ f =ᵐ[μ] f := coeFn_toLp f 2 μlemma schwartzEquiv_symm_coe_ae : (schwartzEquiv μ).symm ψ =ᵐ[μ] ψ := d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasureψ:(SchwartzSubmodule d μ)((schwartzEquiv μ).symm ψ) =ᵐ[μ] ψ nth_rw 2 [d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasureψ:(SchwartzSubmodule d μ)((schwartzEquiv μ).symm ψ) =ᵐ[μ] ((schwartzEquiv μ) ((schwartzEquiv μ).symm ψ))d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasureψ:(SchwartzSubmodule d μ)((schwartzEquiv μ).symm ψ) =ᵐ[μ] ((schwartzEquiv μ) ((schwartzEquiv μ).symm ψ)) All goals completed! 🐙lemma schwartzEquiv_ae_eq (h : schwartzEquiv μ f =ᵐ[μ] schwartzEquiv μ g) : f = g := (EmbeddingLike.apply_eq_iff_eq _).mp (SetLike.coe_eq_coe.mp (ext_iff.mpr h))

A.2. Misc.

μ:Measure (Space 0)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasureψ:(SpaceDHilbertSpace 0 μ)g:𝓢(Space 0, ) := { toFun := fun x => ψ 0, smooth' := , decay' := }x:Space 0hg:((schwartzEquiv μ) g) x = g xg 0 = ψ 0 All goals completed! 🐙lemma schwartzEquiv_inner : schwartzEquiv μ f, schwartzEquiv μ g⟫_ = x, starRingEnd (f x) * g x μ := d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasuref:𝓢(Space d, )g:𝓢(Space d, )(schwartzEquiv μ) f, (schwartzEquiv μ) g⟫_ = (x : Space d), (starRingEnd ) (f x) * g x μ d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasuref:𝓢(Space d, )g:𝓢(Space d, )(fun a => ((SchwartzSubmodule d μ).subtype ((schwartzEquiv μ) f)) a, ((SchwartzSubmodule d μ).subtype ((schwartzEquiv μ) g)) a⟫_) =ᵐ[μ] fun a => (starRingEnd ) (f a) * g a filter_upwards [schwartzEquiv_coe_ae f, schwartzEquiv_coe_ae g] with _ d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasuref:𝓢(Space d, )g:𝓢(Space d, )a✝:Space dhf:((schwartzEquiv μ) f) a✝ = f a✝((schwartzEquiv μ) g) a✝ = g a✝ ((SchwartzSubmodule d μ).subtype ((schwartzEquiv μ) f)) a✝, ((SchwartzSubmodule d μ).subtype ((schwartzEquiv μ) g)) a✝⟫_ = (starRingEnd ) (f a✝) * g a✝ d:μ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasuref:𝓢(Space d, )g:𝓢(Space d, )a✝:Space dhf:((schwartzEquiv μ) f) a✝ = f a✝hg:((schwartzEquiv μ) g) a✝ = g a✝((SchwartzSubmodule d μ).subtype ((schwartzEquiv μ) f)) a✝, ((SchwartzSubmodule d μ).subtype ((schwartzEquiv μ) g)) a✝⟫_ = (starRingEnd ) (f a✝) * g a✝ All goals completed! 🐙omit [μ.IsOpenPosMeasure] in lemma toTemperedDistribution_schwartzIncl_eq : toTemperedDistribution (schwartzIncl μ g) = g.toTemperedDistributionCLM (Space d) μ := Lp.toTemperedDistribution_toLp_eq g

B. SchwartzSubmoduleOn

The projection of SchwartzSubmodule d μ onto SpaceDHilbertSpaceOn Ω μ.

abbrev SchwartzSubmoduleOn {d : } (Ω : Set (Space d)) (μ : Measure (Space d) := volume) [μ.HasTemperateGrowth] : Submodule (SpaceDHilbertSpaceOn Ω μ) := (SchwartzSubmodule d μ).map (subspaceProjection Ω μ)