Documentation

SphereEversion.Local.ParametricHPrinciple

In this file we prove the parametric version of the local h-principle.

We will not use this to prove the global version of the h-principle, but we do use this to conclude the existence of sphere eversion from the local h-principle, which is proven in Local.HPrinciple.

The parametric h-principle states the following: Suppose that R is a local relation, 𝓕₀ : P → J¹(E, F) is a family of formal solutions of R that is holonomic near some set C ⊆ P × E, K ⊆ P × E is compact and ε : ℝ, then there exists a homotopy 𝓕 : ℝ × P → J¹(E, F) between 𝓕 and a solution that is holonomic near K, that agrees with 𝓕₀ near C and is everywhere ε-close to 𝓕₀

def oneJetSnd {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] :
OneJet (P × E) FOneJet E F

The projection J¹(P × E, F) → J¹(E, F).

Equations
Instances For
    theorem oneJetSnd_eq {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (p : OneJet (P × E) F) :
    oneJetSnd p = (p.1.2, p.2.1, p.2.2.comp (ContinuousLinearMap.inr P E))

    The relation R.relativize P (𝓡 ^ P in the blueprint) is the relation on J¹(P × E, F) induced by R.

    Equations
    Instances For
      theorem RelLoc.mem_relativize {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (R : RelLoc E F) (w : OneJet (P × E) F) :
      w relativize P R (w.1.2, w.2.1, w.2.2.comp (ContinuousLinearMap.inr P E)) R
      theorem relativize_slice_loc {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} {σ : OneJet (P × E) F} {p : DualPair (P × E)} (q : DualPair E) (hpq : p.π.comp (ContinuousLinearMap.inr P E) = q.π) :
      (RelLoc.relativize P R).slice p σ = σ.2.2 (p.v - (0, q.v)) +ᵥ R.slice q (oneJetSnd σ)

      Turn a family of sections of J¹(E, E') parametrized by P into a section of J¹(P × E, E').

      Equations
      • S.uncurry = { f := fun (p : P × E) => S.f p.1 p.2, f_diff := , φ := fun (p : P × E) => D (fun (z : P × E) => S.f z.1 p.2) p + (S.φ p.1 p.2).comp (D Prod.snd p), φ_diff := }
      Instances For
        @[simp]
        theorem FamilyJetSec.uncurry_φ {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec E F P) (p : P × E) :
        S.uncurry.φ p = D (fun (z : P × E) => S.f z.1 p.2) p + (S.φ p.1 p.2).comp (D Prod.snd p)
        @[simp]
        theorem FamilyJetSec.uncurry_f {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec E F P) (p : P × E) :
        S.uncurry.f p = S.f p.1 p.2
        theorem FamilyJetSec.uncurry_φ' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec E F P) (p : P × E) :
        S.uncurry.φ p = (D (fun (z : P) => S.f z p.2) p.1).comp (ContinuousLinearMap.fst P E) + (S.φ p.1 p.2).comp (ContinuousLinearMap.snd P E)
        theorem FamilyJetSec.uncurry_mem_relativize {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} (S : FamilyJetSec E F P) {s : P} {x : E} :
        ((s, x), S.uncurry (s, x)) RelLoc.relativize P R (x, (S s) x) R

        Turn a family of formal solutions of R ⊆ J¹(E, E') parametrized by P into a formal solution of R.relativize P.

        Equations
        Instances For
          theorem RelLoc.FamilyFormalSol.uncurry_φ' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} (S : FamilyFormalSol P R) (p : P × E) :
          (S.uncurry p).2 = (D (fun (z : P) => S.f z p.2) p.1).comp (ContinuousLinearMap.fst P E) + (S.φ p.1 p.2).comp (ContinuousLinearMap.snd P E)

          Turn a family of sections of J¹(P × E, F) parametrized by G into a family of sections of J¹(E, F) parametrized by G × P.

          Equations
          • S.curry = { f := fun (p : G × P) (x : E) => (S p.1).f (p.2, x), f_diff := , φ := fun (p : G × P) (x : E) => ((S p.1).φ (p.2, x)).comp (D (fun (x : E) => (p.2, x)) x), φ_diff := }
          Instances For
            theorem FamilyJetSec.curry_f {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec (P × E) F G) (p : G × P) (x : E) :
            (S.curry p).f x = (S p.1).f (p.2, x)
            theorem FamilyJetSec.curry_φ {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec (P × E) F G) (p : G × P) (x : E) :
            (S.curry p).φ x = ((S p.1).φ (p.2, x)).comp (D (fun (x : E) => (p.2, x)) x)
            theorem FamilyJetSec.curry_φ' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec (P × E) F G) (p : G × P) (x : E) :
            (S.curry p).φ x = ((S p.1).φ (p.2, x)).comp (ContinuousLinearMap.inr P E)
            theorem FamilyJetSec.isHolonomicAt_curry {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] (S : FamilyJetSec (P × E) F G) {t : G} {s : P} {x : E} (hS : (S t).IsHolonomicAt (s, x)) :
            theorem FamilyJetSec.curry_mem {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} (S : FamilyJetSec (P × E) F G) {p : G × P} {x : E} (hR : ((p.2, x), (S p.1) (p.2, x)) RelLoc.relativize P R) :
            (x, (S.curry p) x) R

            Turn a family of formal solutions of R.relativize P parametrized by G into a family of formal solutions of R parametrized by G × P.

            Equations
            Instances For
              theorem RelLoc.FamilyFormalSol.curry_φ {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} (S : FamilyFormalSol G (relativize P R)) (p : G × P) (x : E) :
              (S.curry p).φ x = ((S p.1).φ (p.2, x)).comp (D (fun (x : E) => (p.2, x)) x)
              theorem RelLoc.FamilyFormalSol.curry_φ' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} (S : FamilyFormalSol G (relativize P R)) (p : G × P) (x : E) :
              ((S.curry p) x).2 = ((S p.1) (p.2, x)).2.comp (ContinuousLinearMap.inr P E)
              theorem curry_eq_iff_eq_uncurry_loc {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] {R : RelLoc E F} {𝓕 : RelLoc.FamilyFormalSol G (RelLoc.relativize P R)} {𝓕₀ : RelLoc.FamilyFormalSol P R} {t : G} {x : E} {s : P} (h : (𝓕 t) (s, x) = 𝓕₀.uncurry (s, x)) :
              (𝓕.curry (t, s)) x = (𝓕₀ s) x
              theorem RelLoc.FamilyFormalSol.improve_htpy {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {P : Type u_4} [NormedAddCommGroup P] [NormedSpace P] [FiniteDimensional P] {R : RelLoc E F} (h_op : IsOpen R) (h_ample : R.IsAmple) {ε : } (ε_pos : 0 < ε) (C : Set (P × E)) (hC : IsClosed C) (K : Set (P × E)) (hK : IsCompact K) (𝓕₀ : FamilyFormalSol P R) (h_hol : ∀ᶠ (p : P × E) in nhdsSet C, (𝓕₀ p.1).IsHolonomicAt p.2) :
              ∃ (𝓕 : FamilyFormalSol ( × P) R), (∀ (s : P) (x : E), (𝓕 (0, s)) x = (𝓕₀ s) x) (∀ᶠ (p : P × E) in nhdsSet C, ∀ (t : ), (𝓕 (t, p.1)) p.2 = (𝓕₀ p.1) p.2) (∀ (s : P) (x : E) (t : ), (𝓕 (t, s)).f x - 𝓕₀.f s x ε) ∀ᶠ (p : P × E) in nhdsSet K, (𝓕 (1, p.1)).IsHolonomicAt p.2
              theorem RelLoc.HtpyFormalSol.exists_sol {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {R : RelLoc E F} (h_op : IsOpen R) (h_ample : R.IsAmple) (𝓕₀ : R.HtpyFormalSol) (C : Set ( × E)) (hC : IsClosed C) (K : Set E) (hK : IsCompact K) (h_hol : ∀ᶠ (p : × E) in nhdsSet C, (𝓕₀ p.1).IsHolonomicAt p.2) :
              ∃ (f : EF), 𝒞 (↑) (Function.uncurry f) (∀ pC, f p.1 p.2 = (𝓕₀ p.1).f p.2) xK, tunitInterval, (x, f t x, D (f t) x) R

              A corollary of the local parametric h-principle, forgetting the homotopy and ε-closeness, and just stating the existence of a solution that is holonomic near K. Furthermore, we assume that P = ℝ and K is of the form compact set × I. This is sufficient to prove sphere eversion.