MCSP is in NP #
An instance of the Minimum Circuit Size Problem (Cslib.MCSP) is encoded by the 2 ^ n bits of
its truth table followed by the threshold in binary (Cslib.MCSP.encInstance); the length of
the table determines n. The problem is in NP for this encoding (Cslib.MCSP.mem_NP)
Kabanets and Cai: a certificate is a circuit with at most as many gates as the
threshold, in the format of Cslib.Circuits.Boolean.readCertificate, and the verifier checks that
it is a circuit and evaluates it on all 2 ^ n inputs. The threshold may be exponentially larger
than the table; certificates are capped at the truth-table bound 2 ^ n (2 n + 3) + 1, which
every function on n inputs meets (Cslib.Circuits.Boolean.complexity_le_two_pow_mul_add_one),
so they stay polynomially long in the length of the table.
Main definitions #
Cslib.MCSP.encInstance: the encoding of instances.Cslib.MCSP.sampleBudget,Cslib.MCSP.budget: certificate gate budgets fortsamples and for a full2 ^ n-entry truth table.Cslib.MCSP.validCertificate,Cslib.MCSP.evalCertificate,Cslib.MCSP.checkCertificateOn,Cslib.MCSP.checkCertificate: certificate well-formedness, evaluation, and generic parameterized verifiers over a list of tests and over all2 ^ minputs.Cslib.MCSP.tableFunction: the Boolean function read from a truth-table list.Cslib.MCSP.verifier: the verifier.Cslib.MCSP.tableVerifier: the verifier on the bits of a truth table and a threshold.
Main results #
Cslib.MCSP.exists_circuit_of_checkCertificateOn,Cslib.MCSP.exists_checkCertificateOn_append,Cslib.MCSP.exists_circuit_of_checkCertificate,Cslib.MCSP.exists_checkCertificate_append,Cslib.MCSP.exists_circuit_of_validCertificate,Cslib.MCSP.exists_validCertificate_of_circuit: soundness and completeness of the generic verifiers and ofvalidCertificate/evalCertificate.Cslib.MCSP.mem_of_verifier_eq_true,Cslib.MCSP.exists_verifier_append: the verifier accepts some certificate exactly for the instances in MCSP, certificates of a fixed length suffice, and bits after them are ignored.Cslib.MCSP.complexity_le_of_tableVerifier,Cslib.MCSP.exists_tableVerifier_append: soundness and completeness oftableVerifieron truth-table lists of length2 ^ m.Cslib.MCSP.isVerifier: the verifier is correct.Cslib.MCSP.computableInPolyTime_tableValue: truth table lookup is polynomial-time.Cslib.MCSP.computableInPolyTime_validCertificate,Cslib.MCSP.computableInPolyTime_evalCertificate,Cslib.MCSP.computableInPolyTime_checkCertificateOn,Cslib.MCSP.computableInPolyTime_checkCertificate: certificate well-formedness, evaluation, and generic verification are polynomial-time.Cslib.MCSP.computableInPolyTime_verifier,Cslib.MCSP.computableInPolyTime_tableVerifier: the verifiers are polynomial-time.Cslib.MCSP.mem_NP: MCSP is inNP.
References #
The number of gates a certificate for t samples on n inputs may describe: the threshold
s, capped at the sample-set bound t * (2 * n + 3) + 1.
Instances For
The number of gates a certificate may describe: the threshold, capped at the truth-table bound that every function meets.
Instances For
The value of the function of an instance at the input with bits y.
Instances For
The function on m inputs with the truth table T, read as MCSP reads truth tables.
Instances For
A certificate verifier parameterized by a list of tests, the input bitstring of each test, and the acceptance condition on a test and the circuit output on its input.
Instances For
An accepted certificate decoded by checkCertificateOn describes a circuit of size at most S
meeting the acceptance condition on every test in tests whose input is List.ofFn y.
A circuit of size at most S meeting the acceptance condition on every test in tests has a
certificate of length certLength m S, accepted by checkCertificateOn whatever bits follow
it.
An accepted certificate decoded by checkCertificate describes a circuit of size at most S
meeting the acceptance condition on every input.
A circuit of size at most S meeting the acceptance condition has a certificate of length
certLength m S, accepted whatever bits follow it.
Soundness of validCertificate: a well-formed certificate for (n, s) decodes to a circuit of
size at most s whose evaluation agrees with evalCertificate.
Completeness of validCertificate: every circuit of size at most s on n inputs has a
canonical certificate of length certLength n s satisfying validCertificate whose
evalCertificate agrees with the circuit on all n-bit inputs.
Correctness #
Generic truth-table indexing into a function represented as a list via List.ofFn.
The truth table of a function, as a list, is read back as the function.
The polynomial bounding the length of certificates.
Instances For
When the arity n and sample count t are each at most L, the certificate length at gate
budget sampleBudget n t s is bounded by certPolynomial.eval L.
Completeness of the verifier. Every instance in MCSP has a certificate of length
certLength x.arity (budget x.arity x.threshold) that is accepted whatever bits follow it.
MCSP.verifier verifies MCSP, with certificates of length certPolynomial.
Polynomial time #
The verifier on the bits of a truth table, a threshold and a certificate, with the number of
inputs read from the length of the table: MCSP.verifier on raw data
(Cslib.MCSP.verifier_eq_tableVerifier), defined on every list of bits.
Instances For
A truth table of length 2 ^ m whose function has at most s gates has a certificate of
length certLength m (budget m s), accepted whatever bits follow it.
Looking up an input in a truth table is computable in polynomial time.
Checking well-formedness of a certificate is computable in polynomial time when m and S
are given in unary.
Evaluating a certificate on an input is computable in polynomial time when m and S are
given in unary.
A generic certificate verifier on a supplied list of tests is computable in polynomial time when its test list, input extraction, and acceptance condition are polynomial-time.
A generic certificate verifier is computable in polynomial time when its acceptance condition is polynomial-time and the number of inputs is bounded by the input length.
Computing sampleBudget (m a) (t a) (s a) in unary is polynomial-time when m a and t a
are polynomial-time in unary and s a is polynomial-time in binary.
A certificate verifier on a table list, threshold, and certificate is computable in
polynomial time from encPair (encPair encT encNat) encBits when table length is computable
in polynomial time into unary, the encoding length bounds the table length, and the acceptance
condition is polynomial-time.
The verifier on raw data is polynomial-time.
The MCSP verifier is polynomial-time, on certificates of arbitrary length.
MCSP is in NP, for instances encoded by their truth table and the threshold in
binary.