Polynomial witness bounds by padding #
The linear-witness theorem is provided by the generic finite-verifier compiler
through Complexitylib.Classes.NP.Verifier.Linear. Polynomial witness bounds
reduce to that case by padding until the witness bound is linear in input size.
This implementation has no SAT dependency. The public membership theorem is in
Complexitylib.Classes.NP.Verifier, and Classes.NP.WitnessConstruction uses it
to prove the FNP-to-NP corollaries.
Any polynomial witness bound #
The input padded with a ruler long enough to make the witness bound linear.
Equations
- Complexity.padWith p x = Complexity.pair x (Complexity.polyRuler p x)
Instances For
The verifier for the padded language: run the original verifier on the unpadded input, and check that the padding really is long enough.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The padded language, whose witnesses are short enough for the linear guess-and-verify machine.
Equations
Instances For
Guess and verify, with any polynomial witness bound. A language whose
members are exactly the inputs carrying a certificate a polynomial-time verifier
accepts is in NP, provided the verifier only accepts certificates of
polynomial length.