Imports
/- Copyright (c) 2026 Nathaneal Sajan. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Nathaneal Sajan -/ module public import Physlib.ClassicalMechanics.HarmonicOscillator.Basic public import Physlib.ClassicalMechanics.HarmonicOscillator.Geometric.Basic public import Mathlib.Geometry.Manifold.VectorBundle.Riemannian

Geometric kinetic energy of the harmonic oscillator

i. Overview

The configuration space of the geometric harmonic oscillator is ConfigurationSpace. At a configuration q, velocities are tangent vectors in TangentSpace 𝓘(ℝ, EuclideanSpace ℝ (Fin 1)) q.

The oscillator mass determines a Riemannian metric on ConfigurationSpace. At each configuration q, the metric is the mass-scaled Euclidean inner product on tangent vectors, recorded by massMetricVal S q.

The kinetic energy associated with this mass metric is geometricKineticEnergy S q v = (1 / 2 : ℝ) * S.massRiemannianMetric.inner q v v. In coordinates this gives the standard expression (1 / 2 : ℝ) * S.m * ⟪tangentCoord q v, tangentCoord q v⟫_ℝ.

ii. Key results

    massRiemannianMetric : the mass-scaled Euclidean inner product as a Riemannian metric on ConfigurationSpace.

    geometricKineticEnergy : the geometric kinetic-energy function associated to the oscillator mass metric.

    massRiemannianMetric_inner_apply : evaluation of the mass metric in global tangent coordinates.

    massRiemannianMetric_pos : positive definiteness of the mass Riemannian metric.

    geometricKineticEnergy_massMetric_eq : the metric-induced kinetic energy for the oscillator mass metric is the mass-scaled coordinate kinetic energy.

iii. Table of contents

    A. Pointwise mass metric

    B. Riemannian mass metric

    C. Geometric kinetic energy

    D. Coordinate formula

iv. References

    Ivo Terek, Introductory Variational Calculus on Manifolds, pages 1-2.

@[expose] public section-- Let Lean use the definitional tangent-coordinate identification in the metric proofs. set_option backward.isDefEq.respectTransparency false

A. Pointwise mass metric

The pointwise mass metric is the mass-scaled Euclidean inner product in global tangent coordinates. Its positivity, boundedness, and smoothness properties are established here before assembling the Riemannian metric.

Applying the mass metric value to two tangent vectors gives the mass-scaled Euclidean inner product of their coordinate representatives.

lemma massMetricVal_apply (S : HarmonicOscillator) (q : ConfigurationSpace) (v w : TangentSpace 𝓘(, EuclideanSpace (Fin 1)) q) : massMetricVal S q v w = S.m * tangentCoord q v, tangentCoord q w⟫_ := S:HarmonicOscillatorq:ConfigurationSpacev:TangentSpace (𝓡 1) qw:TangentSpace (𝓡 1) q((S.massMetricVal q) v) w = S.m * (tangentCoord q) v, (tangentCoord q) w⟫_ All goals completed! 🐙

A nonzero tangent vector has nonzero coordinate representative under tangentCoord.

lemma tangentCoord_ne_zero {q : ConfigurationSpace} {v : TangentSpace 𝓘(, EuclideanSpace (Fin 1)) q} (hv : v 0) : tangentCoord q v 0 := q:ConfigurationSpacev:TangentSpace (𝓡 1) qhv:v 0(tangentCoord q) v 0 q:ConfigurationSpacev:TangentSpace (𝓡 1) qhv:v 0h:(tangentCoord q) v = 0False q:ConfigurationSpacev:TangentSpace (𝓡 1) qhv:v 0h:(tangentCoord q) v = 0v = 0 exact (tangentCoord q).injective (q:ConfigurationSpacev:TangentSpace (𝓡 1) qhv:v 0h:(tangentCoord q) v = 0(tangentCoord q) v = (tangentCoord q) 0 All goals completed! 🐙)

The oscillator mass metric is positive on nonzero tangent vectors.

S:HarmonicOscillatorq:ConfigurationSpacev:TangentSpace (𝓡 1) qhv:v 00 < S.m * (tangentCoord q) v, (tangentCoord q) v⟫_ All goals completed! 🐙

The mass metric unit ball is bounded in the model norm.

