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.BasicSchwartz 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 sectionA. 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 ψ ↦ ψ.val⟩lemma 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 x⊢ g 0 = ↑↑ψ 0
rfl All goals completed! 🐙lemma schwartzEquiv_inner :
⟪schwartzEquiv μ f, schwartzEquiv μ g⟫_ℂ = ∫ x, starRingEnd ℂ (f x) * g x ∂μ := by d:ℕμ:Measure (Space d)inst✝¹:μ.HasTemperateGrowthinst✝:μ.IsOpenPosMeasuref:𝓢(Space d, ℂ)g:𝓢(Space d, ℂ)⊢ ⟪(schwartzEquiv μ) f, (schwartzEquiv μ) g⟫_ℂ = ∫ (x : Space d), (starRingEnd ℂ) (f x) * g x ∂μ
apply integral_congr_ae 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 _ hf 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✝ hg 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✝
simp [hf, hg, mul_comm] All goals completed! 🐙omit [μ.IsOpenPosMeasure] in
lemma toTemperedDistribution_schwartzIncl_eq :
toTemperedDistribution (schwartzIncl μ g) = g.toTemperedDistributionCLM (Space d) ℂ μ :=
Lp.toTemperedDistribution_toLp_eq gB. 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 Ω μ)