Documentation

CsdLean4.Mathlib.Geometry.Manifold.ExteriorDerivative

The exterior derivative on a manifold #

TERM-SCOPE(Kahler) — this module names the "Kahler / symplectic manifold API" row of the Mathlib-gaps register; the source repository's terms register records what is backed and what is not.

Category: 1-Mathlib (CSD-free; upstream target Mathlib.Geometry.Manifold, the ## TODO of Mathlib/Analysis/Calculus/DifferentialForm/Basic.lean).

A differential form on a manifold (DifferentialForm.lean) is a smooth section of the alternating bundle on the tangent bundle. Its exterior derivative is defined chart by chart and glued by the flat naturality lemma extDeriv_pullback:

The design decisions the scoping note's §4 asked for, all taken the cheap way:

Honest scope #

⚠️ ∞ and 𝓘(ℝ, E) only. No C^n bookkeeping, no boundary, no other field. A consumer needing d on a C^n manifold or on a manifold with corners needs a generalisation, and the smoothness arithmetic that this file deliberately avoids would come with it.

⚠️ What is not here: the Palais formula, naturality d(f^*ω) = f^*(dω) for maps of manifolds, linearity, and the Leibniz rule (which needs the wedge of sections).

⚠️ The chart at x is chartAt E x, the atlas's own choice. mextDerivFamily is defined through it; localRep_mextDerivFamily is what shows the value is the same in every chart.

Provenance and references. The exterior-derivative plan (the plan, and its §3a on why the "walls" recorded before this file were not walls); Geometry/Manifold/DifferentialForm.lean (step (2a)); Mathlib/Analysis/Calculus/DifferentialForm/Basic.lean (extDeriv, extDeriv_pullback, extDeriv_extDeriv_apply); the Mathlib-gaps register (Kahler / symplectic manifold API); the backlog (XL, "Manifold exterior calculus"); the completed-work ledger. Consumers: Geometry/Manifold/Instances/ProjectiveSpaceFubiniStudyForm.lean (fsForm_mextDeriv); Geometry/Manifold/HamiltonianVectorField.lean (IsHamiltonianVectorField.isLocallyHamiltonian, the 0-form API).

Over ℝ, the smoothness the flat pullback and d² = 0 lemmas ask for is 2.

theorem ContDiffAt.extDeriv {E : Type u_1} {G : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup G] [NormedSpace ℝ G] {k : ℕ} {s : E → E [⋀^Fin k]→L[ℝ] G} {w : E} (h : ContDiffAt ℝ (↑⊤) s w) :

Flat lemma: extDeriv of a C^∞ form is C^∞ (it is a continuous linear map applied to the derivative of the form).

theorem extChartAt_comp_symm_eq {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] (x₀ y : M) :

The chart transition, as extChartAt sees it, is the chart transition.

theorem extChartAt_comp_extend_symm_eq {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] (e : ↑(atlas E M)) (y : M) :
↑(extChartAt (modelWithCornersSelf ℝ E) y) ∘ ↑((↑e).extend (modelWithCornersSelf ℝ E)).symm = ↑(chartAt E y) ∘ ↑(↑e).symm

The transition from any atlas chart e to the chart at y, as extChartAt and extend see it, is the chart transition.

theorem tangent_localTriv_symmL_eq_fderiv {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (e : ↑(atlas E M)) (y : M) (hy : y ∈ (↑e).source) :

The tangent trivialisation of any atlas chart e, read at y ∈ e.source, is the derivative of the transition from e to the chart at y (VectorBundleCore.localTriv_symmL); tangent_symmL_eq_fderiv is the case e = achart E x₀.

theorem tangent_symmL_eq_fderiv {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (x₀ y : M) (hy : y ∈ (chartAt E x₀).source) :

The tangent coordinate change from the chart at x₀ to the chart at y is the derivative of the chart transition.

theorem contDiffAt_chart_transition {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (x₀ y : M) {w : E} (hw : w ∈ (chartAt E x₀).target) (hy : ↑(chartAt E x₀).symm w ∈ (chartAt E y).source) :
ContDiffAt ℝ (↑⊤) (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) w

Chart transitions are C^∞ where defined.

theorem fderiv_chart_transition_comp {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (x₀ y z : M) (hz₀ : z ∈ (chartAt E x₀).source) (hzy : z ∈ (chartAt E y).source) :
fderiv ℝ (↑(chartAt E z) ∘ ↑(chartAt E x₀).symm) (↑(chartAt E x₀) z) = fderiv ℝ (↑(chartAt E z) ∘ ↑(chartAt E y).symm) (↑(chartAt E y) z) ∘SL fderiv ℝ (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) (↑(chartAt E x₀) z)

The cocycle: derivatives of chart transitions compose (VectorBundleCore.coordChange_comp for the tangent bundle, read on the model).

@[reducible, inline]

Definitional identification of the fibre TₓM [⋀^k]→L G with the model fibre.

Equations
Instances For
    noncomputable def DifferentialForm.localRep {E : Type u_1} {G : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup G] [NormedSpace ℝ G] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_4} [Fintype ι] (s : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x [⋀^ι]→L[ℝ] Bundle.Trivial M G x) (x₀ : M) :
    E → E [⋀^ι]→L[ℝ] G

    The local representative of a family of alternating maps in the chart at x₀: an unbundled flat form on the model space. Outside the chart's target it is junk; every use is at a point of the target.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The exterior derivative of a family of alternating maps on the tangent spaces: the flat extDeriv of its local representative in the chart at x, read at x.

      Equations
      Instances For
        theorem DifferentialForm.trivializationAt_snd {E : Type u_1} {G : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup G] [NormedSpace ℝ G] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_4} [Fintype ι] (s : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x [⋀^ι]→L[ℝ] Bundle.Trivial M G x) (x₀ y : M) (hy : y ∈ (chartAt E x₀).source) :
        (↑(trivializationAt (E [⋀^ι]→L[ℝ] G) (fun (x : M) => TangentSpace (modelWithCornersSelf ℝ E) x [⋀^ι]→L[ℝ] Bundle.Trivial M G x) x₀) ⟨y, s y⟩).2 = (toFlat (s y)).compContinuousLinearMap (fderiv ℝ (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) (↑(chartAt E x₀) y))

        ★ The trivialisation of a section value, on the model: pull back along the derivative of the chart transition.

        theorem DifferentialForm.localRep_transition {E : Type u_1} {G : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup G] [NormedSpace ℝ G] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_4} [Fintype ι] (s : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x [⋀^ι]→L[ℝ] Bundle.Trivial M G x) (x₀ y : M) {w : E} (hw : w ∈ (chartAt E x₀).target) (hy : ↑(chartAt E x₀).symm w ∈ (chartAt E y).source) :
        localRep s x₀ w = (localRep s y (↑(chartAt E y) (↑(chartAt E x₀).symm w))).compContinuousLinearMap (fderiv ℝ (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) w)

        ★ Local representatives in two charts differ by the pullback along the transition.

        ★ A C^n section has C^n local representatives (on the chart's target), for every order n the manifold has — ∞ and ω included (until 2026-09-17 the ω case was a second proof).

        ★★ The local representative of d s is the flat d of the local representative of s, in every chart, at every point of its target. Chart-independence of mextDerivFamily, in the only form a consumer needs; extDeriv_pullback is spent here.

        ★★ d of a C^∞ section is a C^∞ section.

        ★★ d ∘ d = 0, pointwise.

        ★★ The exterior derivative on differential forms, as an operator DifferentialForm 𝓘(ℝ, E) M ∞ (Fin k) G → DifferentialForm 𝓘(ℝ, E) M ∞ (Fin (k + 1)) G.

        Equations
        Instances For
          @[simp]
          theorem DifferentialForm.mextDeriv_apply {E : Type u_1} {G : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup G] [NormedSpace ℝ G] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {k : ℕ} (α : DifferentialForm (modelWithCornersSelf ℝ E) M (↑⊤) (Fin k) G) (x : M) :
          α.mextDeriv x = mextDerivFamily (fun (x : M) => α x) x

          ★★ d ∘ d = 0 on differential forms.

          0-forms: the exterior derivative is the differential #

          A function f : M → G as a 0-form family, x ↦ constOfIsEmpty (f x).

          Equations
          Instances For
            theorem DifferentialForm.localRep_zeroFormFamily {E : Type u_1} {G : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup G] [NormedSpace ℝ G] {M : Type u_3} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (f : M → G) (x₀ : M) {w : E} (hw : w ∈ (chartAt E x₀).target) :

            The local representative of a 0-form family is the function read in the chart.

            The 0-form family of a C^∞ function is a C^∞ section.

            ★ The exterior derivative of a 0-form is its differential: for f differentiable at x, d (zeroFormFamily f) x = ofSubsingleton 0 (mfderiv f x), i.e. (df)_x v = mfderiv f x (v 0). Stated on the model, as every identity of this file is.

            A C^∞ function as a 0-form.

            Equations
            Instances For

              ★ d f is the differential of f, for the bundled 0-form.