Zulip Chat Archive

Stream: new members

Topic: Defining a formal solution to ImmRel Whitney-Graustein


Sam Lindauer (Oct 08 2024 at 09:15):

Hey all,

I am working on proving the whitney graustein theorem using the sphere eversion project. An important note are that I have currently axiomized anything to do with turning numbers (existence of lift, equal turning number implies homotopy between derivatives etc.), as that would become a whole side project that I do not want to get into at the moment. At this point, I have proven the mathematically 'trivial' direction, i.e. given a homotopy between loops => turning number is equal, and I am working on the inverse direction. So far, I have managed to call upon the function immersionRel_satisfiresHPrincipleWith and am working on the part where I have to construct a family of formal solutions and prove that this family is holonomic near a closed set. This is where I am tripping, as I think I know mathematically what to do, but I manage to get lost in the code of the sphere eversion project each time I am backtracking definitions.

Here is a glimpse into my setup:

import SphereEversion.Global.Immersion

open Metric FiniteDimensional Set Function LinearMap Filter ContinuousLinearMap Complex NormedSpace
open scoped Manifold Topology

variable (E : Type*) [NormedAddCommGroup E] [InnerProductSpace  E] [ProperSpace E] [Fact (finrank  E = 2)]
local notation "𝕊¹" => sphere (0 : E) 1
local notation "𝓡_imm" => immersionRel (𝓡 1) 𝕊¹ 𝓘(, E) E

-- Structure for a loop in E that is also an immersion.
structure LoopImmersion (γ : 𝕊¹  E) : Prop where
  -- Smooth function
  cdiff : Smooth (𝓡 1) 𝓘(, E) γ
  -- Immersion condition (≠ 0, since Dim(𝕊¹) = 1)
  imm :  t : 𝕊¹, mfderiv (𝓡 1) 𝓘(, E) γ t  0

-- Structure for homotopy between loops
structure LoopHomotopy (Γ :   𝕊¹  E) : Prop where
  -- Smooth as function ℝ × 𝕊¹ → ℂ
  cdiff : Smooth (𝓘(, ).prod (𝓡 1)) 𝓘(, E) Γ
  -- LoopImmersion at every point
  imm :  t : , LoopImmersion E (Γ t)

and here is a look at what I have got so far. As far as code goes, I am not yet looking at ways to simplify what I have already written, as I will probably want to also have a look at that myself more in depth later.

def family_of_formal_sol {γ₀ γ₁ : 𝕊¹  E} (γ₀_imm : LoopImmersion E γ₀) (γ₁_imm : LoopImmersion E γ₁) (turn_eq : γ₀_imm.turningNumber = γ₁_imm.turningNumber):
  HtpyFormalSol 𝓡_imm := sorry

-- Prove that the family of formal solutions is holonomic near C := {0,1} x 𝕊¹
theorem family_of_formal_sol_hol_near_zero_one {γ₀ γ₁ : 𝕊¹  E} (γ₀_imm : LoopImmersion E γ₀) (γ₁_imm : LoopImmersion E γ₁) (turn_eq : γ₀_imm.turningNumber = γ₁_imm.turningNumber):
    ∀ᶠ s :  × 𝕊¹ near {0, 1} ×ˢ univ, (family_of_formal_sol E γ₀_imm γ₁_imm turn_eq s.1).toOneJetSec.IsHolonomicAt s.2 := by
      sorry

-- first implication whitney graustein
-- Assuming turning number is equal => ∃ homotopy
theorem whitney_graustein_left {f₀ f₁ : 𝕊¹  E} (f₀_imm : LoopImmersion E f₀) (f₁_imm : LoopImmersion E f₁)
  (eq_turn : f₀_imm.turningNumber = f₁_imm.turningNumber) :
    F :   𝕊¹  E, LoopHomotopy E F  (F 0 = f₀)  (F 1 = f₁) := by
      -- First step is to get H-principle result
      have rankE : finrank  E = 2 := Fact.out
      have ineq_rank : finrank  (^1) < finrank  E := by simp [rankE]
      let ε : 𝕊¹   := fun _  1
      have hε_pos :  x, 0 < ε x := fun _  zero_lt_one
      have hε_cont : Continuous ε := continuous_const
      let C := ({0, 1} : Set ).prod (univ : Set 𝕊¹)
      have C_closed : IsClosed C :=
        (Finite.isClosed (by simp : ({0, 1} : Set ).Finite)).prod isClosed_univ
      haveI : Nontrivial E := nontrivial_of_finrank_eq_succ (Fact.out : finrank  E = 2)
      haveI : FiniteDimensional  E := FiniteDimensional.of_finrank_eq_succ rankE
      haveI : Nonempty 𝕊¹ := (NormedSpace.sphere_nonempty.mpr zero_le_one).to_subtype
      haveI : IsCompact 𝕊¹ := isCompact_sphere (0 : E) 1
      haveI : SigmaCompactSpace 𝕊¹ := sigmaCompactSpace_of_locally_compact_second_countable
      let turn_hom := eq_turn_hom E f₀_imm f₁_imm eq_turn
      rcases (immersionRel_satisfiesHPrincipleWith (𝓡 1) 𝕊¹ 𝓘(, E) E 𝓘(, ) 
        ineq_rank C_closed hε_pos hε_cont).bs (family_of_formal_sol E f₀_imm f₁_imm eq_turn)
          (family_of_formal_sol_hol_near_zero_one E f₀_imm f₁_imm eq_turn)
            with F, h₁, h₂, h₃, h₄

      -- Remains to show that F is a Loophomotopy f₀ ~ f₁
      sorry

Now, mathematically at family_of_formal_sol, I would want to have a family as follows:

σ ⁣:R×S1J1(S1,E),σt ⁣:s(s,ft,gt) for all tR,σ0=(0,f0,g0) and σ1=(1,f1,g1), where f ⁣:R×S1E is a homotopy between the immersions f0 and f1 from the theorem above  and g ⁣:R×S1E is a homotopy of nonvanishing maps between f0 and f1.\sigma \colon \mathbb{R} \times \mathbb{S}^1 \to J^1(\mathbb{S}^1, E),\\ \sigma_t \colon s \mapsto (s, f_t, g_t) \text{ for all } t \in \mathbb{R},\\ \sigma_0 = (0, f_0, g_0) \text{ and } \sigma_1 = (1, f_1, g_1),\\ \text{ where } f \colon \mathbb{R} \times \mathbb{S}^1 \to E \text{ is a homotopy between the immersions } f_0 \text{ and } f_1 \text{ from the theorem above } \\ \text{ and } g \colon \mathbb{R} \times \mathbb{S}^1 \to E \text{ is a homotopy of nonvanishing maps between } f_0' \text{ and } f_1'.

I get stuck at how to formalise these statements to a "FamilyFormalSol" or "HtpyFormalSol" that the statement

(immersionRel_satisfiesHPrincipleWith (𝓡 1) 𝕊¹ 𝓘(, E) E 𝓘(, )  ineq_rank C_closed hε_pos hε_cont).bs

asks for.

It's a bit of a long one, sorry for that. Any help is sincerely appreciated,
Sam

Johan Commelin (Oct 09 2024 at 07:21):

@Sam Lindauer Is the code available at some project? Then we can open a local copy, which will probably make it easier to help you out.

Sam Lindauer (Oct 09 2024 at 10:34):

Yes, it should be reachable using the following link: https://github.com/MetalCreator666/WhitneyGraustein


Last updated: May 02 2025 at 03:31 UTC