Documentation

Mathlib.Analysis.Normed.Operator.Fredholm.Basic

Fredholm operators between topological vector spaces #

Fix π•œ a complete NontriviallyNormedField, and let E, F be two Hausdorff topological vector spaces over π•œ.

We say that a continuous linear map T : E β†’L[π•œ] F is a Fredholm operator if it satisfies the following four equivalent conditions:

  1. T is strict, its range is closed and has finite codimension, and its kernel is (topologically) complemented and has finite dimension. This is chosen as the definition, see IsFredholm.
  2. T admits a continuous quasi-inverse, in the sense of LinearMap.IsQuasiInverse.
  3. There are closed finite-codimension subspaces E₁ and F₁ of E and F between which T induces an isomorphism.
  4. T admits a FredholmPackage: there are topological decompositions E = E₁ βŠ• Eβ‚€, F = F₁ βŠ• Fβ‚€, where Eβ‚€ and Fβ‚€ are finite dimensional, and an isomorphism Ξ¦ : E₁ ≃L[π•œ] F₁ such that T is zero on Eβ‚€ and coincides with Ξ¦ on E₁; in other words, in these decompositions, T is given by the matrix $\begin{pmatrix} Ξ¦ & 0 \cr 0 & 0 \end{pmatrix}$.

Main definitions #

Note that the data of a FredholmPackage for an operator is morally the strongest of the equivalent ways to assume that u is Fredholm (for example, it is clear how to build a canonical continuous quasi-inverse of u from such a package).

Hence, you should not typically prove that an operator is Fredholm by building a Fredholm package (consider using IsFredholm.of_isInvertible_restrict); instead, when you know that an operator is Fredholm, you can obtain a FredholmPackage from IsFredholm.nonempty_fredholmPackage in order to conveniently use the full strength of Fredholmness.

Main statements #

Equivalent criteria #

Implementation details #

We largely follow N. Bourbaki, ThΓ©ories Spectrales, Chapitre III, Β§ 3, nΒ° 2, in particular for the proof of equivalence of the four conditions above. Here are some notable changes:

References #

Definition and equivalent conditions #

structure ContinuousLinearMap.IsFredholm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] (u : E β†’L[π•œ] F) :

A continuous linear map u : E β†’L[π•œ] F is a Fredholm operator if it is strict, its range is closed and has finite codimension, and its kernel is (topologically) complemented and has finite dimension.

See also isFredholm_tfae for other equivalent characterizations. We will also prove later (not in Mathlib yet) that for maps between Banach (or even FrΓ©chet) spaces over ℝ or β„‚, all the conditions follow from the kernel and cokernel having finite dimension.

