Encyclopedia Action Action Functional Convexity Geodesic Minimizes Via Convexity
ARTICLE 4 claims 4 theorems
Action Functional Convexity Geodesic Minimizes Via Convexity
A path that beats every nearby rival also beats every distant one, once the cost of motion is convex.
Convexity and the shortest path
In the calculus of variations, a central question is when a path that is a local minimum of a cost functional is also a global minimum. For a functional that is convex, meaning the cost of a weighted average of two paths is no more than the weighted average of their costs, this local-to-global step is automatic. The Recognition Science library establishes this for its own action functional, the integral of the recognition cost J along a path, and the theorem is named geodesic_minimizes_via_convexity.
The theorem states: if a path γ_geo has no higher action than any convex interpolation toward a competitor γ_other (for every interpolation parameter s in [0,1]), then γ_geo has action no higher than γ_other itself. The proof is one line of convex calculus: the convexity inequality bounds the interpolated action above, and the hypothesis bounds it below, forcing the endpoint comparison. The library further shows that checking a single positive interpolation step, not all of them, suffices, and that two global minimizers with the same endpoints must have equal action values.
The deep content is not the final implication but the convexity itself. The library establishes that the pointwise convexity of Jcost on the positive reals integrates to convexity of the action functional. This pointwise convexity is itself derived from the d'Alembert functional equation that characterizes J. The chain of reasoning runs: d'Alembert uniqueness forces the form of J, which forces convexity, which forces the least-action principle. The headline theorem principle_of_least_action states this unconditionally: a path that does not decrease the action on the way to any competitor, at even one positive step, is a global minimizer.
What the theorem does not claim is existence. It assumes a path γ_geo that already satisfies the no-decrease condition; it does not establish that such a path exists for given endpoints. The action functional is defined on admissible paths, and the theorem applies only within that class. The theorem also does not claim uniqueness of the minimizing path itself, only uniqueness of the minimum action value. It does not identify the minimizing path explicitly, nor does it connect this abstract variational principle to the physical geodesics of spacetime or to the empirical trajectories of particles.
THEOREM geodesic_minimizes_via_convexity · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **Even stronger headline.** If `γ_geo` is a critical point of the
action functional in the convexity-witness sense (action does not
*decrease* under any infinitesimal interpolation perturbation toward
a competitor), then by convexity it is a global minimum.
Specifically: if for every `γ_other` and every `s ∈ [0,1]`,
`actionJ γ_geo ≤ actionJ (interp γ_geo γ_other s)`, then
`actionJ γ_geo ≤ actionJ γ_other`.
The convexity inequality already proved (`actionJ_convex_on_interp`)
says `actionJ (interp γ_geo γ_other s) ≤ (1-s) actionJ γ_geo + s actionJ γ_other`.
Combining: `actionJ γ_geo ≤ (1-s) actionJ γ_geo + s actionJ γ_other`
for all `s ∈ [0,1]`. Taking `s = 1` gives the result.
The point is: the "interpolation-minimality" hypothesis used by the
legacy `convex_implies_geodesic_minimizes` is **automatically
satisfied** by any candidate critical point, given convexity. -/
theorem geodesic_minimizes_via_convexity (_hab : a ≤ b)
(γ_geo γ_other : AdmissiblePath a b)
(h_endpoints : fixedEndpoints γ_geo γ_other)
(h_no_decrease :
∀ (s : ℝ) (hs : s ∈ Icc (0:ℝ) 1),
actionJ γ_geo ≤ actionJ (interp γ_geo γ_other s hs)) :
actionJ γ_geo ≤ actionJ γ_other :=
geodesic_minimizes_unconditional _hab γ_geo γ_other h_endpoints h_no_decrease
THEOREM actionJ_convex_on_interp · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **Convexity of the J-action.** For any two admissible paths sharing
a domain, the action of the convex interpolation is bounded by the
convex combination of the actions.
`S[(1-s)γ₁ + s γ₂] ≤ (1-s) S[γ₁] + s S[γ₂]`
This is the integrated form of pointwise convexity of `Jcost`. -/
theorem actionJ_convex_on_interp (hab : a ≤ b)
(γ₁ γ₂ : AdmissiblePath a b) (s : ℝ) (hs : s ∈ Icc (0:ℝ) 1) :
actionJ (interp γ₁ γ₂ s hs) ≤ (1 - s) * actionJ γ₁ + s * actionJ γ₂ := by
-- Step 1: the integrand is bounded pointwise.
have h_pointwise : ∀ t ∈ Set.uIcc a b,
Jcost ((interp γ₁ γ₂ s hs).toFun t) ≤
(1 - s) * Jcost (γ₁.toFun t) + s * Jcost (γ₂.toFun t) := by
intro t ht
-- On `[a,b]` (uIcc reduces to Icc since hab), positivity holds.
have htIcc : t ∈ Icc a b := by
have : Set.uIcc a b = Icc a b := by
rw [Set.uIcc_of_le hab]
rwa [this] at ht
have hp1 : 0 < γ₁.toFun t := γ₁.pos t htIcc
have hp2 : 0 < γ₂.toFun t := γ₂.pos t htIcc
rw [interp_apply]
exact Jcost_convex_combination s hs hp1 hp2
-- Step 2: continuity / integrability of all three integrands on [a,b].
have h_cont_interp : ContinuousOn (fun t => Jcost ((interp γ₁ γ₂ s hs).toFun t)) (Icc a b) := by
have hpos : ∀ t ∈ Icc a b, 0 < (interp γ₁ γ₂ s hs).toFun t :=
(interp γ₁ γ₂ s hs).pos
-- Jcost is continuous on (0, ∞); composed with the continuous, positive interp.
have hJcont : ContinuousOn Jcost (Set.Ioi (0:ℝ)) := by
unfold Jcost
apply ContinuousOn.sub
· apply ContinuousOn.div_const
apply ContinuousOn.add continuousOn_id
exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx)
· exact continuousOn_const
refine ContinuousOn.comp hJcont (interp γ₁ γ₂ s hs).cont ?_
intro t htmem
exact hpos t htmem
have h_cont_1 : ContinuousOn (fun t => Jcost (γ₁.toFun t)) (Icc a b) := by
have hJcont : ContinuousOn Jcost (Set.Ioi (0:ℝ)) := by
unfold Jcost
apply ContinuousOn.sub
· apply ContinuousOn.div_const
apply ContinuousOn.add continuousOn_id
exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx)
· exact continuousOn_const
refine ContinuousOn.comp hJcont γ₁.cont ?_
intro t htmem; exact γ₁.pos t htmem
have h_cont_2 : ContinuousOn (fun t => Jcost (γ₂.toFun t)) (Icc a b) := by
have hJcont : ContinuousOn Jcost (Set.Ioi (0:ℝ)) := by
unfold Jcost
apply ContinuousOn.sub
· apply ContinuousOn.div_const
apply ContinuousOn.add continuousOn_id
exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx)
· exact continuousOn_const
refine ContinuousOn.comp hJcont γ₂.cont ?_
intro t htmem; exact γ₂.pos t htmem
-- Step 3: integrate the pointwise inequality.
have h_int_interp : IntervalIntegrable
(fun t => Jcost ((interp γ₁ γ₂ s hs).toFun t))
MeasureTheory.volume a b :=
h_cont_interp.intervalIntegrable_of_Icc hab
have h_int_1 : IntervalIntegrable (fun t => Jcost (γ₁.toFun t))
MeasureTheory.volume a b :=
h_cont_1.intervalIntegrable_of_Icc hab
have h_int_2 : IntervalIntegrable (fun t => Jcost (γ₂.toFun t))
MeasureTheory.volume a b :=
h_cont_2.intervalIntegrable_of_Icc hab
-- Form the dominating integrand (1-s) Jcost(γ₁) + s Jcost(γ₂).
set rhs : ℝ → ℝ := fun t => (1 - s) * Jcost (γ₁.toFun t) + s * Jcost (γ₂.toFun t)
have h_int_rhs : IntervalIntegrable rhs MeasureTheory.volume a b := by
refine IntervalIntegrable.add ?_ ?_
· exact h_int_1.const_mul (1 - s)
· exact h_int_2.const_mul s
-- Apply integral monotonicity on [a, b].
have h_mono : ∫ t in a..b, Jcost ((interp γ₁ γ₂ s hs).toFun t)
≤ ∫ t in a..b, rhs t := by
refine intervalIntegral.integral_mono_on hab h_int_interp h_int_rhs ?_
intro t ht
have htIcc : t ∈ Icc a b := ht
have htUI : t ∈ Set.uIcc a b := by
rw [Set.uIcc_of_le hab]; exact htIcc
exact h_pointwise t htUI
-- Compute the RHS integral.
have h_rhs_eq : ∫ t in a..b, rhs t =
(1 - s) * (∫ t in a..b, Jcost (γ₁.toFun t)) +
s * (∫ t in a..b, Jcost (γ₂.toFun t)) := by
show ∫ t in a..b, ((1 - s) * Jcost (γ₁.toFun t) + s * Jcost (γ₂.toFun t)) =
(1 - s) * (∫ t in a..b, Jcost (γ₁.toFun t)) +
s * (∫ t in a..b, Jcost (γ₂.toFun t))
rw [intervalIntegral.integral_add (h_int_1.const_mul (1 - s)) (h_int_2.const_mul s)]
rw [intervalIntegral.integral_const_mul, intervalIntegral.integral_const_mul]
-- Assemble. The goal-as-stated has `actionJ`; unfold it to integrals.
unfold actionJ
calc ∫ t in a..b, Jcost ((interp γ₁ γ₂ s hs).toFun t)
≤ ∫ t in a..b, rhs t := h_mono
_ = (1 - s) * (∫ t in a..b, Jcost (γ₁.toFun t)) +
s * (∫ t in a..b, Jcost (γ₂.toFun t)) := h_rhs_eq
THEOREM principle_of_least_action · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **The principle of least action, unconditionally.**
If `γ_geo` does not decrease the action on the way to *any* competitor
`γ_other` (along the straight-line interpolation in path space, at
even one positive step), then `γ_geo` minimizes the action globally
among all admissible competitors with the same endpoints.
This is the clean unconditional version, with no extra
interpolation-minimality witness. The witness is *replaced* by
convexity, which is *proved* from the d'Alembert functional equation. -/
theorem principle_of_least_action (hab : a ≤ b)
(γ_geo : AdmissiblePath a b)
(h_no_local_decrease :
∀ γ_other : AdmissiblePath a b,
fixedEndpoints γ_geo γ_other →
∃ (s₀ : ℝ) (hs₀ : s₀ ∈ Icc (0:ℝ) 1),
0 < s₀ ∧ actionJ γ_geo ≤ actionJ (interp γ_geo γ_other s₀ hs₀)) :
∀ γ_other : AdmissiblePath a b,
fixedEndpoints γ_geo γ_other → actionJ γ_geo ≤ actionJ γ_other := by
intro γ_other h_end
obtain ⟨s₀, hs₀, hs₀_pos, h_local⟩ := h_no_local_decrease γ_other h_end
exact actionJ_local_min_is_global hab γ_geo γ_other s₀ hs₀ hs₀_pos h_local
THEOREM actionJ_minimum_unique_value · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **Uniqueness via convexity.** If two paths both minimize the action
among competitors with their shared endpoints, they have the same
action value. -/
theorem actionJ_minimum_unique_value (_hab : a ≤ b)
(γ₁ γ₂ : AdmissiblePath a b)
(h_endpoints : fixedEndpoints γ₁ γ₂)
(h₁ : ∀ γ : AdmissiblePath a b, fixedEndpoints γ₁ γ → actionJ γ₁ ≤ actionJ γ)
(h₂ : ∀ γ : AdmissiblePath a b, fixedEndpoints γ₂ γ → actionJ γ₂ ≤ actionJ γ) :
actionJ γ₁ = actionJ γ₂ := by
have h12 := h₁ γ₂ h_endpoints
have h21 := h₂ γ₁ (fixedEndpoints_symm h_endpoints)
linarith
What this page does not claim
No existence of a minimizing path is established for given endpoints. No identification of the minimizing path is given. No connection to physical geodesics or empirical trajectories is established.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Action/FunctionalConvexity.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- Does a path satisfying the no-decrease condition always exist for given endpoints?
- How does the action functional relate to the classical action of a physical system?
- What is the explicit form of the minimizing path for simple endpoint pairs?
- Does the convexity result extend to paths with different domains or boundary conditions?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM geodesic_minimizes_via_convexity · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **Even stronger headline.** If `γ_geo` is a critical point of the action functional in the convexity-witness sense (action does not *decrease* under any infinitesimal interpolation perturbation toward a competitor), then by convexity it is a global minimum. Specifically: if for every `γ_other` and every `s ∈ [0,1]`, `actionJ γ_geo ≤ actionJ (interp γ_geo γ_other s)`, then `actionJ γ_geo ≤ actionJ γ_other`. The convexity inequality already proved (`actionJ_convex_on_interp`) says `actionJ (interp γ_geo γ_other s) ≤ (1-s) actionJ γ_geo + s actionJ γ_other`. Combining: `actionJ γ_geo ≤ (1-s) actionJ γ_geo + s actionJ γ_other` for all `s ∈ [0,1]`. Taking `s = 1` gives the result. The point is: the "interpolation-minimality" hypothesis used by the legacy `convex_implies_geodesic_minimizes` is **automatically satisfied** by any candidate critical point, given convexity. -/ theorem geodesic_minimizes_via_convexity (_hab : a ≤ b) (γ_geo γ_other : AdmissiblePath a b) (h_endpoints : fixedEndpoints γ_geo γ_other) (h_no_decrease : ∀ (s : ℝ) (hs : s ∈ Icc (0:ℝ) 1), actionJ γ_geo ≤ actionJ (interp γ_geo γ_other s hs)) : actionJ γ_geo ≤ actionJ γ_other := geodesic_minimizes_unconditional _hab γ_geo γ_other h_endpoints h_no_decreaseThe theorem states: if a path γ_geo has no higher action than any convex interpolation toward a competitor γ_other (for every interpolation parameter s in [0,1]), then γ_geo has action no higher than γ_other itself. geodesic_minimizes_via_convexity · IndisputableMonolith/Action/FunctionalConvexity.leanTHEOREM actionJ_convex_on_interp · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **Convexity of the J-action.** For any two admissible paths sharing a domain, the action of the convex interpolation is bounded by the convex combination of the actions. `S[(1-s)γ₁ + s γ₂] ≤ (1-s) S[γ₁] + s S[γ₂]` This is the integrated form of pointwise convexity of `Jcost`. -/ theorem actionJ_convex_on_interp (hab : a ≤ b) (γ₁ γ₂ : AdmissiblePath a b) (s : ℝ) (hs : s ∈ Icc (0:ℝ) 1) : actionJ (interp γ₁ γ₂ s hs) ≤ (1 - s) * actionJ γ₁ + s * actionJ γ₂ := by -- Step 1: the integrand is bounded pointwise. have h_pointwise : ∀ t ∈ Set.uIcc a b, Jcost ((interp γ₁ γ₂ s hs).toFun t) ≤ (1 - s) * Jcost (γ₁.toFun t) + s * Jcost (γ₂.toFun t) := by intro t ht -- On `[a,b]` (uIcc reduces to Icc since hab), positivity holds. have htIcc : t ∈ Icc a b := by have : Set.uIcc a b = Icc a b := by rw [Set.uIcc_of_le hab] rwa [this] at ht have hp1 : 0 < γ₁.toFun t := γ₁.pos t htIcc have hp2 : 0 < γ₂.toFun t := γ₂.pos t htIcc rw [interp_apply] exact Jcost_convex_combination s hs hp1 hp2 -- Step 2: continuity / integrability of all three integrands on [a,b]. have h_cont_interp : ContinuousOn (fun t => Jcost ((interp γ₁ γ₂ s hs).toFun t)) (Icc a b) := by have hpos : ∀ t ∈ Icc a b, 0 < (interp γ₁ γ₂ s hs).toFun t := (interp γ₁ γ₂ s hs).pos -- Jcost is continuous on (0, ∞); composed with the continuous, positive interp. have hJcont : ContinuousOn Jcost (Set.Ioi (0:ℝ)) := by unfold Jcost apply ContinuousOn.sub · apply ContinuousOn.div_const apply ContinuousOn.add continuousOn_id exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx) · exact continuousOn_const refine ContinuousOn.comp hJcont (interp γ₁ γ₂ s hs).cont ?_ intro t htmem exact hpos t htmem have h_cont_1 : ContinuousOn (fun t => Jcost (γ₁.toFun t)) (Icc a b) := by have hJcont : ContinuousOn Jcost (Set.Ioi (0:ℝ)) := by unfold Jcost apply ContinuousOn.sub · apply ContinuousOn.div_const apply ContinuousOn.add continuousOn_id exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx) · exact continuousOn_const refine ContinuousOn.comp hJcont γ₁.cont ?_ intro t htmem; exact γ₁.pos t htmem have h_cont_2 : ContinuousOn (fun t => Jcost (γ₂.toFun t)) (Icc a b) := by have hJcont : ContinuousOn Jcost (Set.Ioi (0:ℝ)) := by unfold Jcost apply ContinuousOn.sub · apply ContinuousOn.div_const apply ContinuousOn.add continuousOn_id exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx) · exact continuousOn_const refine ContinuousOn.comp hJcont γ₂.cont ?_ intro t htmem; exact γ₂.pos t htmem -- Step 3: integrate the pointwise inequality. have h_int_interp : IntervalIntegrable (fun t => Jcost ((interp γ₁ γ₂ s hs).toFun t)) MeasureTheory.volume a b := h_cont_interp.intervalIntegrable_of_Icc hab have h_int_1 : IntervalIntegrable (fun t => Jcost (γ₁.toFun t)) MeasureTheory.volume a b := h_cont_1.intervalIntegrable_of_Icc hab have h_int_2 : IntervalIntegrable (fun t => Jcost (γ₂.toFun t)) MeasureTheory.volume a b := h_cont_2.intervalIntegrable_of_Icc hab -- Form the dominating integrand (1-s) Jcost(γ₁) + s Jcost(γ₂). set rhs : ℝ → ℝ := fun t => (1 - s) * Jcost (γ₁.toFun t) + s * Jcost (γ₂.toFun t) have h_int_rhs : IntervalIntegrable rhs MeasureTheory.volume a b := by refine IntervalIntegrable.add ?_ ?_ · exact h_int_1.const_mul (1 - s) · exact h_int_2.const_mul s -- Apply integral monotonicity on [a, b]. have h_mono : ∫ t in a..b, Jcost ((interp γ₁ γ₂ s hs).toFun t) ≤ ∫ t in a..b, rhs t := by refine intervalIntegral.integral_mono_on hab h_int_interp h_int_rhs ?_ intro t ht have htIcc : t ∈ Icc a b := ht have htUI : t ∈ Set.uIcc a b := by rw [Set.uIcc_of_le hab]; exact htIcc exact h_pointwise t htUI -- Compute the RHS integral. have h_rhs_eq : ∫ t in a..b, rhs t = (1 - s) * (∫ t in a..b, Jcost (γ₁.toFun t)) + s * (∫ t in a..b, Jcost (γ₂.toFun t)) := by show ∫ t in a..b, ((1 - s) * Jcost (γ₁.toFun t) + s * Jcost (γ₂.toFun t)) = (1 - s) * (∫ t in a..b, Jcost (γ₁.toFun t)) + s * (∫ t in a..b, Jcost (γ₂.toFun t)) rw [intervalIntegral.integral_add (h_int_1.const_mul (1 - s)) (h_int_2.const_mul s)] rw [intervalIntegral.integral_const_mul, intervalIntegral.integral_const_mul] -- Assemble. The goal-as-stated has `actionJ`; unfold it to integrals. unfold actionJ calc ∫ t in a..b, Jcost ((interp γ₁ γ₂ s hs).toFun t) ≤ ∫ t in a..b, rhs t := h_mono _ = (1 - s) * (∫ t in a..b, Jcost (γ₁.toFun t)) + s * (∫ t in a..b, Jcost (γ₂.toFun t)) := h_rhs_eqThe library establishes that the pointwise convexity of Jcost on the positive reals integrates to convexity of the action functional. actionJ_convex_on_interp · IndisputableMonolith/Action/FunctionalConvexity.leanTHEOREM principle_of_least_action · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **The principle of least action, unconditionally.** If `γ_geo` does not decrease the action on the way to *any* competitor `γ_other` (along the straight-line interpolation in path space, at even one positive step), then `γ_geo` minimizes the action globally among all admissible competitors with the same endpoints. This is the clean unconditional version, with no extra interpolation-minimality witness. The witness is *replaced* by convexity, which is *proved* from the d'Alembert functional equation. -/ theorem principle_of_least_action (hab : a ≤ b) (γ_geo : AdmissiblePath a b) (h_no_local_decrease : ∀ γ_other : AdmissiblePath a b, fixedEndpoints γ_geo γ_other → ∃ (s₀ : ℝ) (hs₀ : s₀ ∈ Icc (0:ℝ) 1), 0 < s₀ ∧ actionJ γ_geo ≤ actionJ (interp γ_geo γ_other s₀ hs₀)) : ∀ γ_other : AdmissiblePath a b, fixedEndpoints γ_geo γ_other → actionJ γ_geo ≤ actionJ γ_other := by intro γ_other h_end obtain ⟨s₀, hs₀, hs₀_pos, h_local⟩ := h_no_local_decrease γ_other h_end exact actionJ_local_min_is_global hab γ_geo γ_other s₀ hs₀ hs₀_pos h_localThe chain of reasoning runs: d'Alembert uniqueness forces the form of J, which forces convexity, which forces the least-action principle. principle_of_least_action · IndisputableMonolith/Action/FunctionalConvexity.leanTHEOREM actionJ_minimum_unique_value · IndisputableMonolith/Action/FunctionalConvexity.lean
/-- **Uniqueness via convexity.** If two paths both minimize the action among competitors with their shared endpoints, they have the same action value. -/ theorem actionJ_minimum_unique_value (_hab : a ≤ b) (γ₁ γ₂ : AdmissiblePath a b) (h_endpoints : fixedEndpoints γ₁ γ₂) (h₁ : ∀ γ : AdmissiblePath a b, fixedEndpoints γ₁ γ → actionJ γ₁ ≤ actionJ γ) (h₂ : ∀ γ : AdmissiblePath a b, fixedEndpoints γ₂ γ → actionJ γ₂ ≤ actionJ γ) : actionJ γ₁ = actionJ γ₂ := by have h12 := h₁ γ₂ h_endpoints have h21 := h₂ γ₁ (fixedEndpoints_symm h_endpoints) linarithThe theorem also does not claim uniqueness of the minimizing path itself, only uniqueness of the minimum action value. actionJ_minimum_unique_value · IndisputableMonolith/Action/FunctionalConvexity.lean