Documentation

Complexitylib.Classes.PPoly.Unrolling

Deterministic time has nonuniform circuits #

This module specializes bounded NTM acceptance circuits to deterministic machines by fixing the choice prefix of tm.toNTM. It packages the resulting circuits into a family, proves exact language semantics and cubic-in-time size, and concludes P ⊆ P/poly directly from the unrolling construction.

Main results #

theorem Complexity.TM.unrollingCircuitFamily_function {k : } (tm : TM k) (f : ) (n : ) (x : BitString n) :

The deterministic unrolling family computes the exact bounded acceptance predicate at every input length.

theorem Complexity.TM.DecidesInTime.boundedAcceptanceBit_iff {k : } {tm : TM k} {L : Language} {f : } (hdec : tm.DecidesInTime L f) (n : ) (x : BitString n) (choices : BitString (f n)) :

A deterministic decider's exact-horizon bounded acceptance bit agrees with language membership, for every choice string of its deterministic embedding.

A deterministic decider's unrolling family agrees with its language on every fixed-length input.

The unrolling family of a deterministic decider decides the same language.

theorem Complexity.TM.unrollingCircuitFamily_size_bigO {k : } (tm : TM k) {f : } {d : } (hf : BigO f fun (x : ) => x ^ d) :
BigO (tm.unrollingCircuitFamily f).size fun (x : ) => x ^ (3 * d)

If the deterministic horizon is O(n^d), its unrolling family has size O(n^(3d)).

theorem Complexity.TM.DecidesInTime.mem_PPoly {k : } {tm : TM k} {L : Language} {f : } {d : } (hdec : tm.DecidesInTime L f) (hf : BigO f fun (x : ) => x ^ d) :

A deterministic decider with a polynomial time horizon decides a language in P/poly through its explicit unrolling family.

P ⊆ P/poly, directly by bounded deterministic unrolling.