Documentation

TauCeti.Geometry.Manifold.VectorBundle.Cotangent.Basic

The cotangent bundle of a manifold #

The cotangent bundle T*M of a manifold M modelled on I : ModelWithCorners ๐•œ E H is the total space of the bundle of continuous linear functionals on the tangent spaces,

TauCeti.CotangentBundle I M = Bundle.TotalSpace (E โ†’L[๐•œ] ๐•œ) (fun x โ†ฆ TangentSpace I x โ†’L[๐•œ] ๐•œ).

No new structure is chosen: its topology, fibre-bundle and vector-bundle structure, charts and manifold structure, modelled on I.prod ๐“˜(๐•œ, E โ†’L[๐•œ] ๐•œ), are those of Mathlib's bundle of continuous linear maps from the tangent bundle to the trivial line bundle. In particular, the projection is a submersion by Bundle.isSubmersion_proj, the zero section is smooth by Bundle.contMDiff_zeroSection, and the fibrewise addition and scalar multiplication are the vector space structures of the fibres.

This file computes the charts in coordinates. The preferred chart at a covector over xโ‚€ sends a covector p at x to (ฯ†โ‚€ x, p โˆ˜ d(ฯ†โ‚€โปยน)), where ฯ†โ‚€ is the extended chart of M at xโ‚€ (TauCeti.CotangentBundle.extChartAt_apply, TauCeti.CotangentBundle.extChartAt_symm_apply). Consequently, a change of base chart ฯ† = ฯ†โ‚ โˆ˜ ฯ†โ‚€โปยน acts on cotangent coordinates by

(q, p) โ†ฆ (ฯ† q, p โˆ˜ (dฯ†_q)โปยน),

the derivative of the inverse change of charts at ฯ† q (TauCeti.CotangentBundle.extChartAt_extChartAt_symm). The new covector pairs with the pushed-forward tangent vector as the old covector pairs with the original one (TauCeti.CotangentBundle.extChartAt_extChartAt_symm_snd_apply_fderivWithin). This is the transformation law of covector components, dual to that of tangent vectors. A map into the single fibre over a fixed point q moves only the fibre coordinate in these charts, so its derivative is that of its covector part (TauCeti.CotangentBundle.hasMFDerivAt_mk).

Covectors pull back along the differential of a map f : M โ†’ N: a covector p at f x gives the covector p โˆ˜ df_x at x. For a family of covectors over a parameter manifold this is smooth: TauCeti.CotangentBundle.contMDiffAt_mk_comp_mfderiv loses one degree of smoothness of f, as the differential does. It gives the smoothness of the cotangent lift of a diffeomorphism (Diffeomorph.cotangent). The map may also vary smoothly with the parameter (TauCeti.CotangentBundle.contMDiffAt_mk_comp_mfderiv_uncurry), as the slice inclusions of a product manifold do.

The construction follows the Zulip discussion Cotangent Bundle as a Manifold in the channel Is there code for X?, which observed that Mathlib's continuous-linear-map bundle operations already supply the cotangent total space with its manifold structure.

References #

@[reducible, inline]
abbrev TauCeti.CotangentBundle {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] (I : ModelWithCorners ๐•œ E H) (M : Type u_4) [TopologicalSpace M] [ChartedSpace H M] :
Type (max u_4 u_1 u_2)

The cotangent bundle of a manifold M modelled on I: the total space of the bundle whose fibre at x is the space of continuous linear functionals on TangentSpace I x. It is a manifold modelled on I.prod ๐“˜(๐•œ, E โ†’L[๐•œ] ๐•œ).

