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.TemperedDistribution
public import Mathlib.Analysis.InnerProductSpace.Dual
public import Physlib.SpaceAndTime.Space.Module
Hilbert spaces for quantum mechanics on Space d
i. Overview
The Hilbert spaces appropriate for doing quantum mechanics on Space d are the $L^2$-spaces
SpaceDHilbertSpace d μ := Lp ℂ 2 μ, where μ is some measure on Space d.
Elements of SpaceDHilbertSpace d μ are equivalence classes of functions Space d → ℂ which are
square-integrable with respect to μ, i.e. ∫ x, ‖f x‖ ^ 2 ∂μ is finite, and where f and g are
in the same equivalence class if they are μ-a.e. equal.
The ability of a function to be interpreted as an element of SpaceDHilbertSpace d μ is captured
by the property MemHS. If one has hf : MemHS f μ for a function f : Space d → ℂ this means
that f is μ-a.e. strongly measurable and square-integrable; mk hf constructs the corresponding
equivalence class of f in SpaceDHilbertSpace d μ.
Given SpaceDHilbertSpace d μ and Ω : Set (Space d), the Hilbert space
SpaceDHilbertSpaceOn Ω μ ≔ SpaceDHilbertSpace d (μ.restrict Ω) may be interpreted as the
sub-Hilbert space consisting of those vectors with domain contained in Ω.
The reason is that for each ψ in SpaceDHilbertSpaceOn Ω μ we have
ψ =ᵐ[μ.restrict Ω] Ω.indicator ψ, namely the equivalence class of ψ always
contains a representative which vanishes on the complement of Ω.
The linear isometry restrictIncl Ω μ describes this sub-Hilbert space relationship
by mapping each ψ to this special representative in its equivalence class.
Similarly, we may project SpaceDHilbertSpace d μ onto SpaceDHilbertSpaceOn Ω μ by enlarging the
equivalence classes, essentially dropping information about the functions on the complement of Ω.
ii. Key results
SpaceDHilbertSpace d μ : The $L^2$-space on Space d with respect to the measure μ.
toBra : The linear equivalence between the Hilbert space and its dual. This is the map which
sends each ket to its corresponding bra and vice versa.
MemHS f μ : The proposition capturing exactly when a function f : Space d → ℂ can be lifted
to an element of the Hilbert space.
SpaceDHilbertSpaceOn Ω μ : An abbreviation for the Hilbert space
SpaceDHilbertSpace d (μ.restrict Ω) appropriate for describing the $L^2$-space of complex
functions on a subset of Space d.
subspaceProjection : The projection of SpaceDHilbertSpace d μ onto SpaceDHilbertSpaceOn Ω μ.
subspaceIncl : The linear isometry including SpaceDHilbertSpaceOn Ω μ
as a sub-Hilbert space of SpaceDHilbertspace d μ.
iii. Table of contents
A. SpaceDHilbertSpace
A.1. Dual space
A.2. Membership
A.3. Construction of elements
A.4. Coersions
A.5. Misc.
B. SpaceDHilbertSpaceOn
iv. References
@[expose] public sectionA. SpaceDHilbertSpace
The L²-space of μ-a.e. equal equivalence classes of functions f : Space d → ℂ
for which ∫ x, ‖f x‖² ∂μ is finite.
abbrev SpaceDHilbertSpace (d : ℕ) (μ : Measure (Space d) := volume) := Lp ℂ 2 μA.1. Dual space
The anti-linear equivalence between SpaceDHilbertSpace d μ and its dual.
This is the map that takes a ket to its corresponding bra and vice versa.
def toBra : SpaceDHilbertSpace d μ ≃ₛₗ[starRingEnd ℂ] StrongDual ℂ (SpaceDHilbertSpace d μ) :=
toDual ℂ (SpaceDHilbertSpace d μ)@[simp]
lemma toBra_apply_apply : toBra ψ φ = ⟪ψ, φ⟫_ℂ := rfl@[simp]
lemma toBra_symm_apply (f : StrongDual ℂ (SpaceDHilbertSpace d μ)) : ⟪toBra.symm f, ψ⟫_ℂ = f ψ :=
toDual_symm_applyA.2. Membership
For a function f : Space d → ℂ, the proposition MemHS f μ means that the function f
can be lifted to an element of the Hilbert space.
Elements of the Hilbert space satisfy the property MemHS.
lemma memHS_coe : MemHS ψ μ := Lp.memLp ψ
A function f : Space d → ℂ satisfies MemHS f μ if and only if
it is μ-a.e. strongly measurable and ∫ x, ‖f x‖ ^ 2 ∂μ is finite.
lemma memHS_iff : MemHS f μ ↔ AEStronglyMeasurable f μ ∧ Integrable (fun x ↦ ‖f x‖ ^ 2) μ :=
and_congr_right fun h ↦ (and_iff_right h).symm.trans (memLp_two_iff_integrable_sq_norm h)lemma mem_iff {f : Space d →ₘ[μ] ℂ} : f ∈ SpaceDHilbertSpace d μ ↔ MemHS f μ := Lp.mem_Lp_iff_memLp@[simp]
lemma MemHS.zero : MemHS (0 : Space d → ℂ) μ := MemLp.zerolemma MemHS.neg (hf : MemHS f μ) : MemHS (-f) μ := MemLp.neg hflemma memHS_neg_iff : MemHS (-f) μ ↔ MemHS f μ := memLp_neg_ifflemma MemHS.add (hf : MemHS f μ) (hg : MemHS g μ) : MemHS (f + g) μ := MemLp.add hf hglemma MemHS.sub (hf : MemHS f μ) (hg : MemHS g μ) : MemHS (f - g) μ := MemLp.sub hf hglemma MemHS.const_smul (c : ℂ) (hf : MemHS f μ) : MemHS (c • f) μ := MemLp.const_smul hf clemma memHS_const_smul_iff {c : ℂ} (hc : c ≠ 0) : MemHS (c • f) μ ↔ MemHS f μ :=
⟨fun h ↦ inv_smul_smul₀ hc f ▸ h.const_smul c⁻¹, MemHS.const_smul c⟩lemma MemHS.ae_eq (hfg : f =ᵐ[μ] g) (hf : MemHS f μ) : MemHS g μ := MemLp.ae_eq hfg hflemma memHS_congr_ae (hfg : f =ᵐ[μ] g) : MemHS f μ ↔ MemHS g μ := memLp_congr_ae hfglemma MemHS.congr_norm
(hf : MemHS f μ) (hg : AEStronglyMeasurable g μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) : MemHS g μ :=
MemLp.congr_norm hf hg hfglemma memHS_congr_norm (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) : MemHS f μ ↔ MemHS g μ :=
memLp_congr_norm hf hg hfglemma MemHS.mono (hf : MemHS f μ) (hg : AEStronglyMeasurable g μ) (hfg : ∀ᵐ x ∂μ, ‖g x‖ ≤ ‖f x‖) :
MemHS g μ :=
MemLp.mono hf hg hfglemma MemHS.mono_measure (h : μ' ≤ μ) (hf : MemHS f μ) : MemHS f μ' := MemLp.mono_measure h hflemma MemHS.restrict (Ω : Set (Space d)) (hf : MemHS f μ) : MemHS f (μ.restrict Ω) :=
hf.mono_measure restrict_le_selflemma MemHS.mono_restrict {Ω Ω' : Set (Space d)} (h : Ω' ≤ Ω) (hf : MemHS f (μ.restrict Ω)) :
MemHS f (μ.restrict Ω') :=
hf.mono_measure (μ.restrict_mono_set h)lemma MemHS.indicator {Ω : Set (Space d)} (hΩ : MeasurableSet Ω) (hf : MemHS f μ) :
MemHS (Ω.indicator f) μ :=
MemLp.indicator hΩ hf
If f is a member of the Hilbert space with measure restricted to Ω then the representative
Ω.indicator f which vanishes outside Ω is a member of SpaceDHilbertSpace d μ.
lemma MemHS.indicator_of_restrict
{Ω : Set (Space d)} (hΩ : MeasurableSet Ω) (hf : MemHS f (μ.restrict Ω)) :
MemHS (Ω.indicator f) μ := d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)⊢ MemHS (Ω.indicator f) μ
d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)⊢ Integrable (fun x => ‖Ω.indicator f x‖ ^ 2) μ
d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)⊢ (Ω.indicator fun x => ‖f x‖ ^ 2) =ᵐ[μ] fun x => ‖Ω.indicator f x‖ ^ 2
d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)x:Space d⊢ Ω.indicator (fun x => ‖f x‖ ^ 2) x = ‖Ω.indicator f x‖ ^ 2
d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)x:Space dh✝:x ∈ Ω⊢ Ω.indicator (fun x => ‖f x‖ ^ 2) x = ‖Ω.indicator f x‖ ^ 2d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)x:Space dh✝:x ∉ Ω⊢ Ω.indicator (fun x => ‖f x‖ ^ 2) x = ‖Ω.indicator f x‖ ^ 2 d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)x:Space dh✝:x ∈ Ω⊢ Ω.indicator (fun x => ‖f x‖ ^ 2) x = ‖Ω.indicator f x‖ ^ 2d:ℕμ:Measure (Space d)f:Space d → ℂΩ:Set (Space d)hΩ:MeasurableSet Ωhf:MemHS f (μ.restrict Ω)x:Space dh✝:x ∉ Ω⊢ Ω.indicator (fun x => ‖f x‖ ^ 2) x = ‖Ω.indicator f x‖ ^ 2 All goals completed! 🐙A.3. Construction of elements
Given a function f : Space d → ℂ such that MemHS f μ is true via hf,
mk hf is the element of the Hilbert space defined by f.
def mk : SpaceDHilbertSpace d μ :=
⟨AEEqFun.mk f hf.1, mem_iff.mpr <| hf.ae_eq (AEEqFun.coeFn_mk f hf.1).symm⟩@[simp]
lemma mk_neg : mk hf.neg = -mk hf := rfl@[simp]
lemma mk_add : mk (hf.add hg) = mk hf + mk hg := rfl@[simp]
lemma mk_sub : mk (hf.sub hg) = mk hf - mk hg := rfl@[simp]
lemma mk_const_smul (c : ℂ) : mk (hf.const_smul c) = c • mk hf := rfllemma mk_eq_iff : mk hf = mk hg ↔ f =ᵐ[μ] g := d:ℕμ:Measure (Space d)f:Space d → ℂg:Space d → ℂhf:MemHS f μhg:MemHS g μ⊢ mk hf = mk hg ↔ f =ᵐ[μ] g All goals completed! 🐙lemma mk_surjective : ∃ (f : Space d → ℂ) (hf : MemHS f μ), mk hf = ψ :=
⟨ψ, memHS_coe ψ, d:ℕμ:Measure (Space d)ψ:↥(SpaceDHilbertSpace d μ)⊢ mk ⋯ = ψ All goals completed! 🐙⟩lemma coeFn_mk : mk hf =ᵐ[μ] f := AEEqFun.coeFn_mk f hf.1lemma inner_mk_mk : ⟪mk hf, mk hg⟫_ℂ = ∫ x, starRingEnd ℂ (f x) * g x ∂μ := d:ℕμ:Measure (Space d)f:Space d → ℂg:Space d → ℂhf:MemHS f μhg:MemHS g μ⊢ ⟪mk hf, mk hg⟫_ℂ = ∫ (x : Space d), (starRingEnd ℂ) (f x) * g x ∂μ
d:ℕμ:Measure (Space d)f:Space d → ℂg:Space d → ℂhf:MemHS f μhg:MemHS g μ⊢ (fun a => ⟪↑↑(mk hf) a, ↑↑(mk hg) a⟫_ℂ) =ᵐ[μ] fun a => (starRingEnd ℂ) (f a) * g a
d:ℕμ:Measure (Space d)f:Space d → ℂg:Space d → ℂhf:MemHS f μhg:MemHS g μ⊢ ∀ (a : Space d), ↑↑(mk hf) a = f a → ↑↑(mk hg) a = g a → ⟪↑↑(mk hf) a, ↑↑(mk hg) a⟫_ℂ = (starRingEnd ℂ) (f a) * g a
All goals completed! 🐙A.4. Coersions
lemma coeFn_zero : ⇑(0 : SpaceDHilbertSpace d μ) =ᵐ[μ] 0 := Lp.coeFn_zero _ _ _lemma coeFn_neg : ⇑(-ψ) =ᵐ[μ] -ψ := Lp.coeFn_neg _lemma coeFn_add : ⇑(ψ.val + φ.val) =ᵐ[μ] ψ + φ := Lp.coeFn_add _ _lemma coeFn_sub : ⇑(ψ.val - φ.val) =ᵐ[μ] ψ - φ := Lp.coeFn_sub _ _lemma coeFn_smul : ⇑(c • ψ) =ᵐ[μ] c • ψ := Lp.coeFn_smul _ _A.5. Misc.
The tempered distribution associated to a state.
abbrev toTemperedDistribution [μ.HasTemperateGrowth]
(ψ : SpaceDHilbertSpace d μ) : 𝓢'(Space d, ℂ) := Lp.toTemperedDistribution ψThe embedding of states into tempered distributions as a continuous linear map.
abbrev toTemperedDistributionCLM (d : ℕ) (μ : Measure (Space d) := volume)
[μ.HasTemperateGrowth] : SpaceDHilbertSpace d μ →L[ℂ] 𝓢'(Space d, ℂ) :=
Lp.toTemperedDistributionCLM ℂ μ 2B. SpaceDHilbertSpaceOn
TODO "Upgrade subspaceProjection to a ContinuousLinearMap when Lp.LpToLpOfMeasureLeSMul
becomes available."
The L²-space SpaceDHilbertSpace d (μ.restrict Ω).
Elements are equivalence classes of functions which agree μ-a.e. on Ω and which have
∫ x in Ω, ‖f x‖ ^ 2 ∂μ finite.
abbrev SpaceDHilbertSpaceOn {d : ℕ} (Ω : Set (Space d)) (μ : Measure (Space d) := volume) :=
SpaceDHilbertSpace d (μ.restrict Ω)
The linear map projecting SpaceDHilbertSpace d μ onto SpaceDHilbertSpaceOn Ω μ.
d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpace d μ)⊢ ↑↑(c • ψ) =ᵐ[μ.restrict Ω] (RingHom.id ℂ) c • ↑↑ψ
exact (coeFn_smul c ψ).filter_mono ae_restrict_le All goals completed! 🐙lemma subspaceProjection_norm_le : ‖subspaceProjection Ω μ ψ‖ ≤ ‖ψ‖ := by d:ℕΩ:Set (Space d)μ:Measure (Space d)ψ:↥(SpaceDHilbertSpace d μ)⊢ ‖(subspaceProjection Ω μ) ψ‖ ≤ ‖ψ‖
refine ENNReal.toReal_mono (Lp.eLpNorm_ne_top ψ) ?_ d:ℕΩ:Set (Space d)μ:Measure (Space d)ψ:↥(SpaceDHilbertSpace d μ)⊢ eLpNorm (↑↑((subspaceProjection Ω μ) ψ)) 2 (μ.restrict Ω) ≤ eLpNorm (↑↑ψ) 2 μ
refine (eLpNorm_congr_ae (subspaceProjection_apply Ω ψ)).trans_le ?_ d:ℕΩ:Set (Space d)μ:Measure (Space d)ψ:↥(SpaceDHilbertSpace d μ)⊢ eLpNorm (↑↑ψ) 2 (μ.restrict Ω) ≤ eLpNorm (↑↑ψ) 2 μ
exact eLpNorm_mono_measure ψ restrict_le_self All goals completed! 🐙
The linear isometry including SpaceDHilbertSpaceOn Ω μ as a sub-Hilbert space of
SpaceDHilbertSpace d μ, defined by mapping ψ to Ω.indicator ψ.
def subspaceIncl : SpaceDHilbertSpaceOn Ω μ →ₗᵢ[ℂ] SpaceDHilbertSpace d μ where
toFun ψ := mk ((memHS_coe ψ).indicator_of_restrict hΩ)
map_add' ψ φ := by d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ SpaceDHilbertSpace.mk ⋯ = SpaceDHilbertSpace.mk ⋯ + SpaceDHilbertSpace.mk ⋯
rw [← mk_add, d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ SpaceDHilbertSpace.mk ⋯ = SpaceDHilbertSpace.mk ⋯ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(ψ + φ) =ᵐ[μ] Ω.indicator (↑↑ψ + ↑↑φ) mk_eq_iff, d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(ψ + φ) =ᵐ[μ] Ω.indicator ↑↑ψ + Ω.indicator ↑↑φ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(ψ + φ) =ᵐ[μ] Ω.indicator (↑↑ψ + ↑↑φ) ← indicator_add' d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(ψ + φ) =ᵐ[μ] Ω.indicator (↑↑ψ + ↑↑φ) d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(ψ + φ) =ᵐ[μ] Ω.indicator (↑↑ψ + ↑↑φ)] d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ✝:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(ψ + φ) =ᵐ[μ] Ω.indicator (↑↑ψ + ↑↑φ)
exact (ae_eq_restrict_iff_indicator_ae_eq hΩ).mp (coeFn_add ψ φ) All goals completed! 🐙
map_smul' c ψ := by d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ SpaceDHilbertSpace.mk ⋯ = (RingHom.id ℂ) c • SpaceDHilbertSpace.mk ⋯
rw [← mk_const_smul, d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ SpaceDHilbertSpace.mk ⋯ = SpaceDHilbertSpace.mk ⋯ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] Ω.indicator fun x => (RingHom.id ℂ) c • ↑↑ψ x mk_eq_iff, d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] (RingHom.id ℂ) c • Ω.indicator ↑↑ψ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] Ω.indicator fun x => (RingHom.id ℂ) c • ↑↑ψ x Pi.smul_def, d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] fun i => (RingHom.id ℂ) c • Ω.indicator (↑↑ψ) i d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] Ω.indicator fun x => (RingHom.id ℂ) c • ↑↑ψ x ← indicator_const_smul d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] Ω.indicator fun x => (RingHom.id ℂ) c • ↑↑ψ x d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] Ω.indicator fun x => (RingHom.id ℂ) c • ↑↑ψ x] d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)c:ℂψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ Ω.indicator ↑↑(c • ψ) =ᵐ[μ] Ω.indicator fun x => (RingHom.id ℂ) c • ↑↑ψ x
exact (ae_eq_restrict_iff_indicator_ae_eq hΩ).mp (coeFn_smul c ψ) All goals completed! 🐙
norm_map' ψ := by d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ✝:↥(SpaceDHilbertSpace d μ)φ:↥(SpaceDHilbertSpaceOn Ω μ)ψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ ‖{ toFun := fun ψ => SpaceDHilbertSpace.mk ⋯, map_add' := ⋯, map_smul' := ⋯ } ψ‖ = ‖ψ‖
calc
_ = (eLpNorm (mk ((memHS_coe ψ).indicator_of_restrict hΩ)) 2 μ).toReal := rfl
_ = (eLpNorm (Ω.indicator ψ) 2 μ).toReal := congrArg _ (eLpNorm_congr_ae (coeFn_mk _))
_ = ‖ψ‖ := congrArg _ (eLpNorm_indicator_eq_eLpNorm_restrict hΩ)
lemma leftInverse_subspaceProjection :
LeftInverse (subspaceProjection Ω μ) (subspaceIncl hΩ μ) := by d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)⊢ LeftInverse ⇑(subspaceProjection Ω μ) ⇑(subspaceIncl hΩ μ)
intro ψ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ (subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ) = ψ
apply ext_iff.mpr d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)⊢ ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ.restrict Ω] ↑↑ψ
have h := subspaceProjection_apply Ω (subspaceIncl hΩ μ ψ) d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ.restrict Ω] ↑↑((subspaceIncl hΩ μ) ψ)⊢ ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ.restrict Ω] ↑↑ψ
rw [ae_eq_restrict_iff_indicator_ae_eq hΩ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)⊢ Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑ψ d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)⊢ Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑ψ] at * d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)⊢ Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑ψ
filter_upwards [subspaceIncl_apply hΩ ψ, h] with x d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)x:Space d⊢ ↑↑((subspaceIncl hΩ μ) ψ) x = Ω.indicator (↑↑ψ) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑((subspaceIncl hΩ μ) ψ)) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑ψ) x
by_cases x ∈ Ω pos d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)x:Space dh✝:x ∈ Ω⊢ ↑↑((subspaceIncl hΩ μ) ψ) x = Ω.indicator (↑↑ψ) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑((subspaceIncl hΩ μ) ψ)) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑ψ) xneg d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)x:Space dh✝:x ∉ Ω⊢ ↑↑((subspaceIncl hΩ μ) ψ) x = Ω.indicator (↑↑ψ) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑((subspaceIncl hΩ μ) ψ)) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑ψ) x <;> pos d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)x:Space dh✝:x ∈ Ω⊢ ↑↑((subspaceIncl hΩ μ) ψ) x = Ω.indicator (↑↑ψ) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑((subspaceIncl hΩ μ) ψ)) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑ψ) xneg d:ℕΩ:Set (Space d)hΩ:MeasurableSet Ωμ:Measure (Space d)ψ:↥(SpaceDHilbertSpaceOn Ω μ)h:Ω.indicator ↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ)) =ᵐ[μ] Ω.indicator ↑↑((subspaceIncl hΩ μ) ψ)x:Space dh✝:x ∉ Ω⊢ ↑↑((subspaceIncl hΩ μ) ψ) x = Ω.indicator (↑↑ψ) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑((subspaceIncl hΩ μ) ψ)) x →
Ω.indicator (↑↑((subspaceProjection Ω μ) ((subspaceIncl hΩ μ) ψ))) x = Ω.indicator (↑↑ψ) x simp_all All goals completed! 🐙@[simp]
lemma subspaceProjection_subspaceIncl_apply : subspaceProjection Ω μ (subspaceIncl hΩ μ φ) = φ :=
leftInverse_subspaceProjection hΩ μ φinclude hΩ in
lemma subspaceProjection_surjective : Surjective (subspaceProjection Ω μ) :=
(leftInverse_subspaceProjection hΩ μ).surjective