Imports
/-
Copyright (c) 2025 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 Physlib.SpaceAndTime.Space.IsDistBounded
public import Physlib.SpaceAndTime.Space.Derivatives.Basic
public import Mathlib.MeasureTheory.SpecificCodomains.WithLp
public import Physlib.Mathematics.Distribution.BasicDistributions from functions on space
i. Overview
In this module we define distributions on space constructed from functions
f : Space d → F satisfying the condition IsDistBounded f.
This gives a convenient way to construct distributions from functions, without needing to reference the underlying Schwartz maps.
ii. Key results
distOfFunction f hf : The distribution on space constructed from the function
f : Space d → F satisfying the IsDistBounded f condition.
iii. Table of contents
A. Definition of a distribution from a function
B. Linarity properties of getting distributions from functions
C. Properties related to inner products
D. Derivatives
E. Components
iv. References
@[expose] public sectionA. Definition of a distribution from a function
A distribution Space d →d[ℝ] F from a function
f : Space d → F which satisfies the IsDistBounded f condition.
All goals completed! 🐙lemma distOfFunction_apply {d : ℕ} (f : Space d → F)
(hf : IsDistBounded f) (η : 𝓢(Space d, ℝ)) :
distOfFunction f hf η = ∫ x, η x • f x := rflB. Linarity properties of getting distributions from functions
@[simp]
lemma distOfFunction_zero_eq_zero {d : ℕ} :
distOfFunction (fun _ : Space d => (0 : F)) (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fd:ℕ⊢ IsDistBounded fun x => 0 fun_prop All goals completed! 🐙) = 0 := by F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕ⊢ distOfFunction (fun x => 0) ⋯ = 0
ext η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕη:𝓢(Space d, ℝ)⊢ (distOfFunction (fun x => 0) ⋯) η = 0 η
simp [distOfFunction_apply] All goals completed! 🐙
lemma distOfFunction_smul {d : ℕ} (f : Space d → F)
(hf : IsDistBounded f) (c : ℝ) :
distOfFunction (c • f) (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝ⊢ IsDistBounded (c • f) fun_prop All goals completed! 🐙) = c • distOfFunction f hf := by F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝ⊢ distOfFunction (c • f) ⋯ = c • distOfFunction f hf
ext η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ (distOfFunction (c • f) ⋯) η = (c • distOfFunction f hf) η
change _ = c • ∫ x, η x • f x F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ (distOfFunction (c • f) ⋯) η = c • ∫ (x : Space d), η x • f x
rw [distOfFunction_apply F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • (c • f) x = c • ∫ (x : Space d), η x • f x F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • (c • f) x = c • ∫ (x : Space d), η x • f x] F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • (c • f) x = c • ∫ (x : Space d), η x • f x
simp only [Pi.smul_apply] F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = c • ∫ (x : Space d), η x • f x
rw [← integral_smul F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = ∫ (a : Space d), c • η a • f a F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = ∫ (a : Space d), c • η a • f a] F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = ∫ (a : Space d), c • η a • f a
congr e_f F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ (fun x => η x • c • f x) = fun a => c • η a • f a
funext x e_f F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)x:Space d⊢ η x • c • f x = c • η x • f x
rw [smul_comm e_f F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)x:Space d⊢ c • η x • f x = c • η x • f x All goals completed! 🐙] All goals completed! 🐙
lemma distOfFunction_smul_fun {d : ℕ} (f : Space d → F)
(hf : IsDistBounded f) (c : ℝ) :
distOfFunction (fun x => c • f x) (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝ⊢ IsDistBounded fun x => c • f x fun_prop All goals completed! 🐙) = c • distOfFunction f hf := by F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝ⊢ distOfFunction (fun x => c • f x) ⋯ = c • distOfFunction f hf
ext η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ (distOfFunction (fun x => c • f x) ⋯) η = (c • distOfFunction f hf) η
change _ = c • ∫ x, η x • f x F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ (distOfFunction (fun x => c • f x) ⋯) η = c • ∫ (x : Space d), η x • f x
rw [distOfFunction_apply F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = c • ∫ (x : Space d), η x • f x F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = c • ∫ (x : Space d), η x • f x] F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = c • ∫ (x : Space d), η x • f x
rw [← integral_smul F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = ∫ (a : Space d), c • η a • f a F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = ∫ (a : Space d), c • η a • f a] F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x • c • f x = ∫ (a : Space d), c • η a • f a
congr e_f F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)⊢ (fun x => η x • c • f x) = fun a => c • η a • f a
funext x e_f F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)x:Space d⊢ η x • c • f x = c • η x • f x
rw [smul_comm e_f F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fc:ℝη:𝓢(Space d, ℝ)x:Space d⊢ c • η x • f x = c • η x • f x All goals completed! 🐙] All goals completed! 🐙lemma distOfFunction_mul_fun {d : ℕ} (f : Space d → ℝ)
(hf : IsDistBounded f) (c : ℝ) :
distOfFunction (fun x => c * f x) (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fd:ℕf:Space d → ℝhf:IsDistBounded fc:ℝ⊢ IsDistBounded fun x => c * f x fun_prop All goals completed! 🐙) = c • distOfFunction f hf := by d:ℕf:Space d → ℝhf:IsDistBounded fc:ℝ⊢ distOfFunction (fun x => c * f x) ⋯ = c • distOfFunction f hf
exact distOfFunction_smul_fun f hf c All goals completed! 🐙lemma distOfFunction_neg {d : ℕ} (f : Space d → F)
(hf : IsDistBounded (fun x => - f x)) :
distOfFunction (fun x => - f x) hf = - distOfFunction f (by 𝕜:TypeE:TypeF:TypeF':Typeinst✝⁵:RCLike 𝕜inst✝⁴:NormedAddCommGroup Einst✝³:NormedAddCommGroup Finst✝²:NormedAddCommGroup F'inst✝¹:NormedSpace ℝ Einst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fun x => -f x⊢ IsDistBounded f simpa using hf.neg All goals completed! 🐙) := by F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fun x => -f x⊢ distOfFunction (fun x => -f x) hf = -distOfFunction f ⋯
convert distOfFunction_smul_fun f (by F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fun x => -f x⊢ IsDistBounded f simpa using hf.neg All goals completed! 🐙) (-1) using 1
· e'_2 F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fun x => -f x⊢ distOfFunction (fun x => -f x) hf = distOfFunction (fun x => -1 • f x) ⋯ simp All goals completed! 🐙
· e'_3 F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕf:Space d → Fhf:IsDistBounded fun x => -f x⊢ -distOfFunction f ⋯ = -1 • distOfFunction f ⋯ simp All goals completed! 🐙C. Properties related to inner products
lemma distOfFunction_inner {d n : ℕ} (f : Space d → EuclideanSpace ℝ (Fin n))
(hf : IsDistBounded f)
(η : 𝓢(Space d, ℝ)) (y : EuclideanSpace ℝ (Fin n)) :
⟪distOfFunction f hf η, y⟫_ℝ = ∫ x, η x * ⟪f x, y⟫_ℝ := by d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪(distOfFunction f hf) η, y⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝ
rw [distOfFunction_apply d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪∫ (x : Space d), η x • f x, y⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝ d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪∫ (x : Space d), η x • f x, y⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝ] d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪∫ (x : Space d), η x • f x, y⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝ
trans ∫ x, ⟪y, η x • f x⟫_ℝ d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪∫ (x : Space d), η x • f x, y⟫_ℝ = ∫ (x : Space d), ⟪y, η x • f x⟫_ℝd:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ∫ (x : Space d), ⟪y, η x • f x⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝ; swap d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ∫ (x : Space d), ⟪y, η x • f x⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝd:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪∫ (x : Space d), η x • f x, y⟫_ℝ = ∫ (x : Space d), ⟪y, η x • f x⟫_ℝ
· d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ∫ (x : Space d), ⟪y, η x • f x⟫_ℝ = ∫ (x : Space d), η x * ⟪f x, y⟫_ℝ congr e_f d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ (fun x => ⟪y, η x • f x⟫_ℝ) = fun x => η x * ⟪f x, y⟫_ℝ
funext x e_f d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)x:Space d⊢ ⟪y, η x • f x⟫_ℝ = η x * ⟪f x, y⟫_ℝ
rw [real_inner_comm e_f d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)x:Space d⊢ ⟪η x • f x, y⟫_ℝ = η x * ⟪f x, y⟫_ℝ e_f d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)x:Space d⊢ ⟪η x • f x, y⟫_ℝ = η x * ⟪f x, y⟫_ℝ]e_f d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)x:Space d⊢ ⟪η x • f x, y⟫_ℝ = η x * ⟪f x, y⟫_ℝ
simp [inner_smul_left] All goals completed! 🐙
rw [integral_inner, d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪∫ (x : Space d), η x • f x, y⟫_ℝ = ⟪y, ∫ (x : Space d), η x • f x⟫_ℝhf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ Integrable (fun x => η x • f x) volume hf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ Integrable (fun x => η x • f x) volume real_inner_comm d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ ⟪y, ∫ (x : Space d), η x • f x⟫_ℝ = ⟪y, ∫ (x : Space d), η x • f x⟫_ℝhf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ Integrable (fun x => η x • f x) volumehf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ Integrable (fun x => η x • f x) volume]hf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)y:EuclideanSpace ℝ (Fin n)⊢ Integrable (fun x => η x • f x) volume
fun_prop All goals completed! 🐙D. Derivatives
The distributional spatial derivative of the distribution associated to a differentiable function is the distribution associated to the corresponding pointwise spatial derivative.
lemma distDeriv_distOfFunction {d : ℕ} (μ : Fin d) (f : Space d → F)
(hf : IsDistBounded f) (hf_deriv : IsDistBounded (∂[μ] f))
(hf_diff : Differentiable ℝ f) :
∂ᵈ[μ] (distOfFunction f hf) = distOfFunction (∂[μ] f) hf_deriv := by F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ f⊢ (distDeriv μ) (distOfFunction f hf) = distOfFunction (deriv μ f) hf_deriv
ext η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ((distDeriv μ) (distOfFunction f hf)) η = (distOfFunction (deriv μ f) hf_deriv) η
rw [distDeriv_apply, F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ (((Physlib.Distribution.fderivD ℝ) (distOfFunction f hf)) η) (basis μ) = (distOfFunction (deriv μ f) hf_deriv) η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
∫ (x : Space d), η x • deriv μ f x Physlib.Distribution.fderivD_apply, F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -(distOfFunction f hf) ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) =
(distOfFunction (deriv μ f) hf_deriv) η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
∫ (x : Space d), η x • deriv μ f x distOfFunction_apply, F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
(distOfFunction (deriv μ f) hf_deriv) η F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
∫ (x : Space d), η x • deriv μ f x
distOfFunction_apply F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
∫ (x : Space d), η x • deriv μ f x F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
∫ (x : Space d), η x • deriv μ f x] F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), ((SchwartzMap.evalCLM ℝ (Space d) ℝ (basis μ)) ((fderivCLM ℝ (Space d) ℝ) η)) x • f x =
∫ (x : Space d), η x • deriv μ f x
change -∫ (x : Space d), fderiv ℝ η x (basis μ) • f x =
∫ (x : Space d), η x • fderiv ℝ f x (basis μ) F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), (fderiv ℝ (⇑η) x) (basis μ) • f x = ∫ (x : Space d), η x • (fderiv ℝ f x) (basis μ)
rw [integral_smul_fderiv_eq_neg_fderiv_smul_of_integrable F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ -∫ (x : Space d), (fderiv ℝ (⇑η) x) (basis μ) • f x = -∫ (x : Space d), (fderiv ℝ (⇑η) x) (basis μ) • f xhf'g F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => (fderiv ℝ (⇑η) x) (basis μ) • f x) volumehfg' F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • (fderiv ℝ f x) (basis μ)) volumehfg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • f x) volumehf F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport f, DifferentiableAt ℝ (⇑η) xhg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport ⇑η, DifferentiableAt ℝ f x hf'g F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => (fderiv ℝ (⇑η) x) (basis μ) • f x) volumehfg' F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • (fderiv ℝ f x) (basis μ)) volumehfg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • f x) volumehf F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport f, DifferentiableAt ℝ (⇑η) xhg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport ⇑η, DifferentiableAt ℝ f x]hf'g F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => (fderiv ℝ (⇑η) x) (basis μ) • f x) volumehfg' F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • (fderiv ℝ f x) (basis μ)) volumehfg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • f x) volumehf F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport f, DifferentiableAt ℝ (⇑η) xhg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport ⇑η, DifferentiableAt ℝ f x
· hf'g F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => (fderiv ℝ (⇑η) x) (basis μ) • f x) volume exact hf.integrable_space_fderiv η (basis μ) All goals completed! 🐙
· hfg' F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • (fderiv ℝ f x) (basis μ)) volume exact hf_deriv.integrable_space η All goals completed! 🐙
· hfg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ Integrable (fun x => η x • f x) volume exact hf.integrable_space η All goals completed! 🐙
· hf F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport f, DifferentiableAt ℝ (⇑η) x fun_prop All goals completed! 🐙
· hg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)⊢ ∀ x ∈ tsupport ⇑η, DifferentiableAt ℝ f x intro x _ hg F:Typeinst✝¹:NormedAddCommGroup Finst✝:NormedSpace ℝ Fd:ℕμ:Fin df:Space d → Fhf:IsDistBounded fhf_deriv:IsDistBounded (deriv μ f)hf_diff:Differentiable ℝ fη:𝓢(Space d, ℝ)x:Space da✝:x ∈ tsupport ⇑η⊢ DifferentiableAt ℝ f x
exact hf_diff.differentiableAt All goals completed! 🐙E. Components
lemma distOfFunction_eculid_eval {d n : ℕ} (f : Space d → EuclideanSpace ℝ (Fin n))
(hf : IsDistBounded f) (η : 𝓢(Space d, ℝ)) (i : Fin n) :
distOfFunction f hf η i = distOfFunction (fun x => f x i) (hf.pi_comp i) η := by d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ((distOfFunction f hf) η).ofLp i = (distOfFunction (fun x => (f x).ofLp i) ⋯) η
simp [distOfFunction_apply] d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ (∫ (x : Space d), η x • f x).ofLp i = ∫ (x : Space d), η x * (f x).ofLp i
rw [MeasureTheory.eval_integral_piLp d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∫ (x : Space d), (η x • f x).ofLp i = ∫ (x : Space d), η x * (f x).ofLp ihf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∀ (i : Fin n), Integrable (fun x => (η x • f x).ofLp i) volume d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∫ (x : Space d), (η x • f x).ofLp i = ∫ (x : Space d), η x * (f x).ofLp ihf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∀ (i : Fin n), Integrable (fun x => (η x • f x).ofLp i) volume] d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∫ (x : Space d), (η x • f x).ofLp i = ∫ (x : Space d), η x * (f x).ofLp ihf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∀ (i : Fin n), Integrable (fun x => (η x • f x).ofLp i) volume
simp only [PiLp.smul_apply, smul_eq_mul] hf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin n⊢ ∀ (i : Fin n), Integrable (fun x => (η x • f x).ofLp i) volume
intro i hf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i✝:Fin ni:Fin n⊢ Integrable (fun x => (η x • f x).ofLp i) volume
simp only [PiLp.smul_apply, smul_eq_mul] hf d:ℕn:ℕf:Space d → EuclideanSpace ℝ (Fin n)hf:IsDistBounded fη:𝓢(Space d, ℝ)i✝:Fin ni:Fin n⊢ Integrable (fun x => η x * (f x).ofLp i) volume
fun_prop All goals completed! 🐙
lemma distOfFunction_vector_eval {d n : ℕ} (f : Space d → Lorentz.Vector n)
(hf : IsDistBounded f) (η : 𝓢(Space d, ℝ)) (i : Fin 1 ⊕ Fin n) :
distOfFunction f hf η i = distOfFunction (fun x => f x i) (hf.vector_component i) η := by d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ (distOfFunction f hf) η i = (distOfFunction (fun x => f x i) ⋯) η
simp [distOfFunction_apply] d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ (∫ (x : Space d), η x • f x) i = ∫ (x : Space d), η x * f x i
trans ⟪Lorentz.Vector.basis i, ∫ x, η x • f x⟫_ℝ d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ (∫ (x : Space d), η x • f x) i = ⟪Lorentz.Vector.basis i, ∫ (x : Space d), η x • f x⟫_ℝd:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ ⟪Lorentz.Vector.basis i, ∫ (x : Space d), η x • f x⟫_ℝ = ∫ (x : Space d), η x * f x i
· d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ (∫ (x : Space d), η x • f x) i = ⟪Lorentz.Vector.basis i, ∫ (x : Space d), η x • f x⟫_ℝ rw [Lorentz.Vector.basis_inner d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ (∫ (x : Space d), η x • f x) i = (∫ (x : Space d), η x • f x) i All goals completed! 🐙] All goals completed! 🐙
rw [← integral_inner d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ ∫ (x : Space d), ⟪Lorentz.Vector.basis i, η x • f x⟫_ℝ = ∫ (x : Space d), η x * f x ihf d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ Integrable (fun x => η x • f x) volume d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ ∫ (x : Space d), ⟪Lorentz.Vector.basis i, η x • f x⟫_ℝ = ∫ (x : Space d), η x * f x ihf d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ Integrable (fun x => η x • f x) volume] d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ ∫ (x : Space d), ⟪Lorentz.Vector.basis i, η x • f x⟫_ℝ = ∫ (x : Space d), η x * f x ihf d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ Integrable (fun x => η x • f x) volume
simp [Lorentz.Vector.basis_inner] hf d:ℕn:ℕf:Space d → Lorentz.Vector nhf:IsDistBounded fη:𝓢(Space d, ℝ)i:Fin 1 ⊕ Fin n⊢ Integrable (fun x => η x • f x) volume
fun_prop All goals completed! 🐙