Documentation

Complexitylib.Classes.PPoly

P/poly and circuit-size classes #

This module supplies the public API for nonuniform circuit classes. It relates the exact pointwise-polynomial definition of PPoly to the big-O power convention used elsewhere in the library.

@[simp]

A list belongs to the language of a Boolean function family iff the length-indexed function evaluates to true on its entries.

The serialization of a length-n bitstring lies in f.toLanguage iff f n evaluates to true on that bitstring.

Distinct Boolean function families induce distinct languages: toLanguage is injective.

@[simp]

A list belongs to the language of a circuit family iff the circuit for its length evaluates to true on it.

The empty string is in a circuit family's language iff the length-zero circuit outputs true.

A circuit family decides L iff its list-level evaluation agrees with membership in L on every input.

theorem Complexity.CircuitFamily.decides_congr {B : Basis} (F : CircuitFamily B) {L K : Language} (h : L = K) :

Decides respects equality of languages: deciding L and deciding K are equivalent when L = K.

theorem Complexity.CircuitFamily.decides_unique {B : Basis} (F : CircuitFamily B) {L K : Language} (hL : F.Decides L) (hK : F.Decides K) :
L = K

A circuit family decides at most one language: if F decides both L and K, then L = K.

If F decides L, then its list-level evaluation returns true exactly on members of L.

theorem Complexity.CircuitFamily.Decides.apply {B : Basis} {F : CircuitFamily B} {L : Language} (h : F.Decides L) {n : } (x : BitString n) :

A deciding family agrees with language membership on the canonical serialization of every fixed-length input.

A circuit family computing a Boolean function family decides the language induced by that family.

Computing a Boolean function family is equivalent to deciding its induced language.

theorem Complexity.SIZEWithBasis_mono (B : Basis) {s t : } (hst : ∀ (n : ), s n t n) :

SIZEWithBasis B is monotone: pointwise enlarging the size bound only enlarges the class.

theorem Complexity.SIZE_mono {s t : } (hst : ∀ (n : ), s n t n) :

SIZE is monotone: pointwise enlarging the size bound only enlarges the class.

theorem Complexity.mem_PPoly_iff {L : Language} :
L PPoly ∃ (F : CircuitFamily Basis.andOr2) (k : ), F.Decides L BigO F.size fun (x : ) => x ^ k

Big-O characterization of membership in PPoly.

PPoly is definitionally the union of the pointwise SIZE classes over all natural-coefficient polynomials. This is not the substantive advice-machine characterization of P/poly.