P/poly #
A language over Bool is in P/poly when it has circuits of polynomial size: for every input
length n, a circuit over the De Morgan basis computing the slice of the language at n
(Language.slice), with size bounded by a polynomially bounded function of n
Arora and Barak, Definition 6.5. There is no requirement that the circuits for
different lengths be related, so P/poly contains undecidable languages.
PPoly is defined through the minimal circuit size of each slice (Cslib.Circuits.complexity);
mem_PPoly_iff_exists_circuits is the textbook formulation with an explicit family of circuits.
Size counts gates, constants included, which changes sizes by at most a constant factor and so does
not change the class. For decision problems over an arbitrary type α with encoding
enc : α ↪ List Bool, PPolyOn enc is the class of problems whose image under enc agrees with a
language in PPoly.
Main definitions #
Cslib.Circuits.Boolean.SIZE: the languages with circuits of size at mosts nat each length.Cslib.Circuits.Boolean.PPoly: the languages overBoolwith circuits of polynomial size.Cslib.Circuits.Boolean.PPolyOn: problems with circuits of polynomial size under an encoding.
Main results #
Cslib.Circuits.Boolean.mem_PPoly_iff_exists_circuits: the formulation with circuit families.Cslib.Circuits.Boolean.mem_PPoly_iff_exists_mem_SIZE:P/polyis the union of the classesSIZE (c (n + 1) ^ c).Cslib.Circuits.Boolean.PPoly.of_synthesis: languages whose slices are synthesised within a polynomial budget are inP/poly.Cslib.Circuits.Boolean.PPoly.compl,PPoly.sup,PPoly.inf: closure under the Boolean operations.Cslib.Circuits.Boolean.mem_PPolyOn_encBits_iff,Cslib.Circuits.Boolean.PPolyOn.compl,Cslib.Circuits.Boolean.PPolyOn.sup,Cslib.Circuits.Boolean.PPolyOn.inf: agreement withPPolyonencBitsand closure ofPPolyOnunder the Boolean operations.
References #
The languages over Bool that have, for every input length n, a circuit of size at most
s n Arora and Barak, Definition 6.2. Size counts gates
(Cslib.Circuits.Circuit.size), while Arora and Barak count all vertices, inputs included, so
SIZE s is their SIZE (s + n) up to the output vertex.
Instances For
A language is in P/poly if and only if the circuit complexity of its slices is polynomially
bounded.
P/poly with circuit families. A language is in P/poly exactly when it has a family of
circuits, one for each input length, whose sizes are polynomially bounded.
A language whose slices are synthesised from the inputs within a polynomial budget is in
P/poly.