Instances For
    theorem ContinuousLinearMap.IsFredholm.closedComplemented_range {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] {u : E β†’L[π•œ] F} (u_fred : u.IsFredholm) :

    A Fredholm operator has (topologically) complemented range.

    structure FredholmDecomposition (π•œ : Type u_1) (E : Type u_2) [NontriviallyNormedField π•œ] [AddCommGroup E] [Module π•œ E] [TopologicalSpace E] :
    Type u_2

    A Fredholm decomposition of a topological vector space E is the data of two subspaces Xβ‚€ and X₁ which are topological complements, and where Xβ‚€ is finite dimensional.

    Note that we purposefully use the index β‚€ for the "inessential" (i.e. finite dimensional) part of the decomposition.

    Instances For
      @[reducible, inline]
      noncomputable abbrev FredholmDecomposition.proj {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [AddCommGroup E] [Module π•œ E] [TopologicalSpace E] (dec : FredholmDecomposition π•œ E) :
      E β†’L[π•œ] β†₯dec.X₁

      Given a Fredholm decomposition dec of the space E, dec.proj is the (continuous linear) projection onto the "essential part" dec.X₁ along the "inessential part" dec.Xβ‚€. This is a Fredholm operator.

      Equations
      Instances For
        structure ContinuousLinearMap.FredholmPackage {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] (u : E β†’L[π•œ] F) :
        Type (max u_2 u_3)

        Let u : E β†’L[π•œ] F be a continuous linear map. A Fredholm package for u is the data of Fredholm decompositions decDom and decCodom of E and F respectively, together with a continuous linear equivalence equiv : decDom.X₁ ≃L[π•œ] decCodom.X₁ between the "essential" (i.e. finite codimension) parts of these decompositions, such that u equals the composition decCodom.X₁.subtypeL ∘L equiv ∘L decDom.proj. In other words, in these "essential βŠ• inessential" decompositions, the matrix of u is $\begin{pmatrix} \texttt{equiv} & 0 \cr 0 & 0 \end{pmatrix}$.

        We will show in isFredholm_tfae that an operator is Fredholm if and only if it admits a Fredholm package. In practice, the condition that u is Fredholm (IsFredholm) is always easier to prove, so if you need a Fredholm package you should probably get it from IsFredholm.nonempty_fredholmPackage or IsFredholm.fredholmPackage.

        Instances For
          theorem ContinuousLinearMap.FredholmPackage.ker_eq {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
          (↑u).ker = pkg.decDom.Xβ‚€
          theorem ContinuousLinearMap.FredholmPackage.range_eq {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
          (↑u).range = pkg.decCodom.X₁
          theorem ContinuousLinearMap.FredholmPackage.mapsTo {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
          Set.MapsTo ⇑u ↑pkg.decDom.X₁ ↑pkg.decCodom.X₁
          theorem ContinuousLinearMap.FredholmPackage.equiv_eq_restrict {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
          ↑pkg.equiv = u.restrict β‹―
          theorem ContinuousLinearMap.FredholmPackage.isInvertible_restrict {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
          noncomputable def ContinuousLinearMap.FredholmPackage.quasiInverse {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
          F β†’L[π•œ] E

          The data of a Fredholm package for u determines a canonical quasi-inverse of u.

          Equations
          Instances For
            theorem ContinuousLinearMap.FredholmPackage.isQuasiInverse {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :
            (↑pkg.quasiInverse).IsQuasiInverse ↑u

            The data of a Fredholm package for u determines a canonical quasi-inverse of u.

            theorem ContinuousLinearMap.IsFredholm.of_isInvertible_restrict {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [ContinuousSMul π•œ E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] {u : E β†’L[π•œ] F} {E₁ : Submodule π•œ E} (E₁_closed : IsClosed ↑E₁) [E₁_coFG : E₁.CoFG] {F₁ : Submodule π•œ F} (F₁_closed : IsClosed ↑F₁) [F₁_coFG : F₁.CoFG] (h_mapsto : Set.MapsTo ⇑u ↑E₁ ↑F₁) (h_inv : (u.restrict h_mapsto).IsInvertible) :

            Assume that u : E β†’L[π•œ] F restricts to an isomorphism between closed finite codimension subspaces E₁ and F₁. Then u is Fredholm.

            In fact it is enough to assume that the restriction E₁ β†’L[π•œ] F₁ is Fredholm, see IsFredholm.of_restrict (not in Mathlib yet).

            noncomputable def ContinuousLinearMap.IsFredholm.fredholmPackage {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [IsTopologicalAddGroup E] {u : E β†’L[π•œ] F} (u_fred : u.IsFredholm) {dom₁ : Submodule π•œ E} {codomβ‚€ : Submodule π•œ F} (h_dom : Submodule.IsTopCompl (↑u).ker dom₁) (h_codom : Submodule.IsTopCompl (↑u).range codomβ‚€) :

            Let u : E β†’L[π•œ] F be a Fredholm operator. Given dom₁ (resp. codomβ‚€) an arbitrary topological complement of u.ker (resp. u.range), we get a FredholmPackage for u by considering the decompositions E = dom₁ βŠ• u.ker, F = u.range βŠ• codomβ‚€, and the isomorphism dom₁ ≃L[π•œ] u.range induced by u.

            If you need control over the decompositions, this is the primary way to get a FredholmPackage. Otherwise, see IsFredholm.nonempty_fredholmPackage.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem ContinuousLinearMap.IsFredholm.nonempty_fredholmPackage {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] {u : E β†’L[π•œ] F} (u_fred : u.IsFredholm) :

              Every Fredholm operator admits a FredholmPackage.

              This is the primary way to get a FredholmPackage if you don't need control of the decompositions. If you do, see IsFredholm.fredholmPackage.

              theorem ContinuousLinearMap.isFredholm_tfae {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [ContinuousSMul π•œ E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] [T2Space E] [T2Space F] (u : E β†’L[π•œ] F) :
              [u.IsFredholm, βˆƒ (v : F β†’L[π•œ] E), (↑v).IsQuasiInverse ↑u, βˆƒ (E₁ : Submodule π•œ E) (F₁ : Submodule π•œ F), IsClosed ↑E₁ ∧ IsClosed ↑F₁ ∧ E₁.CoFG ∧ F₁.CoFG ∧ βˆƒ (h : Set.MapsTo ⇑u ↑E₁ ↑F₁), (u.restrict h).IsInvertible, Nonempty u.FredholmPackage].TFAE

              Let E, F be two Hausdorff topological vector spaces over a complete NontriviallyNormedField denoted π•œ, and u : E β†’L[π•œ] F a continuous linear map. The following conditions are equivalent:

              1. u is a Fredholm operator, in the sense of ContinuousLinearMap.IsFredholm.
              2. u admits a continuous quasi-inverse, in the sense of LinearMap.IsQuasiInverse.
              3. There are closed finite-codimension subspaces E₁ and F₁ of E and F between which u induces an isomorphism.
              4. u admits a FredholmPackage.

              In practice, condition 4 is the "strongest", so you should probably not use it to prove that an operator is Fredholm.

              theorem ContinuousLinearMap.FredholmPackage.isFredholm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [ContinuousSMul π•œ E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] [T2Space E] [T2Space F] {u : E β†’L[π•œ] F} (pkg : u.FredholmPackage) :

              If u has a Fredholm package, it is Fredholm.

              theorem ContinuousLinearMap.isFredholm_iff_exists_isQuasiInverse {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [ContinuousSMul π•œ E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] [T2Space E] [T2Space F] {u : E β†’L[π•œ] F} :
              u.IsFredholm ↔ βˆƒ (v : F β†’L[π•œ] E), (↑v).IsQuasiInverse ↑u
              theorem ContinuousLinearMap.IsFredholm.exists_isQuasiInverse {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [ContinuousSMul π•œ E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] [T2Space E] [T2Space F] {u : E β†’L[π•œ] F} :
              u.IsFredholm β†’ βˆƒ (v : F β†’L[π•œ] E), (↑v).IsQuasiInverse ↑u

              Alias of the forward direction of ContinuousLinearMap.isFredholm_iff_exists_isQuasiInverse.

              theorem ContinuousLinearMap.IsFredholm.of_isQuasiInverse {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F] [TopologicalSpace E] [TopologicalSpace F] [CompleteSpace π•œ] [IsTopologicalAddGroup E] [ContinuousSMul π•œ E] [IsTopologicalAddGroup F] [ContinuousSMul π•œ F] [T2Space E] [T2Space F] {u : E β†’L[π•œ] F} {v : F β†’L[π•œ] E} (h : (↑v).IsQuasiInverse ↑u) :