S:HarmonicOscillatorq:ConfigurationSpacev:EuclideanSpace (Fin 1)hv:v {v | S.m * v, v⟫_ < 1}hv':S.m * v ^ 2 < 1hmul:S.m * v ^ 2 < 1hsq_le:v ^ 2 1 / S.mv (1 / S.m) All goals completed! 🐙

The oscillator mass metric is constant in the global tangent-bundle chart.

S:HarmonicOscillatorx:ConfigurationSpaceContMDiffAt (𝓡 1) 𝓘(, EuclideanSpace (Fin 1) →L[] EuclideanSpace (Fin 1) →L[] ) ω (fun x_1 => ((trivializationAt (EuclideanSpace (Fin 1) →L[] EuclideanSpace (Fin 1) →L[] ) (fun x => TangentSpace (𝓡 1) x →L[] TangentSpace (𝓡 1) x →L[] ) x) x_1, S.massMetricVal x_1).2) x S:HarmonicOscillatorx:ConfigurationSpacex✝:ConfigurationSpace((trivializationAt (EuclideanSpace (Fin 1) →L[] EuclideanSpace (Fin 1) →L[] ) (fun x => TangentSpace (𝓡 1) x →L[] TangentSpace (𝓡 1) x →L[] ) x) x✝, S.massMetricVal x✝).2 = S.m innerSL S:HarmonicOscillatorx:ConfigurationSpacex✝:ConfigurationSpacev:EuclideanSpace (Fin 1)w:EuclideanSpace (Fin 1)(((trivializationAt (EuclideanSpace (Fin 1) →L[] EuclideanSpace (Fin 1) →L[] ) (fun x => TangentSpace (𝓡 1) x →L[] TangentSpace (𝓡 1) x →L[] ) x) x✝, S.massMetricVal x✝).2 v) w = ((S.m innerSL ) v) w All goals completed! 🐙

B. Riemannian mass metric

The pointwise bilinear forms assemble into a ContMDiffRiemannianMetric on the oscillator configuration space.

C. Geometric kinetic energy

The geometric kinetic energy is defined directly from the oscillator's mass Riemannian metric.

The geometric kinetic energy is one half the mass Riemannian metric applied to v twice.

lemma geometricKineticEnergy_eq (S : HarmonicOscillator) (q : ConfigurationSpace) (v : TangentSpace 𝓘(, EuclideanSpace (Fin 1)) q) : geometricKineticEnergy S q v = (1 / 2 : ) * S.massRiemannianMetric.inner q v v := S:HarmonicOscillatorq:ConfigurationSpacev:TangentSpace (𝓡 1) qS.geometricKineticEnergy q v = 1 / 2 * ((S.massRiemannianMetric.inner q) v) v All goals completed! 🐙

D. Coordinate formula

The coordinate identities below recover the usual mass-scaled formula for kinetic energy.

The oscillator mass Riemannian metric is positive definite.

lemma massRiemannianMetric_pos (S : HarmonicOscillator) (q : ConfigurationSpace) (v : TangentSpace 𝓘(, EuclideanSpace (Fin 1)) q) (hv : v 0) : 0 < S.massRiemannianMetric.inner q v v := massMetricVal_pos S q v hv

In the global coordinate, the oscillator mass metric is the mass-scaled Euclidean inner product of coordinate representatives.

lemma massRiemannianMetric_inner_apply (S : HarmonicOscillator) (q : ConfigurationSpace) (v w : TangentSpace 𝓘(, EuclideanSpace (Fin 1)) q) : S.massRiemannianMetric.inner q v w = S.m * tangentCoord q v, tangentCoord q w⟫_ := S:HarmonicOscillatorq:ConfigurationSpacev:TangentSpace (𝓡 1) qw:TangentSpace (𝓡 1) q((S.massRiemannianMetric.inner q) v) w = S.m * (tangentCoord q) v, (tangentCoord q) w⟫_ All goals completed! 🐙

The metric-induced kinetic energy for the mass metric has the standard harmonic-oscillator coordinate form.

S:HarmonicOscillatorq:ConfigurationSpacev:TangentSpace (𝓡 1) q1 / 2 * (S.m * (tangentCoord q) v, (tangentCoord q) v⟫_) = 1 / 2 * S.m * (tangentCoord q) v, (tangentCoord q) v⟫_ All goals completed! 🐙