The time-varying comparison bound, formalized — TARGET 2 of the LeanPunov stream

Seal

Rung rung-1 · Status interfaced — axiom-clean (#print axioms verbatim in The machine seal; build 2627 jobs), with the trajectory-regularity hypotheses hvc, hv, hbound, hnn as 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) · pin pin_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 .

  1. 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 .

  2. 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) and hv (the pointwise right-derivative ) are the solution regularity an applier supplies from the actual closed-loop trajectory — the same role L4a’s IsSolutionTo precedent 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.