The actual growing introspection clock #
The closed clock program writes the exact repaired introspection budget in unary. Hardwiring the binary parameter has linear description overhead, and the compiler itself is an actual polynomial-time ambient program.
The executable polynomial-exponent clock, with the parameter stored in binary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.growingClock_runs
(k lam n : ℕ)
:
∃ time ≤ ClockArithmetic.uniformCost k lam n + Cost.esize lam + Cost.esize n + 3,
(growingClock k lam).prog.Runs (Cost.encode n) (Cost.Data.ofNat (ansBound k lam n)) time
theorem
MIPRE.Introspection.growingClock_haltsWithin
(k lam n : ℕ)
:
Cost.HaltsWithin (growingClock k lam).prog (Cost.encode n)
(ClockArithmetic.uniformCost k lam n + Cost.esize lam + Cost.esize n + 3)
theorem
MIPRE.Introspection.growingClock_size
(k lam : ℕ)
:
Cost.esize (growingClock k lam).prog = Cost.esize (ClockArithmetic.uniformProg k) + Cost.esize lam + 35
No unary parameter or budget is embedded in the program description.
The actual uniform compiler for the parameterized clocks.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.growingClockCompiler_runs
(k lam : ℕ)
:
∃ time ≤ Polynomial.eval (Cost.esize lam) (growingClockCompiler k).timeBound,
(growingClockCompiler k).code.Runs (Cost.encode lam) (Cost.encode (growingClock k lam).prog) time
Compiler execution takes polynomial time in the binary parameter length.