Imports
/- Copyright (c) 2025 Matteo Cipollina. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Matteo Cipollina -/ module public import Physlib.Mathematics.Geometry.Metric.PseudoRiemannian.Defs public import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic

Riemannian Metric Definitions

This module defines the Riemannian metric, building on pseudo-Riemannian metrics.

@[expose] public section

A RiemannianMetric on a manifold M modeled on H with corners I (over the model space E , typically ℝ^m) is a family of inner products on the tangent spaces TangentSpace I x for each x : M. This family is required to vary smoothly with x, specifically with smoothness C^n.

This structure extends PseudoRiemannianMetric, inheriting the core properties of a pseudo-Riemannian metric, such as being a symmetric, non-degenerate, C^n-smooth tensor field of type (0,2). The key distinguishing feature of a Riemannian metric is its positive-definiteness.

The pos_def' field ensures that for any point x on the manifold and any non-zero tangent vector v at x, the inner product gₓ(v, v) (denoted val x v v) is strictly positive. This condition makes each val x (the metric at point x) a positive-definite symmetric bilinear form, effectively an inner product, on the tangent space TangentSpace I x.

Parameters:

    I: The ModelWithCorners for the manifold M. This defines the model space E (e.g., ℝ^d) and the model space for the boundary H.

    n: The smoothness class of the metric, an ℕ∞ value. The metric tensor components are C^n functions.

    M: The type of the manifold.

    [TopologicalSpace M]: Assumes M has a topological structure.

    [ChartedSpace H M]: Assumes M is equipped with an atlas of charts to H.

    [IsManifold I (n + 1) M]: Assumes M is a manifold of smoothness C^(n+1). The manifold needs to be slightly smoother than the metric itself for certain constructions.

    [inst_tangent_findim : ∀ (x : M), FiniteDimensional ℝ (TangentSpace I x)]: Ensures that each tangent space is a finite-dimensional real vector space.

Fields:

    toPseudoRiemannianMetric: The underlying pseudo-Riemannian metric. This provides the smooth family of symmetric bilinear forms val : M → SymBilinForm ℝ (TangentSpace I ·).

    pos_def': The positive-definiteness condition: ∀ x v, v ≠ 0 → val x v v > 0. This asserts that for any point x and any non-zero tangent vector v at x, the metric evaluated on (v, v) is strictly positive.

gₓ(v, v) > 0 for all nonzero v. val is inherited from PseudoRiemannianMetric.

@[ext] structure RiemannianMetric (I : ModelWithCorners E H) (n : ℕ∞) (M : Type w) [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (n + 1) M] [inst_tangent_findim : (x : M), FiniteDimensional (TangentSpace I x)] extends PseudoRiemannianMetric E H M n I where pos_def' : x v, v 0 val x v v > 0

Coercion from RiemannianMetric to its underlying PseudoRiemannianMetric.

instance : Coe (RiemannianMetric I n M) (PseudoRiemannianMetric E H M (n) I) where coe g := g.toPseudoRiemannianMetric
@[simp] lemma pos_def (g : RiemannianMetric I n M) (x : M) (v : TangentSpace I x) (hv : v 0) : (g.toPseudoRiemannianMetric.val x v) v > 0 := g.pos_def' x v hv

The quadratic form associated with a Riemannian metric is positive definite.

@[simp] lemma toQuadraticForm_posDef (g : RiemannianMetric I n M) (x : M) : (g.toQuadraticForm x).PosDef := λ v hv => g.pos_def x v hv
lemma riemannian_metric_negDim_zero (g : RiemannianMetric I n M) (x : M) : (g.toQuadraticForm x).negDim = 0 := E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:M(g.toQuadraticForm x).negDim = 0 E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:MQuadraticMap.PosDef (g.toQuadraticForm x) All goals completed! 🐙

InnerProductSpace structure from RiemannianMetric

