Documentation

Complexitylib.Classes.Promise.CircuitSize

Nonuniform circuit size for promise problems #

This module proves that completion-based promise SIZE is exactly explicit circuit-family solvability on the promised sides. It also distinguishes pointwise from eventual size bounds and proves that finitely many exceptional lengths do not affect polynomial-size promise circuits.

theorem Complexity.mem_PromiseSIZEWithBasis_iff (problem : PromiseProblem) (B : Basis) (bound : ) :
problem PromiseSIZEWithBasis B bound ∃ (family : CircuitFamily B), problem.SolvedBy family.evalList family.SizeBoundedBy bound

Completion-based promise SIZE is equivalent to one explicit circuit family that solves both promised sides and meets the pointwise bound.

theorem Complexity.mem_PromiseSIZE_iff (problem : PromiseProblem) (bound : ) :
problem PromiseSIZE bound ∃ (family : CircuitFamily Basis.andOr2), problem.SolvedBy family.evalList family.SizeBoundedBy bound

Specialized explicit-solver characterization over Basis.andOr2.

A promise has a P/poly completion exactly when one polynomial-size circuit family solves both promised sides.

theorem Complexity.CircuitFamily.SizeBoundedBy.eventuallySizeBoundedBy {B : Basis} {family : CircuitFamily B} {bound : } (hbound : family.SizeBoundedBy bound) :

A pointwise size bound is also an eventual size bound.

theorem Complexity.CircuitFamily.EventuallySizeBoundedBy.mono {B : Basis} {family : CircuitFamily B} {first second : } (hbound : family.EventuallySizeBoundedBy first) (hle : ∀ (n : ), first n second n) :

An eventual size bound is monotone under pointwise enlargement.

theorem Complexity.CircuitFamily.EventuallySizeBoundedBy.trans_eventually {B : Basis} {family : CircuitFamily B} {first second : } (hbound : family.EventuallySizeBoundedBy first) (hle : ∀ᶠ (n : ) in Filter.atTop, first n second n) :

An eventual size bound composes with an eventually valid comparison.

A polynomial bound outside a finite prefix can be enlarged by a constant polynomial to cover every length.

Pointwise promise size is contained in eventual promise size over any basis.

Pointwise promise size is contained in eventual promise size.

theorem Complexity.PromiseSIZEWithBasis_mono (B : Basis) {first second : } (hle : ∀ (n : ), first n second n) :

Pointwise promise SIZE is monotone in its bound.

theorem Complexity.PromiseEventuallySIZEWithBasis_mono (B : Basis) {first second : } (hle : ∀ (n : ), first n second n) :

Eventual promise SIZE is monotone in its bound.

theorem Complexity.PromiseSIZEWithBasis_mapBasis_subset {source target : Basis} (hom : source.Hom target) (bound : ) :
PromiseSIZEWithBasis source boundPromiseSIZEWithBasis target bound

Exact semantics-preserving basis relabeling preserves pointwise promise circuit size with no overhead.

theorem Complexity.PromiseEventuallySIZEWithBasis_mapBasis_subset {source target : Basis} (hom : source.Hom target) (bound : ) :

Exact semantics-preserving basis relabeling preserves eventual promise circuit size with no overhead.

theorem Complexity.PromiseSIZEWithBasis_eq_of_homs {first second : Basis} (forward : first.Hom second) (reverse : second.Hom first) (bound : ) :

Bases admitting exact semantics-preserving relabelings in both directions give the same pointwise promise-size class at every bound.

theorem Complexity.PromiseEventuallySIZEWithBasis_eq_of_homs {first second : Basis} (forward : first.Hom second) (reverse : second.Hom first) (bound : ) :

Bases admitting exact semantics-preserving relabelings in both directions give the same eventual promise-size class at every bound.

Finitely many exceptional lengths do not prevent a polynomially bounded promise solver from giving a P/poly completion.

The promise-size lift agrees with ordinary SIZE on total languages.

The promise-P/poly lift agrees with ordinary P/poly on total languages.