The witness layout of a PCP verifier #
A witness for a PCP verifier is a table of answers, one fixed-width block per
coin string. This module fixes that layout and reads it back: the block for a
coin string, cut down to the number of queries actually made, is exactly the
answer list SubsetNP.tableOf names.
It also records that the query bound can be taken to be a constant. A bound
q =O 1 need not be a computable function, but it is eventually bounded and
takes finitely many values before that, so a single number bounds every query
list — which is what an algorithm can actually use.
Main definitions #
Complexity.wBlock— the witness block for one coin string
Main results #
Complexity.exists_const_query_bound— a constant bounds every query listComplexity.tableOf_eq_wBlock— the block is the answer listComplexity.accLang_mem_P— checking every coin string is polynomial time
A constant bounds every query list. This is what makes the witness layout uniform: each block has the same fixed width.
The block is the answer list. With the answers for coin index c laid
out in the slots c * Q, …, the witness block is exactly the table
SubsetNP.tableOf reads.
Acceptance on every coin string #
The check is a loop over coin indices. Each iteration recovers the coin string from its index, reads the verifier's query list to learn how many answers this coin string uses, cuts that many out of the witness block, and asks the verdict.
The input of one iteration is pair (pair x w) (unary c).
Equations
Instances For
The witness, out of the iteration's input.
Equations
Instances For
The coin string named by the iteration's index.
Equations
- Complexity.accCoin r y = Complexity.coinStr (r (Complexity.accX y).length) (Complexity.pairSnd y).length
Instances For
One iteration's condition: the verifier accepts the view.
Equations
- Complexity.accInner V f r Q = Complexity.accView f r Q ⁻¹' V.verdict
Instances For
Acceptance on every coin string, as a language of pair x w.
Equations
- Complexity.accLang V f r Q = {z : List Bool | ∀ c < 2 ^ r (Complexity.pairFst z).length, Complexity.pair z (List.replicate c true) ∈ Complexity.accInner V f r Q}
Instances For
What one iteration looks at, on a well-formed input.
Acceptance on every coin string.