Documentation

SphereEversion.Loops.DeltaMollifier

Delta mollifiers #

A key ingredient in the proof of the reparametrization lemma is the existence of a smooth approximation to the Dirac delta function. Such an approximation is a sequence of functions δ : ℕ × S¹ → S¹, (i, t) ↦ δᵢ t such that:

This file contains a construction approxDirac of such a family δ together with code which packages this into the precise form required for the proof of the reparametrization lemma: deltaMollifier, Loop.mollify.

The key ingredients are the existence of smooth "bump functions" and a powerful theory of convolutions.

Bump family #

In this section we construct bump (n : ℕ), a bump function with support in Ioo (-1/(n+2)) (1/(n+2)).

def bump (n : ) :

bump n is a bump function on which has support Ioo (-(1/(n+2))) (1/(n+2)) and equals one on Icc (-(1/(n+3))) (1/(n+3)).

Equations
  • bump n = { rIn := 1 / (n + 3), rOut := 1 / (n + 2), rIn_pos := , rIn_lt_rOut := }
Instances For
    theorem support_bump (n : ) :
    Function.support (bump n) = Set.Ioo (-(1 / (n + 2))) (1 / (n + 2))
    theorem support_bump_subset (n : ) :
    Function.support (bump n) Set.Ioc (-(1 / 2)) (1 / 2)
    theorem support_shifted_normed_bump_subset (n : ) (t : ) :
    (Function.support fun (x : ) => (bump n).normed MeasureTheory.volume (x - t)) Set.Ioc (t - 1 / 2) (t + 1 / 2)

    Periodize #

    In this section we turn any function f : ℝ → E into a 1-periodic function fun t : ℝ ↦ ∑ᶠ n : ℤ, f (t+n).

    def periodize {M : Type u_2} [AddCommMonoid M] (f : M) (t : ) :
    M

    Turn a function into a 1-periodic function. If its support lies in a (non-closed) interval of length 1, then this will be that function made periodic with period 1.

    Equations
    Instances For
      theorem periodize_nonneg {f : } (h : ∀ (t : ), 0 f t) (t : ) :
      theorem ContDiff.periodize {E : Type u_3} [NormedAddCommGroup E] [NormedSpace E] {f : E} {n : ℕ∞} (h : 𝒞 (↑n) f) (h' : HasCompactSupport f) :
      theorem periodize_comp_sub {M : Type u_2} [AddCommMonoid M] (f : M) (x t : ) :
      periodize (fun (x' : ) => f (x' - t)) x = periodize f (x - t)
      theorem periodize_smul_periodic {E : Type u_3} [NormedAddCommGroup E] [NormedSpace E] (f : ) {g : E} (hg : Function.Periodic g 1) (t : ) :
      periodize f t g t = periodize (fun (x : ) => f x g x) t
      theorem integral_periodize {E : Type u_3} [NormedAddCommGroup E] [NormedSpace E] (f : E) {a : } (hf : Function.support f Set.Ioc a (a + 1)) :
      (t : ) in a..a + 1, periodize f t = (t : ) in a..a + 1, f t
      theorem intervalIntegral_periodize_smul {E : Type u_3} [NormedAddCommGroup E] [NormedSpace E] (f : ) (γ : Loop E) {a b c d : } (h : b a + 1) (h2 : d = c + 1) (hf : Function.support f Set.Ioc a b) :
      (t : ) in c..d, periodize f t γ t = (t : ), f t γ t

      An approximate Dirac "on the circle". #

      def approxDirac (n : ) :

      A periodized bump function, which we can view as a function from 𝕊¹ → ℝ. As n → ∞ this tends to the Dirac delta function located at 0.

      Equations
      Instances For
        theorem approxDirac_nonneg (n : ) (t : ) :
        theorem approxDirac_integral_eq_one (n : ) {a b : } (h : b = a + 1) :
        (s : ) in a..b, approxDirac n s = 1
        def deltaMollifier (n : ) (t : ) :

        A sequence of functions that converges to the Dirac delta function located at t, with the properties that this sequence is everywhere positive and

        Equations
        Instances For
          theorem deltaMollifier_pos {n : } {t : } (s : ) :
          theorem deltaMollifier_smooth {n : } {t : } :
          @[simp]
          theorem deltaMollifier_integral_eq_one {n : } {t : } :
          (s : ) in 0 ..1, deltaMollifier n t s = 1
          def Loop.mollify {F : Type u_1} [NormedAddCommGroup F] [NormedSpace F] (γ : Loop F) (n : ) (t : ) :
          F

          γ.mollify n t is a weighted average of γ using weights deltaMollifier n t. This means that as n → ∞ this value tends to γ t, but because deltaMollifier n t is positive, we know that we can reparametrize γ to obtain a loop that has γ.mollify n t as its actual average.

          Equations
          Instances For
            theorem Loop.mollify_eq_convolution {F : Type u_1} [NormedAddCommGroup F] [NormedSpace F] {n : } (γ : Loop F) ( : Continuous γ) (t : ) :
            γ.mollify n t = (n / (n + 1)) MeasureTheory.convolution ((bump n).normed MeasureTheory.volume) (↑γ) (ContinuousLinearMap.lsmul ) MeasureTheory.volume t + (1 / (n + 1)) (t : ) in 0 ..1, γ t