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 bound ⊆ PromiseSIZEWithBasis 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.