Skip to content

v1.107 — Lyapunov exponential convergence: the deferred 'trajectory ⇒ converges' step, discharged#246

Merged
avrabe merged 3 commits into
mainfrom
feat/lyapunov-exponential-convergence
Jul 1, 2026
Merged

v1.107 — Lyapunov exponential convergence: the deferred 'trajectory ⇒ converges' step, discharged#246
avrabe merged 3 commits into
mainfrom
feat/lyapunov-exponential-convergence

Conversation

@avrabe

@avrabe avrabe commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

P2 final slice — closing the deferred dynamic step

Every prior Lyapunov file (GeometricLyapunov, PositionLyapunov, StrictLyapunov) proves a differential inequality and defers "trajectory ⇒ converges" to LaSalle, which Mathlib lacks.

proofs/lean/LyapunovConvergence.lean discharges it for the exponential (strict, negative-definite) form V̇ ≤ −γV — the form v1.105 proved algebraically and v1.106 confirmed on the real relay-geo controller (γ≈0.056) — without LaSalle and without the ODE flow API, by the classical integrating-factor argument:

theorem statement
intfactor_antitone w(t)=v(t)·exp(γt) has deriv ≤ 0 (since v'≤−γv) ⇒ w antitone
exp_decay_bound v(t) ≤ v(0)·exp(−γt) for t ≥ 0
tendsto_zero_of_diff_ineq 0 ≤ v(t) ≤ v(0)exp(−γt) → 0 squeezes v(t) → 0 as t→∞

All in Mathlib's calculus API (deriv, Real.exp, antitone_of_deriv_nonpos, squeeze_zero'). No sorry, no axiom.

This completes the exponential Lyapunov chain end-to-end: algebraic strict inequality (v1.105) → real-controller constants + concrete rate (v1.106) → decay + convergence (v1.107).

Remaining modelling assumption: that the scalar v(t)=V(state(t)) is differentiable along the flow with deriv v = V̇ — an explicit hypothesis, the honest interface to the vector-field certificates (the flow's existence is Mathlib PicardLindelöf, a separate wiring step).

Verification (honest)

Local Lean kernel-check remains disk-blocked this cycle (host disk full), so lean.yml (bazel test //proofs/lean:all) is the verifying oracle. This slice is calculus-heavy (more Mathlib API surface than the algebraic fragment), so if CI surfaces a lemma-name mismatch I'll iterate on this PR. FV-FALCON-LYAP-004 is implemented, → verified once the gate is green.

🤖 Generated with Claude Code

avrabe and others added 3 commits July 1, 2026 13:17
… step discharged

P2 final slice. proofs/lean/LyapunovConvergence.lean closes "trajectory ⇒
converges" for the exponential Lyapunov certificate — the step EVERY prior
Lyapunov file deferred to LaSalle (absent from Mathlib) — WITHOUT LaSalle and
WITHOUT the ODE flow API, by the integrating-factor argument:

  intfactor_antitone        w(t)=v(t)·exp(γt) has deriv ≤ 0 (v'≤−γv) ⇒ antitone
  exp_decay_bound           ⇒ v(t) ≤ v(0)·exp(−γt) for t ≥ 0
  tendsto_zero_of_diff_ineq ⇒ 0 ≤ v ≤ v(0)exp(−γt) → 0 squeezes v(t) → 0

Completes the exponential Lyapunov chain: algebraic strict inequality (v1.105)
→ real-controller constants + rate γ≈0.056 (v1.106) → decay + convergence
(v1.107). Remaining modelling assumption (v differentiable along the flow with
deriv = V̇) is an explicit hypothesis — the honest interface to the vector-field
certificates. No sorry, no axiom.

FV-FALCON-LYAP-004 (status implemented — gated by lean.yml; local Lean
kernel-check disk-blocked this cycle, so the gate is the verifying oracle).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…f_forall name

lean.yml surfaced two blind-write issues (local kernel-check disk-blocked):
- exp_decay_bound: Antitone-application left the lambda unreduced, so `rw`
  couldn't find `γ*0`; use `simp only` (beta-reduces then simplifies).
- tendsto_zero_of_diff_ineq: `Filter.eventually_of_forall` was renamed to
  `Filter.Eventually.of_forall` in Mathlib v4.29.1.
intfactor_antitone (the HasDerivAt core) compiled clean on the first run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…proofs)

//proofs/lean:lyapunov_convergence_test PASSED. The deferred trajectory⇒converges
step is machine-checked for the exponential Lyapunov certificate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@avrabe avrabe merged commit 7b418f0 into main Jul 1, 2026
69 of 76 checks passed
@avrabe avrabe deleted the feat/lyapunov-exponential-convergence branch July 1, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant