Uniform runtime bounds for the growing introspection clock #
For each fixed positive exponent, clock construction runs in polynomial time in its unary output budget, uniformly in the parameter and index. The existing polynomial-exponent absorption lemma then gives another introspection budget.
Equations
- MIPRE.Introspection.ClockArithmetic.unaryCostPoly = (Polynomial.X + 2) * ((Polynomial.X + 1) * (4 * Polynomial.X + 14) + 7 * (4 * Polynomial.X + 1) + 8 * Polynomial.X + 90)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.ClockArithmetic.growingClock_cost_le
{k lam n : ℕ}
(hk : 1 ≤ k)
(hl : 1 ≤ lam)
(hn : 1 ≤ n)
:
uniformCost k lam n + Cost.esize lam + Cost.esize n + 3 ≤ Polynomial.eval (ansBound k lam n) (clockCostPoly k)
One polynomial controls all parameter/index instances of the actual clock.
theorem
MIPRE.Introspection.growingClock_polynomial_time
{k : ℕ}
(hk : 1 ≤ k)
:
∃ (Q : Polynomial ℕ),
∀ (lam n : ℕ),
1 ≤ lam → 1 ≤ n → Cost.HaltsWithin (growingClock k lam).prog (Cost.encode n) (Polynomial.eval (ansBound k lam n) Q)
theorem
MIPRE.Introspection.growingClock_ansBound_time
{k : ℕ}
(hk : 1 ≤ k)
:
∃ (C : ℕ),
∀ (lam n : ℕ), 1 ≤ lam → 1 ≤ n → Cost.HaltsWithin (growingClock k lam).prog (Cost.encode n) (ansBound C lam n)
Generating the unary clock itself fits a uniformly enlarged introspection budget.