Documentation

SphereEversion.Local.OneJet

Spaces of 1-jets and their sections #

For real normed spaces E and F, this file defines the space OneJetSec E F of 1-jets of maps from E to F as E × F × (E →L[ℝ] F).

A section 𝓕 : JetSet E F of this space is a map (𝓕.f, 𝓕.φ) : E → F × (E →L[ℝ] F).

It is holonomic at x, spelled 𝓕.IsHolonomicAt x if the differential of 𝓕.f at x is 𝓕.φ x.

We then introduced parametrized families of sections, and especially homotopies of sections, with type HtpyJetSec E F and their concatenation operation HtpyJetSec.comp.

Implementation note: the time parameter t for homotopies is any real number, but all the homotopies we will construct will be constant for t ≤ 0 and t ≥ 1. It looks like this imposes more smoothness constraints at t = 0 and t = 1 (requiring flat functions), but this is needed for smooth concatenations anyway.

Spaces of 1-jets #

@[reducible, inline]
abbrev OneJet (E : Type u_1) [NormedAddCommGroup E] [NormedSpace E] (F : Type u_2) [NormedAddCommGroup F] [NormedSpace F] :
Type (max u_1 u_2 u_1)

The space of 1-jets of maps from E to F.

Equations
Instances For
    structure JetSec (E : Type u_1) [NormedAddCommGroup E] [NormedSpace E] (F : Type u_2) [NormedAddCommGroup F] [NormedSpace F] :
    Type (max u_1 u_2)

    A smooth section of J¹(E, F) → E.

    Instances For
      theorem JetSec.ext {E : Type u_1} {inst✝ : NormedAddCommGroup E} {inst✝¹ : NormedSpace E} {F : Type u_2} {inst✝² : NormedAddCommGroup F} {inst✝³ : NormedSpace F} {x y : JetSec E F} (f : x.f = y.f) (φ : x.φ = y.φ) :
      x = y
      Equations
      @[simp]
      theorem JetSec.mk_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (f : EF) (f_diff : 𝒞 (↑) f) (φ : EE →L[] F) (φ_diff : 𝒞 (↑) φ) (x : E) :
      { f := f, f_diff := f_diff, φ := φ, φ_diff := φ_diff } x = (f x, φ x)
      theorem JetSec.eq_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {𝓕 𝓕' : JetSec E F} {x : E} :
      𝓕 x = 𝓕' x 𝓕.f x = 𝓕'.f x 𝓕.φ x = 𝓕'.φ x
      theorem JetSec.coe_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 : JetSec E F) (x : E) :
      𝓕 x = (𝓕.f x, 𝓕.φ x)
      theorem JetSec.ext' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {𝓕 𝓕' : JetSec E F} (h : ∀ (x : E), 𝓕 x = 𝓕' x) :
      𝓕 = 𝓕'

      Holonomic sections #

      def JetSec.IsHolonomicAt {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 : JetSec E F) (x : E) :

      A jet section 𝓕 is holonomic if its linear map part at x is the derivative of its function part at x.

      Equations
      Instances For
        theorem JetSec.IsHolonomicAt.congr {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {𝓕 𝓕' : JetSec E F} {x : E} (h : 𝓕.IsHolonomicAt x) (h' : 𝓕 =ᶠ[nhds x] 𝓕') :
        def JetSec.IsPartHolonomicAt {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 : JetSec E F) (E' : Submodule E) (x : E) :

        A formal solution 𝓕 of R is partially holonomic in the direction of some subspace E' if its linear map part at x is the derivative of its function part at x in restriction to E'.

        Equations
        Instances For
          theorem Filter.Eventually.isPartHolonomicAt_congr {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {𝓕 𝓕' : JetSec E F} {s : Set E} (h : ∀ᶠ (x : E) in nhdsSet s, 𝓕 x = 𝓕' x) (E' : Submodule E) :
          ∀ᶠ (x : E) in nhdsSet s, 𝓕.IsPartHolonomicAt E' x 𝓕'.IsPartHolonomicAt E' x
          theorem JetSec.IsPartHolonomicAt.sup {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 : JetSec E F) {E' E'' : Submodule E} {x : E} (h' : 𝓕.IsPartHolonomicAt E' x) (h'' : 𝓕.IsPartHolonomicAt E'' x) :
          𝓕.IsPartHolonomicAt (E' E'') x
          @[simp]
          theorem JetSec.isPartHolonomicAt_bot {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 : JetSec E F) :
          𝓕.IsPartHolonomicAt = fun (x : E) => True

          Homotopies of sections #

          structure FamilyJetSec (E : Type u_1) [NormedAddCommGroup E] [NormedSpace E] (F : Type u_2) [NormedAddCommGroup F] [NormedSpace F] (P : Type u_3) [NormedAddCommGroup P] [NormedSpace P] :
          Type (max (max u_1 u_2) u_3)

          A parametrized family of sections of J¹(E, F).

          Instances For
            @[reducible]
            def HtpyJetSec (E : Type u_1) [NormedAddCommGroup E] [NormedSpace E] (F : Type u_2) [NormedAddCommGroup F] [NormedSpace F] :
            Type (max (max u_1 u_2) 0)

            A homotopy of sections of J¹(E, F).

            Equations
            Instances For
              Equations
              @[simp]
              theorem FamilyJetSec.mk_apply_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_3} [NormedAddCommGroup P] [NormedSpace P] (f : PEF) (f_diff : 𝒞 f) (φ : PEE →L[] F) (φ_diff : 𝒞 φ) (t : P) (x : E) :
              ({ f := f, f_diff := f_diff, φ := φ, φ_diff := φ_diff } t) x = (f t x, φ t x)
              @[simp]
              theorem FamilyJetSec.mk_apply_f {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_3} [NormedAddCommGroup P] [NormedSpace P] (f : PEF) (f_diff : 𝒞 f) (φ : PEE →L[] F) (φ_diff : 𝒞 φ) (t : P) :
              ({ f := f, f_diff := f_diff, φ := φ, φ_diff := φ_diff } t).f = f t
              @[simp]
              theorem FamilyJetSec.mk_apply_φ {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_3} [NormedAddCommGroup P] [NormedSpace P] (f : PEF) (f_diff : 𝒞 f) (φ : PEE →L[] F) (φ_diff : 𝒞 φ) (t : P) :
              ({ f := f, f_diff := f_diff, φ := φ, φ_diff := φ_diff } t).φ = φ t
              theorem FamilyJetSec.contDiff_f {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_3} [NormedAddCommGroup P] [NormedSpace P] (𝓕 : FamilyJetSec E F P) {n : ℕ∞} :
              𝒞 n 𝓕.f
              theorem FamilyJetSec.contDiff_φ {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_3} [NormedAddCommGroup P] [NormedSpace P] (𝓕 : FamilyJetSec E F P) {n : ℕ∞} :
              𝒞 n 𝓕.φ

              The constant homotopy of formal solutions at a given formal solution. It will be used as junk value for constructions of formal homotopies that need additional assumptions and also for trivial induction initialization.

              Equations
              • 𝓕.constHtpy = { f := fun (x : ) => 𝓕.f, f_diff := , φ := fun (x : ) => 𝓕.φ, φ_diff := }
              Instances For
                @[simp]
                theorem JetSec.constHtpy_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 : JetSec E F) (t : ) :
                𝓕.constHtpy t = 𝓕

                Concatenation of homotopies of sections #

                In this part of the file we build a concatenation operation for homotopies of 1-jet sections. We first need to introduce a smooth step function on . There is already a version of this in mathlib called smooth_transition but that version is not locally constant near 0 and 1, which is not convenient enough for gluing purposes.

                def smoothStep :

                A smooth step function on .

                Equations
                Instances For
                  @[simp]
                  @[simp]
                  theorem smoothStep.of_lt {t : } (h : t < 1 / 4) :
                  theorem smoothStep.pos_of_gt {t : } (h : 1 / 4 < t) :
                  theorem smoothStep.of_gt {t : } (h : 3 / 4 < t) :
                  theorem htpy_jet_sec_comp_aux {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {f g : EF} (hf : 𝒞 f) (hg : 𝒞 g) (hfg : f 1 = g 0) :
                  𝒞 fun (t : ) (x : E) => if t 1 / 2 then f (smoothStep (2 * t)) x else g (smoothStep (2 * t - 1)) x
                  def HtpyJetSec.comp {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) :

                  Concatenation of homotopies of formal solution. The result depend on our choice of a smooth step function in order to keep smoothness with respect to the time parameter.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem HtpyJetSec.comp_of_le {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) {t : } (ht : t 1 / 2) :
                    (𝓕.comp 𝓖 h) t = 𝓕 (smoothStep (2 * t))
                    theorem HtpyJetSec.comp_le_0 {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) :
                    ∀ᶠ (t : ) in nhdsSet (Set.Iic 0), (𝓕.comp 𝓖 h) t = 𝓕 0
                    theorem HtpyJetSec.comp_0 {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) :
                    (𝓕.comp 𝓖 h) 0 = 𝓕 0
                    @[simp]
                    theorem HtpyJetSec.comp_of_not_le {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) {t : } (ht : ¬t 1 / 2) :
                    (𝓕.comp 𝓖 h) t = 𝓖 (smoothStep (2 * t - 1))
                    theorem HtpyJetSec.comp_ge_1 {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) :
                    ∀ᶠ (t : ) in nhdsSet (Set.Ici 1), (𝓕.comp 𝓖 h) t = 𝓖 1
                    @[simp]
                    theorem HtpyJetSec.comp_1 {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (𝓕 𝓖 : HtpyJetSec E F) (h : 𝓕 1 = 𝓖 0) :
                    (𝓕.comp 𝓖 h) 1 = 𝓖 1