Documentation

TauCeti.Geometry.Manifold.Morse.Lemma

The Morse lemma on a smooth manifold #

At a nondegenerate critical point x of a smooth function f on a boundaryless smooth manifold modelled on a finite-dimensional real normed space E, there is a chart of the maximal atlas, centred at x, in which f is a nondegenerate quadratic form: after a linear change of coordinates L : E ≃ (Fin n → ℝ),

f y = f x + (1/2) Σᵢ wᵢ (L (ψ y))ᵢ², with every wᵢ = ±1,

and the number of negative weights is the manifold Morse index of f at x. Such a chart is recorded as a TauCeti.MorseChart. A Morse chart puts the function in quadratic form; it is used to choose an adapted pseudo-gradient field that is linear near the critical point, whose stable and unstable manifolds are then studied.

Main declarations #

References #

structure TauCeti.MorseChart (E : Type u_1) [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] (f : M → ℝ) (x : M) :
Type (max u_1 u_2)

A Morse chart for f at x: a chart of the maximal atlas, centred at x, together with a linear change of coordinates L : E ≃ (Fin n → ℝ) and weights wᵢ = ±1, such that on the source of the chart f y = f x + (1/2) Σᵢ wᵢ (L (ψ y))ᵢ². The number of negative weights is the manifold Morse index of f at x.

