Documentation

CsdLean4.Mathlib.Geometry.Manifold.RiemannianVolume

The Riemannian volume of a metric on a manifold, from chart Gram densities #

The namespace is MetricFamily, not RiemannianMetric: Mathlib has a structure of that name (Mathlib/Topology/VectorBundle/Riemannian.lean, with ContMDiffRiemannianMetric beside it), and this file works with a bare family g : ∀ x, T_x → T_x → ℝ plus IsBilinear; the volume of Mathlib's bundled metrics is the section "Mathlib's Riemannian metrics" at the end. Category: 1-Mathlib (measure theory on manifolds: the Riemannian volume measure of a metric family, absent from Mathlib at the pin — Mathlib/Geometry/Manifold/VectorBundle/Riemannian.lean has Riemannian bundles, no volume; G17 of the generator-layer plan §9).

A Riemannian metric g on a manifold M modelled on E has, in the chart at x₀, the Gram matrix G_{x₀}(w)ᵢⱼ = g (symmL (eᵢ)) (symmL (eⱼ)) against a basis e of E (the metric at the point under w, read through the tangent trivialisation), and its Riemannian volume has the chart density √det G_{x₀}(w). This module builds the measure exactly as TopFormMeasure.lean builds the measure of a top form — chart densities glued along the measurable partition of a ChartCover — with the Gram density in place of the top-form coefficient.

Honest scope #

⚠️ Chart-independence needs bilinearity, and asks for it. The definitions take a bare family g so that they ask nothing; chartMeasure_congr and riemannianVolume_congr_cover take IsBilinear g (pointwise bilinearity, the four equations), which is what the Gram congruence Aᵀ G A uses and all a metric has. No symmetry or positivity is asked; a family with a non-positive Gram determinant has chart density 0 there and the theorems still hold.

⚠️ g is a family, not a section. No smoothness or symmetry of g is assumed by the definitions; a non-positive Gram determinant gives density 0 (Real.sqrt of a negative is 0). The ℂℙⁿ instance supplies a genuine metric (isBilinear_fsMetric). Not stated: that an isometry preserves riemannianVolume (the twin of topFormMeasure_map_eq; same route, no consumer).

Provenance and references. The generator-layer plan (G17); Geometry/Manifold/TopFormMeasure.lean (the construction mirrored); Instances/ProjectiveSpaceFubiniStudyRiemannian.lean (the instance).

