Documentation

TauCeti.Geometry.Manifold.VectorBundle.CovariantDerivative.LeviCivita.Basic

The Koszul formula for Levi-Civita connections #

A covariant derivative ∇ on the tangent bundle of a Riemannian manifold is a Levi-Civita connection, or Riemannian connection, if it is torsion free and compatible with the metric. Mathlib states this as CovariantDerivative.IsLeviCivitaConnection, constructs such a connection, CovariantDerivative.leviCivitaConnection, and proves that it is unique on differentiable sections, CovariantDerivative.IsLeviCivitaConnection.uniqueness. This file develops the right-hand side of the Koszul formula

2 ⟪∇_X Y, Z⟫ = X ⟪Y, Z⟫ + Y ⟪Z, X⟫ - Z ⟪X, Y⟫ + ⟪[X, Y], Z⟫ - ⟪[X, Z], Y⟫ - ⟪[Y, Z], X⟫

as an object in its own right. It involves the metric only, so it is packaged as a standalone function TauCeti.Manifold.koszul. The Koszul formula in that form is IsLeviCivitaConnection.two_inner_eq_koszul, and for Mathlib's connection two_inner_leviCivitaConnection_eq_koszul; this is the shape in which TauCeti.Geometry.Manifold.VectorBundle.CovariantDerivative.LeviCivita.Regularity reads the connection in a local frame. The converse direction isLeviCivitaConnection_iff shows nothing is lost in the passage to koszul: a connection satisfying the Koszul formula is automatically torsion free and metric.

Two covariant derivatives can only be compared through sections that are differentiable at the point under consideration, because CovariantDerivative puts no constraint whatsoever on the value of ∇ σ for a nowhere differentiable section σ. Mathlib's uniqueness is accordingly stated for Y differentiable at x; IsLeviCivitaConnection.difference_eq_zero repackages it as the vanishing of the endomorphism-valued one-form CovariantDerivative.difference ∇ ∇'.

Main definitions and results #

References #

Nondegeneracy of the metric along differentiable sections #

