Succinct descriptions and the bit-query program #
IsSuccinctDesc c n x is [MNY, Definition 2.4] (blueprint def:succinct), with the time
bound adapted to the ambient model (see the module docstring of
MIPRE.Foundations.Compression). The bit-query program bitQueryProg univ of the
recursive compression argument answers bit-queries about a string that is only given
implicitly, as the output of a program c' on an input (e, n): on
encode (((c', e), n), m) it simulates c' on encode (e, n) through the universal machine
and indexes the result with bitAtProg. Its correctness is conditional on the run of c'
(bitQueryProg_runs), and hardcoding ((c', e), n) into it gives a succinct description of
that output whenever the run is fast enough for the budget (isSuccinctDesc_hardcode).
Succinct descriptions ([MNY, Definition 2.4]; blueprint def:succinct) #
(c, n) succinctly describes the bit string x: c is a closed program, x has
length at most 2 ^ n, and c answers every bit-query m (presented in binary; the
answer is bitQueryAnswer x m) within cost (n + 1) * (|m| + 1) ^ 2.
[MNY, Definition 2.4], with the time bound adapted as discussed in the module docstring of
MIPRE.Foundations.Compression. The pair (c, n) is exponentially smaller than x itself;
a compression procedure's guarantees are only required on genuine succinct descriptions,
but it must run (in polynomial time) on all inputs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The bit-query program: on encode (((c', e), n), m), run univ on
cons (encode c') (encode (e, n)) to obtain the string y, then answer the bit-query m
about y with bitAtProg.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cost of the bit-query program, as a polynomial in
s = esize c' + esize e + esize n + t (with t the cost of the run of c'), per
(|m| + 1) ^ 2.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Conditional correctness of the bit-query program: if c' runs on encode (e, n) to
encode y at cost t, then bitQueryProg U.univ answers the bit-query m about y
within bitQueryBound U (esize c' + esize e + esize n + t) · (|m| + 1) ^ 2.
Hardcoding ((c', e), n') into the bit-query program gives a succinct description of
the output y of c' on encode (e, n'), with parameter n, as soon as the run of c'
fits the budget (n' may be any encodable value, e.g. a level or a pair of levels): its cost t is at most 2 ^ n, and the bit-query overhead is at most
n + 1.