Instances For
    theorem TauCeti.CotangentBundle.ext {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] {z w : CotangentBundle I M} (hproj : z.proj = w.proj) (h : โˆ€ (v : TangentSpace I z.proj), z.snd v = w.snd v) :
    z = w

    Two covectors are equal if they have the same base point and take the same values.

    theorem TauCeti.CotangentBundle.extChartAt_apply {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] (zโ‚€ z : CotangentBundle I M) :
    โ†‘(extChartAt (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) zโ‚€) z = (โ†‘(extChartAt I zโ‚€.proj) z.proj, z.snd โˆ˜SL Bundle.Trivialization.symmL ๐•œ (trivializationAt E (TangentSpace I) zโ‚€.proj) z.proj)

    The preferred chart of the cotangent bundle at zโ‚€ sends a covector z to the chart image of its base point and to the covector precomposed with the inverse of the tangent chart at zโ‚€.

    theorem TauCeti.CotangentBundle.extChartAt_symm_apply {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] (zโ‚€ : CotangentBundle I M) {q : E} (p : E โ†’L[๐•œ] ๐•œ) (hq : q โˆˆ (extChartAt I zโ‚€.proj).target) :
    โ†‘(extChartAt (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) zโ‚€).symm (q, p) = โŸจโ†‘(extChartAt I zโ‚€.proj).symm q, p โˆ˜SL Bundle.Trivialization.continuousLinearMapAt ๐•œ (trivializationAt E (TangentSpace I) zโ‚€.proj) (โ†‘(extChartAt I zโ‚€.proj).symm q)โŸฉ

    The inverse of the preferred chart of the cotangent bundle at zโ‚€ sends a point q of the base chart and a model covector p to the covector p composed with the tangent chart, at the point of M with coordinates q.

    theorem TauCeti.CotangentBundle.extChartAt_extChartAt_symm {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] (zโ‚€ zโ‚ : CotangentBundle I M) {q : E} (p : E โ†’L[๐•œ] ๐•œ) (hq : q โˆˆ (extChartAt I zโ‚€.proj).target) (hqโ‚ : โ†‘(extChartAt I zโ‚€.proj).symm q โˆˆ (extChartAt I zโ‚.proj).source) :
    โ†‘(extChartAt (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) zโ‚) (โ†‘(extChartAt (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) zโ‚€).symm (q, p)) = ((โ†‘(extChartAt I zโ‚.proj) โˆ˜ โ†‘(extChartAt I zโ‚€.proj).symm) q, p โˆ˜SL fderivWithin ๐•œ (โ†‘(extChartAt I zโ‚€.proj) โˆ˜ โ†‘(extChartAt I zโ‚.proj).symm) (Set.range โ†‘I) ((โ†‘(extChartAt I zโ‚.proj) โˆ˜ โ†‘(extChartAt I zโ‚€.proj).symm) q))

    Transition maps of the cotangent bundle. Changing from the preferred chart at zโ‚€ to the preferred chart at zโ‚ sends (q, p) to (ฯ† q, p โˆ˜ (dฯ†_q)โปยน), where ฯ† is the change of base charts; (dฯ†_q)โปยน is the derivative of the inverse change of charts at ฯ† q.

    theorem TauCeti.CotangentBundle.extChartAt_extChartAt_symm_snd_apply_fderivWithin {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] (zโ‚€ zโ‚ : CotangentBundle I M) {q : E} (p : E โ†’L[๐•œ] ๐•œ) (hq : q โˆˆ (extChartAt I zโ‚€.proj).target) (hqโ‚ : โ†‘(extChartAt I zโ‚€.proj).symm q โˆˆ (extChartAt I zโ‚.proj).source) (v : E) :
    (โ†‘(extChartAt (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) zโ‚) (โ†‘(extChartAt (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) zโ‚€).symm (q, p))).2 ((fderivWithin ๐•œ (โ†‘(extChartAt I zโ‚.proj) โˆ˜ โ†‘(extChartAt I zโ‚€.proj).symm) (Set.range โ†‘I) q) v) = p v

    A change of charts of the cotangent bundle preserves the pairing of covectors with tangent vectors: the new covector, evaluated on the image of v under the derivative of the change of base charts, is the old covector evaluated on v.

    theorem TauCeti.CotangentBundle.contMDiffOn_mk_comp_continuousLinearMapAt {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] {n : WithTop โ„•โˆž} [IsManifold I (n + 1) M] (x : M) {U : Set M} (hU : U โІ (trivializationAt E (TangentSpace I) x).baseSet) {c : M โ†’ E โ†’L[๐•œ] ๐•œ} (hc : ContMDiffOn I (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ)) n c U) :
    ContMDiffOn I (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) n (fun (y : M) => โŸจy, c y โˆ˜SL Bundle.Trivialization.continuousLinearMapAt ๐•œ (trivializationAt E (TangentSpace I) x) yโŸฉ) U

    Pulling a C^n family of model covectors back through tangent-bundle coordinates gives a C^n cotangent section wherever the coordinates are defined.

    theorem TauCeti.CotangentBundle.hasMFDerivAt_mk {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] {EX : Type u_5} {HX : Type u_6} {X : Type u_7} [NormedAddCommGroup EX] [NormedSpace ๐•œ EX] [TopologicalSpace HX] {IX : ModelWithCorners ๐•œ EX HX} [TopologicalSpace X] [ChartedSpace HX X] (q : M) {c : X โ†’ E โ†’L[๐•œ] ๐•œ} {y : X} {c' : TangentSpace IX y โ†’L[๐•œ] E โ†’L[๐•œ] ๐•œ} (hc : HasMFDerivAt% c y c') :
    HasMFDerivAt% (fun (y : X) => โŸจq, c yโŸฉ) y (ContinuousLinearMap.inr ๐•œ E (E โ†’L[๐•œ] ๐•œ) โˆ˜SL c')

    The derivative of a map into one fibre. If c : X โ†’ E โ†’L[๐•œ] ๐•œ has derivative c' at y, then y โ†ฆ (q, c y), a map into the fibre of the cotangent bundle over the fixed point q, has derivative w โ†ฆ (0, c' w) at y, read in the preferred chart at (q, c y): the base coordinate does not move, and over q the tangent trivialization at q is the identity.

    theorem TauCeti.CotangentBundle.contMDiffAt_mk_comp_mfderiv {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] {E' : Type u_5} {H' : Type u_6} [NormedAddCommGroup E'] [NormedSpace ๐•œ E'] [TopologicalSpace H'] {J : ModelWithCorners ๐•œ E' H'} {N : Type u_7} [TopologicalSpace N] [ChartedSpace H' N] [IsManifold J 1 N] {EX : Type u_8} {HX : Type u_9} {X : Type u_10} [NormedAddCommGroup EX] [NormedSpace ๐•œ EX] [TopologicalSpace HX] {IX : ModelWithCorners ๐•œ EX HX} [TopologicalSpace X] [ChartedSpace HX X] {m n : WithTop โ„•โˆž} {ฮจ : X โ†’ CotangentBundle J N} {g : X โ†’ M} {f : M โ†’ N} {zโ‚€ : X} (hฮจg : โˆ€ (z : X), (ฮจ z).proj = f (g z)) (hฮจ : ContMDiffAt IX (J.prod (modelWithCornersSelf ๐•œ (E' โ†’L[๐•œ] ๐•œ))) m ฮจ zโ‚€) (hg : ContMDiffAt IX I m g zโ‚€) (hf : ContMDiffAt I J n f (g zโ‚€)) (hmn : m + 1 โ‰ค n) :
    ContMDiffAt IX (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) m (fun (z : X) => โŸจg z, (ฮจ z).snd โˆ˜SL mfderiv% f (g z)โŸฉ) zโ‚€

    Pulling covectors back along a map is smooth. Let ฮจ z be a covector at f (g z), depending on a parameter z. Its pullback along the differential of f at g z, ฮจ z โˆ˜ df_(g z), is a covector at g z. If ฮจ and g are C^m at zโ‚€ and f is C^n at g zโ‚€ with m + 1 โ‰ค n, the family of pulled-back covectors is C^m at zโ‚€.

    theorem TauCeti.CotangentBundle.contMDiff_mk_comp_mfderiv {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] {E' : Type u_5} {H' : Type u_6} [NormedAddCommGroup E'] [NormedSpace ๐•œ E'] [TopologicalSpace H'] {J : ModelWithCorners ๐•œ E' H'} {N : Type u_7} [TopologicalSpace N] [ChartedSpace H' N] [IsManifold J 1 N] {EX : Type u_8} {HX : Type u_9} {X : Type u_10} [NormedAddCommGroup EX] [NormedSpace ๐•œ EX] [TopologicalSpace HX] {IX : ModelWithCorners ๐•œ EX HX} [TopologicalSpace X] [ChartedSpace HX X] {m n : WithTop โ„•โˆž} {ฮจ : X โ†’ CotangentBundle J N} {g : X โ†’ M} {f : M โ†’ N} (hฮจg : โˆ€ (z : X), (ฮจ z).proj = f (g z)) (hฮจ : ContMDiff IX (J.prod (modelWithCornersSelf ๐•œ (E' โ†’L[๐•œ] ๐•œ))) m ฮจ) (hg : ContMDiff IX I m g) (hf : ContMDiff I J n f) (hmn : m + 1 โ‰ค n) :
    ContMDiff IX (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) m fun (z : X) => โŸจg z, (ฮจ z).snd โˆ˜SL mfderiv% f (g z)โŸฉ

    Pulling covectors back along a map is smooth. The global version of TauCeti.CotangentBundle.contMDiffAt_mk_comp_mfderiv.

    theorem TauCeti.CotangentBundle.contMDiffAt_mk_comp_mfderiv_uncurry {๐•œ : Type u_1} {E : Type u_2} {H : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [TopologicalSpace H] {I : ModelWithCorners ๐•œ E H} {M : Type u_4} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] {E' : Type u_5} {H' : Type u_6} [NormedAddCommGroup E'] [NormedSpace ๐•œ E'] [TopologicalSpace H'] {J : ModelWithCorners ๐•œ E' H'} {N : Type u_7} [TopologicalSpace N] [ChartedSpace H' N] [IsManifold J 1 N] {EX : Type u_8} {HX : Type u_9} {X : Type u_10} [NormedAddCommGroup EX] [NormedSpace ๐•œ EX] [TopologicalSpace HX] {IX : ModelWithCorners ๐•œ EX HX} [TopologicalSpace X] [ChartedSpace HX X] {m n : WithTop โ„•โˆž} [IsManifold IX 1 X] {ฮจ : X โ†’ CotangentBundle J N} {g : X โ†’ M} {f : X โ†’ M โ†’ N} {zโ‚€ : X} (hฮจg : โˆ€ (z : X), (ฮจ z).proj = f z (g z)) (hฮจ : ContMDiffAt IX (J.prod (modelWithCornersSelf ๐•œ (E' โ†’L[๐•œ] ๐•œ))) m ฮจ zโ‚€) (hg : ContMDiffAt IX I m g zโ‚€) (hf : ContMDiffAt (IX.prod I) J n (Function.uncurry f) (zโ‚€, g zโ‚€)) (hmn : m + 1 โ‰ค n) :
    ContMDiffAt IX (I.prod (modelWithCornersSelf ๐•œ (E โ†’L[๐•œ] ๐•œ))) m (fun (z : X) => โŸจg z, (ฮจ z).snd โˆ˜SL mfderiv% (f z) (g z)โŸฉ) zโ‚€

    Pulling covectors back along a family of maps is smooth. Let ฮจ z be a covector at f z (g z), depending on a parameter z. Its pullback along the differential of f z at g z, ฮจ z โˆ˜ d(f z)_(g z), is a covector at g z. If ฮจ and g are C^m at zโ‚€ and (z, x) โ†ฆ f z x is C^n at (zโ‚€, g zโ‚€) with m + 1 โ‰ค n, the family of pulled-back covectors is C^m at zโ‚€. Unlike TauCeti.CotangentBundle.contMDiffAt_mk_comp_mfderiv, the map may vary with the parameter, which is then required to range over a Cยน manifold.