Documentation

Complexitylib.Classes.PPoly.Uniform.Unrolling.Containment

Deterministic unrolling into uniform P/poly #

This module packages the verified log-space tableau serializer into the machines-to-circuits direction of uniform P/poly. The conditional seams remain available for alternate serializers, while the canonical padded serializer discharges them unconditionally.

Main results #

theorem Complexity.TM.DecidesInTime.mem_UniformPPoly_of_directUnrollingCode_mem_FL {k : } {tm : TM k} {L : Language} (q : Polynomial ) (hdec : tm.DecidesInTime L fun (x : ) => Polynomial.eval x q) (hgen : (fun (x : List Bool) => tm.directUnrollingCode (fun (x : ) => Polynomial.eval x q) x.length) FL) :

A polynomial-time decider belongs to uniform P/poly whenever its direct unrolling code map is computable in logarithmic space.

A polynomial-time decider belongs to uniform P/poly whenever its regularly padded exact code map is computable in logarithmic space.

If every polynomial-horizon direct unrolling code map belongs to FL, then every language in P has a logspace-uniform polynomial-size circuit family.

If every polynomial-horizon padded unrolling code map belongs to FL, then every language in P has a logspace-uniform polynomial-size family.

The canonical streaming transducer computes every regularly padded direct unrolling code at the normalized polynomial horizon in logarithmic space.

theorem Complexity.TM.DecidesInTime.mem_UniformPPoly {k : } {tm : TM k} {L : Language} (q : Polynomial ) (hdec : tm.DecidesInTime L fun (x : ) => Polynomial.eval x q) :

Every language decided by a deterministic machine within a polynomial time bound has a logspace-uniform polynomial-size circuit family.

Deterministic polynomial time is contained in logspace-uniform P/poly.

Logspace-uniform polynomial-size circuits characterize deterministic polynomial time.