Documentation

SphereEversion.Loops.Surrounding

Surrounding families of loops #

In order to carry out the corrugation technique of convex integration, one needs to a family of loops with various prescribed properties.

This file begins the work of constructing such a family.

The key definitions are:

The key results are:

noncomputable def IsPathConnected.somePath {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {x y : X} (hx : x F) (hy : y F) :
Path x y

An arbitrary path joining x and y in F.

Equations
Instances For
    theorem IsPathConnected.somePath_mem {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {x y : X} (hx : x F) (hy : y F) (t : unitInterval) :
    (hF.somePath hx hy) t F
    theorem IsPathConnected.range_somePath_subset {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {x y : X} (hx : x F) (hy : y F) :
    Set.range (hF.somePath hx hy) F
    noncomputable def IsPathConnected.pathThrough {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {m : } {p : Fin (m + 1)X} (hp : ∀ (i : Fin (m + 1)), p i F) (n : ) :
    Path (p 0) (p n)

    A path through p 0, ..., p n. Usually this is used with n := m.

    Equations
    Instances For
      theorem IsPathConnected.range_pathThrough_subset {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {m : } {p : Fin (m + 1)X} (hp : ∀ (i : Fin (m + 1)), p i F) {n : } :
      Set.range (hF.pathThrough hp n) F
      theorem IsPathConnected.mem_range_pathThrough' {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {m : } {p : Fin (m + 1)X} (hp : ∀ (i : Fin (m + 1)), p i F) {i n : } (h : i n) :
      p i Set.range (hF.pathThrough hp n)
      theorem IsPathConnected.mem_range_pathThrough {X : Type u_1} [TopologicalSpace X] {F : Set X} (hF : IsPathConnected F) {m : } {p : Fin (m + 1)X} (hp : ∀ (i : Fin (m + 1)), p i F) {i : Fin (m + 1)} :
      p i Set.range (hF.pathThrough hp m)
      def SmoothAt' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (f : EF) (x : E) :

      f is smooth at x if f is smooth on some neighborhood of x.

      Equations
      Instances For
        structure SurroundingPts {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (f : F) (p : Fin (Module.finrank F + 1)F) (w : Fin (Module.finrank F + 1)) :

        p is a collection of points surrounding f with weights w (that are positive and sum to 1) if the weighted average of the points p is f and the points p form an affine basis of the space.

        Instances For
          theorem SurroundingPts.tot {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {f : F} {p : Fin (Module.finrank F + 1)F} {w : Fin (Module.finrank F + 1)} (h : SurroundingPts f p w) :
          theorem SurroundingPts.coord_eq_w {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {f : F} {p : Fin (Module.finrank F + 1)F} {w : Fin (Module.finrank F + 1)} (h : SurroundingPts f p w) :
          { toFun := p, ind' := , tot' := }.coords f = w
          def Surrounded {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (f : F) (s : Set F) :

          f is surrounded by a set s if there is an affine basis p in s with weighted average f.

          Equations
          Instances For
            theorem surrounded_of_convexHull {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {f : F} {s : Set F} (hs : IsOpen s) (hsf : f hull s) :
            theorem smooth_surrounding {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {x : F} {p : Fin (Module.finrank F + 1)F} {w : Fin (Module.finrank F + 1)} (h : SurroundingPts x p w) :
            ∃ (W : F(Fin (Module.finrank F + 1)F)Fin (Module.finrank F + 1)), ∀ᶠ (yq : F × (Fin (Module.finrank F + 1)F)) in nhds (x, p), SmoothAt' (Function.uncurry W) yq (∀ (i : Fin (Module.finrank F + 1)), 0 < W yq.1 yq.2 i) i : Fin (Module.finrank F + 1), W yq.1 yq.2 i = 1 i : Fin (Module.finrank F + 1), W yq.1 yq.2 i yq.2 i = yq.1
            theorem smooth_surroundingPts {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {x : F} {p : Fin (Module.finrank F + 1)F} {w : Fin (Module.finrank F + 1)} (h : SurroundingPts x p w) :
            ∃ (W : F(Fin (Module.finrank F + 1)F)Fin (Module.finrank F + 1)), ∀ᶠ (yq : F × (Fin (Module.finrank F + 1)F)) in nhds (x, p), SmoothAt' (Function.uncurry W) yq SurroundingPts yq.1 yq.2 (W yq.1 yq.2)
            theorem eventually_surroundingPts_of_tendsto_of_tendsto {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {X : Type u_3} {Y : Type u_4} [FiniteDimensional F] {l : Filter X} {m : Filter Y} {v : Fin (Module.finrank F + 1)F} {q : F} {p : Fin (Module.finrank F + 1)XF} {f : YF} (hq : ∃ (w : Fin (Module.finrank F + 1)), SurroundingPts q v w) (hp : ∀ (i : Fin (Module.finrank F + 1)), Filter.Tendsto (p i) l (nhds (v i))) (hf : Filter.Tendsto f m (nhds q)) :
            ∀ᶠ (z : X × Y) in l ×ˢ m, ∃ (w : Fin (Module.finrank F + 1)), SurroundingPts (f z.2) (fun (i : Fin (Module.finrank F + 1)) => p i z.1) w
            theorem eventually_surroundingPts_of_tendsto_of_tendsto' {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {X : Type u_3} [FiniteDimensional F] {v : Fin (Module.finrank F + 1)F} {q : F} {p : Fin (Module.finrank F + 1)XF} {l : Filter X} {f : XF} (hq : ∃ (w : Fin (Module.finrank F + 1)), SurroundingPts q v w) (hp : ∀ (i : Fin (Module.finrank F + 1)), Filter.Tendsto (p i) l (nhds (v i))) (hf : Filter.Tendsto f l (nhds q)) :
            ∀ᶠ (y : X) in l, ∃ (w : Fin (Module.finrank F + 1)), SurroundingPts (f y) (fun (i : Fin (Module.finrank F + 1)) => p i y) w
            def Loop.Surrounds {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (γ : Loop F) (x : F) :

            A loop γ surrounds a point x if x is surrounded by values of γ.

            Equations
            Instances For
              theorem Loop.surrounds_iff_range_subset_range {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {x : F} :
              γ.Surrounds x ∃ (p : Fin (Module.finrank F + 1)F) (w : Fin (Module.finrank F + 1)), SurroundingPts x p w Set.range p Set.range γ
              theorem Loop.affineEquiv_surrounds_iff {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {x : F} (e : F ≃ᵃ[] F) :
              γ.Surrounds x (γ.transform e).Surrounds (e x)
              @[simp]
              theorem Loop.zero_vadd {F : Type u_2} [NormedAddCommGroup F] {γ : Loop F} :
              0 +ᵥ γ = γ
              theorem Loop.vadd_surrounds {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {x y : F} :
              γ.Surrounds x (y +ᵥ γ).Surrounds (y + x)
              theorem Loop.Surrounds.vadd {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {x y : F} (h : γ.Surrounds x) :
              (y +ᵥ γ).Surrounds (y + x)
              theorem Loop.Surrounds.vadd0 {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {y : F} (h : γ.Surrounds 0) :
              (y +ᵥ γ).Surrounds y
              theorem Loop.Surrounds.smul0 {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {t : } (h : γ.Surrounds 0) (ht : t 0) :
              (t γ).Surrounds 0
              theorem Loop.Surrounds.mono {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ γ' : Loop F} {x : F} (h : γ.Surrounds x) (h2 : Set.range γ Set.range γ') :
              γ'.Surrounds x
              theorem Loop.Surrounds.reparam {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {x : F} (h : γ.Surrounds x) {φ : EquivariantMap} ( : Continuous φ.toFun) :
              (γ.reparam φ).Surrounds x
              theorem Loop.Surrounds.eventually_surrounds {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {γ : Loop F} {x : F} [FiniteDimensional F] (h : γ.Surrounds x) :
              ε > 0, ∀ (γ' : Loop F) (y : F), (∀ (z : ), dist (γ' z) (γ z) < ε)dist y x < εγ'.Surrounds y

              This is only a stepping stone potentially useful for SurroundingFamily.surrounds_of_close, but not needed by itself.

              def surroundingLoop {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} (O_conn : IsPathConnected O) (hp : ∀ (i : Fin (Module.finrank F + 1)), p i O) (hb : b O) :
              Loop F

              witness of surrounding_loop_of_convexHull

              Equations
              Instances For
                theorem continuous_surroundingLoop {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} :

                TODO: continuity note

                @[simp]
                theorem surroundingLoop_zero_right {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} (t : ) :
                (surroundingLoop O_conn hp hb t) 0 = b
                @[simp]
                theorem surroundingLoop_zero_left {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} (s : ) :
                (surroundingLoop O_conn hp hb 0) s = b
                theorem surroundingLoop_mem {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} (t s : ) :
                (surroundingLoop O_conn hp hb t) s O
                theorem surroundingLoop_surrounds {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} {f : F} {w : Fin (Module.finrank F + 1)} (h : SurroundingPts f p w) :
                (surroundingLoop O_conn hp hb 1).Surrounds f
                theorem surroundingLoop_projI {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} (t : ) :
                surroundingLoop O_conn hp hb (projI t) = surroundingLoop O_conn hp hb t
                theorem surroundingLoop_of_le_zero {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} (s : ) {t : } (ht : t 0) :
                (surroundingLoop O_conn hp hb t) s = b
                theorem surroundingLoop_of_ge_one {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {O : Set F} {b : F} {p : Fin (Module.finrank F + 1)F} {O_conn : IsPathConnected O} {hp : ∀ (i : Fin (Module.finrank F + 1)), p i O} {hb : b O} (s : ) {t : } (ht : 1 t) :
                (surroundingLoop O_conn hp hb t) s = (surroundingLoop O_conn hp hb 1) s
                theorem surrounding_loop_of_convexHull {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {f b : F} {O : Set F} (O_op : IsOpen O) (O_conn : IsConnected O) (hsf : f hull O) (hb : b O) :
                ∃ (γ : Loop F), Continuous γ (∀ (t : ), (γ t) 0 = b) (∀ (s : ), (γ 0) s = b) (∀ (s t : ), (γ (projI t)) s = (γ t) s) (∀ (t s : ), (γ t) s O) (γ 1).Surrounds f
                structure SurroundingFamily {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (g b : EF) (γ : ELoop F) (U : Set E) :

                γ forms a family of loops surrounding g with base b. In contrast to the notes we assume that base and t₀ hold universally.

                • base (x : E) (t : ) : (γ x t) 0 = b x
                • t₀ (x : E) (s : ) : (γ x 0) s = b x
                • projI (x : E) (t s : ) : (γ x (projI t)) s = (γ x t) s
                • surrounds (x : E) : x U(γ x 1).Surrounds (g x)
                • cont : Continuous γ
                Instances For
                  structure SurroundingFamilyIn {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (g b : EF) (γ : ELoop F) (U : Set E) (Ω : Set (E × F)) extends SurroundingFamily g b γ U :

                  γ forms a family of loops surrounding g with base b in Ω.

                  Instances For
                    theorem SurroundingFamily.one {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (t : ) :
                    (γ x t) 1 = b x
                    theorem SurroundingFamily.t_le_zero {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (s : ) {t : } (ht : t 0) :
                    (γ x t) s = (γ x 0) s
                    theorem SurroundingFamily.t_le_zero_eq_b {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (s : ) {t : } (ht : t 0) :
                    (γ x t) s = b x
                    theorem SurroundingFamily.t_ge_one {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (s : ) {t : } (ht : 1 t) :
                    (γ x t) s = (γ x 1) s
                    theorem SurroundingFamily.mono {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) {V : Set E} (hVU : V U) :
                    theorem SurroundingFamily.surrounds_of_close_univ {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} [NormedSpace E] [FiniteDimensional E] [FiniteDimensional F] (hg : Continuous g) (h : SurroundingFamily g b γ Set.univ) :
                    ∃ (ε : E), (∀ (x : E), 0 < ε x) Continuous ε ∀ (x : E) (γ' : Loop F), (∀ (z : ), dist (γ' z) ((γ x 1) z) < ε x)γ'.Surrounds (g x)
                    def SurroundingFamily.path {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (t : ) :
                    Path (b x) (b x)

                    A surrounding family induces a family of paths from b x to b x. We defined the concatenation we need on path, so we need to turn a surrounding family into the family of paths.

                    Equations
                    • h.path x t = { toFun := fun (s : unitInterval) => (γ x t) s, continuous_toFun := , source' := , target' := }
                    Instances For
                      @[simp]
                      theorem SurroundingFamily.path_apply {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (t : ) (s : unitInterval) :
                      (h.path x t) s = (γ x t) s
                      theorem SurroundingFamily.continuous_path {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} {X : Type u_3} [TopologicalSpace X] (h : SurroundingFamily g b γ U) {t : X} {f : XE} {s : XunitInterval} (hf : Continuous f) (ht : Continuous t) (hs : Continuous s) :
                      Continuous fun (x : X) => (h.path (f x) (t x)) (s x)
                      @[simp]
                      theorem SurroundingFamily.path_extend_fract {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (t s : ) (x : E) :
                      (h.path x t).extend (Int.fract s) = (γ x t) s
                      @[simp]
                      theorem SurroundingFamily.range_path {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) (t : ) :
                      Set.range (h.path x t) = Set.range (γ x t)
                      @[simp]
                      theorem SurroundingFamily.path_t₀ {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {γ : ELoop F} {U : Set E} (h : SurroundingFamily g b γ U) (x : E) :
                      h.path x 0 = Path.refl (b x)
                      theorem SurroundingFamilyIn.to_sf {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ : ELoop F} (h : SurroundingFamilyIn g b γ U Ω) :

                      Abbreviation for toSurroundingFamily

                      theorem SurroundingFamilyIn.val_in {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ : ELoop F} (h : SurroundingFamilyIn g b γ U Ω) {x : E} (hx : x U) {t s : } :
                      (x, (γ x t) s) Ω
                      theorem SurroundingFamilyIn.mono {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ : ELoop F} (h : SurroundingFamilyIn g b γ U Ω) {V : Set E} (hVU : V U) :
                      theorem SurroundingFamilyIn.reparam {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ : ELoop F} (h : SurroundingFamilyIn g b γ U Ω) :
                      SurroundingFamilyIn g b (fun (x : E) (t : ) => (γ x (linearReparam.toFun t)).reparam linearReparam) U Ω

                      Continuously reparameterize a surroundingFamilyIn so that it is constant near s ∈ {0,1} and t ∈ {0,1}

                      theorem local_loops {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {Ω : Set (E × F)} [FiniteDimensional F] {x₀ : E} (hΩ_op : Unhds x₀, IsOpen (Ω Prod.fst ⁻¹' U)) (hg : ContinuousAt g x₀) (hb : Continuous b) (hconv : g x₀ hull (connectedComponentIn (Prod.mk x₀ ⁻¹' Ω) (b x₀))) :
                      ∃ (γ : ELoop F), Unhds x₀, SurroundingFamilyIn g b γ U Ω

                      Note: The conditions in this lemma are currently a bit weaker than the ones mentioned in the blueprint. TODO: use local_loops_def

                      theorem local_loops_open {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {Ω : Set (E × F)} [FiniteDimensional F] {x₀ : E} (hΩ_op : Unhds x₀, IsOpen (Ω Prod.fst ⁻¹' U)) (hg : ContinuousAt g x₀) (hb : Continuous b) (hconv : g x₀ hull (connectedComponentIn (Prod.mk x₀ ⁻¹' Ω) (b x₀))) :
                      ∃ (γ : ELoop F) (U : Set E), IsOpen U x₀ U SurroundingFamilyIn g b γ U Ω

                      A tiny reformulation of local_loops where the existing U is open.

                      def ρ (t : ) :

                      Function used in satisfied_or_refund. Rename.

                      Equations
                      Instances For
                        @[simp]
                        theorem ρ_eq_one {x : } :
                        ρ x = 1 x 1 / 2
                        @[simp]
                        theorem ρ_eq_one_of_le {x : } (h : x 1 / 2) :
                        ρ x = 1
                        @[simp]
                        theorem ρ_eq_one_of_nonpos {x : } (h : x 0) :
                        ρ x = 1
                        @[simp]
                        theorem ρ_eq_zero {x : } :
                        ρ x = 0 1 x
                        @[simp]
                        theorem ρ_eq_zero_of_le {x : } (h : 1 x) :
                        ρ x = 0
                        def sfHomotopy {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {γ₀ γ₁ : ELoop F} (h₀ : SurroundingFamily g b γ₀ U) (h₁ : SurroundingFamily g b γ₁ U) (τ : ) (x : E) (t : ) :

                        The homotopy of surrounding families of loops used in lemma satisfied_or_refund. Having this as a separate definition is useful, because the construction actually gives some more information about the homotopy than the theorem satisfied_or_refund gives.

                        Equations
                        Instances For
                          @[simp]
                          theorem sfHomotopy_zero {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {γ₀ γ₁ : ELoop F} {h₀ : SurroundingFamily g b γ₀ U} {h₁ : SurroundingFamily g b γ₁ U} :
                          sfHomotopy h₀ h₁ 0 = γ₀
                          @[simp]
                          theorem sfHomotopy_one {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {γ₀ γ₁ : ELoop F} {h₀ : SurroundingFamily g b γ₀ U} {h₁ : SurroundingFamily g b γ₁ U} :
                          sfHomotopy h₀ h₁ 1 = γ₁
                          theorem Continuous.sfHomotopy {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {γ₀ γ₁ : ELoop F} {h₀ : SurroundingFamily g b γ₀ U} {h₁ : SurroundingFamily g b γ₁ U} {X : Type u_3} [UniformSpace X] [LocallyCompactSpace X] {τ t s : X} {f : XE} ( : Continuous τ) (hf : Continuous f) (ht : Continuous t) (hs : Continuous s) :
                          Continuous fun (x : X) => (_root_.sfHomotopy h₀ h₁ (τ x) (f x) (t x)) (s x)
                          theorem continuous_sfHomotopy {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {γ₀ γ₁ : ELoop F} {h₀ : SurroundingFamily g b γ₀ U} {h₁ : SurroundingFamily g b γ₁ U} [NormedSpace E] [FiniteDimensional E] :

                          In this lemmas and the lemmas below we add FiniteDimensional ℝ E so that we can conclude LocallyCompactSpace E.

                          theorem surroundingFamily_sfHomotopy {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {γ₀ γ₁ : ELoop F} {h₀ : SurroundingFamily g b γ₀ U} {h₁ : SurroundingFamily g b γ₁ U} [NormedSpace E] [FiniteDimensional E] (τ : ) :
                          SurroundingFamily g b (sfHomotopy h₀ h₁ τ) U
                          theorem sfHomotopy_in' {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ₀ γ₁ : ELoop F} {ι : Sort u_3} (h₀ : SurroundingFamily g b γ₀ U) (h₁ : SurroundingFamily g b γ₁ U) (τ : ι) (x : ιE) (i : ι) {V : Set E} (hx : x i V) {t : } (ht : t unitInterval) {s : } (h_in₀ : ∀ (i : ι), x i VtunitInterval, ∀ (s : ), τ i 1(x i, (γ₀ (x i) t) s) Ω) (h_in₁ : ∀ (i : ι), x i VtunitInterval, ∀ (s : ), τ i 0(x i, (γ₁ (x i) t) s) Ω) :
                          (x i, (sfHomotopy h₀ h₁ (τ i) (x i) t) s) Ω

                          A more precise version of sfHomotopy_in.

                          theorem sfHomotopy_in {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ₀ γ₁ : ELoop F} (h₀ : SurroundingFamilyIn g b γ₀ U Ω) (h₁ : SurroundingFamilyIn g b γ₁ U Ω) (τ : ) x : E (hx : x U) {t : } (ht : t unitInterval) {s : } :
                          (x, (sfHomotopy τ x t) s) Ω
                          theorem surroundingFamilyIn_sfHomotopy {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} {γ₀ γ₁ : ELoop F} [NormedSpace E] [FiniteDimensional E] (h₀ : SurroundingFamilyIn g b γ₀ U Ω) (h₁ : SurroundingFamilyIn g b γ₁ U Ω) (τ : ) :
                          SurroundingFamilyIn g b (sfHomotopy τ) U Ω
                          theorem satisfied_or_refund {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {U : Set E} {Ω : Set (E × F)} [NormedSpace E] [FiniteDimensional E] {γ₀ γ₁ : ELoop F} (h₀ : SurroundingFamilyIn g b γ₀ U Ω) (h₁ : SurroundingFamilyIn g b γ₁ U Ω) :
                          ∃ (γ : ELoop F), (∀ (τ : ), SurroundingFamilyIn g b (γ τ) U Ω) γ 0 = γ₀ γ 1 = γ₁ Continuous γ
                          theorem extend_loops {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {Ω : Set (E × F)} [FiniteDimensional E] {U₀ U₁ K₀ K₁ : Set E} (hU₀ : IsOpen U₀) (hU₁ : IsOpen U₁) (hK₀ : IsClosed K₀) (hK₁ : IsClosed K₁) (hKU₀ : K₀ U₀) (hKU₁ : K₁ U₁) {γ₀ γ₁ : ELoop F} (h₀ : SurroundingFamilyIn g b γ₀ U₀ Ω) (h₁ : SurroundingFamilyIn g b γ₁ U₁ Ω) :
                          UnhdsSet (K₀ K₁), ∃ (γ : ELoop F), SurroundingFamilyIn g b γ U Ω (∀ᶠ (x : E) in nhdsSet K₀, γ x = γ₀ x) ∀ᶠ (x : E) in nhdsSet U₁, γ x = γ₀ x
                          def ContinuousGerm {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] {x : E} (φ : (nhds x).Germ (Loop F)) :
                          Equations
                          Instances For
                            structure LoopFamilyGerm {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] (b : EF) (x : E) (φ : (nhds x).Germ (Loop F)) :
                            Instances For
                              structure SurroundingFamilyGerm {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] (g : EF) (Ω : Set (E × F)) (x : E) (φ : (nhds x).Germ (Loop F)) :
                              Instances For
                                theorem surroundingFamilyIn_iff_germ {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {C : Set E} {Ω : Set (E × F)} {γ : ELoop F} :
                                SurroundingFamilyIn g b γ C Ω (∀ (x : E), LoopFamilyGerm b x γ) xC, SurroundingFamilyGerm g Ω x γ
                                theorem exists_surrounding_loops {E : Type u_1} [NormedAddCommGroup E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] {g b : EF} {K : Set E} {Ω : Set (E × F)} [NormedSpace E] [FiniteDimensional E] [FiniteDimensional F] [SecondCountableTopology E] (hK : IsClosed K) (hΩ_op : IsOpen Ω) (hg : ∀ (x : E), ContinuousAt g x) (hb : Continuous b) (hconv : ∀ (x : E), g x hull (connectedComponentIn (Prod.mk x ⁻¹' Ω) (b x))) {γ₀ : ELoop F} (hγ₀_surr : VnhdsSet K, SurroundingFamilyIn g b γ₀ V Ω) :
                                ∃ (γ : ELoop F), SurroundingFamilyIn g b γ Set.univ Ω ∀ᶠ (x : E) in nhdsSet K, γ x = γ₀ x