P ⊆ P/poly and BPP ⊆ P/poly #
A problem decided in polynomial time has circuits of polynomial size
Arora and Barak, Theorem 6.6: the machine deciding it writes [true] within
polynomially many steps exactly on the encoded members, and the inputs on which a machine does so
form a language in P/poly (MachineSimulation.acceptedWithin_mem_PPoly). With Adleman's theorem
(PPoly.of_boundedError), the same holds for problems decided with bounded error
Arora and Barak, Theorem 7.14: the verifier's circuits read frame x ++ r, whose
bits are bits of x, bits of r or constants (frameWiring), so they are circuits for a function
of x ++ r of the same size up to two gates.
Main results #
Cslib.Circuits.Boolean.PPoly.exists_of_polyTime: the instances on which a Boolean function computable in polynomial time is true are the preimage of a language inP/poly.Cslib.Circuits.Boolean.PPoly.exists_of_mem_P: a problem inP, with any encoding of its instances, is the preimage of a language inP/poly.Cslib.Circuits.Boolean.PPoly.of_mem_P:P ⊆ P/polyfor languages overBool.Cslib.Circuits.Boolean.PPoly.exists_of_mem_BPP,PPoly.exists_of_mem_RP: the same forBPPandRP, with any encoding.Cslib.Circuits.Boolean.PPoly.of_mem_BPP,PPoly.of_mem_RP,PPoly.of_mem_coRP:BPP, RP, coRP ⊆ P/polyfor languages overBool.
References #
The instances on which a Boolean function computable in polynomial time is true are the
preimage, under the encoding, of a language in P/poly.
P ⊆ P/poly for languages over Bool, with words encoded as themselves.
Randomised classes #
The function of x ++ r that tests frame x ++ r ∈ L.
Instances For
Framing costs at most two gates.
A language agreeing with encodesMember enc A on encoded words contains exactly the encodings
of the members of A.
The verifier on an encoded instance, as the framed slice of the language deciding it.
BPP ⊆ P/poly. A problem in BPP, with any encoding enc of its instances, is the
preimage under enc of a language in P/poly.
BPP ⊆ P/poly for languages over Bool, with words encoded as themselves.
RP ⊆ P/poly for languages over Bool, with words encoded as themselves.
coRP ⊆ P/poly for languages over Bool.