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 definitions #
Cslib.Circuits.Boolean.frameWiring,Cslib.Circuits.Boolean.framedSlice: the input-and-constant substitution buildingframe x ++ rfromx ++ r, and the slice of a language pulled back along that framing.Cslib.Circuits.Boolean.encodes,Cslib.Circuits.Boolean.encodesMember: the words of lengthnin the image of an encodingenc, and the indicator of encoded members of a setA.
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.P_subset_PPolyOn:P ⊆ P/poly, for problems with any encoding of their instances.Cslib.Circuits.Boolean.BPP_subset_PPolyOn,Cslib.Circuits.Boolean.RP_subset_PPolyOn,Cslib.Circuits.Boolean.coRP_subset_PPolyOn:BPP, RP, coRP ⊆ P/poly, for problems with any encoding of their instances.
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. A problem in P, with any encoding enc of its instances, is the preimage
under enc of a language in P/poly.
Randomised classes #
Substituting Fin.append x r along frameWiring n P produces the word
frame (List.ofFn x) ++ List.ofFn r.
The function of x ++ r that tests frame x ++ r ∈ L.
Instances For
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.
RP ⊆ P/poly. A problem in RP, with any encoding enc of its instances, is the preimage
under enc of a language in P/poly.
coRP ⊆ P/poly. A problem in coRP, with any encoding enc of its instances, is the
preimage under enc of a language in P/poly.