Uniform costs for one shared introspection resource preparation #
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
MIPRE.Introspection.DecisionPreparation.appendPoly
(arg : Cost.PolyTimeFun Cost.Data Cost.Data)
(p q : Polynomial ℕ)
:
Cost of appending a result, with input and subroutine costs bounded by fixed polynomials of the same resource parameter.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.DecisionPreparation.appendStage_runs_poly
(arg : Cost.PolyTimeFun Cost.Data Cost.Data)
{code : Cost.Prog}
(hcode : Cost.Prog.WellScoped 1 code)
(p q : Polynomial ℕ)
(v : ℕ)
(x r : Cost.Data)
(hx : x.size ≤ Polynomial.eval v p)
(t : ℕ)
(ht : t ≤ Polynomial.eval v q)
(hr : code.Runs (arg.toFun x) r t)
:
∃ time ≤ Polynomial.eval v (appendPoly arg p q), (appendStage arg code).Runs x (x.cons r) time
Equations
Instances For
Equations
Instances For
Equations
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
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
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.DecisionPreparation.prog_runs_poly
{c v : ℕ}
(hc : 1 ≤ c)
(z : Cost.Data)
(hl : 1 ≤ inputLambda.toFun z)
(hn : 1 ≤ inputIndex.toFun z)
(hz : z.size ≤ v)
(hB : ansBound 5 (inputLambda.toFun z) (inputIndex.toFun z) ≤ v)
:
∃ time ≤ Polynomial.eval v (preparationPoly c), (prog c).Runs z (Cost.encode (resources c z)) time
All preparation work is polynomial in a common bound for the original input and the one shared clock. The theorem keeps zero parameters separate.
noncomputable def
MIPRE.Introspection.DecisionPreparation.kernelPoly
(c : ℕ)
(kernel : Cost.PolyTimeFun KernelInput Bool)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
MIPRE.Introspection.DecisionPreparation.compiledPoly
(c : ℕ)
(kernel : Cost.PolyTimeFun KernelInput Bool)
:
Equations
Instances For
theorem
MIPRE.Introspection.DecisionPreparation.kernelProg_runs_poly
{c v : ℕ}
(hc : 1 ≤ c)
(kernel : Cost.PolyTimeFun KernelInput Bool)
(M : Metadata)
(x : Cost.Data)
(hl : 1 ≤ M.2)
(hn : 1 ≤ ClockSimulation.indexReader.toFun x)
(hz : Cost.esize M + x.size + 1 ≤ v)
(hB : ansBound 5 M.2 (ClockSimulation.indexReader.toFun x) ≤ v)
:
∃ time ≤ Polynomial.eval v (kernelPoly c kernel),
(kernelProg c kernel).Runs ((Cost.encode M).cons x) (Cost.encode (kernel.toFun (kernelInput c M x))) time
theorem
MIPRE.Introspection.DecisionPreparation.compiler_runs_poly
{c v : ℕ}
(hc : 1 ≤ c)
(kernel : Cost.PolyTimeFun KernelInput Bool)
(M : Metadata)
(x : Cost.Data)
(hl : 1 ≤ M.2)
(hn : 1 ≤ ClockSimulation.indexReader.toFun x)
(hz : Cost.esize M + x.size + 1 ≤ v)
(hB : ansBound 5 M.2 (ClockSimulation.indexReader.toFun x) ≤ v)
:
∃ time ≤ Polynomial.eval v (compiledPoly c kernel),
((compiler c kernel).toFun M).Runs x (Cost.encode (kernel.toFun (kernelInput c M x))) time
The actual binary compiler has only additive metadata-specialization overhead beyond the prepared, fixed polynomial-time kernel.