Documentation

Mathlib.Geometry.Manifold.VectorBundle.CovariantDerivative.LeviCivita

The Levi-Civita connection on a Riemannian manifold #

This file defines the Levi-Civita connection on a (finite-dimensional) Riemannian manifold (M, g). A connection on the tangent bundle of a Riemannian manifold (M, g) is called a Levi-Civita connection if it is both compatible with the metric g and torsion-free. Any two such connections are equal (on differentiable vector fields), which is why one speaks of the Levi-Civita connection on TM. We prove this uniqueness, construct a Levi-Civita connection and prove that is defines a compatible torsion-free connection.

Future PRs will prove smoothness: if M is C^{n+2} and g is C^{n+1}, the Levi-Civita connection is a C^n connection.

Main definitions and results #

Implementation notes #

Tags #

Levi-Civita connection, metric, torsion-free, Koszul formula, musical isomorphism

theorem injective_inner_mdifferentiableAt_section {EB : Type u_1} [NormedAddCommGroup EB] [NormedSpace EB] {HB : Type u_2} [TopologicalSpace HB] (IB : ModelWithCorners EB HB) {B : Type u_3} [TopologicalSpace B] [ChartedSpace HB B] (F : Type u_4) [NormedAddCommGroup F] [NormedSpace F] (E : BType u_5) [TopologicalSpace (Bundle.TotalSpace F E)] [(x : B) → NormedAddCommGroup (E x)] [(x : B) → InnerProductSpace (E x)] [FiberBundle F E] (x : B) :
Function.Injective fun (X₀ : E x) (Z : (x : B) → E x) (x_1 : (MDiffAt fun (x : B) => x, Z x) x) => inner X₀ (Z x)

A vector in E x is uniquely determined by its scalar product with sections that are differentiable at x

theorem injective_inner_contMDiffAt_section {EB : Type u_1} [NormedAddCommGroup EB] [NormedSpace EB] {HB : Type u_2} [TopologicalSpace HB] (IB : ModelWithCorners EB HB) {B : Type u_3} [TopologicalSpace B] [ChartedSpace HB B] (F : Type u_4) [NormedAddCommGroup F] [NormedSpace F] (E : BType u_5) [TopologicalSpace (Bundle.TotalSpace F E)] [(x : B) → NormedAddCommGroup (E x)] [(x : B) → InnerProductSpace (E x)] [FiberBundle F E] (n : WithTop ℕ∞) (x : B) :
Function.Injective fun (X₀ : E x) (Z : (x : B) → E x) (x_1 : ContMDiffAt IB (IB.prod (modelWithCornersSelf F)) n (fun (x : B) => x, Z x) x) => inner X₀ (Z x)

A vector in E x is uniquely determined by its scalar product with sections that are C^n at x

A covariant derivative on the tangent bundle TM to a Riemannian manifold is called a Levi-Civita connection if it is torsion-free and compatible with g. Note that the bundle metric on TM is implicitly hidden in this definition.

