Documentation

Atlas.IntroductionToPartialDifferentialEquations.code.CM16.FourierTransform

@[reducible, inline]

A multi-index of dimension n: an n-tuple $\vec{\alpha} = (\alpha^1, \dots, \alpha^n)$ of non-negative integers, encoded as a function Fin n → ℕ.

Instances For

    The order of a multi-index $\vec{\alpha}$: $|\vec{\alpha}| := \alpha^1 + \cdots + \alpha^n$.

    Instances For
      noncomputable def FourierAnalysis.multiIndexMonomial {n : } (x : Fin n) (α : MultiIndex n) :

      The monomial $x^{\vec{\alpha}} := (x^1)^{\alpha^1} \cdots (x^n)^{\alpha^n}$ for $x \in \mathbb{C}^n$ and multi-index $\vec{\alpha}$.

      Instances For
        noncomputable def FourierAnalysis.iteratedPartialDeriv {n : } (i : Fin n) (k : ) (f : (Fin n)) :
        (Fin n)

        The k-fold partial derivative of f with respect to the i-th coordinate, $\partial_i^k f$, defined by iterating one-variable differentiation along the i-th axis.

        Instances For
          noncomputable def FourierAnalysis.multiIndexDeriv {n : } (α : MultiIndex n) (f : (Fin n)) :
          (Fin n)

          The differential operator $\partial_{\vec{\alpha}} := \partial_1^{\alpha^1} \cdots \partial_n^{\alpha^n}$ associated to a multi-index $\vec{\alpha}$.

          Instances For
            def FourierAnalysis.IsCk (n k : ) (f : (Fin n)) :

            The space $C^k$: predicate that f : ℝ^n → ℂ is k-times continuously differentiable.

            Instances For
              def FourierAnalysis.IsC0 (n : ) (f : (Fin n)) :

              The space $C_0$: predicate that f : ℝ^n → ℂ is continuous and vanishes at infinity, i.e. $\lim_{|x| \to \infty} f(x) = 0$.

              Instances For
                noncomputable def FourierAnalysis.supNorm (n : ) (f : (Fin n)) :

                The supremum norm $\|f\|_{C_0} := \sup_{x \in \mathbb{R}^n} |f(x)|$.

                Instances For
                  noncomputable def FourierAnalysis.fourierTransform (f : ) (ξ : ) :

                  The one-dimensional Fourier transform $\hat{f}(\xi) := \int_{\mathbb{R}} f(x) e^{-2\pi i \xi x}\, dx$.

                  Instances For
                    noncomputable def FourierAnalysis.inverseFourierTransform (f : ) (x : ) :

                    The one-dimensional inverse Fourier transform $f^{\vee}(x) := \int_{\mathbb{R}} f(\xi) e^{2\pi i \xi x}\, d\xi$.

                    Instances For
                      noncomputable def FourierAnalysis.complexL2Inner (f g : ) :

                      The complex $L^2$ inner product on $\mathbb{R}$: $\langle f, g \rangle := \int_{\mathbb{R}} f(x) \overline{g(x)}\, dx$.

                      Instances For
                        noncomputable def FourierAnalysis.complexL2Norm (f : ) :

                        The complex $L^2$ norm on $\mathbb{R}$: $\|f\| := \langle f, f \rangle^{1/2}$.

                        Instances For
                          noncomputable def FourierAnalysis.complexL2InnerND {n : } (f g : (Fin n)) :

                          The complex $L^2$ inner product on $\mathbb{R}^n$: $\langle f, g \rangle := \int_{\mathbb{R}^n} f(x) \overline{g(x)}\, d^n x$.

                          Instances For
                            noncomputable def FourierAnalysis.complexL2NormND {n : } (f : (Fin n)) :

                            The complex $L^2$ norm on $\mathbb{R}^n$: $\|f\| := \langle f, f \rangle^{1/2}$.

                            Instances For
                              def FourierAnalysis.translate (y : ) (f : ) :

                              Translation of a function on $\mathbb{R}$ by y: $(\tau_y f)(x) := f(x - y)$.

                              Instances For
                                noncomputable def FourierAnalysis.complexConvolution (f g : ) :

                                The complex convolution on $\mathbb{R}$: $(f * g)(x) := \int_{\mathbb{R}} f(x - y) g(y)\, dy$.

                                Instances For
                                  noncomputable def FourierAnalysis.complexConvolutionND {n : } (f g : (Fin n)) (x : Fin n) :

                                  The complex convolution on $\mathbb{R}^n$: $(f * g)(x) := \int_{\mathbb{R}^n} f(y) g(x - y)\, d^n y$.

                                  Instances For
                                    noncomputable def FourierAnalysis.fourierTransformND (n : ) (f : (Fin n)) (ξ : Fin n) :

                                    The $n$-dimensional Fourier transform $\hat{f}(\xi) := \int_{\mathbb{R}^n} f(x) e^{-2\pi i \xi \cdot x}\, d^n x$.

                                    Instances For
                                      noncomputable def FourierAnalysis.inverseFourierTransformND (n : ) (g : (Fin n)) (x : Fin n) :

                                      The $n$-dimensional inverse Fourier transform $g^{\vee}(x) := \int_{\mathbb{R}^n} g(\xi) e^{2\pi i \xi \cdot x}\, d^n \xi$.

                                      Instances For
                                        def FourierAnalysis.euclidNormSq {n : } (x : Fin n) :

                                        The squared Euclidean norm $|x|^2 := \sum_i (x_i)^2$ on $\mathbb{R}^n$.

                                        Instances For
                                          def FourierAnalysis.translateFn {n : } (y : Fin n) (f : (Fin n)) (x : Fin n) :

                                          Translation in $\mathbb{R}^n$: $(\tau_y f)(x) := f(x - y)$ (Definition 2.0.6).

                                          Instances For

                                            For $f \in L^1(\mathbb{R})$, the Fourier transform is pointwise bounded: $|\hat{f}(\xi)| \le \|f\|_{L^1}$ (part of Lemma 2.0.1).

                                            For $f \in L^1(\mathbb{R})$, the Fourier transform $\hat{f}$ is continuous (part of Lemma 2.0.1).

                                            Riemann–Lebesgue: for $f \in L^1(\mathbb{R})$, $\hat{f}(\xi) \to 0$ as $|\xi| \to \infty$. This is the vanishing-at-infinity property in the definition of $C_0$.

                                            Lemma 2.0.1 (combined form): if $f \in L^1(\mathbb{R})$ then $\hat{f}$ is continuous, satisfies $\|\hat{f}\|_{C_0} \le \|f\|_{L^1}$, and vanishes at infinity.

                                            Translation/modulation duality (Theorem 2.1 (2.0.19a) in 1D): $(\tau_y f)^{\wedge}(\xi) = e^{-2\pi i \xi y} \hat{f}(\xi)$.

                                            Modulation/translation duality (Theorem 2.1 (2.0.19b) in 1D): if $h(x) = e^{2\pi i \eta x} f(x)$ then $\hat{h}(\xi) = \hat{f}(\xi - \eta)$.

                                            theorem FourierAnalysis.fourier_dilation (f : ) (hf : MeasureTheory.Integrable f MeasureTheory.volume) (t : ) (ht : t 0) (ξ : ) :
                                            fourierTransform (fun (x : ) => f (t⁻¹ * x)) ξ = |t| * fourierTransform f (t * ξ)

                                            Dilation (Theorem 2.1 (2.0.19c) in 1D): if $h(x) = f(t^{-1} x)$ then $\hat{h}(\xi) = |t|\, \hat{f}(t \xi)$.

                                            Convolution maps to product (Theorem 2.1 (2.0.19d) in 1D): $(f * g)^{\wedge}(\xi) = \hat{f}(\xi)\, \hat{g}(\xi)$.

                                            Differentiation in frequency (Theorem 2.1 (2.0.19e) in 1D, order 1): $\dfrac{d}{d\xi}\hat{f}(\xi) = [(-2\pi i x) f(x)]^{\wedge}(\xi)$, under integrability of $f$ and $x f(x)$.

                                            Derivative becomes multiplication (Theorem 2.1 (2.0.19f) in 1D, order 1): $(f')^{\wedge}(\xi) = 2\pi i \xi\, \hat{f}(\xi)$, when $f, f' \in L^1$, $f$ is differentiable and vanishes at infinity.

                                            Conjugation identity (Theorem 2.1 (2.0.19g) in 1D, first half): $\overline{\hat{f}}(\xi) = (\bar{f})^{\vee}(\xi)$.

                                            Conjugation identity (Theorem 2.1 (2.0.19g) in 1D, second half): $\overline{f^{\vee}}(\xi) = (\bar{f})^{\wedge}(\xi)$.

                                            theorem FourierAnalysis.fourier_translateND {n : } (f : (Fin n)) (hf : MeasureTheory.Integrable f MeasureTheory.volume) (y ξ : Fin n) :
                                            fourierTransformND n (translateFn y f) ξ = Complex.exp (↑(-2 * Real.pi) * Complex.I * (∑ j : Fin n, ξ j * y j)) * fourierTransformND n f ξ

                                            $n$-dimensional translation identity (Theorem 2.1 (2.0.19a)): $(\tau_y f)^{\wedge}(\xi) = e^{-2\pi i \xi \cdot y}\, \hat{f}(\xi)$.

                                            theorem FourierAnalysis.fourier_modulateND {n : } (f : (Fin n)) (hf : MeasureTheory.Integrable f MeasureTheory.volume) (η ξ : Fin n) :
                                            fourierTransformND n (fun (x : Fin n) => Complex.exp (↑(2 * Real.pi) * Complex.I * (∑ j : Fin n, η j * x j)) * f x) ξ = fourierTransformND n f (ξ - η)

                                            $n$-dimensional modulation identity (Theorem 2.1 (2.0.19b)): if $h(x) = e^{2\pi i \eta \cdot x} f(x)$ then $\hat{h}(\xi) = \hat{f}(\xi - \eta)$.

                                            $n$-dimensional convolution identity (Theorem 2.1 (2.0.19d)): $(f * g)^{\wedge}(\xi) = \hat{f}(\xi)\, \hat{g}(\xi)$, given joint integrability of the relevant uncurried integrand.

                                            theorem FourierAnalysis.sum_update_decomp_coord {n : } (ξ : Fin n) (i : Fin n) (t : ) (x : Fin n) :
                                            j : Fin n, Function.update ξ i t j * x j = t * x i + jFinset.univ.erase i, ξ j * x j

                                            Decomposes the sum $\sum_j (\text{update } \xi\, i\, t)_j\, x_j$ as the contribution $t\, x_i$ from the updated coordinate plus the sum over the remaining indices.

                                            theorem FourierAnalysis.continuous_cexp_update_coord {n : } (ξ : Fin n) (i : Fin n) (t : ) :
                                            Continuous fun (x : Fin n) => Complex.exp (↑(-2 * Real.pi) * Complex.I * (∑ j : Fin n, Function.update ξ i t j * x j))

                                            Continuity of the exponential kernel $e^{-2\pi i (\text{update } \xi\, i\, t) \cdot x}$ viewed as a function of x.

                                            theorem FourierAnalysis.hasDerivAt_fourierTransformND_coord {n : } (g : (Fin n)) (i : Fin n) (ξ : Fin n) (hg_int : MeasureTheory.Integrable g MeasureTheory.volume) (hxg_int : MeasureTheory.Integrable (fun (x : Fin n) => (x i) * g x) MeasureTheory.volume) :
                                            HasDerivAt (fun (t : ) => fourierTransformND n g (Function.update ξ i t)) (fourierTransformND n (fun (x : Fin n) => ↑(-2 * Real.pi) * Complex.I * (x i) * g x) ξ) (ξ i)

                                            Partial derivative of $\hat{g}(\xi)$ in the $i$-th frequency coordinate equals the Fourier transform of $-2\pi i x_i\, g(x)$ at $\xi$ (a key step in Theorem 2.1 (2.0.19e)).

                                            theorem FourierAnalysis.integrable_pow_xi_mul {n : } {i : Fin n} {g : (Fin n)} {k : } (hg_int : MeasureTheory.Integrable g MeasureTheory.volume) (hkg : MeasureTheory.Integrable (fun (x : Fin n) => ↑(|x i| ^ k) * g x) MeasureTheory.volume) :
                                            MeasureTheory.Integrable (fun (x : Fin n) => (↑(-2 * Real.pi) * Complex.I * (x i)) ^ k * g x) MeasureTheory.volume

                                            Helper: if $|x_i|^k\, g(x)$ is integrable, then $(-2\pi i x_i)^k\, g(x)$ is integrable.

                                            theorem FourierAnalysis.iteratedPartialDeriv_fourierTransformND {n : } (i : Fin n) (k : ) (g : (Fin n)) (hg_int : MeasureTheory.Integrable g MeasureTheory.volume) (hkg_int : jk, MeasureTheory.Integrable (fun (x : Fin n) => ↑(|x i| ^ j) * g x) MeasureTheory.volume) (ξ : Fin n) :
                                            iteratedPartialDeriv i k (fourierTransformND n g) ξ = fourierTransformND n (fun (x : Fin n) => (↑(-2 * Real.pi) * Complex.I * (x i)) ^ k * g x) ξ

                                            Iterated partial differentiation in frequency yields multiplication in space: $\partial_i^k \hat{g}(\xi) = [(-2\pi i x_i)^k\, g(x)]^{\wedge}(\xi)$, under integrability of $|x_i|^j g(x)$ for all $j \le k$.

                                            theorem FourierAnalysis.ft_deriv_eq_ft_mulND {n : } (f : (Fin n)) (hf_int : MeasureTheory.Integrable f MeasureTheory.volume) (β : MultiIndex n) (hβf_int : ∀ (α : MultiIndex n), α.order β.orderMeasureTheory.Integrable (fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => (x i)) α * f x) MeasureTheory.volume) (ξ : Fin n) :
                                            multiIndexDeriv β (fourierTransformND n f) ξ = fourierTransformND n (fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => ↑(-2 * Real.pi) * Complex.I * (x i)) β * f x) ξ

                                            Multi-index version of Theorem 2.1 (2.0.19e): if all moments $x^{\vec{\alpha}} f$ with $|\vec{\alpha}| \le |\vec{\beta}|$ are in $L^1$, then $\partial_{\vec{\beta}}\hat{f}(\xi) = [(-2\pi i x)^{\vec{\beta}} f(x)]^{\wedge}(\xi)$.

                                            theorem FourierAnalysis.ft_contDiff_of_moments_integrableND {n : } (f : (Fin n)) (hf_int : MeasureTheory.Integrable f MeasureTheory.volume) (β : MultiIndex n) (hβf_int : ∀ (α : MultiIndex n), α.order β.orderMeasureTheory.Integrable (fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => (x i)) α * f x) MeasureTheory.volume) :

                                            Smoothness consequence of Theorem 2.1 (2.0.19e): if $x^{\vec{\alpha}} f \in L^1$ for all $|\vec{\alpha}| \le |\vec{\beta}|$ then $\hat{f} \in C^{|\vec{\beta}|}$.

                                            theorem FourierAnalysis.multiIndexMonomial_mul_smooth_compact {n : } (f : (Fin n)) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) (β : MultiIndex n) :
                                            (ContDiff fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => ↑(-2 * Real.pi) * Complex.I * (x i)) β * f x) HasCompactSupport fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => ↑(-2 * Real.pi) * Complex.I * (x i)) β * f x

                                            Multiplying a smooth compactly supported function by a polynomial monomial $(-2\pi i x)^{\vec{\beta}}$ keeps it smooth and compactly supported.

                                            theorem FourierAnalysis.fourierTransformND_partialDeriv {n : } (g : (Fin n)) (j : Fin n) (ξ : Fin n) (hg_diff : Differentiable g) (hg_int : MeasureTheory.Integrable g MeasureTheory.volume) (hg'_int : MeasureTheory.Integrable (fun (x : Fin n) => deriv (fun (t : ) => g (Function.update x j t)) (x j)) MeasureTheory.volume) (hg_decay : Filter.Tendsto g (Filter.cocompact (Fin n)) (nhds 0)) :
                                            fourierTransformND n (fun (x : Fin n) => deriv (fun (t : ) => g (Function.update x j t)) (x j)) ξ = ↑(2 * Real.pi) * Complex.I * (ξ j) * fourierTransformND n g ξ

                                            Single partial derivative version of Theorem 2.1 (2.0.19f): $(\partial_j g)^{\wedge}(\xi) = 2\pi i\, \xi_j\, \hat{g}(\xi)$, when g is differentiable, integrable, has integrable partial derivative, and vanishes at infinity.

                                            theorem FourierAnalysis.iteratedPartialDeriv_succ_apply {n : } (j : Fin n) (k : ) (g : (Fin n)) :
                                            iteratedPartialDeriv j (k + 1) g = fun (x : Fin n) => deriv (fun (t : ) => iteratedPartialDeriv j k g (Function.update x j t)) (x j)

                                            Unfolding equation for iteratedPartialDeriv: $\partial_j^{k+1} g$ is the one-variable derivative along the $j$-th axis of $\partial_j^k g$.

                                            theorem FourierAnalysis.partialDeriv_eq_fderiv_apply {n : } (f : (Fin n)) (j : Fin n) (hf : Differentiable f) :
                                            (fun (x : Fin n) => deriv (fun (t : ) => f (Function.update x j t)) (x j)) = fun (x : Fin n) => (fderiv f x) (Pi.single j 1)

                                            The one-variable derivative along the $j$-th axis equals the Fréchet derivative applied to the standard basis vector $e_j$.

                                            theorem FourierAnalysis.contDiff_partialDeriv {n : } (f : (Fin n)) (j : Fin n) (m : ) (hf : ContDiff (↑(m + 1)) f) :
                                            ContDiff m fun (x : Fin n) => deriv (fun (t : ) => f (Function.update x j t)) (x j)

                                            If f is $C^{m+1}$ then its partial derivative along the $j$-th axis is $C^m$.

                                            theorem FourierAnalysis.contDiff_iteratedPartialDeriv {n : } (j : Fin n) (k : ) (g : (Fin n)) (m : ) (hg : ContDiff (↑(k + m)) g) :

                                            If g is $C^{k+m}$ then $\partial_j^k g$ is $C^m$.

                                            theorem FourierAnalysis.iteratedPartialDeriv_differentiable {n : } (j : Fin n) (k : ) (g : (Fin n)) (hg : ContDiff (↑(k + 1)) g) :

                                            If g is $C^{k+1}$ then $\partial_j^k g$ is differentiable.

                                            theorem FourierAnalysis.fourierTransformND_iteratedPartialDeriv {n : } (g : (Fin n)) (j : Fin n) (k : ) (ξ : Fin n) (hg_smooth : ContDiff (↑k) g) (hg_deriv_int : mk, MeasureTheory.Integrable (iteratedPartialDeriv j m g) MeasureTheory.volume) (hg_deriv_decay : mk - 1, Filter.Tendsto (iteratedPartialDeriv j m g) (Filter.cocompact (Fin n)) (nhds 0)) :

                                            Iterated partial derivative version of Theorem 2.1 (2.0.19f): $(\partial_j^k g)^{\wedge}(\xi) = (2\pi i\, \xi_j)^k\, \hat{g}(\xi)$, under suitable smoothness, integrability and decay hypotheses on g and its lower-order partial derivatives.

                                            theorem FourierAnalysis.ft_of_derivND {n : } (f : (Fin n)) (β : MultiIndex n) (hf_smooth : ContDiff (↑β.order) f) (hf_deriv_int : ∀ (α : MultiIndex n), α.order β.orderMeasureTheory.Integrable (multiIndexDeriv α f) MeasureTheory.volume) (hf_deriv_decay : ∀ (α : MultiIndex n), α.order β.order - 1Filter.Tendsto (multiIndexDeriv α f) (Filter.cocompact (Fin n)) (nhds 0)) (ξ : Fin n) :
                                            fourierTransformND n (multiIndexDeriv β f) ξ = multiIndexMonomial (fun (i : Fin n) => ↑(2 * Real.pi) * Complex.I * (ξ i)) β * fourierTransformND n f ξ

                                            Multi-index version of Theorem 2.1 (2.0.19f): $(\partial_{\vec{\beta}} f)^{\wedge}(\xi) = (2\pi i\, \xi)^{\vec{\beta}}\, \hat{f}(\xi)$, under smoothness, integrability of $\partial_{\vec{\alpha}} f$ for $|\vec{\alpha}| \le |\vec{\beta}|$, and decay at infinity for $|\vec{\alpha}| \le |\vec{\beta}| - 1$.

                                            theorem FourierAnalysis.fourier_dilationND {n : } (f : (Fin n)) (hf : MeasureTheory.Integrable f MeasureTheory.volume) (t : ) (ht : t 0) (ξ : Fin n) :
                                            fourierTransformND n (fun (x : Fin n) => f (t⁻¹ x)) ξ = ↑(|t| ^ n) * fourierTransformND n f (t ξ)

                                            $n$-dimensional dilation (Theorem 2.1 (2.0.19c)): if $h(x) = f(t^{-1} x)$ then $\hat{h}(\xi) = |t|^n\, \hat{f}(t \xi)$.

                                            $n$-dimensional conjugation identity (Theorem 2.1 (2.0.19g), second half): $\overline{f^{\vee}}(\xi) = (\bar{f})^{\wedge}(\xi)$.

                                            theorem FourierAnalysis.fourier_transform_properties {n : } (f g : (Fin n)) (hf : MeasureTheory.Integrable f MeasureTheory.volume) (hg : MeasureTheory.Integrable g MeasureTheory.volume) (t : ) (ht : t 0) :
                                            (∀ (y ξ : Fin n), fourierTransformND n (translateFn y f) ξ = Complex.exp (↑(-2 * Real.pi) * Complex.I * (∑ j : Fin n, ξ j * y j)) * fourierTransformND n f ξ) (∀ (η ξ : Fin n), fourierTransformND n (fun (x : Fin n) => Complex.exp (↑(2 * Real.pi) * Complex.I * (∑ j : Fin n, η j * x j)) * f x) ξ = fourierTransformND n f (ξ - η)) (∀ (ξ : Fin n), fourierTransformND n (fun (x : Fin n) => f (t⁻¹ x)) ξ = ↑(|t| ^ n) * fourierTransformND n f (t ξ)) (∀ (ξ : Fin n), MeasureTheory.Integrable (Function.uncurry fun (x y : Fin n) => f y * g (x - y) * Complex.exp (↑(-2 * Real.pi) * Complex.I * (∑ j : Fin n, ξ j * x j))) (MeasureTheory.volume.prod MeasureTheory.volume)fourierTransformND n (complexConvolutionND f g) ξ = fourierTransformND n f ξ * fourierTransformND n g ξ) (∀ (β : MultiIndex n), (∀ (α : MultiIndex n), α.order β.orderMeasureTheory.Integrable (fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => (x i)) α * f x) MeasureTheory.volume)ContDiff (↑β.order) (fourierTransformND n f) ∀ (ξ : Fin n), multiIndexDeriv β (fourierTransformND n f) ξ = fourierTransformND n (fun (x : Fin n) => multiIndexMonomial (fun (i : Fin n) => ↑(-2 * Real.pi) * Complex.I * (x i)) β * f x) ξ) (∀ (β : MultiIndex n), ContDiff (↑β.order) f(∀ (α : MultiIndex n), α.order β.orderMeasureTheory.Integrable (multiIndexDeriv α f) MeasureTheory.volume)(∀ (α : MultiIndex n), α.order β.order - 1Filter.Tendsto (multiIndexDeriv α f) (Filter.cocompact (Fin n)) (nhds 0))∀ (ξ : Fin n), fourierTransformND n (multiIndexDeriv β f) ξ = multiIndexMonomial (fun (i : Fin n) => ↑(2 * Real.pi) * Complex.I * (ξ i)) β * fourierTransformND n f ξ) (∀ (ξ : Fin n), (starRingEnd ) (fourierTransformND n f ξ) = inverseFourierTransformND n (fun (x : Fin n) => (starRingEnd ) (f x)) ξ) ∀ (ξ : Fin n), (starRingEnd ) (inverseFourierTransformND n f ξ) = fourierTransformND n (fun (x : Fin n) => (starRingEnd ) (f x)) ξ

                                            Combined statement of the main Fourier transform identities of Theorem 2.1: translation, modulation, dilation, convolution, derivative-versus-multiplication in both directions, and conjugation identities.

                                            Bridge lemma: our 1D fourierTransform agrees with Mathlib's 𝓕.

                                            noncomputable def FourierAnalysis.mulByPoly (f : ) (k : ) :

                                            Auxiliary 1D operator: $(\text{mulByPoly}\, f\, k)(x) := (-2\pi i x)^k\, f(x)$.

                                            Instances For
                                              theorem FourierAnalysis.mulByPoly_step (f : ) (k : ) :
                                              (fun (x : ) => ↑(-2 * Real.pi) * Complex.I * x * mulByPoly f k x) = mulByPoly f (k + 1)

                                              Recursion step: $(-2\pi i x) \cdot (\text{mulByPoly}\, f\, k)(x) = (\text{mulByPoly}\, f\, (k+1))(x)$.

                                              theorem FourierAnalysis.mulByPoly_smooth (f : ) (hf : ContDiff (↑) f) (k : ) :

                                              mulByPoly f k is smooth whenever f is smooth.

                                              mulByPoly f k has compact support whenever f does.

                                              mulByPoly f k is integrable for smooth, compactly supported f.

                                              $x \cdot (\text{mulByPoly}\, f\, k)(x)$ is integrable for smooth, compactly supported f.

                                              For smooth, compactly supported f, the $k$-th derivative of $\hat{f}$ is the Fourier transform of $(-2\pi i x)^k f(x)$ (iterated form of Theorem 2.1 (2.0.19e) in 1D).

                                              theorem FourierAnalysis.schwartz_ft_smooth (f : ) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) :

                                              For $f \in C_c^{\infty}(\mathbb{R})$, $\hat{f}$ is smooth (part of Proposition 2.0.2 in 1D).

                                              theorem FourierAnalysis.schwartz_rapid_decay_aux (N : ) (f : ) :
                                              ContDiff (↑) fHasCompactSupport f∃ (C : ), 0 < C ∀ (ξ : ), fourierTransform f ξ C * (1 + |ξ|)⁻¹ ^ N

                                              Auxiliary inductive form of the rapid decay estimate for the 1D Fourier transform: for every $N \in \mathbb{N}$ and $f \in C_c^{\infty}(\mathbb{R})$, there exists $C > 0$ with $|\hat{f}(\xi)| \le C\,(1 + |\xi|)^{-N}$.

                                              theorem FourierAnalysis.schwartz_rapid_decay (f : ) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) (N : ) :
                                              ∃ (C : ), 0 < C ∀ (ξ : ), fourierTransform f ξ C * (1 + |ξ|)⁻¹ ^ N

                                              Rapid decay of $\hat{f}$ for $f \in C_c^{\infty}(\mathbb{R})$ (Proposition 2.0.2 in 1D): for every $N$ there exists $C_N > 0$ such that $|\hat{f}(\xi)| \le C_N\,(1 + |\xi|)^{-N}$.

                                              theorem FourierAnalysis.schwartz_rapid_decay_deriv (f : ) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) (N k : ) :
                                              ∃ (C : ), 0 < C ∀ (ξ : ), iteratedDeriv k (fourierTransform f) ξ C * (1 + |ξ|)⁻¹ ^ N

                                              Rapid decay of the $k$-th derivative of $\hat{f}$ for $f \in C_c^{\infty}(\mathbb{R})$ (derivative form of Proposition 2.0.2 in 1D).

                                              For $f \in C_c^{\infty}(\mathbb{R})$, $\hat{f} \in L^1$ (part of Proposition 2.0.2 in 1D).

                                              Bridge lemma identifying our fourierTransformND with Mathlib's $\mathcal{F}$ via the $L^2$ Euclidean-space identification.

                                              The $L^{\infty}$ (sup) norm on $\mathbb{R}^n$ is bounded above by the Euclidean ($L^2$) norm.

                                              theorem FourierAnalysis.schwartz_FT_partial_IBP_bound {n : } (f : (Fin n)) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) (N : ) :
                                              ∃ (C : ), 0 < C ∀ (ξ : Fin n), fourierTransformND n f ξ C * (1 + ξ)⁻¹ ^ N

                                              Rapid decay estimate for the $n$-dimensional Fourier transform via the Schwartz seminorm machinery: for $f \in C_c^{\infty}(\mathbb{R}^n)$ and every $N$ there exists $C_N > 0$ with $|\hat{f}(\xi)| \le C_N (1 + \|\xi\|)^{-N}$.

                                              theorem FourierAnalysis.schwartz_rapid_decayND {n : } (f : (Fin n)) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) (N : ) :
                                              ∃ (C : ), 0 < C ∀ (ξ : Fin n), fourierTransformND n f ξ C * (1 + ξ)⁻¹ ^ N

                                              Rapid decay of $\hat{f}$ for $f \in C_c^{\infty}(\mathbb{R}^n)$ (Proposition 2.0.2): for every $N$ there exists $C_N > 0$ such that $|\hat{f}(\xi)| \le C_N\,(1 + \|\xi\|)^{-N}$.

                                              theorem FourierAnalysis.schwartz_rapid_decay_derivND {n : } (f : (Fin n)) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) (N : ) (β : MultiIndex n) :
                                              ∃ (C : ), 0 < C ∀ (ξ : Fin n), multiIndexDeriv β (fourierTransformND n f) ξ C * (1 + ξ)⁻¹ ^ N

                                              Rapid decay of every derivative $\partial_{\vec{\beta}} \hat{f}$ for $f \in C_c^{\infty}(\mathbb{R}^n)$ (derivative form of Proposition 2.0.2).

                                              theorem FourierAnalysis.schwartz_ft_smoothND {n : } (f : (Fin n)) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) :

                                              For $f \in C_c^{\infty}(\mathbb{R}^n)$, the Fourier transform $\hat{f}$ is smooth (part of Proposition 2.0.2).

                                              For $f \in C_c^{\infty}(\mathbb{R}^n)$, $\hat{f} \in L^1$ (part of Proposition 2.0.2).

                                              theorem FourierAnalysis.fourier_gaussian (a : ) (ha : 0 < a) (ξ : ) :
                                              fourierTransform (fun (x : ) => Complex.exp ↑(-Real.pi * a * x ^ 2)) ξ = a ^ (-1 / 2) * Complex.exp ↑(-Real.pi * ξ ^ 2 / a)

                                              1D Gaussian Fourier transform (Proposition 3.0.3, real parameter): $\mathcal{F}\!\left[e^{-\pi a x^2}\right](\xi) = a^{-1/2}\, e^{-\pi \xi^2 / a}$ for $a > 0$.

                                              theorem FourierAnalysis.fourier_gaussian_real_nD {n : } (a : ) (ha : 0 < a) (ξ : Fin n) :
                                              fourierTransformND n (fun (x : Fin n) => Complex.exp (↑(-Real.pi) * a * (euclidNormSq x))) ξ = a ^ (-n / 2) * Complex.exp (↑(-Real.pi) * (euclidNormSq ξ) / a)

                                              $n$-dimensional Gaussian Fourier transform (Proposition 3.0.3, real parameter): $\mathcal{F}\!\left[e^{-\pi a |x|^2}\right](\xi) = a^{-n/2}\, e^{-\pi |\xi|^2 / a}$ for $a > 0$.

                                              theorem FourierAnalysis.fourier_gaussian_complex {n : } (z : ) (hz : 0 < z.re) (_him : z.im 0) (ξ : Fin n) :
                                              fourierTransformND n (fun (x : Fin n) => Complex.exp (↑(-Real.pi) * z * (euclidNormSq x))) ξ = z ^ (-n / 2) * Complex.exp (↑(-Real.pi) * (euclidNormSq ξ) / z)

                                              $n$-dimensional Gaussian Fourier transform with complex parameter $z = a + ib$ ($a > 0$, $b \ne 0$): $\mathcal{F}\!\left[e^{-\pi z |x|^2}\right](\xi) = z^{-n/2}\, e^{-\pi |\xi|^2 / z}$ (Proposition 3.0.3, complex form).

                                              Multiplication formula in 1D: $\int_{\mathbb{R}} \hat{f}(x)\, g(x)\, dx = \int_{\mathbb{R}} f(x)\, \hat{g}(x)\, dx$ for $f, g \in L^1$.

                                              1D inner-product swap identity: $\langle \hat{f}, g \rangle = \langle f, g^{\vee} \rangle$ for $f, g \in L^1$.

                                              1D Fourier inversion: $(f^{\wedge})^{\vee}(x) = f(x)$ for continuous $f \in L^1$ with $\hat{f} \in L^1$.

                                              1D reverse Fourier inversion: $(f^{\vee})^{\wedge}(x) = f(x)$ for continuous $f \in L^1$ with $f^{\vee} \in L^1$.

                                              1D Plancherel preparation: under integrability and $L^2$ hypotheses for $f$, the Fourier transform $\hat{f}$ also lies in $L^2$.

                                              1D Plancherel/Parseval identity: $\langle \hat{f}, \hat{g} \rangle = \langle f, g \rangle$ under suitable integrability, $L^2$, and continuity hypotheses on $f$ and $g$.

                                              Bridge identifying our $n$-dimensional fourierTransformND with Mathlib's $\mathcal{F}$ on the Euclidean space, via the $L^2$ identification.

                                              Bridge identifying our $n$-dimensional inverseFourierTransformND with Mathlib's 𝓕⁻ on the Euclidean space.

                                              $n$-dimensional Fourier inversion: $(\hat{f})^{\vee}(x) = f(x)$ for continuous $f \in L^1$ with $\hat{f} \in L^1$.

                                              $n$-dimensional multiplication formula: $\int_{\mathbb{R}^n} \hat{f}(x)\, g(x)\, d^n x = \int_{\mathbb{R}^n} f(x)\, \hat{g}(x)\, d^n x$.

                                              theorem FourierAnalysis.fourier_conjND {n : } (f : (Fin n)) (hf : MeasureTheory.Integrable f MeasureTheory.volume) (ξ : Fin n) :
                                              (starRingEnd ) (fourierTransformND n f ξ) = inverseFourierTransformND n (fun (x : Fin n) => (starRingEnd ) (f x)) ξ

                                              $n$-dimensional conjugation identity (Theorem 2.1 (2.0.19g), first half): $\overline{\hat{f}}(\xi) = (\bar{f})^{\vee}(\xi)$.

                                              $n$-dimensional inner-product swap identity: $\langle \hat{f}, g \rangle = \langle f, g^{\vee} \rangle$.

                                              $n$-dimensional pointwise bound (Lemma 2.0.1): $|\hat{f}(\xi)| \le \|f\|_{L^1}$ for $f \in L^1(\mathbb{R}^n)$.

                                              $n$-dimensional continuity of $\hat{f}$ for $f \in L^1(\mathbb{R}^n)$ (Lemma 2.0.1).

                                              $n$-dimensional Riemann–Lebesgue: $\hat{f}(\xi) \to 0$ as $|\xi| \to \infty$ for $f \in L^1(\mathbb{R}^n)$.

                                              $n$-dimensional Lemma 2.0.1 (combined): for $f \in L^1(\mathbb{R}^n)$, $\hat{f}$ is bounded by $\|f\|_{L^1}$, continuous, and tends to $0$ at infinity.

                                              $n$-dimensional Plancherel preparation: under integrability and $L^2$ hypotheses for $f$, the Fourier transform $\hat{f}$ also lies in $L^2$.

                                              $n$-dimensional Plancherel/Parseval identity: $\langle \hat{f}, \hat{g} \rangle = \langle f, g \rangle$.

                                              $n$-dimensional Plancherel norm identity: $\|\hat{f}\|_{L^2}^2 = \|f\|_{L^2}^2$.

                                              Combined statement of the Plancherel theorem in $n$ dimensions: $\hat{f}, \hat{g} \in L^2$, $\langle \hat{f}, \hat{g} \rangle = \langle f, g \rangle$, and $\|\hat{f}\|_{L^2}^2 = \|f\|_{L^2}^2$.

                                              theorem FourierAnalysis.proposition_2_0_2 {n : } (f : (Fin n)) (hf_smooth : ContDiff (↑) f) (hf_supp : HasCompactSupport f) :
                                              ContDiff (↑) (fourierTransformND n f) (∀ (N : ), ∃ (C : ), 0 < C ∀ (ξ : Fin n), fourierTransformND n f ξ C * (1 + ξ)⁻¹ ^ N) (∀ (N : ) (β : MultiIndex n), ∃ (C : ), 0 < C ∀ (ξ : Fin n), multiIndexDeriv β (fourierTransformND n f) ξ C * (1 + ξ)⁻¹ ^ N) MeasureTheory.Integrable (fourierTransformND n f) MeasureTheory.volume

                                              Proposition 2.0.2: for $f \in C_c^{\infty}(\mathbb{R}^n)$, $\hat{f}$ is smooth, rapidly decaying at infinity together with all its derivatives, and lies in $L^1$.