Imports
/-
Copyright (c) 2026 Lazar Milikic. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Lazar Milikic
-/
module
public import Physlib.SpaceAndTime.Space.Norm.BasicIterated Laplacians of norm distributions
i. Overview
This file proves the distributional identity corresponding to the classical odd-dimensional
formula that, in dimension 2 * m + 1, applying the Laplacian m + 1 times to the norm
gives a nonzero constant multiple of the Dirac delta at the origin.
ii. Key results
iterated_distLaplacian_norm_zpow_odd_eq_smul_diracDelta : The (m + 1)-fold
Laplacian of the norm in dimension 2 * m + 1 is a nonzero multiple of the Dirac delta.
iii. Table of contents
A. The odd-dimensional iterated Laplacian of the norm
iv. References
@[expose] public sectionA. The odd-dimensional iterated Laplacian of the norm
hb m:ℕk:ℕhk:k < mh:1 - 2 * ↑k - 2 + (2 * ↑m + 1) ≠ 0⊢ ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)) ≠ 0
exact_mod_cast h All goals completed! 🐙The scalar factor in the odd-dimensional iterated Laplacian of the norm is nonzero.
lemma oddNormIteratedLaplacianCoeff_ne_zero (m : ℕ) :
oddNormIteratedLaplacianCoeff m ≠ 0 := by m:ℕ⊢ oddNormIteratedLaplacianCoeff m ≠ 0
unfold oddNormIteratedLaplacianCoeff m:ℕ⊢ (∏ k ∈ Finset.range m, ↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1))) *
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1)) ≠
0
apply mul_ne_zero ha m:ℕ⊢ ∏ k ∈ Finset.range m, ↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)) ≠ 0hb m:ℕ⊢ (↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1) ≠ 0
· ha m:ℕ⊢ ∏ k ∈ Finset.range m, ↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)) ≠ 0 rw [Finset.prod_ne_zero_iff ha m:ℕ⊢ ∀ a ∈ Finset.range m, ↑(1 - 2 * ↑a) * ↑(1 - 2 * ↑a - 2 + (2 * ↑m + 1)) ≠ 0 ha m:ℕ⊢ ∀ a ∈ Finset.range m, ↑(1 - 2 * ↑a) * ↑(1 - 2 * ↑a - 2 + (2 * ↑m + 1)) ≠ 0] ha m:ℕ⊢ ∀ a ∈ Finset.range m, ↑(1 - 2 * ↑a) * ↑(1 - 2 * ↑a - 2 + (2 * ↑m + 1)) ≠ 0
intro k hk ha m:ℕk:ℕhk:k ∈ Finset.range m⊢ ↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)) ≠ 0
exact oddNormIteratedLaplacianCoeff_factor_ne_zero (by m:ℕk:ℕhk:k ∈ Finset.range m⊢ k < m simpa using hk All goals completed! 🐙)
· hb m:ℕ⊢ (↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1) ≠ 0 repeat' apply mul_ne_zero hb m:ℕ⊢ volume.real (Metric.ball 0 1) ≠ 0
· hb.ha.ha m:ℕ⊢ ↑1 - 2 * ↑↑m ≠ 0 have h : (1 : ℤ) - 2 * (m : ℤ) ≠ 0 := by m:ℕ⊢ oddNormIteratedLaplacianCoeff m ≠ 0 hb.ha.ha m:ℕh:1 - 2 * ↑m ≠ 0⊢ ↑1 - 2 * ↑↑m ≠ 0 omegahb.ha.ha m:ℕh:1 - 2 * ↑m ≠ 0⊢ ↑1 - 2 * ↑↑m ≠ 0hb.ha.ha m:ℕh:1 - 2 * ↑m ≠ 0⊢ ↑1 - 2 * ↑↑m ≠ 0
exact_mod_cast h All goals completed! 🐙
· hb m:ℕ⊢ 2 * ↑m + 1 ≠ 0 exact_mod_cast (by m:ℕ⊢ 2 * m + 1 ≠ 0 omega All goals completed! 🐙 : (2 * m + 1 : ℕ) ≠ 0)
· hb m:ℕ⊢ volume.real (Metric.ball 0 1) ≠ 0 exact ne_of_gt <| ENNReal.toReal_pos
(Metric.measure_ball_pos volume 0 one_pos).ne'
measure_ball_lt_top.ne All goals completed! 🐙
private lemma distLaplacian_norm_zpow_odd_boundary (m : ℕ) :
Δᵈ (distOfFunction (fun x : Space (2 * m + 1) =>
‖x‖ ^ ((1 : ℤ) - 2 * (m : ℤ)))
(IsDistBounded.pow _ (by m:ℕ⊢ -↑(2 * m + 1 - 1) ≤ 1 - 2 * ↑m omega All goals completed! 🐙))) =
(((1 : ℤ) - 2 * (m : ℤ) : ℝ) * (2 * m + 1 : ℝ) *
(volume (α := Space (2 * m + 1))).real (Metric.ball 0 1)) •
diracDelta ℝ 0 := by m:ℕ⊢ Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0
rcases m with _ | m zero ⊢ Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑0)) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0succ m:ℕ⊢ Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(m + 1))) ⋯) =
((↑1 - 2 * ↑↑(m + 1)) * (2 * ↑(m + 1) + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0
· zero ⊢ Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑0)) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 rw [distLaplacian zero ⊢ (distDiv ∘ₗ ∇ᵈ) (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑0)) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 zero ⊢ (distDiv ∘ₗ ∇ᵈ) (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑0)) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0] zero ⊢ (distDiv ∘ₗ ∇ᵈ) (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑0)) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0
change ∇ᵈ ⬝ (∇ᵈ (distOfFunction (fun x : Space 1 => ‖x‖ ^ (1 : ℤ))
(IsDistBounded.pow 1 (by ⊢ -↑(1 - 1) ≤ 1 omega All goals completed! 🐙)))) = _
rw [distGrad_distOfFunction_norm_zpow 1 (by ⊢ -↑(1 - 1) + 1 ≤ 1 zero ⊢ distDiv (distOfFunction (fun x => (↑1 * ‖x‖ ^ (1 - 2)) • basis.repr x) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 omega All goals completed! 🐙zero ⊢ distDiv (distOfFunction (fun x => (↑1 * ‖x‖ ^ (1 - 2)) • basis.repr x) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0)]zero ⊢ distDiv (distOfFunction (fun x => (↑1 * ‖x‖ ^ (1 - 2)) • basis.repr x) ⋯) =
((↑1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0
simp only [Int.cast_one, one_mul] zero ⊢ distDiv (distOfFunction (fun x => ‖x‖ ^ (1 - 2) • basis.repr x) ⋯) =
((1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0
convert! distDiv_inv_pow_eq_dim (d := 1) using 1 e'_3 ⊢ ((1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 =
(↑1 * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0
· e'_3 ⊢ ((1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 =
(↑1 * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 ext x e'_3 x:𝓢(Space (2 * 0 + 1), ℝ)⊢ (((1 - 2 * ↑↑0) * (2 * ↑0 + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0) x =
((↑1 * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0) x
ring_nf All goals completed! 🐙
· succ m:ℕ⊢ Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(m + 1))) ⋯) =
((↑1 - 2 * ↑↑(m + 1)) * (2 * ↑(m + 1) + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 convert! distLaplacian_fundamentalSolution_norm_zpow
(d := 2 * m.succ + 1) using 4 e'_2 m:ℕx✝:Space (2 * (m + 1) + 1)⊢ ‖x✝‖ ^ (1 - 2 * ↑(m + 1)) = ‖x✝‖ ^ (-(↑(2 * m.succ + 1) - 2))e'_3.e'_5 m:ℕ⊢ ↑1 - 2 * ↑↑(m + 1) = -(↑(2 * m.succ + 1) - 2)e'_3.e'_6 m:ℕ⊢ 2 * ↑(m + 1) + 1 = ↑(2 * m.succ + 1)
· e'_2 m:ℕx✝:Space (2 * (m + 1) + 1)⊢ ‖x✝‖ ^ (1 - 2 * ↑(m + 1)) = ‖x✝‖ ^ (-(↑(2 * m.succ + 1) - 2)) simp e'_2 m:ℕx✝:Space (2 * (m + 1) + 1)⊢ ‖x✝‖ ^ (1 - 2 * (↑m + 1)) = ‖x✝‖ ^ (2 - (2 * (↑m + 1) + 1)); ring_nf All goals completed! 🐙
· e'_3.e'_5 m:ℕ⊢ ↑1 - 2 * ↑↑(m + 1) = -(↑(2 * m.succ + 1) - 2) simp e'_3.e'_5 m:ℕ⊢ 1 - 2 * (↑m + 1) = 2 - (2 * (↑m + 1) + 1); ring All goals completed! 🐙
· e'_3.e'_6 m:ℕ⊢ 2 * ↑(m + 1) + 1 = ↑(2 * m.succ + 1) simp All goals completed! 🐙
private lemma iterated_distLaplacian_norm_zpow_odd_until_boundary
(m k : ℕ) (hk : k ≤ m) :
((distLaplacian (d := 2 * m + 1))^[k])
(distOfFunction (fun x : Space (2 * m + 1) => ‖x‖ ^ (1 : ℤ))
(IsDistBounded.pow 1 (by m:ℕk:ℕhk:k ≤ m⊢ -↑(2 * m + 1 - 1) ≤ 1 omega All goals completed! 🐙))) =
(∏ j ∈ Finset.range k,
((((1 : ℤ) - 2 * (j : ℤ) : ℤ) : ℝ) *
((((1 : ℤ) - 2 * (j : ℤ) - 2 + (2 * m + 1 : ℤ) : ℤ) : ℝ)))) •
distOfFunction (fun x : Space (2 * m + 1) => ‖x‖ ^ ((1 : ℤ) - 2 * (k : ℤ)))
(IsDistBounded.pow _ (by m:ℕk:ℕhk:k ≤ m⊢ -↑(2 * m + 1 - 1) ≤ 1 - 2 * ↑k omega All goals completed! 🐙)) := by m:ℕk:ℕhk:k ≤ m⊢ (⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯
induction k with
| zero => zero m:ℕhk:0 ≤ m⊢ (⇑Δᵈ)^[0] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range 0, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑0)) ⋯
simp All goals completed! 🐙
| succ k ih => succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ m⊢ (⇑Δᵈ)^[k + 1] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
have hk_le : k ≤ m := Nat.le_of_succ_le hk succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (⇑Δᵈ)^[k + 1] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [Function.iterate_succ_apply' succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ Δᵈ ((⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯)) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ Δᵈ ((⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯)) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯] succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ Δᵈ ((⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯)) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [ih hk_le succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ Δᵈ
((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ Δᵈ
((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ Δᵈ
((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [map_smul succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯) =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [distLaplacian_distOfFunction_norm_zpow
(d := 2 * m + 1) ((1 : ℤ) - 2 * (k : ℤ)) (by m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ 0 < 1 - 2 * ↑k - 2 + ↑(2 * m + 1) succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1))) • distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ omega All goals completed! 🐙succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1))) • distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯)]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ (∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1))) • distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [smul_smul succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
have hdist :
distOfFunction
(fun x : Space (2 * m + 1) => ‖x‖ ^ ((1 : ℤ) - 2 * (k : ℤ) - 2))
(IsDistBounded.pow _ (by m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ -↑(2 * m + 1 - 1) ≤ 1 - 2 * ↑k - 2 succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ omega All goals completed! 🐙succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯)) =
distOfFunction
(fun x : Space (2 * m + 1) => ‖x‖ ^ ((1 : ℤ) - 2 * ((k + 1 : ℕ) : ℤ)))
(IsDistBounded.pow _ (by m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ -↑(2 * m + 1 - 1) ≤ 1 - 2 * ↑(k + 1)succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ omega All goals completed! 🐙succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯)) := by m:ℕk:ℕhk:k ≤ m⊢ (⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
have hexp :
((1 : ℤ) - 2 * (k : ℤ) - 2) =
((1 : ℤ) - 2 * ((k + 1 : ℕ) : ℤ)) := by m:ℕk:ℕhk:k ≤ m⊢ (⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhexp:1 - 2 * ↑k - 2 = 1 - 2 * ↑(k + 1)⊢ distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
norm_num m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ m⊢ 1 - 2 * ↑k - 2 = 1 - 2 * (↑k + 1) m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhexp:1 - 2 * ↑k - 2 = 1 - 2 * ↑(k + 1)⊢ distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
ring m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhexp:1 - 2 * ↑k - 2 = 1 - 2 * ↑(k + 1)⊢ distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhexp:1 - 2 * ↑k - 2 = 1 - 2 * ↑(k + 1)⊢ distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
ext η m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhexp:1 - 2 * ↑k - 2 = 1 - 2 * ↑(k + 1)η:𝓢(Space (2 * m + 1), ℝ)⊢ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯) η = (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯) ηsucc m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
simp [distOfFunction_apply, hexp]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [hdist succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ =
(∏ j ∈ Finset.range (k + 1), ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
rw [Finset.prod_range_succ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ =
((∏ x ∈ Finset.range k, ↑(1 - 2 * ↑x) * ↑(1 - 2 * ↑x - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ =
((∏ x ∈ Finset.range k, ↑(1 - 2 * ↑x) * ↑(1 - 2 * ↑x - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯]succ m:ℕk:ℕih:∀ (hk : k ≤ m),
(⇑Δᵈ)^[k] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) =
(∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k)) ⋯hk:k + 1 ≤ mhk_le:k ≤ mhdist:distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑k - 2)) ⋯ = distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯⊢ ((∏ j ∈ Finset.range k, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + ↑(2 * m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯ =
((∏ x ∈ Finset.range k, ↑(1 - 2 * ↑x) * ↑(1 - 2 * ↑x - 2 + (2 * ↑m + 1))) *
(↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1)))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑(k + 1))) ⋯
congr 1 All goals completed! 🐙
In dimension 2 * m + 1, the (m + 1)-fold distributional Laplacian of the
distribution induced by the norm is a nonzero multiple of the Dirac delta at the origin.
lemma iterated_distLaplacian_norm_zpow_odd_eq_smul_diracDelta (m : ℕ) :
((distLaplacian (d := 2 * m + 1))^[m + 1])
(distOfFunction (fun x : Space (2 * m + 1) => ‖x‖ ^ (1 : ℤ))
(IsDistBounded.pow 1 (by m:ℕ⊢ -↑(2 * m + 1 - 1) ≤ 1 omega All goals completed! 🐙))) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0 := by m:ℕ⊢ (⇑Δᵈ)^[m + 1] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯) = oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0
rw [Function.iterate_succ_apply' m:ℕ⊢ Δᵈ ((⇑Δᵈ)^[m] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯)) = oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0 m:ℕ⊢ Δᵈ ((⇑Δᵈ)^[m] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯)) = oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0] m:ℕ⊢ Δᵈ ((⇑Δᵈ)^[m] (distOfFunction (fun x => ‖x‖ ^ 1) ⋯)) = oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0
rw [iterated_distLaplacian_norm_zpow_odd_until_boundary m m le_rfl m:ℕ⊢ Δᵈ
((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0 m:ℕ⊢ Δᵈ
((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0] m:ℕ⊢ Δᵈ
((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0
rw [map_smul m:ℕ⊢ (∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0 m:ℕ⊢ (∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0] m:ℕ⊢ (∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
Δᵈ (distOfFunction (fun x => ‖x‖ ^ (1 - 2 * ↑m)) ⋯) =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0
rw [distLaplacian_norm_zpow_odd_boundary m m:ℕ⊢ (∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0 m:ℕ⊢ (∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0] m:ℕ⊢ (∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) •
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1)) • diracDelta ℝ 0 =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0
rw [smul_smul m:ℕ⊢ ((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1))) •
diracDelta ℝ 0 =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0 m:ℕ⊢ ((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1))) •
diracDelta ℝ 0 =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0] m:ℕ⊢ ((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1))) •
diracDelta ℝ 0 =
oddNormIteratedLaplacianCoeff m • diracDelta ℝ 0
unfold oddNormIteratedLaplacianCoeff m:ℕ⊢ ((∏ j ∈ Finset.range m, ↑(1 - 2 * ↑j) * ↑(1 - 2 * ↑j - 2 + (2 * ↑m + 1))) *
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1))) •
diracDelta ℝ 0 =
((∏ k ∈ Finset.range m, ↑(1 - 2 * ↑k) * ↑(1 - 2 * ↑k - 2 + (2 * ↑m + 1))) *
((↑1 - 2 * ↑↑m) * (2 * ↑m + 1) * volume.real (Metric.ball 0 1))) •
diracDelta ℝ 0
rfl All goals completed! 🐙