Instances For
    noncomputable def TauCeti.MorseChart.restr {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {s : Set M} (hs : IsOpen s) (hx : x ∈ s) :

    The restriction of a Morse chart to an open neighbourhood s of its centre: the chart is restricted to s, and the coordinates and weights are unchanged.

    Instances For
      @[simp]
      theorem TauCeti.MorseChart.restr_toChart {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {s : Set M} (hs : IsOpen s) (hx : x ∈ s) :
      (φ.restr hs hx).toChart = φ.toChart.restr s

      The chart of a restricted Morse chart is the restricted chart.

      @[simp]
      theorem TauCeti.MorseChart.restr_coord {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {s : Set M} (hs : IsOpen s) (hx : x ∈ s) :
      (φ.restr hs hx).coord = φ.coord

      Restricting a Morse chart does not change its coordinates.

      @[simp]
      theorem TauCeti.MorseChart.restr_weight {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {s : Set M} (hs : IsOpen s) (hx : x ∈ s) :
      (φ.restr hs hx).weight = φ.weight

      Restricting a Morse chart does not change its weights.

      theorem TauCeti.MorseChart.restr_source {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {s : Set M} (hs : IsOpen s) (hx : x ∈ s) :
      (φ.restr hs hx).toChart.source = φ.toChart.source ∩ s

      The source of a restricted Morse chart.

      theorem TauCeti.MorseChart.toChart_symm_coord_symm_coord {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {y : M} (hy : y ∈ φ.toChart.source) :
      ↑φ.toChart.symm (φ.coord.symm (φ.coord (↑φ.toChart y))) = y

      A point of the chart is the point with its own coordinates.

      @[simp]
      theorem TauCeti.MorseChart.toChart_symm_zero {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) :
      ↑φ.toChart.symm 0 = x

      The chart sends 0 back to the critical point.

      theorem TauCeti.MorseChart.toChart_eq_zero_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {y : M} (hy : y ∈ φ.toChart.source) :
      ↑φ.toChart y = 0 ↔ y = x

      The centre is the only point of the source sent to 0.

      theorem TauCeti.MorseChart.toChart_symm_coord_symm_zero {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) :
      ↑φ.toChart.symm (φ.coord.symm 0) = x

      The critical point is the point with coordinates 0.

      The chart of a Morse chart lies in the maximal atlas of class C¹.

      theorem TauCeti.MorseChart.mdifferentiableAt_toChart {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {y : M} (hy : y ∈ φ.toChart.source) :
      MDiffAt ↑φ.toChart y

      The chart of a Morse chart is differentiable on its source.

      theorem TauCeti.MorseChart.finiteDimensional {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) :

      A space with a Morse chart is finite-dimensional.

      theorem TauCeti.MorseChart.weight_ne_one_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) (i : Fin (Module.finrank ℝ E)) :
      ¬φ.weight i = 1 ↔ φ.weight i < 0

      A coordinate of a Morse chart has weight different from 1 exactly when it has negative weight.

      theorem TauCeti.MorseChart.weight_eq_one_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) (i : Fin (Module.finrank ℝ E)) :
      φ.weight i = 1 ↔ 0 < φ.weight i

      A coordinate of a Morse chart has weight 1 exactly when it has positive weight.

      noncomputable def TauCeti.MorseChart.splitCoord {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) :
      (Fin (Module.finrank ℝ E) → ℝ) ≃ₗ[ℝ] WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))

      The split coordinates of a Morse chart: the pair formed by the coordinates of positive weight and the remaining coordinates, of weight -1. Each factor carries the sup norm.

      Instances For
        @[simp]
        theorem TauCeti.MorseChart.splitCoord_fst_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) (z : Fin (Module.finrank ℝ E) → ℝ) (i : { i : Fin (Module.finrank ℝ E) // φ.weight i = 1 }) :
        (φ.splitCoord z).fst i = z ↑i

        The first factor of the split coordinates consists of the coordinates of positive weight.

        @[simp]
        theorem TauCeti.MorseChart.splitCoord_snd_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) (z : Fin (Module.finrank ℝ E) → ℝ) (i : { i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 }) :
        (φ.splitCoord z).snd i = z ↑i

        The second factor of the split coordinates consists of the coordinates of negative weight.

        @[simp]
        theorem TauCeti.MorseChart.splitCoord_symm_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) (w : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))) (i : Fin (Module.finrank ℝ E)) :
        φ.splitCoord.symm w i = if h : φ.weight i = 1 then w.fst ⟨i, h⟩ else w.snd ⟨i, h⟩

        The coordinates of a point given in split coordinates.

        The sup norm of the coordinates of a Morse chart is the larger of the norms of the two factors of the split coordinates. So the coordinate cube ‖z‖ ≤ ε is the box ‖u‖ ≤ ε, ‖v‖ ≤ ε of the split model.

        The expanding factor of the split coordinates of a Morse chart has dimension the Morse index.

        The contracting and expanding factors of the split coordinates of a Morse chart have complementary dimensions.

        theorem TauCeti.MorseChart.apply_toChart_symm_coord_symm_splitCoord_symm {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) {z : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))} (hz : φ.coord.symm (φ.splitCoord.symm z) ∈ φ.toChart.target) :
        f (↑φ.toChart.symm (φ.coord.symm (φ.splitCoord.symm z))) = f x + 2⁻¹ * (∑ i : { i : Fin (Module.finrank ℝ E) // φ.weight i = 1 }, z.fst i ^ 2 - ∑ i : { i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 }, z.snd i ^ 2)

        The Morse normal form in split coordinates. At the point with split coordinates (u, v), f = f x + (Σᵢ uᵢ² - Σⱼ vⱼ²) / 2.

        theorem TauCeti.MorseChart.coord_symm_splitCoord_symm_mem_target_of_norm_le {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} {φ : MorseChart E f x} {ε : ℝ} (hε : ∀ (z : Fin (Module.finrank ℝ E) → ℝ), ‖z‖ ≤ ε → φ.coord.symm z ∈ φ.toChart.target) {z : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))} (hfst : ‖z.fst‖ ≤ ε) (hsnd : ‖z.snd‖ ≤ ε) :

        On the box, the split coordinates read a point of the chart.

        theorem TauCeti.MorseChart.injOn_toChart_symm_coord_symm_splitCoord_symm {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) :
        Set.InjOn (fun (z : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))) => ↑φ.toChart.symm (φ.coord.symm (φ.splitCoord.symm z))) {z : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ)) | φ.coord.symm (φ.splitCoord.symm z) ∈ φ.toChart.target}

        The point with given split coordinates determines them.

        theorem TauCeti.MorseChart.lt_apply_of_norm_fst_eq {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} {φ : MorseChart E f x} {ε : ℝ} {z : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))} (hz : φ.coord.symm (φ.splitCoord.symm z) ∈ φ.toChart.target) (hfst : ‖z.fst‖ = ε) (hsnd : ↑(Module.finrank ℝ E) * ‖z.snd‖ ^ 2 < ε ^ 2) :
        f x < f (↑φ.toChart.symm (φ.coord.symm (φ.splitCoord.symm z)))

        Above the critical value on the entrance face. At a point of the chart whose contracting split coordinate has norm ε and whose expanding one is small, f exceeds f x.

        theorem TauCeti.MorseChart.apply_lt_of_norm_snd_eq {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} {φ : MorseChart E f x} {ε : ℝ} {z : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))} (hz : φ.coord.symm (φ.splitCoord.symm z) ∈ φ.toChart.target) (hsnd : ‖z.snd‖ = ε) (hfst : ↑(Module.finrank ℝ E) * ‖z.fst‖ ^ 2 < ε ^ 2) :
        f (↑φ.toChart.symm (φ.coord.symm (φ.splitCoord.symm z))) < f x

        Below the critical value on the exit face. At a point of the chart whose expanding split coordinate has norm ε and whose contracting one is small, f is less than f x.

        noncomputable def TauCeti.MorseChart.neg {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) (h : IsManifoldNondegenerateCriticalPoint (modelWithCornersSelf ℝ E) f x) :
        MorseChart E (-f) x

        A Morse chart for f at a nondegenerate critical point is a Morse chart for -f, with the opposite weights.

        Instances For
          @[simp]

          The negated Morse chart has the same chart.

          @[simp]

          The negated Morse chart has the same coordinates.

          @[simp]

          The negated Morse chart has the opposite weights.

          noncomputable def TauCeti.MorseChart.splitCoordL {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) [FiniteDimensional ℝ E] :
          E ≃L[ℝ] WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))

          The split coordinates of a Morse chart, as a continuous linear equivalence of the model.

          Instances For
            @[simp]
            theorem TauCeti.MorseChart.splitCoordL_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) [FiniteDimensional ℝ E] (z : E) :
            φ.splitCoordL z = φ.splitCoord (φ.coord z)

            The continuous split coordinates of a point of the model are the split coordinates of its coordinates.

            @[simp]
            theorem TauCeti.MorseChart.splitCoordL_symm_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} {x : M} (φ : MorseChart E f x) [FiniteDimensional ℝ E] (w : WithLp 2 (({ i : Fin (Module.finrank ℝ E) // φ.weight i = 1 } → ℝ) × ({ i : Fin (Module.finrank ℝ E) // ¬φ.weight i = 1 } → ℝ))) :

            The point of the model with given continuous split coordinates.

            The Morse lemma on a manifold. At a nondegenerate critical point x of a function f that is smooth at every point of a neighbourhood of x, on a manifold modelled on a finite-dimensional real normed space E, there is a Morse chart: a chart ψ of the maximal atlas, centred at x, and a linear change of coordinates L : E ≃ (Fin n → ℝ) such that on the source of ψ

            f y = f x + (1/2) Σᵢ wᵢ (L (ψ y))ᵢ²,

            where every weight wᵢ is -1 or 1 and the number of negative weights is the manifold Morse index of f at x.

            theorem TauCeti.IsMorse.nonempty_morseChart {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] {f : M → ℝ} [FiniteDimensional ℝ E] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (hf : IsMorse (modelWithCornersSelf ℝ E) f) {x : M} (hx : mfderiv% f x = 0) :

            Every critical point of a Morse function has a Morse chart.