Documentation

Complexitylib.Classes.PPoly.Advice.Reverse

Nonuniform circuits as polynomial advice #

This module exposes the reverse half of the advice/circuit characterization. The canonical serialized member of a polynomial-size circuit family is used as length-dependent advice for the verified circuit evaluator.

Main results #

Canonical member encodings of a polynomial-size family form polynomial-length advice.

The verified serialized evaluator decides a circuit family's language when the canonical member code is supplied as advice.

theorem Complexity.CircuitFamily.adviceEvalTime_bigO (F : CircuitFamily Basis.andOr2) {d : } (hsize : BigO F.size fun (x : ) => x ^ d) :
BigO F.adviceEvalTime fun (x : ) => x ^ (4 * (d + 1))

Evaluating the canonical member-code advice of a size-O(n^d) family runs in time O(n^(4(d+1))), measured in the original input length.

theorem Complexity.CircuitFamily.Decides.mem_PAdvice {F : CircuitFamily Basis.andOr2} {L : Language} {d : } (hdec : F.Decides L) (hsize : BigO F.size fun (x : ) => x ^ d) :

A polynomial-size circuit family deciding L directly witnesses L ∈ PAdvice through the verified serialized evaluator.

Polynomial-size nonuniform circuits can be evaluated in polynomial time when their canonical member encodings are supplied as advice.