Instances For
    theorem CovariantDerivative.IsLeviCivitaConnection.apply_eq {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 2 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {X Y Z : (x : M) → TangentSpace I x} {cov : CovariantDerivative I E (TangentSpace I)} [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {x : M} [FiniteDimensional E] (h : IsLeviCivitaConnection I cov) (hX : (MDiffAt fun (x : M) => x, X x) x) (hY : (MDiffAt fun (x : M) => x, Y x) x) (hZ : (MDiffAt fun (x : M) => x, Z x) x) :
    (fun (x : M) => inner ((fun (x : M) => (cov Y x) (X x)) x) (Z x)) x = (((d% fun (x : M) => inner (Y x) (Z x)) x) (X x) + ((d% fun (x : M) => inner (Z x) (X x)) x) (Y x) - ((d% fun (x : M) => inner (X x) (Y x)) x) (Z x) - (fun (x : M) => inner (Y x) (VectorField.mlieBracket I X Z x)) x - (fun (x : M) => inner (Z x) (VectorField.mlieBracket I Y X x)) x + (fun (x : M) => inner (X x) (VectorField.mlieBracket I Z Y x)) x) / 2

    The Koszul formula, expressing the term ⟨∇ X Y, Z⟩ for all differentiable vector fields X, Y and Z, without reference to . This is the key insight to prove uniqueness of the Levi-Civita connection.

    theorem CovariantDerivative.IsLeviCivitaConnection.apply_eq_extend {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 2 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {Y Z : (x : M) → TangentSpace I x} {cov : CovariantDerivative I E (TangentSpace I)} [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [FiniteDimensional E] (h : IsLeviCivitaConnection I cov) {x : M} (X₀ : TangentSpace I x) (hY : (MDiffAt fun (x : M) => x, Y x) x) (hZ : (MDiffAt fun (x : M) => x, Z x) x) :
    inner ((cov Y x) X₀) (Z x) = (((d% fun (x : M) => inner (Y x) (Z x)) x) X₀ + ((d% fun (x_1 : M) => inner (Z x_1) (FiberBundle.extend E X₀ x_1)) x) (Y x) - ((d% fun (x_1 : M) => inner (FiberBundle.extend E X₀ x_1) (Y x_1)) x) (Z x) - (fun (x_1 : M) => inner (Y x_1) (VectorField.mlieBracket I (FiberBundle.extend E X₀) Z x_1)) x - (fun (x_1 : M) => inner (Z x_1) (VectorField.mlieBracket I Y (FiberBundle.extend E X₀) x_1)) x + inner X₀ (VectorField.mlieBracket I Z Y x)) / 2

    The Koszul formula, expressing the term ⟨∇ X Y, Z⟩ for all differentiable vector fields X, Y and Z, without reference to . This is the key insight to prove uniqueness of the Levi-Civita connection. This version of IsLeviCivitaConnection.apply_eq does not require the direction in which we are differentiating to be coming from a differentiable vector field.

    theorem CovariantDerivative.IsLeviCivitaConnection.uniqueness {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 2 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {Y : (x : M) → TangentSpace I x} {cov cov' : CovariantDerivative I E (TangentSpace I)} [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {x : M} [FiniteDimensional E] (hcov : IsLeviCivitaConnection I cov) (hcov' : IsLeviCivitaConnection I cov') (hY : (MDiffAt fun (x : M) => x, Y x) x) (X₀ : TangentSpace I x) :
    (cov Y x) X₀ = (cov' Y x) X₀

    The Levi-Civita connection on (M, g) is uniquely determined on differentiable vector fields.

    Note that the differentiability hypothesis on Y is required, since CovariantDerivative objects are unconstrained in their behaviour on non-differentiable vector fields.

    A choice of Levi-Civita connection on the tangent bundle TM of a Riemannian manifold (M, g): this is unique up to the value on non-differentiable vector fields. If you know the Levi-Civita connection already, you can use IsLeviCivitaConnection instead.

    Equations
    Instances For
      theorem CovariantDerivative.leviCivitaConnection_apply_inner {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 2 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {X Y Z : (x : M) → TangentSpace I x} [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {x : M} [FiniteDimensional E] (hX : (MDiffAt fun (x : M) => x, X x) x) (hY : (MDiffAt fun (x : M) => x, Y x) x) (hZ : (MDiffAt fun (x : M) => x, Z x) x) :
      inner (((leviCivitaConnection I M) Y x) (X x)) (Z x) = (((d% fun (x : M) => inner (Y x) (Z x)) x) (X x) + ((d% fun (x : M) => inner (Z x) (X x)) x) (Y x) - ((d% fun (x : M) => inner (X x) (Y x)) x) (Z x) - (fun (x : M) => inner (Y x) (VectorField.mlieBracket I X Z x)) x - (fun (x : M) => inner (Z x) (VectorField.mlieBracket I Y X x)) x + (fun (x : M) => inner (X x) (VectorField.mlieBracket I Z Y x)) x) / 2
      theorem CovariantDerivative.leviCivitaConnection_apply_inner_right {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 2 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {X Y Z : (x : M) → TangentSpace I x} [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {x : M} [FiniteDimensional E] (hX : (MDiffAt fun (x : M) => x, X x) x) (hY : (MDiffAt fun (x : M) => x, Y x) x) (hZ : (MDiffAt fun (x : M) => x, Z x) x) :
      inner (X x) (((leviCivitaConnection I M) Y x) (Z x)) = (((d% fun (x : M) => inner (Y x) (X x)) x) (Z x) + ((d% fun (x : M) => inner (X x) (Z x)) x) (Y x) - ((d% fun (x : M) => inner (Z x) (Y x)) x) (X x) - (fun (x : M) => inner (Y x) (VectorField.mlieBracket I Z X x)) x - (fun (x : M) => inner (X x) (VectorField.mlieBracket I Y Z x)) x + (fun (x : M) => inner (Z x) (VectorField.mlieBracket I X Y x)) x) / 2