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 : LocalHomeomorph 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 #

theorem contDiffOn_fderiv_coord_change {𝕜 : 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)) :

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

@[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) :
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.

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)) :
    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) :
    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.

    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.

      Instances For
        @[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).toLocalHomeomorph.toLocalEquiv.source = Bundle.TotalSpace.proj ⁻¹' (chartAt H x).toLocalEquiv.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).toLocalHomeomorph.toLocalEquiv.target = (chartAt H x).toLocalEquiv.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).toLocalEquiv.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 𝕜 (↑(LocalHomeomorph.extend (chartAt H x) I) ↑(LocalEquiv.symm (LocalHomeomorph.extend (chartAt H z.proj) I))) (Set.range I) (↑(LocalHomeomorph.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).fst = 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).toLocalEquiv.source p.proj (chartAt H q.proj).toLocalEquiv.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).toLocalEquiv.target p.fst (chartAt H q.proj).toLocalEquiv.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).fst = ↑(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) :
        (↑(LocalHomeomorph.symm (chartAt (ModelProd H E) q)) p).proj = ↑(LocalHomeomorph.symm (chartAt H q.proj)) p.fst
        @[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) :
        @[simp]
        theorem TangentBundle.coordChange_model_space {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {F : Type u_8} [NormedAddCommGroup F] [NormedSpace 𝕜 F] (b : F) (b' : F) (x : F) :
        @[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) :

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

        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.

          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₀)).toLocalEquiv.source) (hy : g x (chartAt H' (g x₀)).toLocalEquiv.source) :