Documentation

TauCeti.Topology.Order.Sublevel

Sublevels of real functions #

If a real function has a unique global minimum and one compact sublevel strictly above it, then sufficiently small sublevels lie in any prescribed open neighbourhood of the minimum (TauCeti.exists_pos_sublevel_subset_of_unique_min). This allows local descriptions near the minimum to describe whole sublevels. Continuity is needed only on the one compact sublevel, not on the entire space. Similarly, if a superlevel {w ≥ -δ} of a continuous w is compact, a closed set avoiding the zero level of w avoids a whole band {|w| ≤ η} around it (TauCeti.exists_forall_abs_le_notMem).

The local counterpart concerns a strict local minimum x of a function f continuous near x on a locally compact Hausdorff space: for every neighbourhood U of x, a preconnected set through a point y close to x, on which f stays at most f y, lies in U (TauCeti.eventually_forall_isPreconnected_subset_of_strictLocalMin). The trajectories of a dynamical system along which f does not increase are such sets, so this is the topological core of Lyapunov stability.

Conversely, restricting a function to a set S which is not closed can destroy compactness of sublevels: if S accumulates at a point p ∉ S with f p < r, then {x ∈ S | f x ≤ r} is not compact (TauCeti.not_isCompact_inter_preimage_Iic). A compact sublevel {f ≤ b}, on which f is continuous, lies strictly above some value a ≤ b, whose sublevel is then empty (TauCeti.exists_le_forall_lt_of_isCompact_sublevel).

If a continuous motion of the space lowers f at unit speed through the band a ≤ f ≤ b, then following it until the level a is reached retracts the sublevel {f ≤ b} onto {f ≤ a}, by a homotopy fixing {f ≤ a} pointwise (TauCeti.exists_sublevelDeformation_of_apply_eq_sub); here TauCeti.sublevelInclusion is the inclusion of {f ≤ a} into {f ≤ b}, a closed embedding when f is continuous (TauCeti.isClosedEmbedding_sublevelInclusion). This is the topological half of the deformation of sublevels across a band without critical points, where the motion is the flow of a vector field X with df(X) = -1 on the band. The sublevels form the topological pair TauCeti.sublevelPair f : ({f ≤ b}, {f ≤ a}), whose relative homology measures the change in topology across the band. The band itself, relative to its lower level, is the pair TauCeti.bandPair f : (f⁻¹[a, b], f⁻¹(a)), which includes into the sublevel pair by TauCeti.bandPairInclusion; when f⁻¹[a, b] is a cobordism between regular levels, this is the cobordism relative to its incoming boundary. Relative to its upper level, the band is the pair TauCeti.upperBandPair f : (f⁻¹[a, b], f⁻¹(b)), the cobordism relative to its outgoing boundary; negating f exchanges the two (TauCeti.bandPair_neg). All sublevels together form the functor TauCeti.sublevelFunctor f from the levels to spaces, with the cocone TauCeti.sublevelCocone f of their inclusions into X.

If the motion is a flow along whose lines f never increases, then its time-(b - a) map carries {f ≤ b} exactly onto {f ≤ a} (Flow.apply_le_iff_of_apply_eq_sub), and, when f strictly decreases along flow lines starting on the level a, the level f⁻¹(b) exactly onto f⁻¹(a) (Flow.apply_eq_iff_of_apply_eq_sub). This is the topological half of the homeomorphism between the sublevels on either side of a band without critical points.

Under the same hypotheses the band f⁻¹[a, b] is homeomorphic to f⁻¹(a) × [a, b] by a homeomorphism preserving the value of f (Flow.bandHomeomorph): a point of the band is sent to the point where its flow line meets the level a, together with its value.

Along an inducing map j : M → X whose range contains a band F⁻¹[a, b], compactness of the band pulls back to the band of F ∘ j (Topology.IsInducing.isCompact_comp_preimage_Icc).

