Documentation

TauCeti.Analysis.Fredholm.LevelSet.Basic

Regular level sets of a Fredholm map #

Let f : E โ†’ F be a map between Banach spaces which is strictly differentiable at a point a of the level set {x | f x = c}, and whose derivative f' there is a surjective Fredholm operator. This file shows that the level set is, near a, homeomorphic to an open subset of ker f', a space whose dimension is exactly the Fredholm index of f'; and it packages that local model, when the index is a fixed n along the whole level set, as a ChartedSpace structure on {x | f x = c} modelled on Fin n โ†’ ๐•œ.

This is the local half of the standard "a moduli space is the zero set of a Fredholm section, and at a regular point it is a manifold of dimension the index" package (McDuff--Salamon, J-holomorphic Curves and Symplectic Topology, Appendix A.3). The linear half is already available: ContinuousLinearMap.IsFredholm provides the finite-dimensional, topologically complemented kernel, and ContinuousLinearMap.index_of_surjective identifies its dimension with the index. What is added here is the nonlinear half, which is Mathlib's implicit function theorem for a map with surjective derivative and complemented kernel, HasStrictFDerivAt.implicitToOpenPartialHomeomorphOfComplemented, restricted to the level set: that homeomorphism carries {x | f x = c} to the "vertical" slice {c} ร— ker f', and the chart below is the resulting homeomorphism of the level set with an open subset of ker f'.

Three consequences record that the dimension count is not vacuous, and are stated with Mathlib's accumulation-point vocabulary AccPt. A point where the derivative is injective with closed range โ€” in particular a regular point of index 0 โ€” is isolated in the level set through it, so a compact piece of such a level set is finite: one ingredient in the well-definedness of a Floer-type differential, which counts index-0 solutions; making such a count well defined also needs a separate compactness result placing the counted solutions inside one such piece, which is not proved here. Where the kernel is nontrivial โ€” in particular at a regular point of nonzero index โ€” the level set on the contrary accumulates at the point, so a level set is locally the single point a precisely when the index vanishes.

What is proved is exactly a ChartedSpace structure, that is, a covering family of local models; nothing more is claimed. In particular this is not the assertion that the level set is a topological manifold in the usual sense, which would additionally need global hypotheses such as second countability, and none are assumed here. Smooth compatibility of the charts, under a ContDiff hypothesis on f, is TauCeti.isManifold_levelSet in TauCeti/Analysis/Fredholm/LevelSet/Manifold.lean; the preferred charts installed below are already cut down to TauCeti.levelSetImplicitCoordSource so that they can be compared smoothly.

Main declarations #

The chart of a level set at a regular point #

