First-order limit of the Hamiltonian integral under a needle variation
ProvedVectorSpaceOpt.needle_hamiltonian_integral_limitLet and let be an admissible pair on with essentially bounded. Assume that the dynamics and the running cost are jointly continuous and differentiable in the state, with jointly continuous state derivatives and , and that the derivative paths and are integrable on . Let be continuous on and fix a value . For and write for the right needle
Then for almost every the following holds. Whenever is a family of states and is a constant such that, for all sufficiently small , the pair is admissible and
one has
where is the Hamiltonian and every integrand is evaluated at the time .
This is the localized constant-control replacement in Luenberger's proof of Theorem 1, made quantitative for measurable controls. On the needle the integrand averages to the Hamiltonian jump at Lebesgue points of ; off the needle the integrand is the Taylor remainder of in the state, which is uniformly by continuity of and on a compact set; and the linearized term on the needle is at Lebesgue points of the derivative paths. The exceptional null set of times depends only on the reference pair, and , not on the family . Combined with the adjoint identity for the cost difference, this gives the first-order cost expansion of a needle variation.
Formalization Note. The null set is quantified first; the family , the constant and the eventual admissibility and closeness hypotheses are quantified inside it. Only continuity of is assumed; the adjoint equation and the terminal condition are not needed for this limit.
import Definitions.Def_VectorSpaceOpt_optimal_control open Set Filter MeasureTheory open scoped RealInnerProductSpace Topology open VectorSpaceOpt
theorem VectorSpaceOpt.needle_hamiltonian_integral_limit
{n m : ℕ} (t₀ t₁ : ℝ) (ht : t₀ < t₁)
(F : OCState n → OCControl m → OCState n)
(ell : OCState n → OCControl m → ℝ)
(Fx : OCState n → OCControl m → (OCState n →L[ℝ] OCState n))
(ellx : OCState n → OCControl m → (OCState n →L[ℝ] ℝ))
(Omega : Set (OCControl m)) (xInit : OCState n)
(u₀ : ℝ → OCControl m) (x₀ : ℝ → OCState n)
(hFx : ∀ x u, HasFDerivAt (fun y => F y u) (Fx x u) x)
(hellx : ∀ x u, HasFDerivAt (fun y => ell y u) (ellx x u) x)
(hFCont : Continuous (Function.uncurry F))
(hellCont : Continuous (Function.uncurry ell))
(hFxCont : Continuous (Function.uncurry Fx))
(hellxCont : Continuous (Function.uncurry ellx))
(hFxPathInt : IntervalIntegrable (fun t => Fx (x₀ t) (u₀ t)) volume t₀ t₁)
(hellxPathInt : IntervalIntegrable (fun t => ellx (x₀ t) (u₀ t)) volume t₀ t₁)
(hu₀Bound : ∃ C : ℝ, ∀ᵐ t ∂volume.restrict (Icc t₀ t₁), ‖u₀ t‖ ≤ C)
(hadm : IsAdmissibleControlPair t₀ t₁ F Omega xInit ell u₀ x₀)
(lambda : ℝ → OCState n)
(hlambdaCont : ContinuousOn lambda (Icc t₀ t₁))
(v : OCControl m) :
∀ᵐ t ∂volume.restrict (Ioo t₀ t₁),
∀ (xPert : ℝ → ℝ → OCState n) (K : ℝ),
(∀ᶠ ε : ℝ in 𝓝[>] (0 : ℝ),
IsAdmissibleControlPair t₀ t₁ F Omega xInit ell
(fun s => if s ∈ Icc t (t + ε) then v else u₀ s) (xPert ε) ∧
∀ s ∈ Icc t₀ t₁, ‖xPert ε s - x₀ s‖ ≤ K * ε) →
Tendsto
(fun ε : ℝ =>
((∫ s in t₀..t₁,
(controlHamiltonian F ell (xPert ε s)
(if s ∈ Icc t (t + ε) then v else u₀ s) (lambda s) -
controlHamiltonian F ell (x₀ s) (u₀ s) (lambda s))) -
∫ s in t₀..t₁,
(⟪lambda s, Fx (x₀ s) (u₀ s) (xPert ε s - x₀ s)⟫ +
ellx (x₀ s) (u₀ s) (xPert ε s - x₀ s))) / ε)
(𝓝[>] (0 : ℝ))
(𝓝 (controlHamiltonian F ell (x₀ t) v (lambda t) -
controlHamiltonian F ell (x₀ t) (u₀ t) (lambda t))) := by
sorry