The compressor's output is bounded: the accounting #
Obligation O4, the accounting half: the verifier the compressor's output denotes is
n-bounded at every level n past a threshold depending on G and U alone — the field
CompressorSpec.isBounded_compr — and the parameter λ(n) it carries satisfies the growth
conditions lam_ge and ansBound_le.
The parameter is λ(n) = 2 ^ (2 · size n), a 1 followed by zeros, so that the compressor can
write it in binary in time polynomial in log n; it is at least (n + 1) ^ 2, which is what
freezing the described verifier at index 2n + 1 needs (Verifier.freeze_isBounded through
CompressorSpec.lam_ge).
Verifier.IsBounded n has three clauses at every index m ≥ 2 and a size clause, and each is
absorbed by PolyBounded.absorb or PolyBounded.absorb_log (Halting/Absorb.lean) once the
cost is written as a polynomially bounded function of the largest of the index, the level and
the input size:
- the sampler is
G.sampler (λ(n)), whose dimension and running time at indexmareG.bound (m + λ(n))(GapCompression.sampler_dim,sampler_time); - the decider is the wrapper around
haltProgwith(c, n, λ(n))hardcoded, whose cost on an inputdisProg.wrapCoreCost(Halting/WrapperCost.lean) with the inner costinnerBound: the preparation (prepBound), the universal machine on the compressed decider, and the compressed decider's own timeG.bound (m + λ(n)) · (|d| + 1) ^ G.deg(GapCompression.decider_time); - the size is that of the compressed sampler's program, polynomial in
log n, and of the wrapper's description, which carriesc— the slack2|c| ≤ nof the criterion is what leaves room for it.
The parameter #
The parameter the output carries at level n: 2 ^ (2 · size n).
Equations
- MIPRE.Halting.lamOf n = 2 ^ (2 * n.size)
Instances For
The output's verifier #
The decider program the output carries: haltProg with (c, n, λ) hardcoded.
Equations
- MIPRE.Halting.outDec G U c n lam = MIPRE.Cost.hardcode (MIPRE.Halting.haltProg G U) (MIPRE.Cost.encode (c, n, lam))
Instances For
The sampler clauses #
The dimension and running-time bound of the compressed sampler at λ(n), index m, as
a polynomially bounded function of the largest of m and n.
Equations
- MIPRE.Halting.sampZ G z = Polynomial.eval (z + MIPRE.Halting.lamOf z) G.bound
Instances For
The sampler clauses: past a threshold, at every index m ≥ 2 the compressed sampler at
λ(n) has dimension at most m ^ n and runs within m ^ n · (|d| + 1) ^ n.
The size clause #
The size of the output's verifier, beyond the description c it carries, as a function of
size n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The compressed sampler's program at λ(n) has size polynomial in size n.
The output's decider — the wrapper around outDec — has size at most
|c| + sizeZ (size n).
The size clause: past a threshold, a description of size at most n / 2 yields an
output whose verifier has size at most n.
The decider clause #
The output's decider is the wrapper around outDec; its cost on an input d at index m is
Prog.wrapCoreCost with the inner cost innerBound below. Both are then bounded by a
polynomially bounded function decZ of the largest of the index m, the level n and the
input size |d|, and absorbed.
The inner decider's cost at index m on an input of size t: for a description of size
s of a string of length L, at level n and parameter lam of size l. The sizes of the
binary numerals m and n appear as 4 · size + 1, so that the bound is monotone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inner decider's cost. On a succinct description (c, n) of x, outDec with
(c, n, λ) runs within innerBound on every input at every index: the compressed decider's
own time (GapCompression.decider_time), simulated by the universal machine, after the
preparation.
The output's decider, on every input.
Monotonicity and polynomial boundedness of the bounds #
PolyBounded for each bound, with every argument the same z.
The size of λ(z)'s encoding, as the bound 8 · size z + 5.
The master bound, and the clause #
The size of the compressed sampler's program, in z.
Equations
- MIPRE.Halting.sigZ G z = Polynomial.eval (8 * z.size + 5) G.samplerProg.timeBound
Instances For
The size of the output's inner decider outDec, in z.
Equations
- MIPRE.Halting.deltaZ G U z = MIPRE.Cost.esize (MIPRE.Halting.haltProg G U) + z + (4 * z.size + 1) + (8 * z.size + 5) + 37
Instances For
The inner cost, in z.
Equations
- MIPRE.Halting.iotaZ G U z = MIPRE.Halting.innerBound G U z z (z + 1) (MIPRE.Halting.lamOf z) (8 * z.size + 5) z z
Instances For
wrapHeadZ, in z.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The master bound: wrapCoreCost with every atom replaced by its bound in z.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The output's decider cost is below the master bound at the largest z of the index,
the level and the input size.
The decider clause: past a threshold, on a succinct description (c, n) of a string
of length at most n + 1 with 2|c| ≤ n, the output's decider runs within
m ^ n · (|d| + 1) ^ n at every index m ≥ 2.
The output is bounded #
The field isBounded_compr.
The growth of the parameter #
The field ansBound_le, from exists_ansBound_le at λ(n) ≥ n + 1.
The specification, given the compressor's program #
The compressor meets its specification, given a polynomial-time program computing
comprStr c n (λ(n)) from (c, n). Everything the specification asks is proved here or in
Halting/Compressor.lean; the program itself is the last piece of obligation O4.