The Minimum Circuit Size Problem #
The Minimum Circuit Size Problem (MCSP) asks, given the truth table of a Boolean function f
on n inputs and a number s, whether f has a circuit with at most s gates
[KC00]. Its gap version GapMCSP[s₁, s₂] is the promise problem of telling, for each
n, the truth tables of functions with circuits of at most s₁ n gates from those of functions
that need more than s₂ n gates [OliveiraPichSanthanam2019, Definition 2.4].
The truth table of f lists its 2 ^ n values in the order of BitString.equivFin. Circuits are
De Morgan circuits, and their size counts every AND, OR, NOT and constant gate, so the measure is
cslib's complexity interpretation (single f); see Cslib.Computability.Circuit.Boolean.Basic.
Only the semantics of the problems is defined here. An encoding of the instances of MCSP as
strings, and the proof that MCSP is in NP for it, are in Complexity.Computability.MCSP.NP.
The yes-instances of MCSP on functions of n inputs at threshold s are the truth tables of
cslib's computableFunctions n s, so there are as many of them as such functions
(MCSP.ncard_setOf_mem).
Main definitions #
Cslib.MCSP.truthTable: truth tables of Boolean functions.Cslib.Circuits.Boolean.truthTableLanguage: the truth tables of a property, as a language.Cslib.MCSP.Instance,Cslib.MCSP: the instances and the yes-instances of MCSP.Cslib.GapMCSP:GapMCSP[s₁, s₂]as aPromiseProblem (List Bool), with sidesCslib.GapMCSP.yesSetandCslib.GapMCSP.noSet.
Main results #
Cslib.Circuits.Boolean.ofFn_mem_truthTableLanguage: membership of anofFn-vector intruthTableLanguage.Cslib.MCSP.mem_iff_exists_circuit,Cslib.MCSP.mem_iff_mem_computableFunctions: the yes- instances of MCSP, as circuits and as computable functions.Cslib.MCSP.ncard_setOf_mem: the number of yes-instances of a given arity and threshold.Cslib.GapMCSP.ofFn_mem_yesSet_iff_mem_MCSP,Cslib.GapMCSP.slice_yesSet_eq_true_iff,Cslib.GapMCSP.ofFn_mem_noSet_iff_notMem_MCSP: characterization of truth tables of length2^nin the yes and no sets.Cslib.GapMCSP.disjoint_yesSet_noSet: the promise ofGapMCSP[s₁, s₂]is consistent whens₁ n ≤ s₂ nfor alln.
References #
The truth table of a Boolean function on n inputs: its values on the 2 ^ n inputs, in the
order of BitString.equivFin.
Instances For
The Boolean function whose truth table an instance gives.
Instances For
The truth table of f with threshold s is a yes-instance exactly when f has complexity at
most s.
The truth table of f with threshold s is a yes-instance exactly when f is computable
with at most s gates.
An instance is a yes-instance exactly when some circuit with at most threshold gates
computes its function.
The truth tables of a property, as a language [RR97]: a word of length 2 ^ n
belongs to it when it is the truth table of a function in C n. Words whose length is not a power
of two do not belong to it.
Instances For
A 2 ^ n-bit string T, viewed as a list via List.ofFn, belongs to truthTableLanguage C
if and only if its corresponding Boolean function lies in C n.
A 2 ^ n-bit string T, viewed as a list via List.ofFn, belongs to yesSet s₁
if and only if its circuit complexity is at most s₁ n.
The 2 ^ n-bit slice of yesSet s₁ evaluates to true on T if and only if its circuit
complexity is at most s₁ n.
A 2 ^ n-bit string T, viewed as a list via List.ofFn, belongs to noSet s₂
if and only if its circuit complexity is strictly greater than s₂ n.
GapMCSP[s₁, s₂] [OliveiraPichSanthanam2019, Definition 2.4]: the promise problem whose
yes-instances are truth tables of functions with circuits of at most s₁ n gates and whose
no-instances are truth tables of functions that need more than s₂ n gates, when s₁ n ≤ s₂ n
for all n. Following OPS19, the hypothesis ∀ n, s₁ n ≤ s₂ n is bundled to guarantee
disjointness of the promise problem by construction.