Documentation

Mathlib.Geometry.Manifold.VectorBundle.Tangent

Tangent bundles #

This file defines the tangent bundle as a smooth vector bundle.

Let M be a smooth manifold with corners with model I on (E, H). We define the tangent bundle of M using the VectorBundleCore construction indexed by the charts of M with fibers E. Given two charts i, j : PartialHomeomorph M H, the coordinate change between i and j at a point x : M is the derivative of the composite

  I.symm   i.symm    j     I
E -----> H -----> M --> H --> E

within the set range I ⊆ E at I (i x) : E. This defines a smooth vector bundle TangentBundle with fibers TangentSpace.

Main definitions #

Auxiliary lemma for tangent spaces: the derivative of a coordinate change between two charts is smooth on its source.

@[simp]
theorem tangentBundleCore_indexAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) :
(tangentBundleCore I M).indexAt x = achart H x
@[simp]
theorem tangentBundleCore_coordChange {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (i : (atlas H M)) (j : (atlas H M)) (x : M) :
(tangentBundleCore I M).coordChange i j x = fderivWithin 𝕜 ((PartialHomeomorph.extend (j) I) (PartialEquiv.symm (PartialHomeomorph.extend (i) I))) (Set.range I) ((PartialHomeomorph.extend (i) I) x)
def tangentBundleCore {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] :
VectorBundleCore 𝕜 M E (atlas H M)

Let M be a smooth manifold with corners with model I on (E, H). Then VectorBundleCore I M is the vector bundle core for the tangent bundle over M. It is indexed by the atlas of M, with fiber E and its change of coordinates from the chart i to the chart j at point x : M is the derivative of the composite

  I.symm   i.symm    j     I
E -----> H -----> M --> H --> E

within the set range I ⊆ E at I (i x) : E.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem tangentBundleCore_baseSet {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (i : (atlas H M)) :
    (tangentBundleCore I M).baseSet i = (i).source
    theorem tangentBundleCore_coordChange_achart {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) (x' : M) (z : M) :
    (tangentBundleCore I M).coordChange (achart H x) (achart H x') z = fderivWithin 𝕜 ((extChartAt I x') (PartialEquiv.symm (extChartAt I x))) (Set.range I) ((extChartAt I x) z)
    @[inline, reducible]
    abbrev tangentCoordChange {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) (y : M) :
    ME →L[𝕜] E

    In a manifold M, given two preferred charts indexed by x y : M, tangentCoordChange I x y is the family of derivatives of the corresponding change-of-coordinates map. It takes junk values outside the intersection of the sources of the two charts.

    Note that this definition takes advantage of the fact that tangentBundleCore has the same base sets as the preferred charts of the base manifold.

    Equations
    Instances For
      theorem tangentCoordChange_def {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {x : M} {y : M} {z : M} :
      tangentCoordChange I x y z = fderivWithin 𝕜 ((extChartAt I y) (PartialEquiv.symm (extChartAt I x))) (Set.range I) ((extChartAt I x) z)
      theorem tangentCoordChange_self {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {x : M} {z : M} {v : E} (h : z (extChartAt I x).source) :
      (tangentCoordChange I x x z) v = v
      theorem tangentCoordChange_comp {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {w : M} {x : M} {y : M} {z : M} {v : E} (h : z (extChartAt I w).source (extChartAt I x).source (extChartAt I y).source) :
      (tangentCoordChange I x y z) ((tangentCoordChange I w x z) v) = (tangentCoordChange I w y z) v
      theorem hasFDerivWithinAt_tangentCoordChange {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {x : M} {y : M} {z : M} (h : z (extChartAt I x).source (extChartAt I y).source) :
      theorem continuousOn_tangentCoordChange {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] {I : ModelWithCorners 𝕜 E H} {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) (y : M) :
      ContinuousOn (tangentCoordChange I x y) ((extChartAt I x).source (extChartAt I y).source)
      def TangentSpace {𝕜 : Type u_10} [NontriviallyNormedField 𝕜] {E : Type u_9} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_11} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {M : Type u_12} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (_x : M) :
      Type u_9

      The tangent space at a point of the manifold M. It is just E. We could use instead (tangentBundleCore I M).to_topological_vector_bundle_core.fiber x, but we use E to help the kernel.

      Equations
      Instances For
        @[reducible]
        def TangentBundle {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] :
        Type (max u_6 u_2)

        The tangent bundle to a smooth manifold, as a Sigma type. Defined in terms of Bundle.TotalSpace to be able to put a suitable topology on it.

        Equations
        Instances For
          instance instInhabitedTangentSpace {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) :
          Equations
          @[simp]
          theorem TangentBundle.trivializationAt_source {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) :
          (trivializationAt E (TangentSpace I) x).toPartialHomeomorph.toPartialEquiv.source = Bundle.TotalSpace.proj ⁻¹' (chartAt H x).toPartialEquiv.source
          @[simp]
          theorem TangentBundle.trivializationAt_target {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) :
          (trivializationAt E (TangentSpace I) x).toPartialHomeomorph.toPartialEquiv.target = (chartAt H x).toPartialEquiv.source ×ˢ Set.univ
          @[simp]
          theorem TangentBundle.trivializationAt_baseSet {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) :
          (trivializationAt E (TangentSpace I) x).baseSet = (chartAt H x).toPartialEquiv.source
          theorem TangentBundle.trivializationAt_apply {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) (z : TangentBundle I M) :
          (trivializationAt E (TangentSpace I) x) z = (z.proj, (fderivWithin 𝕜 ((PartialHomeomorph.extend (chartAt H x) I) (PartialEquiv.symm (PartialHomeomorph.extend (chartAt H z.proj) I))) (Set.range I) ((PartialHomeomorph.extend (chartAt H z.proj) I) z.proj)) z.snd)
          @[simp]
          theorem TangentBundle.trivializationAt_fst {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (x : M) (z : TangentBundle I M) :
          ((trivializationAt E (TangentSpace I) x) z).1 = z.proj
          @[simp]
          theorem TangentBundle.mem_chart_source_iff {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (p : TangentBundle I M) (q : TangentBundle I M) :
          p (chartAt (ModelProd H E) q).toPartialEquiv.source p.proj (chartAt H q.proj).toPartialEquiv.source
          @[simp]
          theorem TangentBundle.mem_chart_target_iff {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (p : H × E) (q : TangentBundle I M) :
          p (chartAt (ModelProd H E) q).toPartialEquiv.target p.1 (chartAt H q.proj).toPartialEquiv.target
          @[simp]
          theorem TangentBundle.coe_chartAt_fst {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (p : TangentBundle I M) (q : TangentBundle I M) :
          ((chartAt (ModelProd H E) q) p).1 = (chartAt H q.proj) p.proj
          @[simp]
          theorem TangentBundle.coe_chartAt_symm_fst {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] (p : H × E) (q : TangentBundle I M) :
          ((PartialHomeomorph.symm (chartAt (ModelProd H E) q)) p).proj = (PartialHomeomorph.symm (chartAt H q.proj)) p.1
          @[simp]
          theorem TangentBundle.trivializationAt_continuousLinearMapAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {b₀ : M} {b : M} (hb : b (trivializationAt E (TangentSpace I) b₀).baseSet) :
          @[simp]
          theorem TangentBundle.trivializationAt_symmL {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (M : Type u_6) [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {b₀ : M} {b : M} (hb : b (trivializationAt E (TangentSpace I) b₀).baseSet) :
          Trivialization.symmL 𝕜 (trivializationAt E (TangentSpace I) b₀) b = (tangentBundleCore I M).coordChange (achart H b₀) (achart H b) b
          @[simp]
          theorem TangentBundle.coordChange_model_space {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {F : Type u_8} [NormedAddCommGroup F] [NormedSpace 𝕜 F] (b : F) (b' : F) (x : F) :
          (tangentBundleCore (modelWithCornersSelf 𝕜 F) F).coordChange (achart F b) (achart F b') x = 1
          @[simp]

          The tangent bundle to the model space #

          @[simp]
          theorem tangentBundle_model_space_chartAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (p : TangentBundle I H) :

          In the tangent bundle to the model space, the charts are just the canonical identification between a product type and a sigma type, a.k.a. TotalSpace.toProd.

          @[simp]
          theorem tangentBundle_model_space_coe_chartAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (p : TangentBundle I H) :
          theorem tangentBundleCore_coordChange_model_space {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) (x : H) (x' : H) (z : H) :
          (tangentBundleCore I H).coordChange (achart H x) (achart H x') z = ContinuousLinearMap.id 𝕜 E

          The canonical identification between the tangent bundle to the model space and the product, as a homeomorphism

          Equations
          Instances For
            theorem inCoordinates_tangent_bundle_core_model_space {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {E' : Type u_3} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {H' : Type u_5} [TopologicalSpace H'] (I' : ModelWithCorners 𝕜 E' H') (x₀ : H) (x : H) (y₀ : H') (y : H') (ϕ : E →L[𝕜] E') :

            The map in_coordinates for the tangent bundle is trivial on the model spaces

            def inTangentCoordinates {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {E' : Type u_3} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {H' : Type u_5} [TopologicalSpace H'] (I' : ModelWithCorners 𝕜 E' H') {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] [SmoothManifoldWithCorners I' M'] {N : Type u_9} (f : NM) (g : NM') (ϕ : NE →L[𝕜] E') :
            NNE →L[𝕜] E'

            When ϕ x is a continuous linear map that changes vectors in charts around f x to vectors in charts around g x, inTangentCoordinates I I' f g ϕ x₀ x is a coordinate change of this continuous linear map that makes sense from charts around f x₀ to charts around g x₀ by composing it with appropriate coordinate changes. Note that the type of ϕ is more accurately Π x : N, TangentSpace I (f x) →L[𝕜] TangentSpace I' (g x). We are unfolding TangentSpace in this type so that Lean recognizes that the type of ϕ doesn't actually depend on f or g.

            This is the underlying function of the trivializations of the hom of (pullbacks of) tangent spaces.

            Equations
            Instances For
              theorem inTangentCoordinates_model_space {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {E' : Type u_3} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {H' : Type u_5} [TopologicalSpace H'] (I' : ModelWithCorners 𝕜 E' H') {N : Type u_9} (f : NH) (g : NH') (ϕ : NE →L[𝕜] E') (x₀ : N) :
              inTangentCoordinates I I' f g ϕ x₀ = ϕ
              theorem inTangentCoordinates_eq {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {E' : Type u_3} [NormedAddCommGroup E'] [NormedSpace 𝕜 E'] {H : Type u_4} [TopologicalSpace H] (I : ModelWithCorners 𝕜 E H) {H' : Type u_5} [TopologicalSpace H'] (I' : ModelWithCorners 𝕜 E' H') {M : Type u_6} [TopologicalSpace M] [ChartedSpace H M] [SmoothManifoldWithCorners I M] {M' : Type u_7} [TopologicalSpace M'] [ChartedSpace H' M'] [SmoothManifoldWithCorners I' M'] {N : Type u_9} (f : NM) (g : NM') (ϕ : NE →L[𝕜] E') {x₀ : N} {x : N} (hx : f x (chartAt H (f x₀)).toPartialEquiv.source) (hy : g x (chartAt H' (g x₀)).toPartialEquiv.source) :
              inTangentCoordinates I I' f g ϕ x₀ x = ContinuousLinearMap.comp ((tangentBundleCore I' M').coordChange (achart H' (g x)) (achart H' (g x₀)) (g x)) (ContinuousLinearMap.comp (ϕ x) ((tangentBundleCore I M).coordChange (achart H (f x₀)) (achart H (f x)) (f x)))