The time-varying comparison bound, formalized — TARGET 2 of the LeanPunov stream
Seal
Rung rung-1 · Status interfaced — axiom-clean (
#print axiomsverbatim in The machine seal; build 2627 jobs), with the trajectory-regularity hypotheseshvc,hv,hbound,hnnas named applier-side interfaces — see interfaces.
Links: module index · interface ledger · related lyapunov_comparison, comparison_functions · sources panteley2001growth, panteley1998global, giordano2019coordinated, khalil1996nonlinear (no wiki page yet) · pinpin_comparison.py· lesson lesson_01_error_floor_cascade
Sealed theorems
comparison_shift
The restartable comparison — L2’s bound stated on the scalar with a movable start point .
comparison_tendsto_zero
Vanishing disturbance: drives the driven state to zero, — the moving noise floor.
comparison_bounded
No finite escape: a bounded disturbance keeps for all time.
Why this theorem, and why now
L2 ((~/Code/vault/lean/lyapunov_comparison.md)) sealed the constant-disturbance comparison lemma: a differential inequality with a fixed ceiling is bounded by the Grönwall envelope, and decays toward the ultimate bound . That is the right first stone, but it does not close the cascade. In a cascaded interconnection the disturbance is not a constant — it is the state of the driving subsystem, and the whole point of a cascade argument is that this driving state decays. Panteley & Loría write the boundedness engine of their Lemma 2 (panteley2001growth eq 35) on exactly this shape,
where is the driving state and the interconnection coefficient is fixed on a ball of radius . When the driving subsystem is asymptotically stable, , so the whole forcing term vanishes. The question this file answers is the quantitative heart of the cascade: does a vanishing disturbance drive the driven state to zero? The constant lemma cannot say — its floor is frozen. We need the time-varying statement.
The thesis link is direct. The operational cruise-lag floor ((~/Code/notes/…) current_sota.md §4.5, eq 4.14) is the ultimate bound of a persistent disturbance. The risk-aware program that this stream underwrites needs the companion fact: if the excitation decays — as it does once a maneuver settles — the tracking error’s floor decays with it, to zero. comparison_tendsto_zero is that fact. Its sibling comparison_bounded is the safety complement: even a merely bounded (non-vanishing) disturbance cannot cause a finite escape — stays under the explicit ceiling .
Sources and provenance
- panteley2001growth (Panteley & Loría, Automatica 37, 2001): Lemma 2 and its eq 35 — the perturbed decrease driven by the interconnection term; the vanishing-disturbance regime is the limit of that inequality.
- panteley1998global (Panteley & Loría, Syst. Control Lett. 33, 1998): the UGAS/cascade vocabulary.
- giordano2019coordinated (framing paper): eq 22 triangular decoupling — the cascade whose driven subsystem this bounds.
- Khalil, Nonlinear Systems: the terms comparison lemma, ultimate bound, and finite escape time (concepts cited by name; precise section numbers pending the queued Khalil OCR, flagged not fabricated).
- Mathlib substrate:
Mathlib.Analysis.ODE.Gronwall(gronwallBound,gronwallBound_of_K_ne_0,le_gronwallBound_of_liminf_deriv_right_le— negative permitted),Real.tendsto_exp_comp_nhds_zero,tendsto_const_mul_atBot_of_neg,NormedAddGroup.tendsto_nhds_zero. - SymPy pin of the variation-of-constants identity: (~/Code/vault/lean/pin_comparison.py) — six asserts, all passing.
The precise statements
All three declarations live in TimeVaryingComparison.lean beside this document, namespace Leanpunov, on scalar functions .
Lemma (restartable comparison), comparison_shift. If is continuous on , right-differentiable there with derivative , and satisfies the constant-ceiling decrease on , then for all
This is L2’s lyapunov_comparison stated directly on the scalar and with a movable start point — the one new capability the asymptotic proof needs (it restarts the clock at the moment falls below the ceiling).
Theorem (vanishing disturbance), comparison_tendsto_zero. Let . If is continuous on , right-differentiable with derivative , nonnegative (), obeys , and the disturbance satisfies as , then
Theorem (no finite escape), comparison_bounded. Let and . If is continuous and right-differentiable on with , the disturbance is bounded , and , then for every
The constant is the ultimate-bound / noise-floor level — the exact time-varying analogue of L2’s .
Scratch work — where the two bounds come from
Everything rides on one object: the comparison-ODE solution , the integrating-factor solution of , . Mathlib’s gronwallBound is this at , ; the SymPy pin confirms gronwallBound and that solves the ODE with .
Two elementary facts about carry the two theorems. Write for .
-
Floor gap (asymptotics). The additive Grönwall term obeys , because the deficit is (pin assert 5). So the whole bound sits under transient floor: . Choose the ceiling ; then the floor is , and the transient . Eventually — for every , hence .
-
Boundedness gap (no escape). (pin assert 6): with and , every summand is nonnegative, so for all . Bounded ceiling, bounded state.
Proof narrative (teacher-verifiable)
comparison_shift. Identical machinery to L2: le_gronwallBound_of_liminf_deriv_right_le needs only a right lower-slope (Dini) condition, which HasDerivWithinAt.liminf_right_slope_le extracts from the supplied right-derivative, plus (le_rfl). No chain rule is needed here because is already scalar — L2 had to push through the trajectory ; we take as the primitive object.
comparison_tendsto_zero. Fix a target . Since and the ceiling , there is a time past which (Iio_mem_nhds turns the convergence into an eventual bound; eventually_atTop extracts the threshold ). On the disturbance is dominated by the constant , so comparison_shift applies with start point : for ,
The transient : the exponent (tendsto_const_mul_atBot_of_neg, since ), so the exponential (Real.tendsto_exp_comp_nhds_zero), and scaling by the constant keeps the limit . Because the floor , eventually the transient drops below , giving . Nonnegativity closes the squeeze: . As was arbitrary, NormedAddGroup.tendsto_nhds_zero yields . The three eventual facts (past ; transient below ; ) are combined with filter_upwards; the final scalar chain is linarith.
comparison_bounded. Apply comparison_shift from with constant ceiling (valid since ). Expand gronwallBound at and bound the two terms: because and (mul_le_of_le_one_right, Real.exp_le_one_iff), and the floor term is by the same gap identity as above. Sum: . No limit is taken — this is a uniform-in- ceiling, the finite-escape guard.
Why the Lean is honest about hypotheses. Mathlib’s total fderiv/derivative returns junk on non-differentiable inputs, so a decrease predicate could be vacuously true; every theorem here consumes an explicit HasDerivWithinAt witness for , disarming that trap exactly as L2 did with Differentiable ℝ V.
Interfaces left named (not faked)
Per the stream’s “interface, don’t fake” rule, the trajectory-regularity hypotheses are named applier-side hypotheses, not silent sorries and not substituted weaker math:
hvc(continuity of on the half-line) andhv(the pointwise right-derivative ) are the solution regularity an applier supplies from the actual closed-loop trajectory — the same role L4a’sIsSolutionToprecedent plays. Here is the Lyapunov value along a solution; its continuity and right-differentiability come from the chain rule on a differentiable and a solution , which is upstream scaffolding, not this theorem’s content.hbound(the differential inequality itself) is the field-level Lyapunov decrease pulled back along the trajectory — the honest input, exactly the object Panteley–Loría assume.hnn(nonnegativity of ) is the energy/Lyapunov-function property; it is what lets the upper comparison bound close to a two-sided squeeze. Without it the theorem still proves ; with it (the operative case, ) it upgrades to .
Nothing in the content of the comparison bound — the Grönwall envelope, the exponential decay, the floor arithmetic — is hypothesized; only the trajectory’s existence and regularity, which is precisely the scaffolding the campaign permits as an interface.
Post-proof analysis
The moral. The constant lemma froze the floor at ; the time-varying lemma lets the floor move with the disturbance. The proof needed no new deep analysis — just the ability to restart Grönwall past the settling time (comparison_shift’s movable ) plus one exponential limit. That is the whole reason cascade arguments work: the driven subsystem inherits the driver’s decay through a shifted comparison, not through any global re-derivation.
Honest boundary. comparison_bounded is stated for a bounded disturbance , which is the operative regime here (a disturbance that tends to zero is eventually bounded, and continuous on compacts, hence bounded on ). The sharper classical statement — boundedness under a merely integrable disturbance, with possibly unbounded — is a different sufficient condition that would need the Bochner integral of the convolution ; it is deliberately left unformalized, flagged here as a named gap, not smuggled in. The bounded- result is the one the cascade actually uses.
The machine seal
lake build compiles green (full target, 2627 jobs). #print axioms for all three theorems:
'Leanpunov.comparison_shift' depends on axioms: [propext, Classical.choice, Quot.sound]
'Leanpunov.comparison_tendsto_zero' depends on axioms: [propext, Classical.choice, Quot.sound]
'Leanpunov.comparison_bounded' depends on axioms: [propext, Classical.choice, Quot.sound]
No sorryAx, nothing beyond the three permitted axioms. The build copy lives at ~/lean/leanpunov/Leanpunov/TimeVaryingComparison.lean; this directory’s copy is the tracked source of truth, imported into Leanpunov.lean.