noncomputable def MetricFamily.localRep {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (x₀ : M) (w u v : E) :

The local representative of a metric family in the chart at x₀: the metric at the point under w, on tangent vectors read through the tangent trivialisation. 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
    noncomputable def MetricFamily.gram {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} (e : Module.Basis ι ℝ E) (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (x₀ : M) (w : E) :
    Matrix ι ι ℝ

    The Gram matrix of the local representative against the basis e.

    Equations
    Instances For
      noncomputable def MetricFamily.chartDensity {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (e : Module.Basis ι ℝ E) (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (x₀ : M) (w : E) :

      The Riemannian chart density √det G.

      Equations
      Instances For

        The Riemannian chart measure: the density measure on the chart's target, pushed to M by the chart.

        Equations
        Instances For
          theorem MetricFamily.chartMeasure_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] [MeasurableSpace M] [BorelSpace M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (μ : MeasureTheory.Measure E) [μ.IsAddHaarMeasure] (e : Module.Basis ι ℝ E) (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (x₀ : M) {A : Set M} (hA : MeasurableSet A) :
          (chartMeasure μ e g x₀) A = ∫⁻ (w : E) in (chartAt E x₀).target ∩ ↑(chartAt E x₀).symm ⁻¹' A, chartDensity e g x₀ w ∂μ

          ★★ The Riemannian volume of a metric family, against a chart cover: the chart densities √det G glued along the cover's measurable partition.

          Equations
          Instances For

            ★★ The Riemannian volume against a top-form measure. If in every chart of the cover the Gram density is k times the coefficient density of a top form s (on the chart's target), then the Riemannian volume is k times the measure of s.

            Chart-independence (Q30 / G17b) #

            Bilinearity of a metric family, pointwise: the four equations the Gram congruence needs. MetricFamily.localRep takes a bare family so that the definitions ask nothing; the chart-independence theorems ask for this.

            Instances For
              theorem MetricFamily.localRep_add_left {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w a b v : E) :
              localRep g x₀ w (a + b) v = localRep g x₀ w a v + localRep g x₀ w b v

              The local representative of a bilinear family is bilinear in its two slots (symmL is linear).

              theorem MetricFamily.localRep_smul_left {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w : E) (c : ℝ) (a v : E) :
              localRep g x₀ w (c • a) v = c * localRep g x₀ w a v
              theorem MetricFamily.localRep_add_right {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w v a b : E) :
              localRep g x₀ w v (a + b) = localRep g x₀ w v a + localRep g x₀ w v b
              theorem MetricFamily.localRep_smul_right {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w : E) (c : ℝ) (v a : E) :
              localRep g x₀ w v (c • a) = c * localRep g x₀ w v a
              noncomputable def MetricFamily.localRepBilin {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w : E) :

              The local representative, as a real bilinear form on E (for a bilinear family).

              Equations
              Instances For
                @[simp]
                theorem MetricFamily.localRepBilin_apply {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w u v : E) :
                ((localRepBilin g hg x₀ w) u) v = localRep g x₀ w u v
                theorem MetricFamily.gram_eq_toMatrix {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (e : Module.Basis ι ℝ E) (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ : M) (w : E) :
                gram e g x₀ w = (LinearMap.BilinForm.toMatrix e) (localRepBilin g hg x₀ w)
                theorem MetricFamily.localRep_transition {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (x₀ y : M) {w : E} (hw : w ∈ (chartAt E x₀).target) (hy : ↑(chartAt E x₀).symm w ∈ (chartAt E y).source) (u v : E) :
                localRep g x₀ w u v = localRep g y (↑(chartAt E y) (↑(chartAt E x₀).symm w)) ((fderiv ℝ (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) w) u) ((fderiv ℝ (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) w) v)

                The local representative of a metric family transforms under a chart transition by pulling back both slots along the transition's derivative: the metric analogue of DifferentialForm.localRep_transition, from tangent_symmL_eq_fderiv at both charts and the chain rule for the transition (fderiv_chart_transition_comp).

                theorem MetricFamily.chartDensity_transition {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (e : Module.Basis ι ℝ E) (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ y : M) {w : E} (hw : w ∈ (chartAt E x₀).target) (hy : ↑(chartAt E x₀).symm w ∈ (chartAt E y).source) :
                chartDensity e g x₀ w = ENNReal.ofReal |(fderiv ℝ (↑(chartAt E y) ∘ ↑(chartAt E x₀).symm) w).det| * chartDensity e g y (↑(chartAt E y) (↑(chartAt E x₀).symm w))

                ★ The Jacobian rule for Gram densities: under a chart transition φ the Gram matrix of a bilinear family transforms by congruence, G_{x₀}(w) = Aᵀ G_y(φ w) A with A the matrix of Dφ_w, so √det G_{x₀}(w) = |det Dφ_w| · √det G_y(φ w) — the exact analogue of compContinuousLinearMap_apply_basis for top forms.

                theorem MetricFamily.chartMeasure_congr {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] [MeasurableSpace M] [BorelSpace M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (μ : MeasureTheory.Measure E) [μ.IsAddHaarMeasure] (e : Module.Basis ι ℝ E) (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (x₀ y : M) {A : Set M} (hA : MeasurableSet A) (hA₀ : A ⊆ (chartAt E x₀).source) (hAy : A ⊆ (chartAt E y).source) :
                (chartMeasure μ e g x₀) A = (chartMeasure μ e g y) A

                ★★ Chart-independence. On a measurable set inside two chart domains the two Riemannian chart measures of a bilinear family agree: change of variables along the transition, whose Jacobian is exactly the factor by which √det G transforms (chartDensity_transition). The proof of DifferentialForm.chartMeasure_congr with the Gram rule in place of the top-form rule.

                ★★ On a measurable set inside any chart domain the glued Riemannian volume is that chart's measure (for a bilinear family).

                ★★ The Riemannian volume does not depend on the cover (for a bilinear family): MetricFamily.riemannianVolume is canonical.

                The basis' own Haar measure: the Riemannian volume is canonical #

                riemannianVolume μ e g c takes a Haar measure μ on the model and a basis e. Against the basis' own Haar measure e.addHaar the result does not depend on e: a change of basis multiplies the Gram determinant by (det P)² (det_gram_basis), hence the density by |det P|, and divides the Haar measure by |det P| (DifferentialForm.addHaar_basis_eq_smul); the two cancel (riemannianVolume_addHaar_basis). This is the intrinsic Riemannian volume, exposed for Mathlib's bundled metrics as Bundle.RiemannianMetric.canonicalVolume below.

                theorem MetricFamily.gram_basis {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (b b' : Module.Basis ι ℝ E) (x₀ : M) (w : E) :
                gram b' g x₀ w = (b.toMatrix ⇑b').transpose * gram b g x₀ w * b.toMatrix ⇑b'

                The Gram matrix against b' is the congruence of the Gram matrix against b by the change-of-basis matrix (LinearMap.BilinForm.toMatrix_mul_basis_toMatrix).

                theorem MetricFamily.det_gram_basis {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (b b' : Module.Basis ι ℝ E) (x₀ : M) (w : E) :
                (gram b' g x₀ w).det = b.det ⇑b' ^ 2 * (gram b g x₀ w).det

                The Gram determinant against b' is (b.det b')² times the Gram determinant against b.

                theorem MetricFamily.chartDensity_basis {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {M : Type u_2} [TopologicalSpace M] [ChartedSpace E M] [IsManifold (modelWithCornersSelf ℝ E) (↑⊤) M] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (g : (x : M) → TangentSpace (modelWithCornersSelf ℝ E) x → TangentSpace (modelWithCornersSelf ℝ E) x → ℝ) (hg : IsBilinear g) (b b' : Module.Basis ι ℝ E) (x₀ : M) (w : E) :
                chartDensity b' g x₀ w = ENNReal.ofReal |b.det ⇑b'| * chartDensity b g x₀ w

                The Riemannian chart density against b' is |b.det b'| times the density against b.

                The Riemannian chart measure against the basis' own Haar measure does not depend on the basis.

                ★ The Riemannian volume is canonical: against the basis' own Haar measure the glued measure does not depend on the basis.

                Mathlib's Riemannian metrics #

                Mathlib's Bundle.RiemannianMetric (TangentSpace 𝓘(ℝ, E) : M → Type _) (Mathlib/Topology/VectorBundle/Riemannian.lean) is a family of inner products g.inner x : T_x M →L[ℝ] T_x M →L[ℝ] ℝ, and its C^n version ContMDiffRiemannianMetric (Mathlib/Geometry/Manifold/VectorBundle/Riemannian.lean) adds the smoothness of the family. The family fun x u v => g.inner x u v is bilinear, so everything above applies to it: the Riemannian volume of a Mathlib metric, its independence of the cover, its comparison with a top form, and the canonical (basis-free up to canonicalVolume_congr_basis) volume canonicalVolume.

                The metric family of a Mathlib RiemannianMetric on the tangent bundle.

                Equations
                Instances For

                  A Mathlib metric is a bilinear family: inner x is a continuous linear map in each slot.

                  ★ The Riemannian volume of a Mathlib RiemannianMetric on the tangent bundle, against the Haar measure μ and the basis e of the model, glued along the cover c.

                  Equations
                  Instances For

                    ★ The Riemannian volume of a Mathlib metric does not depend on the cover.

                    ★ If in every chart of the cover the Gram density of a Mathlib metric is k times the coefficient density of a top form, its Riemannian volume is k times the top-form measure.

                    ★ The canonical Riemannian volume of a Mathlib metric: against the basis' own Haar measure b.addHaar, which makes it independent of the basis (canonicalVolume_congr_basis) and of the cover (canonicalVolume_congr_cover).

                    Equations
                    Instances For

                      ★ The Riemannian volume of a C^n Riemannian metric (ContMDiffRiemannianMetric): that of its underlying RiemannianMetric.

                      Equations
                      Instances For