theorem TauCeti.continuousLinearMap_ext_of_forall_inner_section_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] (F : Type u_4) (F' : Type u_5) [NormedAddCommGroup F] [NormedSpace ℝ F] [NormedAddCommGroup F'] [NormedSpace ℝ F'] {V : M → Type u_6} [TopologicalSpace (Bundle.TotalSpace F V)] [(x : M) → NormedAddCommGroup (V x)] [(x : M) → InnerProductSpace ℝ (V x)] [FiberBundle F V] {V' : M → Type u_7} [TopologicalSpace (Bundle.TotalSpace F' V')] [(x : M) → AddCommGroup (V' x)] [(x : M) → Module ℝ (V' x)] [(x : M) → TopologicalSpace (V' x)] [FiberBundle F' V'] {x : M} {A B : V' x →L[ℝ] V x} (h : ∀ (σ : (y : M) → V' y), (MDiffAt fun (y : M) => ⟨y, σ y⟩) x → ∀ (τ : (y : M) → V y), (MDiffAt fun (y : M) => ⟨y, τ y⟩) x → inner ℝ (A (σ x)) (τ x) = inner ℝ (B (σ x)) (τ x)) :
A = B

Two continuous linear maps between fibres are equal if their values on differentiable sections have the same inner products against every differentiable section of the target bundle.

The Koszul expression #

noncomputable def TauCeti.Manifold.koszulBilinear {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] (b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ) (X Y Z : (x : M) → TangentSpace I x) (x : M) :

The right-hand side of the Koszul formula for a pointwise bilinear pairing b.

Instances For
    theorem TauCeti.Manifold.koszulBilinear_apply {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] (b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ) (X Y Z : (x : M) → TangentSpace I x) (x : M) :
    koszulBilinear I b X Y Z x = ((d% fun (y : M) => ((b y) (Y y)) (Z y)) x) (X x) + ((d% fun (y : M) => ((b y) (Z y)) (X y)) x) (Y x) - ((d% fun (y : M) => ((b y) (X y)) (Y y)) x) (Z x) + ((b x) (VectorField.mlieBracket I X Y x)) (Z x) - ((b x) (VectorField.mlieBracket I X Z x)) (Y x) - ((b x) (VectorField.mlieBracket I Y Z x)) (X x)

    The defining formula for the Koszul expression of a pointwise bilinear pairing.

    theorem TauCeti.Manifold.koszulBilinear_sub_koszulBilinear_swap_first_two {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) :
    koszulBilinear I b X Y Z x - koszulBilinear I b Y X Z x = 2 * ((b x) (VectorField.mlieBracket I X Y x)) (Z x)

    Antisymmetrizing the bilinear Koszul expression in its first two arguments returns twice the pairing of the Lie bracket with the third argument.

    theorem TauCeti.Manifold.koszulBilinear_add_koszulBilinear_swap_last_two {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) :
    koszulBilinear I b Z X Y x + koszulBilinear I b Z Y X x = 2 * ((d% fun (y : M) => ((b y) (X y)) (Y y)) x) (Z x)

    Symmetrizing the bilinear Koszul expression in its last two arguments returns twice the derivative of their pairing along the first argument.

    theorem TauCeti.Manifold.metricProductRule_of_two_apply_eq_koszulBilinear {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} [IsManifold I 1 M] {cov : CovariantDerivative I E fun (x : M) => TangentSpace I x} (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (h : ∀ ⦃x : M⦄ ⦃X Y Z : (x : M) → TangentSpace I x⦄, (MDiffAt fun (x : M) => ⟨x, X x⟩) x → (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → 2 * ((b x) ((↑cov Y x) (X x))) (Z x) = koszulBilinear I b X Y Z x) ⦃x : M⦄ ⦃X Y Z : (x : M) → TangentSpace I x⦄ :
    (MDiffAt fun (x : M) => ⟨x, X x⟩) x → (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → ((d% fun (y : M) => ((b y) (Y y)) (Z y)) x) (X x) = ((b x) ((↑cov Y x) (X x))) (Z x) + ((b x) (Y x)) ((↑cov Z x) (X x))

    The Koszul identity for a symmetric pointwise bilinear pairing implies its metric product rule along differentiable vector fields.

    theorem TauCeti.Manifold.torsion_eq_zero_of_two_apply_eq_koszulBilinear {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} [FiniteDimensional ℝ E] [IsManifold I 2 M] {cov : CovariantDerivative I E fun (x : M) => TangentSpace I x} (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (hinjective : ∀ (x : M), Function.Injective fun (u : TangentSpace I x) (Z : (x : M) → TangentSpace I x) (x_1 : (MDiffAt fun (x : M) => ⟨x, Z x⟩) x) => ((b x) u) (Z x)) (h : ∀ ⦃x : M⦄ ⦃X Y Z : (x : M) → TangentSpace I x⦄, (MDiffAt fun (x : M) => ⟨x, X x⟩) x → (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → 2 * ((b x) ((↑cov Y x) (X x))) (Z x) = koszulBilinear I b X Y Z x) :
    cov.torsion = 0

    The Koszul identity for a symmetric nondegenerate pointwise bilinear pairing implies that the connection is torsion free.

    theorem TauCeti.Manifold.koszulBilinear_add_second {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} [IsManifold I 2 M] [CompleteSpace E] {Y' : (x : M) → TangentSpace I x} (hdiff : ∀ {Y Z : (x : M) → TangentSpace I x}, (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → (MDiffAt fun (y : M) => ((b y) (Y y)) (Z y)) x) (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) (hY' : (MDiffAt fun (x : M) => ⟨x, Y' x⟩) x) (hZ : (MDiffAt fun (x : M) => ⟨x, Z x⟩) x) :
    koszulBilinear I b X (Y + Y') Z x = koszulBilinear I b X Y Z x + koszulBilinear I b X Y' Z x

    The Koszul expression is additive in the differentiated vector field.

    theorem TauCeti.Manifold.koszulBilinear_smul_second {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} [IsManifold I 2 M] [CompleteSpace E] {f : M → ℝ} (hdiff : ∀ {Y Z : (x : M) → TangentSpace I x}, (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → (MDiffAt fun (y : M) => ((b y) (Y y)) (Z y)) x) (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (hf : MDiffAt f x) (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) :
    koszulBilinear I b X (f • Y) Z x = f x * koszulBilinear I b X Y Z x + 2 * (d% f x) (X x) * ((b x) (Y x)) (Z x)

    The Koszul expression obeys the connection Leibniz rule in its second argument.

    theorem TauCeti.Manifold.koszulBilinear_add_first {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} [IsManifold I 2 M] [CompleteSpace E] {X' : (x : M) → TangentSpace I x} (hdiff : ∀ {Y Z : (x : M) → TangentSpace I x}, (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → (MDiffAt fun (y : M) => ((b y) (Y y)) (Z y)) x) (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (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) :
    koszulBilinear I b (X + X') Y Z x = koszulBilinear I b X Y Z x + koszulBilinear I b X' Y Z x

    The Koszul expression is additive in its first argument.

    theorem TauCeti.Manifold.koszulBilinear_smul_first {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} [IsManifold I 2 M] [CompleteSpace E] {f : M → ℝ} (hdiff : ∀ {Y Z : (x : M) → TangentSpace I x}, (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → (MDiffAt fun (y : M) => ((b y) (Y y)) (Z y)) x) (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (hf : MDiffAt f x) (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) :
    koszulBilinear I b (f • X) Y Z x = f x * koszulBilinear I b X Y Z x

    The Koszul expression is tensorial in its first argument: replacing X by f • X multiplies it by f x.

    theorem TauCeti.Manifold.tensorialAt_koszulBilinear_first {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {Y Z : (x : M) → TangentSpace I x} {x : M} [IsManifold I 2 M] [CompleteSpace E] (hdiff : ∀ {Y Z : (x : M) → TangentSpace I x}, (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → (MDiffAt fun (y : M) => ((b y) (Y y)) (Z y)) x) (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) (hZ : (MDiffAt fun (x : M) => ⟨x, Z x⟩) x) :
    TensorialAt I E (fun (X : (y : M) → TangentSpace I y) => koszulBilinear I b X Y Z x) x

    The Koszul expression is tensorial in its first argument. Together with TauCeti.Manifold.tensorialAt_koszulBilinear_third, in finite dimension this yields a continuous bilinear form on the tangent fibre via TensorialAt.mkHom₂, as used to build the Levi-Civita connection.

    theorem TauCeti.Manifold.tensorialAt_koszulBilinear_third {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y : (x : M) → TangentSpace I x} {x : M} [IsManifold I 2 M] [CompleteSpace E] (hdiff : ∀ {Y Z : (x : M) → TangentSpace I x}, (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → (MDiffAt fun (y : M) => ((b y) (Y y)) (Z y)) x) (hb : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) :
    TensorialAt I E (fun (Z : (y : M) → TangentSpace I y) => koszulBilinear I b X Y Z x) x

    The Koszul expression is tensorial in its third argument.

    theorem TauCeti.Manifold.koszulBilinear_sub_two_mul_apply_eq_derivBilinearTensor {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {X Y Z : (x : M) → TangentSpace I x} {x : M} [FiniteDimensional ℝ E] [IsManifold I 2 M] {cov : CovariantDerivative I E fun (x : M) => TangentSpace I x} (htorsion : cov.torsion = 0) (hsymm : ∀ (x : M) (v w : TangentSpace I x), ((b x) v) w = ((b x) w) v) (hb : ∀ ⦃V W : (x : M) → TangentSpace I x⦄, (MDiffAt fun (x : M) => ⟨x, V x⟩) x → (MDiffAt fun (x : M) => ⟨x, W x⟩) x → (MDiffAt fun (y : M) => ((b y) (V y)) (W y)) x) (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) :
    koszulBilinear I b X Y Z x - 2 * ((b x) ((↑cov Y x) (X x))) (Z x) = (((cov.derivBilinearTensor b x) (Y x)) (Z x)) (X x) + (((cov.derivBilinearTensor b x) (X x)) (Z x)) (Y x) - (((cov.derivBilinearTensor b x) (X x)) (Y x)) (Z x)

    The Koszul expression of a symmetric field of bilinear forms along a torsion-free connection. For a torsion-free covariant derivative ∇ on the tangent bundle and a symmetric field of bilinear forms b which pairs differentiable vector fields to differentiable functions,

    K_b(X, Y, Z) - 2 b(∇_X Y, Z) = (∇_X b)(Y, Z) + (∇_Y b)(X, Z) - (∇_Z b)(X, Y),

    where K_b is the Koszul expression of b and ∇b is CovariantDerivative.derivBilinearTensor. When ∇ is compatible with b, the right-hand side vanishes and this is the Koszul formula. For a family of metrics gₜ with Levi-Civita connections ∇ᵗ and h = ∂ₜ gₜ, differentiating the Koszul formula 2 gₜ(∇ᵗ_X Y, Z) = K_{gₜ}(X, Y, Z) in t gives 2 g((∂ₜ∇)_X Y, Z) = K_h(X, Y, Z) - 2 h(∇_X Y, Z); this identity, applied to b = h, rewrites the right-hand side as the covariant derivative of h.

    theorem TauCeti.Manifold.koszulBilinear_mpullback {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] {b : (x : M) → TangentSpace I x →L[ℝ] TangentSpace I x →L[ℝ] ℝ} {x : M} [CompleteSpace E] [IsManifold I 2 M] {F : Type u_4} [NormedAddCommGroup F] [NormedSpace ℝ F] {H' : Type u_5} [TopologicalSpace H'] {J : ModelWithCorners ℝ F H'} {N : Type u_6} [TopologicalSpace N] [ChartedSpace H' N] [IsManifold J 2 N] {b' : (y : N) → TangentSpace J y →L[ℝ] TangentSpace J y →L[ℝ] ℝ} {f : M → N} (hf : ContMDiffAt I J 2 f x) (hinv : ∀ (y : M), (mfderiv% f y).IsInvertible) (hb : ∀ (y : M) (v w : TangentSpace I y), ((b y) v) w = ((b' (f y)) ((mfderiv% f y) v)) ((mfderiv% f y) w)) (hb' : ∀ ⦃V W : (y : N) → TangentSpace J y⦄, (MDiffAt fun (y : N) => ⟨y, V y⟩) (f x) → (MDiffAt fun (y : N) => ⟨y, W y⟩) (f x) → (MDiffAt fun (y : N) => ((b' y) (V y)) (W y)) (f x)) {X Y Z : (y : N) → TangentSpace J y} (hX : (MDiffAt fun (y : N) => ⟨y, X y⟩) (f x)) (hY : (MDiffAt fun (y : N) => ⟨y, Y y⟩) (f x)) (hZ : (MDiffAt fun (y : N) => ⟨y, Z y⟩) (f x)) :

    Naturality of the bilinear Koszul expression. Let f : M → N be a map with invertible differentials, C² at x, which pulls the pairing b' on N back to the pairing b on M, b_y(v, w) = b'_{f y}(df_y v, df_y w). Suppose that b' pairs vector fields differentiable at f x to a function differentiable at f x. Then the Koszul expression of b on the pullbacks of three vector fields differentiable at f x is the Koszul expression of b' on the fields themselves, evaluated at f x.

    noncomputable def TauCeti.Manifold.koszul {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] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (X Y Z : (x : M) → TangentSpace I x) (x : M) :

    The right-hand side of the Koszul formula,

    X ⟪Y, Z⟫ + Y ⟪Z, X⟫ - Z ⟪X, Y⟫ + ⟪[X, Y], Z⟫ - ⟪[X, Z], Y⟫ - ⟪[Y, Z], X⟫,

    evaluated at x. It depends on the Riemannian metric alone; for the Levi-Civita connection ∇ of that metric it computes 2 ⟪∇_X Y, Z⟫, by CovariantDerivative.IsLeviCivitaConnection.two_inner_eq_koszul.

    Instances For
      theorem TauCeti.Manifold.koszul_apply {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] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (X Y Z : (x : M) → TangentSpace I x) (x : M) :
      koszul I X Y Z x = ((d% fun (y : M) => inner ℝ (Y y) (Z y)) x) (X x) + ((d% fun (y : M) => inner ℝ (Z y) (X y)) x) (Y x) - ((d% fun (y : M) => inner ℝ (X y) (Y y)) x) (Z x) + inner ℝ (VectorField.mlieBracket I X Y x) (Z x) - inner ℝ (VectorField.mlieBracket I X Z x) (Y x) - inner ℝ (VectorField.mlieBracket I Y Z x) (X x)

      The defining formula for the Koszul expression, available outside the module where TauCeti.Manifold.koszul is defined.

      theorem TauCeti.Manifold.koszul_sub_koszul_swap_first_two {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] {X Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] :
      koszul I X Y Z x - koszul I Y X Z x = 2 * inner ℝ (VectorField.mlieBracket I X Y x) (Z x)

      Antisymmetrising the Koszul expression in its first two arguments returns twice the inner product of the Lie bracket with the third argument. This is the identity behind the torsion-free half of CovariantDerivative.isLeviCivitaConnection_iff.

      theorem TauCeti.Manifold.koszul_add_koszul_swap_last_two {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] {X Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] :
      koszul I Z X Y x + koszul I Z Y X x = 2 * ((d% fun (y : M) => inner ℝ (X y) (Y y)) x) (Z x)

      Symmetrising the Koszul expression in its last two arguments returns twice the derivative of their inner product along the first argument. This is the identity behind the metric half of CovariantDerivative.isLeviCivitaConnection_iff.

      theorem TauCeti.Manifold.mdifferentiableAt_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] {Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 1 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) (hZ : (MDiffAt fun (x : M) => ⟨x, Z x⟩) x) :
      (MDiffAt fun (y : M) => inner ℝ (Y y) (Z y)) x

      The pointwise inner product of two sections of the tangent bundle that are differentiable at x is differentiable at x. This is the tangent-bundle specialisation of MDifferentiableAt.inner_bundle, whose bundle argument Lean cannot infer from hypotheses phrased through TangentSpace.

      Behaviour in the first two arguments #

      The Koszul expression is tensorial in its first argument, just as it is in its third, and obeys a Leibniz rule in its second. These are the identities from which a connection is built out of the Koszul formula, as Mathlib builds CovariantDerivative.leviCivitaConnection.

      theorem TauCeti.Manifold.koszul_add_second {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] {X Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [CompleteSpace E] {Y' : (x : M) → TangentSpace I x} (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) (hY' : (MDiffAt fun (x : M) => ⟨x, Y' x⟩) x) (hZ : (MDiffAt fun (x : M) => ⟨x, Z x⟩) x) :
      koszul I X (Y + Y') Z x = koszul I X Y Z x + koszul I X Y' Z x

      The Koszul expression is additive in its second argument.

      theorem TauCeti.Manifold.koszul_smul_second {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] {X Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [CompleteSpace E] {f : M → ℝ} (hf : MDiffAt f x) (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) :
      koszul I X (f • Y) Z x = f x * koszul I X Y Z x + 2 * (d% f x) (X x) * inner ℝ (Y x) (Z x)

      The Leibniz rule for the Koszul expression in its second argument: replacing Y by f • Y multiplies the expression by f x and adds 2 (df X) ⟪Y, Z⟫. This is the identity behind the Leibniz axiom of the connection built from the Koszul formula.

      theorem TauCeti.Manifold.koszul_add_first {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] {X Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [CompleteSpace E] {X' : (x : M) → TangentSpace I x} (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (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) :
      koszul I (X + X') Y Z x = koszul I X Y Z x + koszul I X' Y Z x

      The Koszul expression is additive in its first argument.

      theorem TauCeti.Manifold.koszul_smul_first {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] {X Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [CompleteSpace E] {f : M → ℝ} (hf : MDiffAt f x) (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) :
      koszul I (f • X) Y Z x = f x * koszul I X Y Z x

      The Koszul expression is tensorial in its first argument: replacing X by f • X multiplies it by f x.

      theorem TauCeti.Manifold.tensorialAt_koszul_first {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] {Y Z : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [CompleteSpace E] (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) (hZ : (MDiffAt fun (x : M) => ⟨x, Z x⟩) x) :
      TensorialAt I E (fun (X : (y : M) → TangentSpace I y) => koszul I X Y Z x) x

      The Koszul expression is tensorial in its first argument. Together with TauCeti.Manifold.tensorialAt_koszul_third, in finite dimension this yields a continuous bilinear form on the tangent fibre via TensorialAt.mkHom₂, as used to build the Levi-Civita connection.

      theorem TauCeti.Manifold.tensorialAt_koszul_third {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] {X Y : (x : M) → TangentSpace I x} {x : M} [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] [CompleteSpace E] (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) :
      TensorialAt I E (fun (Z : (y : M) → TangentSpace I y) => koszul I X Y Z x) x

      The Koszul expression is tensorial in its third argument: replacing Z by f • Z multiplies it by f x, and it is additive in Z. Together with CovariantDerivative.isLeviCivitaConnection_iff this is what turns the Koszul formula from a characterisation of the Levi-Civita connection into a construction of it.

      Levi-Civita connections and the Koszul expression #

      theorem CovariantDerivative.difference_eq_zero_of_forall {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] {F : Type u_4} [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F] {V : M → Type u_5} [TopologicalSpace (Bundle.TotalSpace F V)] [(x : M) → AddCommGroup (V x)] [(x : M) → Module ℝ (V x)] [(x : M) → TopologicalSpace (V x)] [∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul ℝ (V x)] [FiberBundle F V] [VectorBundle ℝ F V] [ContMDiffVectorBundle 1 F V I] {cov cov' : CovariantDerivative I F V} (h : ∀ (x : M) (Y : (x : M) → V x), (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → ↑cov Y x = ↑cov' Y x) :
      cov.difference cov' = 0

      Two covariant derivatives have zero difference if they agree on every section differentiable at the point where they are evaluated.

      theorem CovariantDerivative.IsLeviCivitaConnection.two_inner_eq_koszul {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] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [FiniteDimensional ℝ E] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {cov : CovariantDerivative I E fun (x : M) => TangentSpace I x} {X Y Z : (x : M) → TangentSpace I x} {x : M} (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) :
      2 * inner ℝ ((↑cov Y x) (X x)) (Z x) = TauCeti.Manifold.koszul I X Y Z x

      The Koszul formula: for a Levi-Civita connection, 2 ⟪∇_X Y, Z⟫ is the Koszul expression of the metric. Mathlib's CovariantDerivative.IsLeviCivitaConnection.apply_eq is the same identity with the expression written out; this form is the one TauCeti.Manifold.koszul controls.

      theorem CovariantDerivative.isLeviCivitaConnection_iff {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] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [FiniteDimensional ℝ E] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {cov : CovariantDerivative I E fun (x : M) => TangentSpace I x} :
      IsLeviCivitaConnection I cov ↔ ∀ ⦃x : M⦄ ⦃X Y Z : (x : M) → TangentSpace I x⦄, (MDiffAt fun (x : M) => ⟨x, X x⟩) x → (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → (MDiffAt fun (x : M) => ⟨x, Z x⟩) x → 2 * inner ℝ ((↑cov Y x) (X x)) (Z x) = TauCeti.Manifold.koszul I X Y Z x

      A covariant derivative on the tangent bundle is a Levi-Civita connection exactly when it satisfies the Koszul formula.

      Uniqueness of the Levi-Civita connection, as the vanishing of the endomorphism-valued one-form measuring the difference of two connections. On a single differentiable section this is Mathlib's CovariantDerivative.IsLeviCivitaConnection.uniqueness.

      theorem CovariantDerivative.two_inner_leviCivitaConnection_eq_koszul {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] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] [FiniteDimensional ℝ E] [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] {X Y Z : (x : M) → TangentSpace I x} {x : M} (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) :
      2 * inner ℝ ((↑(leviCivitaConnection I M) Y x) (X x)) (Z x) = TauCeti.Manifold.koszul I X Y Z x

      The Koszul formula for Mathlib's Levi-Civita connection CovariantDerivative.leviCivitaConnection, in terms of TauCeti.Manifold.koszul.