7.4. Path.CotangentCoeff
Jacobians.Path.CotangentCoeff — source
continuousAt_inCoordinates
The continuous local object. Near x₀, the coordinate of the section α in the FIXED
hom-bundle trivialization at x₀ is continuous (indeed it is ContMDiffAt) as a map into the
fixed normed space ℂ →L[ℂ] ℂ. This is inCoordinates (α x).
theorem continuousAt_inCoordinates {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] (α : HolomorphicOneForms X) (x₀ : X)
:
ContinuousAt (fun x : X => ContinuousLinearMap.inCoordinates ℂ
(TangentSpace 𝓘(ℂ) (M := X)) ℂ (Bundle.Trivial X ℂ) x₀ x x₀ x (α.toFun x)) x₀
continuousAt_localCoeff
The local coefficient is continuous. x ↦ inCoordinates (α x) 1 (the coefficient of
α read in the FIXED chart at x₀, i.e. α paired with the *coordinate vector field of the
chart at x₀*) is continuous at x₀. NOTE this is inCoordinates (α x) 1, not the
discontinuous α x 1.
theorem continuousAt_localCoeff {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] (α : HolomorphicOneForms X) (x₀ : X)
:
ContinuousAt (fun x : X => ContinuousLinearMap.inCoordinates ℂ
(TangentSpace 𝓘(ℂ) (M := X)) ℂ (Bundle.Trivial X ℂ) x₀ x x₀ x (α.toFun x) (1 : ℂ)) x₀
apply_eq_inCoordinates
General-vector form of target_eq_inCoordinates_of_w. For any tangent vector v at
x ∈ (chartAt ℂ x₀).source, applying the form equals applying its fixed-x₀-trivialization
inCoordinates representation to v read in that trivialization. (The v = 1 case is the
obstruction lemma target_eq_inCoordinates_of_w; this general version is what lets a
chart-patchwork rewrite the line-integral integrand α.toFun (γ s) (pathSpeed γ s) into a
product of the continuous local coefficient and the trivialized velocity.)
theorem apply_eq_inCoordinates {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] (α : HolomorphicOneForms X)
(x₀ x : X)
(hx : x ∈ (chartAt ℂ x₀).source) (v : TangentSpace 𝓘(ℂ) x) :
α.toFun x v =
ContinuousLinearMap.inCoordinates ℂ (TangentSpace 𝓘(ℂ) (M := X)) ℂ (Bundle.Trivial X ℂ)
x₀ x x₀ x (α.toFun x)
((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x₀).continuousLinearMapAt ℂ x v)
continuousOn_form_pathSpeed
Continuous velocity tangent-section ⇒ the form integrand is ContinuousOn [0,1].
theorem continuousOn_form_pathSpeed {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] (α : HolomorphicOneForms X)
(γ : ℝ → X)
(hvel : ContinuousOn (fun s : ℝ =>
(Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ s) (pathSpeed γ s)))
(Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ => α.toFun (γ s) (pathSpeed γ s)) (Set.Icc 0 1)
intervalIntegrable_form_pathSpeed_of_velContinuous
Continuous velocity tangent-section ⇒ the form integrand is interval-integrable on [0,1].
The justification for the genuinely-C¹ loop predicate: the integrable field follows from
the velocity-continuity (velCont) field.
theorem intervalIntegrable_form_pathSpeed_of_velContinuous {X : Type*} [TopologicalSpace X]
[T2Space X] [CompactSpace X] [ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
(α : HolomorphicOneForms X) (γ : ℝ → X)
(hvel : ContinuousOn (fun s : ℝ =>
(Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ s) (pathSpeed γ s)))
(Set.Icc 0 1)) :
IntervalIntegrable (fun s : ℝ => α.toFun (γ s) (pathSpeed γ s)) MeasureTheory.volume 0 1
pathSpeed_comp_eq_mfderiv_of_mdiff
Local analogue of pathSpeed_comp_eq_mfderiv: only MDifferentiableAt f (γ t) is needed
(the global ContMDiff f in the original is used solely to produce this), so it applies to
local sections. The source X need *not* be compact (used with X = ℂ in the ChartBall
base case).
theorem pathSpeed_comp_eq_mfderiv_of_mdiff {X : Type*} [TopologicalSpace X]
[ChartedSpace ℂ X] {Y : Type*} [TopologicalSpace Y] [ChartedSpace ℂ Y]
(f : X → Y) (γ : ℝ → X) (t : ℝ)
(hf_mdiff : MDifferentiableAt 𝓘(ℂ) 𝓘(ℂ) f (γ t))
(hγ_cont : ContinuousAt γ t)
(hγ_diff : DifferentiableAt ℝ ((chartAt (H := ℂ) (γ t)).toFun ∘ γ) t) :
pathSpeed (f ∘ γ) t = mfderiv 𝓘(ℂ) 𝓘(ℂ) f (γ t) (pathSpeed γ t)
velCont_comp
GLOBAL: velocity-section continuity is preserved by a global C^ω map. For the
IsClosedSmoothLoop.comp constructor. Identifies velocity-section(f∘γ) with tangentMap f
applied to velocity-section(γ) (pointwise via pathSpeed_comp_eq_mfderiv), then composes with the
continuous tangentMap f.
theorem velCont_comp {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] {Y : Type*} [TopologicalSpace Y]
[T2Space Y] [CompactSpace Y] [ConnectedSpace Y] [ChartedSpace ℂ Y] [IsManifold 𝓘(ℂ) ω Y]
(f : X → Y) (hf : ContMDiff 𝓘(ℂ) 𝓘(ℂ) ω f) (γ : ℝ → X)
(hγcont : Continuous γ)
(hγdiff : ∀ s ∈ Set.Icc (0 : ℝ) 1,
DifferentiableAt ℝ ((chartAt (H := ℂ) (γ s)).toFun ∘ γ) s)
(hγ : ContinuousOn (fun s : ℝ => (Bundle.TotalSpace.mk' ℂ
(E := TangentSpace 𝓘(ℂ) (M := X)) (γ s) (pathSpeed γ s))) (Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ => (Bundle.TotalSpace.mk' ℂ
(E := TangentSpace 𝓘(ℂ) (M := Y)) (f (γ s)) (pathSpeed (f ∘ γ) s))) (Set.Icc 0 1)
velCont_compOn
Local: velocity-section continuity is preserved by a map C^ω on an open set. For the §3
lift g∘γ (g a local section) and the ChartBall base case. Open V upgrades ContMDiffOn to
ContMDiffAt/MDifferentiableAt, so pathSpeed_comp_eq_mfderiv_of_mdiff applies, and
tangentMapWithin g V = tangentMap g on V. The source Y need NOT be compact (the ChartBall
base case takes Y = ℂ, the non-compact model space).
theorem velCont_compOn {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
[IsManifold 𝓘(ℂ) ω X] {Y : Type*} [TopologicalSpace Y] [ChartedSpace ℂ Y]
[IsManifold 𝓘(ℂ) ω Y]
(g : Y → X) {V : Set Y} (hg : ContMDiffOn 𝓘(ℂ) 𝓘(ℂ) ω g V)
(hVo : IsOpen V) (γ : ℝ → Y) (hγV : ∀ s ∈ Set.Icc (0 : ℝ) 1, γ s ∈ V)
(hγcont : Continuous γ)
(hγdiff : ∀ s ∈ Set.Icc (0 : ℝ) 1,
DifferentiableAt ℝ ((chartAt (H := ℂ) (γ s)).toFun ∘ γ) s)
(hγ : ContinuousOn (fun s : ℝ => (Bundle.TotalSpace.mk' ℂ
(E := TangentSpace 𝓘(ℂ) (M := Y)) (γ s) (pathSpeed γ s))) (Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ => (Bundle.TotalSpace.mk' ℂ
(E := TangentSpace 𝓘(ℂ) (M := X)) (g (γ s)) (pathSpeed (g ∘ γ) s))) (Set.Icc 0 1)
velCont_reverse
Velocity-section continuity is preserved by time-reversal. For the
IsClosedSmoothLoop.reverse/IsSmoothPath.reverse constructors. The reversed velocity section is
s ↦ ⟨γ(1-s), -pathSpeed γ(1-s)⟩ (via pathSpeed_reverse, needs hγdiff at 1-s); base
continuity comes from reparametrizing the original base by s ↦ 1-s, and the trivialized fibre is
the negation of the original's (negation is ℂ-linear, passes through continuousLinearMapAt).
theorem velCont_reverse {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
[IsManifold 𝓘(ℂ) ω X] (γ : ℝ → X)
(hγdiff : ∀ t ∈ Set.uIcc (0:ℝ) 1,
DifferentiableAt ℝ ((chartAt (H := ℂ) (γ t)).toFun ∘ γ) t)
(hγ : ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ s) (pathSpeed γ s))
(Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X))
(Jacobians.reverse γ s) (pathSpeed (Jacobians.reverse γ) s))
(Set.Icc 0 1)
pathSpeed_concat_junction
The junction velocity of a concatenation vanishes, given both pieces' chart-pullback
differentiability and vanishing endpoint velocities (pathSpeed γ₁ 1 = 0, pathSpeed γ₂ 0 = 0)
and matched basepoints γ₁ 1 = γ₂ 0. This is the velocity restatement of the junction step of the
IsSmoothPath.concat diff field (HasDerivWithinAt … 0 glued on Iic ∪ Ici).
theorem pathSpeed_concat_junction {X : Type*} [TopologicalSpace X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] (γ₁ γ₂ : ℝ → X)
(h₁diff : DifferentiableAt ℝ ((chartAt (H := ℂ) (γ₁ 1)).toFun ∘ γ₁) 1)
(h₂diff : DifferentiableAt ℝ ((chartAt (H := ℂ) (γ₂ 0)).toFun ∘ γ₂) 0)
(hv₁ : pathSpeed γ₁ 1 = 0) (hv₂ : pathSpeed γ₂ 0 = 0) (hjoin : γ₁ 1 = γ₂ 0) :
pathSpeed (Jacobians.concat γ₁ γ₂) (1/2) = 0
velCont_affineReparam
Velocity-section continuity under an affine reparametrization s ↦ a*s + b with the fibre
rescaled by a. This is the shape of each half of concat (left: a = 2, b = 0; right:
a = 2, b = -1), where pathSpeed (concat) s = 2 * pathSpeed γᵢ (2s + …). Mirrors
velCont_reverse
(itself the a = -1, b = 1 case): base continuity from reparametrizing the projection, fibre
continuity from the original trivialized fibre scaled by a (scaling is ℂ-linear, passes through
continuousLinearMapAt).
theorem velCont_affineReparam {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
[IsManifold 𝓘(ℂ) ω X] (γ : ℝ → X) (a b : ℝ) {D : Set ℝ}
(hmaps : Set.MapsTo (fun s : ℝ => a * s + b) D (Set.Icc 0 1))
(hγ : ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ s) (pathSpeed γ s))
(Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X))
(γ (a * s + b)) ((a : ℂ) • pathSpeed γ (a * s + b)))
D
velCont_reparam
Velocity-section continuity under a smooth scalar reparametrization σ. For the
smoothPathSmooth = smoothPath ∘ smoothStep01 case: given the chain-rule fact
pathSpeed (γ ∘ σ) s = σ'(s) • pathSpeed γ (σ s) (supplied as hspeed, from
pathSpeed_smoothStep01_comp_eq), a continuous reparam σ mapping D into [0,1], and a
continuous scaling σ', the reparametrized velocity section is continuous on D. Generalizes
velCont_affineReparam (constant scale a) to a varying scale σ'.
theorem velCont_reparam {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
[IsManifold 𝓘(ℂ) ω X] (γ : ℝ → X) (σ σ' : ℝ → ℝ) {D : Set ℝ}
(hmaps : Set.MapsTo σ D (Set.Icc 0 1)) (hσcont : ContinuousOn σ D)
(hσ'cont : ContinuousOn (fun s : ℝ => (σ' s : ℂ)) D)
(hspeed : ∀ s ∈ D, pathSpeed (γ ∘ σ) s = (σ' s : ℂ) • pathSpeed γ (σ s))
(hγ : ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ s) (pathSpeed γ s))
(Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X))
((γ ∘ σ) s) (pathSpeed (γ ∘ σ) s))
D
velCont_concat
Velocity-section continuity is preserved by concatenation at vanishing junction velocities.
For the IsSmoothPath.concat constructor. On each open half the concatenation's velocity section
is the corresponding piece's section reparametrized (2· left, 2·-1 right) with the fibre scaled
by 2 (pathSpeed_concat_left/right, via velCont_affineReparam); at the junction s = ½ both
the actual junction velocity (pathSpeed_concat_junction, = 0) and each scaled-reparam value
(2 • pathSpeed γ₁ 1 = 0 by hv₁, resp. hv₂) vanish and the bases match (hjoin), so the
concat-section coincides with each clean reparam section up to and INCLUDING ½, and the two
one-sided ContinuousWithinAts glue (ContinuousWithinAt.union on Iic ½ ∪ Ici ½ = univ).
theorem velCont_concat {X : Type*} [TopologicalSpace X] [CompactSpace X]
[ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] (γ₁ γ₂ : ℝ → X)
(h₁diff : ∀ t ∈ Set.uIcc (0:ℝ) 1,
DifferentiableAt ℝ ((chartAt (H := ℂ) (γ₁ t)).toFun ∘ γ₁) t)
(h₂diff : ∀ t ∈ Set.uIcc (0:ℝ) 1,
DifferentiableAt ℝ ((chartAt (H := ℂ) (γ₂ t)).toFun ∘ γ₂) t)
(hv₁ : pathSpeed γ₁ 1 = 0) (hv₂ : pathSpeed γ₂ 0 = 0) (hjoin : γ₁ 1 = γ₂ 0)
(hγ₁ : ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ₁ s) (pathSpeed γ₁ s))
(Set.Icc 0 1))
(hγ₂ : ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X)) (γ₂ s) (pathSpeed γ₂ s))
(Set.Icc 0 1)) :
ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := X))
(Jacobians.concat γ₁ γ₂ s) (pathSpeed (Jacobians.concat γ₁ γ₂) s))
(Set.Icc 0 1)
velCont_modelPath
Velocity-section continuity of a C¹ path into the model space ℂ. For ℂ the chart at any
point is the identity, so pathSpeed β = deriv β and the tangent bundle is trivial; the velocity
section is therefore continuous as soon as β and deriv β are. This is the base-path velocity
input for the ChartBallPathSmooth case of the C¹ refactor (composed with (chartAt ℂ Q₀).symm via
velCont_compOn).
theorem velCont_modelPath (β : ℝ → ℂ) (hβ : Continuous β) (hβ' : Continuous (deriv β)) :
ContinuousOn (fun s : ℝ =>
Bundle.TotalSpace.mk' ℂ (E := TangentSpace 𝓘(ℂ) (M := ℂ)) (β s) (pathSpeed β s))
(Set.Icc 0 1)