noncomputable def TauCeti.levelSetChart {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :
OpenPartialHomeomorph โ†‘{x : E | f x = c} โ†ฅ(โ†‘f').ker

The chart of the level set {x | f x = c} at a point a where f is strictly differentiable with surjective derivative f' of complemented kernel: it sends x to the projection of x - a onto ker f' along the complement chosen by hker, and is a homeomorphism from a neighbourhood of a in the level set onto an open subset of ker f'.

This is Mathlib's implicit-function homeomorphism x โ†ฆ (f x, proj (x - a)) restricted to the level set, on which its first component is constantly c.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem TauCeti.levelSetChart_source {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :

    The source of the chart of a level set is the source of Mathlib's implicit-function homeomorphism, seen inside the level set.

    theorem TauCeti.levelSetChart_target {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :
    (levelSetChart hf hf' hker ha).target = (fun (k : โ†ฅ(โ†‘f').ker) => (c, k)) โปยน' (HasStrictFDerivAt.implicitToOpenPartialHomeomorphOfComplemented f f' hf hf' hker).target

    The target of the chart of a level set is the slice {c} ร— ker f' of the target of Mathlib's implicit-function homeomorphism, read in ker f'.

    theorem TauCeti.levelSetChart_apply {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) (z : โ†‘{x : E | f x = c}) :
    โ†‘(levelSetChart hf hf' hker ha) z = (Classical.choose hker) (โ†‘z - a)

    The chart of a level set is computed by the projection onto ker f' chosen by hker, applied to x - a.

    theorem TauCeti.levelSetChart_symm_apply {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) {k : โ†ฅ(โ†‘f').ker} (hk : k โˆˆ (levelSetChart hf hf' hker ha).target) :
    โ†‘(โ†‘(levelSetChart hf hf' hker ha).symm k) = โ†‘(HasStrictFDerivAt.implicitToOpenPartialHomeomorphOfComplemented f f' hf hf' hker).symm (c, k)

    On its target, the inverse of the chart of a level set is the implicit function of f at the constant value c: the inverse of Mathlib's implicit-function homeomorphism, read on the slice {c} ร— ker f'.

    @[simp]
    theorem TauCeti.levelSetChart_apply_self {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :
    โ†‘(levelSetChart hf hf' hker ha) โŸจa, haโŸฉ = 0

    The chart of a level set is normalised at its base point: it sends a to the origin of ker f'.

    theorem TauCeti.mem_levelSetChart_source {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :

    The base point of the chart of a level set lies in its source.

    theorem TauCeti.mem_levelSetChart_target {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :
    0 โˆˆ (levelSetChart hf hf' hker ha).target

    The origin of ker f', the value of the chart at its base point, lies in its target.

    @[simp]
    theorem TauCeti.levelSetChart_symm_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (ha : f a = c) :
    โ†‘(levelSetChart hf hf' hker ha).symm 0 = โŸจa, haโŸฉ

    The inverse of the chart of a level set is normalised at its base point: it sends the origin of ker f' back to a.

    The chart in the model space #

    noncomputable def ContinuousLinearMap.kerModelEquiv {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace ๐•œ] {n : โ„•} (T : E โ†’L[๐•œ] F) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘T).ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘T).ker = n) :
    โ†ฅ(โ†‘T).ker โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ

    The identification of the kernel of a continuous linear map with the model space Fin n โ†’ ๐•œ, when that kernel is finite-dimensional of dimension n โ€” by ContinuousLinearMap.index_of_surjective, for a surjective Fredholm operator, the Fredholm index.

    Equations
    Instances For
      noncomputable def TauCeti.levelSetChartModel {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) :
      OpenPartialHomeomorph (โ†‘{x : E | f x = c}) (Fin n โ†’ ๐•œ)

      The chart of a regular level set, read in the model space Fin n โ†’ ๐•œ through ContinuousLinearMap.kerModelEquiv.

      Equations
      Instances For
        theorem TauCeti.levelSetChartModel_apply {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) (z : โ†‘{x : E | f x = c}) :
        โ†‘(levelSetChartModel hf hf' hker hfin hn ha) z = (f'.kerModelEquiv hfin hn) (โ†‘(levelSetChart hf hf' hker ha) z)

        The model chart is the chart of the level set read through ContinuousLinearMap.kerModelEquiv.

        theorem TauCeti.levelSetChartModel_symm_apply {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) (k : Fin n โ†’ ๐•œ) :
        โ†‘(levelSetChartModel hf hf' hker hfin hn ha).symm k = โ†‘(levelSetChart hf hf' hker ha).symm ((f'.kerModelEquiv hfin hn).symm k)

        The inverse of the model chart is the inverse of the chart of the level set, read through ContinuousLinearMap.kerModelEquiv.

        @[simp]
        theorem TauCeti.levelSetChartModel_source {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) :
        (levelSetChartModel hf hf' hker hfin hn ha).source = (levelSetChart hf hf' hker ha).source

        The model chart has the same source as the chart of the level set it is read from.

        @[simp]
        theorem TauCeti.levelSetChartModel_target {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) :
        (levelSetChartModel hf hf' hker hfin hn ha).target = โ‡‘(f'.kerModelEquiv hfin hn).symm โปยน' (levelSetChart hf hf' hker ha).target

        The target of the model chart is the target of the chart of the level set it is read from, pulled back along ContinuousLinearMap.kerModelEquiv.

        @[simp]
        theorem TauCeti.levelSetChartModel_apply_self {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) :
        โ†‘(levelSetChartModel hf hf' hker hfin hn ha) โŸจa, haโŸฉ = 0

        The model chart is normalised at its base point: it sends a to the origin of Fin n โ†’ ๐•œ.

        theorem TauCeti.mem_levelSetChartModel_source {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) :
        โŸจa, haโŸฉ โˆˆ (levelSetChartModel hf hf' hker hfin hn ha).source

        The base point of the model chart lies in its source.

        theorem TauCeti.mem_levelSetChartModel_target {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} [CompleteSpace ๐•œ] {n : โ„•} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hn : Module.finrank ๐•œ โ†ฅ(โ†‘f').ker = n) (ha : f a = c) :
        0 โˆˆ (levelSetChartModel hf hf' hker hfin hn ha).target

        The origin of Fin n โ†’ ๐•œ, the value of the model chart at its base point, lies in its target.

        A regular level set of constant index is a charted space #

        theorem TauCeti.finrank_ker_eq_of_mem_levelSet {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) {x : E} (hx : x โˆˆ {x : E | f x = c}) :
        Module.finrank ๐•œ โ†ฅ(โ†‘(D x)).ker = n

        Along a regular level set on which the Fredholm index is constantly n, the kernel of the derivative at a point of the level set has dimension n, so Fin n โ†’ ๐•œ is the local model there.

        noncomputable def TauCeti.levelSetImplicitCoordSource {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hker : โˆ€ x โˆˆ {x : E | f x = c}, (โ†‘(D x)).ker.ClosedComplemented) (z : โ†‘{x : E | f x = c}) :
        Set โ†‘{x : E | f x = c}

        The neighbourhood of a point z of a regular level set to which the preferred chart at z is cut down: the set on which the coordinate map of the implicit function theorem keeps an invertible derivative, HasStrictFDerivAt.implicitCoordSource, read inside the level set.

        Equations
        Instances For
          theorem TauCeti.isOpen_levelSetImplicitCoordSource {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hker : โˆ€ x โˆˆ {x : E | f x = c}, (โ†‘(D x)).ker.ClosedComplemented) (z : โ†‘{x : E | f x = c}) :
          @[simp]
          theorem TauCeti.mem_levelSetImplicitCoordSource_iff {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hker : โˆ€ x โˆˆ {x : E | f x = c}, (โ†‘(D x)).ker.ClosedComplemented) (z u : โ†‘{x : E | f x = c}) :
          u โˆˆ levelSetImplicitCoordSource hf hsurj hker z โ†” โ†‘u โˆˆ โ‹ฏ.implicitCoordSource โ‹ฏ โ‹ฏ

          Membership in TauCeti.levelSetImplicitCoordSource is membership of the ambient point in HasStrictFDerivAt.implicitCoordSource.

          theorem TauCeti.mem_levelSetImplicitCoordSource {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hker : โˆ€ x โˆˆ {x : E | f x = c}, (โ†‘(D x)).ker.ClosedComplemented) (z : โ†‘{x : E | f x = c}) :
          noncomputable def TauCeti.levelSetChartAt {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
          OpenPartialHomeomorph (โ†‘{x : E | f x = c}) (Fin n โ†’ ๐•œ)

          The preferred chart at a point of a regular level set along which the Fredholm index is constantly n.

          It is the implicit-function chart TauCeti.levelSetChartModel, cut down to TauCeti.levelSetImplicitCoordSource. That restriction costs nothing โ€” the set is an open neighbourhood of the base point โ€” and it buys the smoothness that the inverse chart lacks away from its own centre, so that two of these charts can be smoothly compatible.

          Equations
          Instances For
            @[simp]
            theorem TauCeti.levelSetChartAt_source {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
            (levelSetChartAt hf hFred hsurj hindex z).source = (levelSetChart โ‹ฏ โ‹ฏ โ‹ฏ โ‹ฏ).source โˆฉ levelSetImplicitCoordSource hf hsurj โ‹ฏ z

            The source of the preferred chart at z is the source of the chart of the level set at z, cut down to TauCeti.levelSetImplicitCoordSource.

            @[simp]
            theorem TauCeti.levelSetChartAt_target {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
            (levelSetChartAt hf hFred hsurj hindex z).target = โ‡‘((D โ†‘z).kerModelEquiv โ‹ฏ โ‹ฏ).symm โปยน' (levelSetChart โ‹ฏ โ‹ฏ โ‹ฏ โ‹ฏ).target โˆฉ โ†‘(levelSetChartAt hf hFred hsurj hindex z).symm โปยน' levelSetImplicitCoordSource hf hsurj โ‹ฏ z

            The target of the preferred chart at z is the target of the chart of the level set at z, pulled back along ContinuousLinearMap.kerModelEquiv, cut down to the part of TauCeti.levelSetImplicitCoordSource that the chart sees.

            theorem TauCeti.levelSetChartAt_apply {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z w : โ†‘{x : E | f x = c}) :
            โ†‘(levelSetChartAt hf hFred hsurj hindex z) w = ((D โ†‘z).kerModelEquiv โ‹ฏ โ‹ฏ) (โ†‘(levelSetChart โ‹ฏ โ‹ฏ โ‹ฏ โ‹ฏ) w)

            The preferred chart at z is the chart of the level set at z, read in the model space through ContinuousLinearMap.kerModelEquiv.

            theorem TauCeti.levelSetChartAt_symm_apply {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) (k : Fin n โ†’ ๐•œ) :
            โ†‘(levelSetChartAt hf hFred hsurj hindex z).symm k = โ†‘(levelSetChart โ‹ฏ โ‹ฏ โ‹ฏ โ‹ฏ).symm (((D โ†‘z).kerModelEquiv โ‹ฏ โ‹ฏ).symm k)

            The inverse of the preferred chart at z is the inverse of the chart of the level set at z, read through ContinuousLinearMap.kerModelEquiv.

            @[simp]
            theorem TauCeti.levelSetChartAt_apply_self {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
            โ†‘(levelSetChartAt hf hFred hsurj hindex z) z = 0

            The preferred chart at z is normalised at z: it sends z to the origin of Fin n โ†’ ๐•œ.

            @[simp]
            theorem TauCeti.levelSetChartAt_symm_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
            โ†‘(levelSetChartAt hf hFred hsurj hindex z).symm 0 = z

            The inverse of the preferred chart at z sends the origin of Fin n โ†’ ๐•œ back to z.

            theorem TauCeti.mem_levelSetChartAt_source {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
            z โˆˆ (levelSetChartAt hf hFred hsurj hindex z).source

            A point of a regular level set lies in the source of its preferred chart.

            theorem TauCeti.mem_levelSetChartAt_target {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
            0 โˆˆ (levelSetChartAt hf hFred hsurj hindex z).target

            The origin of Fin n โ†’ ๐•œ, the value of the preferred chart at its base point, lies in its target.

            @[irreducible]
            noncomputable def TauCeti.levelSetChartedSpace {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) :
            ChartedSpace (Fin n โ†’ ๐•œ) โ†‘{x : E | f x = c}

            A regular level set of a Fredholm map is locally modelled on Fin n โ†’ ๐•œ, n its index. If f is strictly differentiable at every point of the level set {x | f x = c} with surjective Fredholm derivative of index n there, then the level set is a charted space modelled on Fin n โ†’ ๐•œ, the charts being the implicit-function charts TauCeti.levelSetChartAt.

            This is a ChartedSpace structure only: no global hypothesis such as second countability is assumed, so this does not by itself say that the level set is a topological manifold.

            The definition is irreducible: its behaviour is available through TauCeti.levelSetChartedSpace_chartAt and TauCeti.levelSetChartedSpace_atlas, which together with the TauCeti.levelSetChartAt_* lemmas describe the installed charts, so no consumer needs to unfold the structure literal.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem TauCeti.levelSetChartedSpace_chartAt {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) (z : โ†‘{x : E | f x = c}) :
              chartAt (Fin n โ†’ ๐•œ) z = levelSetChartAt hf hFred hsurj hindex z

              The preferred chart of the charted-space structure at z is TauCeti.levelSetChartAt.

              @[simp]
              theorem TauCeti.levelSetChartedSpace_atlas {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} [CompleteSpace ๐•œ] {D : E โ†’ E โ†’L[๐•œ] F} {n : โ„•} (hf : โˆ€ x โˆˆ {x : E | f x = c}, HasStrictFDerivAt f (D x) x) (hFred : โˆ€ x โˆˆ {x : E | f x = c}, (D x).IsFredholm) (hsurj : โˆ€ x โˆˆ {x : E | f x = c}, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c}, (D x).index = โ†‘n) :
              atlas (Fin n โ†’ ๐•œ) โ†‘{x : E | f x = c} = Set.range (levelSetChartAt hf hFred hsurj hindex)

              The atlas of the charted-space structure is the range of its preferred charts.

              Isolated points, discreteness and accumulation #

              theorem TauCeti.not_accPt_levelSet_of_injective_of_isClosed_range {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasFDerivAt f f' a) (hinj : Function.Injective โ‡‘f') (hclosed : IsClosed (Set.range โ‡‘f')) :

              A point at which f is differentiable with injective derivative of closed range is isolated in the level set through it: it is not an accumulation point of {x | f x = c}. No relation between f a and c is assumed; if f a โ‰  c this is the statement that a is not an accumulation point of a set it does not belong to.

              theorem TauCeti.not_accPt_levelSet_of_index_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hfin : FiniteDimensional ๐•œ โ†ฅ(โ†‘f').ker) (hindex : f'.index = 0) :

              A point at which the derivative is surjective of index zero, with finite-dimensional kernel, is isolated in the level set through it: the local model ker f' is then the zero space. Finite-dimensionality of the kernel is what rules out the reading of index f' = 0 in which both finrank values are the junk value 0; the full Fredholm property is not needed, and for a surjective operator is anyway equivalent to it by TauCeti.isFredholm_iff_finite_ker_of_surjective.

              theorem TauCeti.isDiscrete_levelSet_inter_of_injective_of_isClosed_range {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} {K : Set E} (hf : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, HasFDerivAt f (D x) x) (hinj : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, Function.Injective โ‡‘(D x)) (hclosed : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, IsClosed (Set.range โ‡‘(D x))) :
              IsDiscrete ({x : E | f x = c} โˆฉ K)

              A piece {x | f x = c} โˆฉ K of a level set along which the derivative is injective with closed range is discrete. Only the points of that piece are constrained: nothing is assumed about f away from it.

              theorem TauCeti.finite_levelSet_inter_of_injective_of_isClosed_range {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} {K : Set E} (hK : IsCompact ({x : E | f x = c} โˆฉ K)) (hf : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, HasFDerivAt f (D x) x) (hinj : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, Function.Injective โ‡‘(D x)) (hclosed : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, IsClosed (Set.range โ‡‘(D x))) :
              ({x : E | f x = c} โˆฉ K).Finite

              A compact piece of a level set along which the derivative is injective with closed range is finite.

              theorem TauCeti.finite_levelSet_inter_of_index_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {c : F} {D : E โ†’ E โ†’L[๐•œ] F} {K : Set E} (hK : IsCompact ({x : E | f x = c} โˆฉ K)) (hf : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, HasFDerivAt f (D x) x) (hfin : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, FiniteDimensional ๐•œ โ†ฅ(โ†‘(D x)).ker) (hsurj : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, Function.Surjective โ‡‘(D x)) (hindex : โˆ€ x โˆˆ {x : E | f x = c} โˆฉ K, (D x).index = 0) :
              ({x : E | f x = c} โˆฉ K).Finite

              A compact piece {x | f x = c} โˆฉ K of a level set along which the derivative is surjective of index zero with finite-dimensional kernel is finite. When f is continuous the level set is closed, so for a compact K the compactness hypothesis is hK.inter_left (isClosed_eq hcont continuous_const).

              This is one ingredient in the well-definedness of a count of index-zero solutions, such as a Floer differential: it makes the counted set finite once a separate compactness result has placed the solutions to be counted inside such a piece.

              theorem TauCeti.accPt_levelSet_of_nontrivial_ker {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) [Nontrivial โ†ฅ(โ†‘f').ker] (ha : f a = c) :
              AccPt a (Filter.principal {x : E | f x = c})

              At a point of a level set where the derivative is surjective with complemented nontrivial kernel, the level set is not locally the single point a: it accumulates at a.

              theorem TauCeti.accPt_levelSet_of_index_ne_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] [CompleteSpace E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace F] {f : E โ†’ F} {f' : E โ†’L[๐•œ] F} {a : E} {c : F} (hf : HasStrictFDerivAt f f' a) (hf' : (โ†‘f').range = โŠค) (hker : (โ†‘f').ker.ClosedComplemented) (hindex : f'.index โ‰  0) (ha : f a = c) :
              AccPt a (Filter.principal {x : E | f x = c})

              At a point of a level set where the derivative is surjective with complemented kernel and of nonzero index the level set accumulates. With TauCeti.not_accPt_levelSet_of_index_eq_zero this says that the level set reduces to the point a near a โ€” equivalently, that the local model ker f' is trivial โ€” exactly when the index vanishes. No finiteness of the kernel is assumed: a nonzero index already forces a nonzero, hence positive, finrank of the kernel.