The InnerProductSpace.Core structure for TₓM induced by a Riemannian metric g. This provides the properties of an inner product: symmetry, non-negativity, linearity, and definiteness. Each gₓ is an inner product on TₓM (O'Neill, p. 55).

@[reducible] noncomputable def tangentInnerCore (g : RiemannianMetric I n M) (x : M) : InnerProductSpace.Core (TangentSpace I x) where inner := λ v w => g.inner x v w conj_inner_symm := λ v w => E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xw:TangentSpace I x(starRingEnd ) (g.inner x w v) = g.inner x v w E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xw:TangentSpace I x((g.val x) w) v = ((g.val x) v) w All goals completed! 🐙 re_inner_nonneg := λ v => E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I x0 RCLike.re (g.inner x v v) E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I x0 ((g.val x) v) v E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xhv:v = 00 ((g.val x) v) vE:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xhv:¬v = 00 ((g.val x) v) v E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xhv:v = 00 ((g.val x) v) v All goals completed! 🐙 E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xhv:¬v = 00 ((g.val x) v) v All goals completed! 🐙 add_left := λ u v w => E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mu:TangentSpace I xv:TangentSpace I xw:TangentSpace I xg.inner x (u + v) w = g.inner x u w + g.inner x v w All goals completed! 🐙 smul_left := λ r u v => E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mr:TangentSpace I xu:TangentSpace I xv:g.inner x (v r) u = (starRingEnd ) v * g.inner x r u E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mr:TangentSpace I xu:TangentSpace I xv:(v (g.val x) r) u = v * ((g.val x) r) u All goals completed! 🐙 definite := fun v (h_inner_zero : g.inner x v v = 0) => E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xh_inner_zero:g.inner x v v = 0v = 0 E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xh_inner_zero:g.inner x v v = 0h_v_ne_zero:¬v = 0False E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xh_inner_zero:g.inner x v v = 0h_v_ne_zero:¬v = 0h_pos:g.inner x v v > 0False All goals completed! 🐙

Local NormedAddCommGroup and InnerProductSpace Instances

These instances are defined locally to be used when a specific Riemannian metric g and point x are in context. They are not global instances to avoid typeclass conflicts and to respect the fact that a manifold might not have a canonical Riemannian metric, or might be studied with an indefinite (pseudo-Riemannian) metric where these standard norm structures are not appropriate.

Creates a NormedAddCommGroup structure on TₓM from a Riemannian metric g.

@[reducible] noncomputable def TangentSpace.metricNormedAddCommGroup (g : RiemannianMetric I n M) (x : M) : NormedAddCommGroup (TangentSpace I x) := @InnerProductSpace.Core.toNormedAddCommGroup (TangentSpace I x) _ _ _ (tangentInnerCore g x)

Creates an InnerProductSpace structure on TₓM from a Riemannian metric g. Alternative implementation using letI.

@[reducible] noncomputable def TangentSpace.metricInnerProductSpace' (g : RiemannianMetric I n M) (x : M) : letI := TangentSpace.metricNormedAddCommGroup g x InnerProductSpace (TangentSpace I x) := InnerProductSpace.ofCore (tangentInnerCore g x).toCore

Creates an InnerProductSpace structure on TₓM from a Riemannian metric g.

@[reducible] noncomputable def TangentSpace.metricInnerProductSpace (g : RiemannianMetric I n M) (x : M) : let _ := TangentSpace.metricNormedAddCommGroup g x InnerProductSpace (TangentSpace I x) := let inner_core := tangentInnerCore g x let _ := TangentSpace.metricNormedAddCommGroup g x InnerProductSpace.ofCore inner_core.toCore
-- Example using the norm function example (g : RiemannianMetric I n M) (x : M) (v : TangentSpace I x) : norm g x v 0 := Real.sqrt_nonneg _-- Example showing how to use the metric inner product space example (g : RiemannianMetric I n M) (x : M) (v w : TangentSpace I x) : (TangentSpace.metricInnerProductSpace g x).inner v w = g.inner x v w := E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xw:TangentSpace I xv, w⟫_ = g.inner x v w E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xw:TangentSpace I xthis:have x_1 := TangentSpace.metricNormedAddCommGroup g x; InnerProductSpace (TangentSpace I x) := TangentSpace.metricInnerProductSpace g xv, w⟫_ = g.inner x v w All goals completed! 🐙-- Example: Using a custom norm function instead of the notation example (g : RiemannianMetric I n M) (x : M) (v : TangentSpace I x) : norm g x v 0 := E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I xg.norm x v 0 E:Type vinst✝⁸:NormedAddCommGroup Einst✝⁷:NormedSpace EH:Type winst✝⁶:TopologicalSpace HM✝:Type winst✝⁵:TopologicalSpace M✝inst✝⁴:ChartedSpace H M✝inst✝³:ChartedSpace H EI✝:ModelWithCorners E Hn✝:ℕ∞I:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g✝:RiemannianMetric I n Mx✝:Mg:RiemannianMetric I n Mx:Mv:TangentSpace I x(g.inner x v v) 0 All goals completed! 🐙example (g : RiemannianMetric I n M) (x : M) (v : TangentSpace I x) : := letI := TangentSpace.metricNormedAddCommGroup g x vexample (g : RiemannianMetric I n M) (x : M) (v : TangentSpace I x) : := let normed_group := TangentSpace.metricNormedAddCommGroup g x @Norm.norm (TangentSpace I x) (@NormedAddCommGroup.toNorm (TangentSpace I x) normed_group) vlemma norm_eq_norm_of_metricNormedAddCommGroup (g : RiemannianMetric I n M) (x : M) (v : TangentSpace I x) : norm g x v = @Norm.norm (TangentSpace I x) (@NormedAddCommGroup.toNorm _ (TangentSpace.metricNormedAddCommGroup g x)) v := E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:Mv:TangentSpace I xg.norm x v = v E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:Mv:TangentSpace I x(g.inner x v v) = v E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:Mv:TangentSpace I xnormed_group:NormedAddCommGroup (TangentSpace I x) := TangentSpace.metricNormedAddCommGroup g x(g.inner x v v) = v E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:Mv:TangentSpace I xnormed_group:NormedAddCommGroup (TangentSpace I x) := TangentSpace.metricNormedAddCommGroup g x(g.inner x v v) = v E:Type vinst✝⁶:NormedAddCommGroup Einst✝⁵:NormedSpace EH:Type winst✝⁴:TopologicalSpace Hinst✝³:ChartedSpace H EI:ModelWithCorners E Hn:ℕ∞M:Type winst✝²:TopologicalSpace Minst✝¹:ChartedSpace H Minst✝:IsManifold I (n + 1) Minst_tangent_findim: (x : M), FiniteDimensional (TangentSpace I x)g:RiemannianMetric I n Mx:Mv:TangentSpace I xnormed_group:NormedAddCommGroup (TangentSpace I x) := TangentSpace.metricNormedAddCommGroup g x(((g.val x) v) v) = v All goals completed! 🐙

Curve

Calculates the length of a curve γ between parameters t₀ and t₁ using the Riemannian metric g. This is defined as the integral of the norm of the tangent vector along the curve.

def curveLength (g : RiemannianMetric I n M) (γ : M) (t₀ t₁ : ) {IDE : ModelWithCorners }[ChartedSpace ] : := t in t₀..t₁, norm g (γ t) ((mfderiv IDE I γ t) ((1 : ) : TangentSpace IDE t))