Documentation

Complexitylib.Classes.PPoly.Advice

Polynomial advice and nonuniform circuits #

This module exposes the polynomial-advice machine class and its equivalence with polynomial-size nonuniform circuits. The reverse simulation supplies each canonical family-member encoding as advice to the verified serialized-circuit evaluator.

Main definitions and results #

@[simp]

The advised input has the exact self-delimiting pairing length.

The fixed advice prefix followed by x is exactly the advised machine input.

@[simp]

The fixed-prefix bit string serializes to the self-delimiting advised machine input.

theorem Complexity.Advice.polynomialAdvice_iff_bigO (a : Advice) :
PolynomialAdvice a ∃ (d : ), BigO (fun (n : ) => (a n).length) fun (x : ) => x ^ d

Advice has polynomial length exactly when its length function has a big-O power bound.

Empty advice has constant (hence polynomial) length.

theorem Complexity.PolynomialAdvice.of_length_le {a b : Advice} (hb : PolynomialAdvice b) (hle : ∀ (n : ), (a n).length (b n).length) :

Pointwise shortening preserves polynomial advice length.

theorem Complexity.TM.DecidesWithAdviceInTime.mono {k : } {tm : TM k} {a : Advice} {L : Language} {T T' : } (hle : ∀ (n : ), T n T' n) (hdec : tm.DecidesWithAdviceInTime a L T) :

Advised decision is monotone under pointwise enlargement of its time bound.

Exact-horizon advised acceptance agrees with ordinary language membership.

theorem Complexity.TM.adviceCircuitFamily_function {k : } (tm : TM k) (a : Advice) (T : ) (n : ) (x : BitString n) :

The hardwired advice family computes the exact bounded advised verdict.

The hardwired advice family decides the advised machine's language.

Pointwise cubic size bound for hardwired advised computation.

theorem Complexity.TM.adviceCircuitFamily_size_bigO {k : } (tm : TM k) (a : Advice) {T : } {d : } (hT : BigO T fun (x : ) => x ^ d) :
BigO (tm.adviceCircuitFamily a T).size fun (x : ) => x ^ (3 * d)

A time-O(n^d) advised computation yields a circuit family of size O(n^(3d)).

theorem Complexity.TM.DecidesWithAdviceInTime.mem_PPoly {k : } {tm : TM k} {a : Advice} {L : Language} {T : } {d : } (hdec : tm.DecidesWithAdviceInTime a L T) (hT : BigO T fun (x : ) => x ^ d) :

One polynomial-time advised decider directly witnesses membership in P/poly.

No advice-length hypothesis is needed for this direction: the advice prefix is hardwired without adding gates, while the unrolling size depends only on the time horizon. PAdvice still requires polynomial advice length to match the standard class convention.

Polynomial-time advice machines have polynomial-size nonuniform circuits.

Polynomial advice and polynomial-size nonuniform circuit families define the same language class.