The randomness bound has to be constructible #
Complexitylib.Classes.PCP defines PCP r q for an arbitrary pair of functions
r q : ℕ → ℕ, with no requirement that either be computable. That makes the
union over all r =O Nat.log 2 far too large to be NP, and this module shows
it: for every set A ⊆ ℕ, the language of inputs whose length lies in A
belongs to the union.
One fixed verifier does it for all A at once. It queries nothing, so its
transcript is pair (pair x ρ) [], of length 4|x| + 2|ρ| + 6; accepting when
that is divisible by four means accepting exactly when |ρ| = 1. Feeding it one
coin when |x| ∈ A and none otherwise makes it accept certainly on A and
never off it. The bound r used to do that is the indicator of A, which is
O(1) and so certainly O(log n) — but it is as uncomputable as A is.
Since NP is countable and there are 2^𝔠 sets A, the union cannot equal
NP: the ⊆ NP half of the statement is false as written. The remedy is the
usual one, to require the bounds to be constructible; the NP ⊆ PCP half — the
Dinur half — is untouched.
Main definitions #
Complexity.coinLenVerifier— the verifier that only counts its coins
Main results #
Complexity.lengthLang_mem_iUnion_PCP— every length-determined language, computable or not, is in the union
A verifier that reads nothing and accepts exactly when it was given one coin.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every length-determined language is in the union #
The union of PCP classes contains every length-determined language.
Since A is arbitrary it may be uncomputable, so the union is not contained in
NP.