theorem TauCeti.exists_pos_sublevel_subset_of_unique_min {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {x : X} {a : ℝ} (hcompact : IsCompact {y : X | f y ≤ a}) (hf : ContinuousOn f {y : X | f y ≤ a}) (ha : f x < a) (hmin : ∀ (y : X), f y ≤ f x → y = x) {U : Set X} (hU : IsOpen U) (hx : x ∈ U) :
∃ ε > 0, {y : X | f y ≤ f x + ε} ⊆ U

Small sublevels of a function with a unique global minimum lie in any open neighbourhood of that minimum, provided one sublevel strictly above the minimum is compact and f is continuous on it.

theorem TauCeti.eventually_forall_isPreconnected_subset_of_strictLocalMin {X : Type u_1} [TopologicalSpace X] [T2Space X] [LocallyCompactSpace X] {f : X → ℝ} {x : X} {s : Set X} (hs : s ∈ nhds x) (hf : ContinuousOn f s) (hmin : ∀ᶠ (y : X) in nhdsWithin x {x}ᶜ, f x < f y) {U : Set X} (hU : U ∈ nhds x) :
∀ᶠ (y : X) in nhds x, ∀ (S : Set X), IsPreconnected S → y ∈ S → (∀ z ∈ S, f z ≤ f y) → S ⊆ U

Stability of a strict local minimum. Let x be a strict local minimum of a real function f on a locally compact Hausdorff space, with f continuous on a neighbourhood of x. For every neighbourhood U of x, every point y close enough to x has the following property: every preconnected set containing y on which f stays at most f y lies in U.

Applied to the trajectories of a dynamical system along which f does not increase, such as the energy of a Hamiltonian system, this is the Lyapunov stability of x.

theorem TauCeti.exists_forall_abs_le_notMem {X : Type u_1} [TopologicalSpace X] {w : X → ℝ} (hw : Continuous w) {δ : ℝ} (hδ : 0 < δ) (hK : IsCompact {x : X | -δ ≤ w x}) {C : Set X} (hC : IsClosed C) (hCw : ∀ x ∈ C, w x ≠ 0) :
∃ (η : ℝ), 0 < η ∧ η ≤ δ ∧ ∀ (x : X), |w x| ≤ η → x ∉ C

If the superlevel {w ≥ -δ} of a continuous real function w is compact, then a closed set avoiding the zero level of w also avoids the band {|w| ≤ η} for some 0 < η ≤ δ.

theorem TauCeti.not_isCompact_inter_preimage_Iic {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [T2Space X] [TopologicalSpace β] [LinearOrder β] [ClosedIciTopology β] {f : X → β} {S : Set X} {p : X} {r : β} (hpS : p ∈ closure S) (hp : p ∉ S) (hf : ContinuousAt f p) (hr : f p < r) :

A sublevel of a function restricted to a set S of a Hausdorff space is not compact if S accumulates at a point p ∉ S where the function is continuous and strictly below the level. Then the sublevel accumulates at p as well, so it is not closed.

theorem TauCeti.exists_le_forall_lt_of_isCompact_sublevel {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [TopologicalSpace β] [LinearOrder β] [ClosedIicTopology β] [NoMinOrder β] {f : X → β} {b : β} (hcompact : IsCompact {x : X | f x ≤ b}) (hf : ContinuousOn f {x : X | f x ≤ b}) :
∃ a ≤ b, ∀ (x : X), a < f x

If a sublevel {f ≤ b} is compact and f is continuous on it, then f is bounded below by a value a ≤ b which it never attains, so the sublevel {f ≤ a} is empty.

theorem TauCeti.sublevel_mono {X : Type u_1} {β : Type u_2} [Preorder β] (f : X → β) :
Monotone fun (a : β) => {x : X | f x ≤ a}

The sublevels {f ≤ a} of f increase with a.

def TauCeti.sublevelInclusion {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [Preorder β] (f : X → β) (a b : β) (hab : a ≤ b) :
C(↑{x : X | f x ≤ a}, ↑{x : X | f x ≤ b})

The inclusion {f ≤ a} → {f ≤ b} of sublevels of f, for a ≤ b.

Instances For
    @[simp]
    theorem TauCeti.coe_sublevelInclusion_apply {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) (x : ↑{x : X | f x ≤ a}) :
    ↑((sublevelInclusion f a b hab) x) = ↑x
    @[simp]
    theorem TauCeti.sublevelInclusion_sublevelInclusion {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [Preorder β] (f : X → β) {a b c : β} (hab : a ≤ b) (hbc : b ≤ c) (x : ↑{x : X | f x ≤ a}) :
    (sublevelInclusion f b c hbc) ((sublevelInclusion f a b hab) x) = (sublevelInclusion f a c ⋯) x

    Including {f ≤ a} into {f ≤ b} and then into {f ≤ c} is the inclusion of {f ≤ a} into {f ≤ c}.

    theorem TauCeti.sublevelInclusion_eq_inclusion {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) :

    The inclusion {f ≤ a} → {f ≤ b} of sublevels is the inclusion of sets.

    theorem TauCeti.isClosedEmbedding_sublevelInclusion {X : Type u_1} {β : Type u_2} [TopologicalSpace X] [Preorder β] [TopologicalSpace β] [ClosedIicTopology β] {f : X → β} (hf : Continuous f) {a b : β} (hab : a ≤ b) :

    For continuous f, the inclusion {f ≤ a} → {f ≤ b} of sublevels is a closed embedding.

    @[reducible, inline]
    abbrev TauCeti.sublevelPair {X : Type u_1} [TopologicalSpace X] {β : Type u_2} [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) :

    The sublevel pair ({f ≤ b}, {f ≤ a}) of a function f for a ≤ b, as a pair of subspaces of X.

    Instances For
      @[reducible, inline]
      abbrev TauCeti.bandPair {X : Type u_1} [TopologicalSpace X] {β : Type u_2} [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) :

      The band pair (f⁻¹[a, b], f⁻¹(a)) of a function f for a ≤ b: the band of values between a and b, relative to its lower level.

      Instances For
        @[reducible, inline]
        abbrev TauCeti.upperBandPair {X : Type u_1} [TopologicalSpace X] {β : Type u_2} [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) :

        The upper band pair (f⁻¹[a, b], f⁻¹(b)) of a function f for a ≤ b: the band of values between a and b, relative to its upper level.

        Instances For
          def TauCeti.bandPairInclusion {X : Type u_1} [TopologicalSpace X] {β : Type u_2} [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) :

          The inclusion (f⁻¹[a, b], f⁻¹(a)) ⟶ ({f ≤ b}, {f ≤ a}) of the band pair into the sublevel pair.

          Instances For
            @[simp]
            theorem TauCeti.bandPairInclusion_fst {X : Type u_1} [TopologicalSpace X] {β : Type u_2} [Preorder β] (f : X → β) {a b : β} (hab : a ≤ b) :

            On ambient spaces, the inclusion of the band pair into the sublevel pair is the inclusion of the band f⁻¹[a, b] into the sublevel {f ≤ b}.

            @[simp]
            theorem TauCeti.preimage_neg_Icc_neg {X : Type u_1} {β : Type u_2} [AddCommGroup β] [PartialOrder β] [IsOrderedAddMonoid β] (f : X → β) (a b : β) :
            (-f) ⁻¹' Set.Icc (-b) (-a) = f ⁻¹' Set.Icc a b

            The band (-f)⁻¹[-b, -a] of -f is the band f⁻¹[a, b] of f.

            theorem TauCeti.bandPair_neg {X : Type u_1} [TopologicalSpace X] {β : Type u_2} [AddCommGroup β] [PartialOrder β] [IsOrderedAddMonoid β] (f : X → β) {a b : β} (hab : a ≤ b) :
            bandPair (-f) ⋯ = upperBandPair f hab

            Negating a function exchanges the two levels of a band: the band pair ((-f)⁻¹[-b, -a], (-f)⁻¹(-b)) of -f is the upper band pair (f⁻¹[a, b], f⁻¹(b)) of f.

            def TauCeti.sublevelFunctor {X : Type u} [TopologicalSpace X] {β : Type u_1} [Preorder β] (f : X → β) :

            The sublevels {f ≤ b} of f as a functor from the levels to topological spaces. The map for a ≤ b is the embedding of the sublevel pair TauCeti.sublevelPair f : ({f ≤ b}, {f ≤ a}).

            Instances For
              @[simp]
              theorem TauCeti.sublevelFunctor_obj_carrier {X : Type u} [TopologicalSpace X] {β : Type u_1} [Preorder β] (f : X → β) (b : β) :
              ↑((sublevelFunctor f).obj b) = ↑{x : X | f x ≤ b}
              @[simp]
              theorem TauCeti.sublevelFunctor_map {X : Type u} [TopologicalSpace X] {β : Type u_1} [Preorder β] (f : X → β) {X✝ Y✝ : β} (h : X✝ ⟶ Y✝) :

              The cocone over TauCeti.sublevelFunctor f with apex X, whose legs are the inclusions of the sublevels into X.

              Instances For
                @[simp]
                theorem TauCeti.sublevelCocone_ι_app {X : Type u} [TopologicalSpace X] {β : Type u_1} [Preorder β] (f : X → β) (b : β) :
                (sublevelCocone f).ι.app b = TopCat.ofHom { toFun := Subtype.val, continuous_toFun := ⋯ }
                @[simp]
                theorem TauCeti.sublevelCocone_pt_carrier {X : Type u} [TopologicalSpace X] {β : Type u_1} [Preorder β] (f : X → β) :
                theorem TauCeti.exists_sublevelDeformation_of_apply_eq_sub {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} (hf : Continuous f) {a b : ℝ} (hab : a ≤ b) (φ : ℝ → X → X) (hφ : Continuous (Function.uncurry φ)) (hφ0 : ∀ (x : X), φ 0 x = x) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ t x) = f x - t) :
                ∃ (r : C(↑{x : X | f x ≤ b}, ↑{x : X | f x ≤ a})), (∀ (x : ↑{x : X | f x ≤ b}), ↑(r x) = φ (max (f ↑x - a) 0) ↑x) ∧ (∀ (x : ↑{x : X | f x ≤ a}), r ((sublevelInclusion f a b hab) x) = x) ∧ Nonempty (((sublevelInclusion f a b hab).comp r).HomotopyRel (ContinuousMap.id ↑{x : X | f x ≤ b}) {x : ↑{x : X | f x ≤ b} | f ↑x ≤ a})

                Deformation of sublevels along a unit-speed descent. Let φ t be a continuous motion of X, with φ 0 the identity, which lowers f at unit speed through the band a ≤ f ≤ b: if f x ≤ b and f x - t ≥ a with t ≥ 0, then f (φ t x) = f x - t. Moving each point of {f ≤ b} for the time max (f x - a) 0, which brings it to the level a if a ≤ f x and leaves it fixed if f x ≤ a, is a retraction r of {f ≤ b} onto {f ≤ a}, and moving it only part of the way is a homotopy from the inclusion of r to the identity fixing {f ≤ a} pointwise.

                theorem Topology.IsInducing.isCompact_comp_preimage_Icc {M : Type u_1} {X : Type u_2} {β : Type u_3} [TopologicalSpace M] [TopologicalSpace X] [Preorder β] {j : M → X} {F : X → β} (hj : IsInducing j) {a b : β} (hA : ∀ x ∉ Set.range j, F x < a) (hcompact : IsCompact (F ⁻¹' Set.Icc a b)) :

                Let j : M → X be an inducing map and F : X → β. A compact band F⁻¹[a, b] of F has compact preimage band (F ∘ j)⁻¹[a, b] as soon as F < a off the range of j, so that the band lies in the range of j.

                theorem Flow.apply_le_iff_of_apply_eq_sub {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hab : a ≤ b) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (x : X) :
                f (φ.toFun (b - a) x) ≤ a ↔ f x ≤ b

                Sublevels along a unit-speed descent. Let φ be a flow along whose lines f never increases in positive time, and which lowers f at unit speed through the band a ≤ f ≤ b. Then the time-(b - a) map of φ carries a point into {f ≤ a} exactly when the point lies in {f ≤ b}.

                theorem Flow.apply_eq_iff_of_apply_eq_sub {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hab : a ≤ b) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) (x : X) :
                f (φ.toFun (b - a) x) = a ↔ f x = b

                Levels along a unit-speed descent. Under the hypotheses of Flow.apply_le_iff_of_apply_eq_sub, suppose moreover that f drops strictly below a along the flow line of every point of the level f⁻¹(a). Then the time-(b - a) map of φ carries a point into f⁻¹(a) exactly when the point lies in f⁻¹(b).

                theorem Flow.apply_neg_eq_add_of_apply_eq_sub {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) {y : X} (hy : f y = a) {t : ℝ} (ht : 0 ≤ t) (htb : a + t ≤ b) :
                f (φ.toFun (-t) y) = a + t

                Ascent from the lower level. Under the hypotheses of Flow.apply_eq_iff_of_apply_eq_sub, running the flow backwards for a time t from a point of the level f⁻¹(a) raises f at unit speed through the band: if f y = a, 0 ≤ t and a + t ≤ b, then f (φ (-t) y) = a + t.

                def Flow.bandHomeomorph {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) :
                ↑(f ⁻¹' Set.Icc a b) ≃ₜ ↑(f ⁻¹' {a}) × ↑(Set.Icc a b)

                A band traversed at unit speed is a product. Under the hypotheses of Flow.apply_eq_iff_of_apply_eq_sub, following the flow line of a point x of the band f⁻¹[a, b] down to the level a is a homeomorphism x ↦ (φ (f x - a) x, f x) from the band onto f⁻¹(a) × [a, b], with inverse (y, s) ↦ φ (a - s) y. It preserves the value of f, and it is the identity on the level f⁻¹(a).

                Instances For
                  @[simp]
                  theorem Flow.coe_bandHomeomorph_apply_fst {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) (x : ↑(f ⁻¹' Set.Icc a b)) :
                  ↑((φ.bandHomeomorph hf hanti hφf hφa) x).1 = φ.toFun (f ↑x - a) ↑x
                  @[simp]
                  theorem Flow.coe_bandHomeomorph_apply_snd {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) (x : ↑(f ⁻¹' Set.Icc a b)) :
                  ↑((φ.bandHomeomorph hf hanti hφf hφa) x).2 = f ↑x
                  @[simp]
                  theorem Flow.coe_bandHomeomorph_symm_apply {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) (p : ↑(f ⁻¹' {a}) × ↑(Set.Icc a b)) :
                  ↑((φ.bandHomeomorph hf hanti hφf hφa).symm p) = φ.toFun (a - ↑p.2) ↑p.1
                  theorem Flow.coe_bandHomeomorph_apply_fst_of_apply_eq {X : Type u_1} [TopologicalSpace X] {f : X → ℝ} {a b : ℝ} (φ : Flow ℝ X) (hf : Continuous f) (hanti : ∀ (x : X), AntitoneOn (fun (t : ℝ) => f (φ.toFun t x)) (Set.Ici 0)) (hφf : ∀ (x : X) (t : ℝ), 0 ≤ t → a ≤ f x - t → f x ≤ b → f (φ.toFun t x) = f x - t) (hφa : ∀ (x : X) (t : ℝ), f x = a → 0 < t → f (φ.toFun t x) < a) {x : ↑(f ⁻¹' Set.Icc a b)} (hx : f ↑x = a) :
                  ↑((φ.bandHomeomorph hf hanti hφf hφa) x).1 = ↑x

                  Flow.bandHomeomorph is the identity on the level f⁻¹(a).