NowhereLog

Probabilistic Checkable Proof (PCP)

April 30, 2023

This post gives a gentle introduction to the Probabilistic Checkable Proof (PCP), the pearl of computational complexity theory.

Introduction

Consider the canonical NP problem, boolean satisfiability (SAT). To determine if a Boolean formula is satisfiable, a deterministic verifier needs to check a polynomial length proof — the assignment of each variable. But what if the verifier is allowed to use randomness and to fail with a small probability? It turns out that the probablistic verifier still needs a polynomial-size proof, but it does not need to look at all of it. With oracle access to the proof, it only needs to make constant queries to the proof, i.e. check constant number of locations of the proof. The proof string is of course much more complex than the assignment of each variable. We call these proofs “probablistic checkable proofs” (PCP). The aforementioned fact about NP is the famouse PCP theorem, and in this post, we will walk through the key components of the proof.

Definition

A Language LL is in the complexity class PCPc,s[r,q]Σ_{c, s}[r, q]_\Sigma if there exists a polynomial-time probablistic oracle Turing machine called the PCP verifier VLV_L such that

  • Σ\Sigma is the alphabet for the proofs
  • VLV_L uses rr bits of randomness and qq queries
  • Completeness: If xLx \in L, there exists a proof π\pi such that Prρ{0,1}q[VLπ(x;ρ)=1]c\Pr_{\rho \sim \{0,1\}^q}[V_L^\pi(x; \rho) = 1] \geq c for some 0<c10<c\leq1
  • Soundness: If xLx \notin L, for all proofs π\pi, Prρ{0,1}q[VLπ(x;ρ)=1]s\Pr_{\rho \sim \{0,1\}^q}[V_L^\pi(x; \rho) = 1] \leq s for some 0s<10\geq s<1

Basic Examples and Results

  • PCPc,s[0,0]Σ_{c, s}[0, 0]_\Sigma = P
  • PCP1,0[O(log(n)),0]Σ_{1, 0}[O(\log(n)), 0]_\Sigma = P
  • PCPc,s[poly(n),0]Σ_{c, s}[poly(n), 0]_\Sigma = BPP
  • PCPc,s[0,poly(n)]Σ_{c, s}[0, poly(n)]_\Sigma = NP
  • PCP1,0[O(log(n)),poly(n)]Σ_{1, 0}[O(\log(n)), poly(n)]_\Sigma = NP

Usually Σ={0,1}\Sigma = \{0,1\} and we simply drop Σ\Sigma. Further, if we drop the completeness and soundness parameters, we implicity assume that c=1,s=12c=1, s=\frac{1}{2}. Note that given rr bits of randomness and qq queries, the verifier can check at most 2rq2^r q locations of the proof, which is the effective size of any proof. (Here, we assume the verifier is non-adaptive.)

The Statement of the PCP Theorem

NPPCP[O(logn),O(1)]\text{NP} \subseteq \text{PCP}[O(\log n), O(1)]

The theorem demands a very intricate proof, which is of polynomial size and requires only constant number of queries. The proof we will explore is based on “proof composition”. We will construct two not so strong proofs: a very long proof (exponential-size) that requires only constant number of queries, and a short proof (polynomial size) that requires polylog queries. Then we will compose them to take the merits of both. Thus, the outline of the proof will contain three main components: (1) an exponential-size PCP, (2) a polynomial-size PCP, and (3) the proof composition. Generally speaking, every PCP is a smart coding of the plain proof, so we will use different codes borrowed from coding theory throughout the journey.

Exponential-size PCP

NPPCP[poly(n),O(1)]\text{NP} \subseteq \text{PCP}[poly(n), O(1)]

Note that the effective proof size is 2poly(n)O(1)=exp(poly(n))2^{poly(n)} \cdot O(1) = \exp(poly(n)), hence the name exponential-size PCP. To prove this statement, we will consider a NP-complete problem called QUADEQ, which determines if a system of quadratic equations has a satisfying assignment. The prover should use Walsh-Hadamard code to construct a exponential-size PCP of the satisfying assignment. The verifier will first use linearity testing to verify the validity of the codeword, i.e., to check that the proof is indeed the Walsh-Hadamard code of some string. Then it can use constant queries to verify if the string is a satisfying assignment with high probability.

QUADEQ

A quadratic equation of nn variables u1,,unu_1, \dots, u_n over GF(2)GF(2) has the form i,j[n]ai,juiuj=b\sum_{i, j \in [n]} a_{i,j} u_iu_j = b. A system of quadratic equations over GF(2)GF(2) is in QUADEQ if the system has a satisfying assignment u{0,1}nu \in \{0, 1\}^n.

The polynomial-size proof of QUADEQ is simply the satisfying assignment of the variables uu, so QUADEQ is clearly in NP. To see that QUADEQ is NP-complete, it is easist to reduce from circuit-satisfiabily. We can assign a variable to represent the output of each gate in the circuit:

  • uk=uiujuk=uiuju_k = u_i \land u_j \quad \to \quad u_k = u_iu_j
  • uk=uiujuk=ui+uj+uiuju_k = u_i \lor u_j \quad \to \quad u_k = u_i + u_j + u_i u_j
  • uk=¬uiuk=1uiu_k = \lnot u_i \quad \to \quad u_k = 1 - u_i.

This conversion of a problem instance to a set of equations is known as arithmetization.

Walsh-Hadamard Code

To construct a exponential-size PCP, we will make use of the Walsh-Hadamard code. Given a message u{0,1}nu \in \{0,1\}^n, its Walsh-Hadamard codeword is H(u){0,1}2nH(u) \in \{0,1\}^{2^n}, where H(u)(x)=uxH(u)(x) = u \odot x. Here x{0,1}nx \in \{0,1\}^n is the index of H(u)H(u), a string of exponential size, and uxu \odot x is the dot-product of uu and xx.

Random Subsum Principle

As a fundamental principle of coding, if the messages uu and vv differs in a few locations, we want their codewords to differ in almost all the locations. This is indeed true to Walsh-Hadamard Code, which can be summarized as the random subsum principle:

If uv,then Prx{0,1}n[H(u)(x)H(v)(x)]=12\text{If } u \neq v, \text{then } \Pr_{x \in \{0,1\}^n}[H(u)(x) \neq H(v)(x)] = \frac{1}{2}

Linear Functions

Another principle of coding is that the verifier should be able to check the validity of a codeword, i.e., the given string is the codeword of some string, or the given string is close to the codeword of some string. To demonstrate this property, we will consider the Walsh-Hadamard codeword of uu as a linear function lu:{0,1}n{0,1}l_u: \{0,1\}^n \to \{0,1\} defined by lu(x)=H(u)(x)=uxl_u(x) = H(u)(x) = u \odot x. In general, a linear function f:{0,1}n{0,1}f: \{0,1\}^n \to \{0,1\} satisfies f(u+v)=f(u)+f(v)f(u+v) = f(u)+f(v). It’s straightforward to see that lul_u is indeed a linear function. Conversely, every linear function ff can be written as f=luf=l_u for some u{0,1}nu \in \{0,1\}^n. Let ei{0,1}ne_i \in \{0,1\}^n be the string with a single 11 at the ii-th location. Then ui=f(ei)u_i = f(e_i). Thus, the Walsh-Hadamard code is equivalent to linear functions over GF(2)GF(2). To check the validity of a codeword is to test whether it is close to a linear function.

BLR Linearity Testing

Formally, we say that a function ff is ρ\rho-close to a linear function lul_u if

Prx{0,1}n[f(x)=lu(x)]ρ\Pr_{x \in \{0,1\}^n} [f(x) = l_u(x)] \geq \rho

The BLR linearity testing is actually very simple: we randomly query two locations xx and yy, and test if f(x)+f(y)=f(x+y)f(x)+f(y) = f(x+y). Nevertheless, it is very powerful. We state without a proof of the following theorem: If

Prx,y{0,1}n[f(x)+f(y)=f(x+y)]ρ\Pr_{x, y \in \{0,1\}^n} [f(x)+f(y) = f(x+y)] \geq \rho

ff is ρ\rho-close to some linear function.

This suggests a simple probabilistic algorithm for linearity testing, and hence verifying a Walsh-Hadamard code.

Local Decoding

Walsh-Hadamard code is also a locallly decodable code, i.e., we can recover a single bit of a corrupted codeword while making constant number of queries. Suppose ff is (1δ)(1-\delta)-close to a linear function gg (a Walsh-Hadamard codeword), and we want to decode g(x)g(x), but f(x)f(x) is corrupted. Then we can pick a random r{0,1}nr \in \{0,1\}^n, and since

g(x)=g(x+r)g(r)g(x) = g(x+r) - g(r)

we can decode g(x)g(x) by querying f(x+r)f(x+r) and f(r)f(r) if these two locations are not corrupted. If the codeword is corrupted at every location with the same probability, then this procedure actually makes things worse. However, in our PCP system in the later sections, we only want to check for specific locations of the codeword. In this case, the local decoding procedure guards against a malicious prover who will concentrate the corruptions on the certain locations we are looking at.

An Exponential-size PCP for QUADEQ

QUADEQ asks, given mm quadratic equations of nn variables, if there is satisfying assignment of the variables. Equivalently, QUADEQ asks, given inputs AA and bb, where AA is a m×n2m \times n^2 matrix, and bb is an mm dimensional vector, if there is a n2n^2 dimensional vector UU such that U=uuU = u \otimes u and AU=bAU = b. Here uu should be a satisfying assignment.

Our exponential-size PCP should be f=WH(u)f = WH(u) and g=WH(U)g = WH(U), where U=uuU = u \otimes u. Now the verifier will carry out the following steps:

  • (Linearity Test) Check that ff, gg are linear functions, i.e., ff, gg are Walsh-Hadamard code- words.
  • (Tensor Test) Check that ff, gg encode the same source word, i.e., gg encodes u×uu \times u and f encodes uu.
  • (Satisfiability Test) Check that AU=bAU = b.

We’ve already discussed the linearity test. We will describe the remaining two steps.

Tensor Test

The idea of tensor test is very straightforward. If f=WH(u)f = WH(u) and g=WH(uu)g = WH(u \otimes u) for some uu, then

f(x)f(y)=(ux)(uy)=i,j[n]uiujxiyj=(uu)(xy)=g(uu)f(x)f(y) = (u \odot x) (u \odot y) = \sum_{i, j \in [n]} u_i u_j x_iy_j = (u \otimes u ) \odot (x \otimes y) = g(u \otimes u)

Thus, given two linear functions f:{0,1}n{0,1}f: \{0,1\}^n \to \{0,1\} and g:{0,1}n2{0,1}g: \{0,1\}^{n^2} \to \{0,1\}, the tensor test is as following:

  • Choose r,r{0,1}nr,r' \in \{0,1\}^n uniformly at random.
  • Accept if g(rr)=f(r)f(r)g(r \otimes r') = f(r)f(r')

The protocol is clearly complete. It is also sound: if g and r linear functions, based on random subsum principle, it can be shown that each tensor test rejects correctly with at least 14\frac{1}{4} probability. Thus, it is also efficient: we only need to repeat the test constant number of times to achieve desired parameters. The final caveat is that from linearity testing, we only have the gurantee that gg and ff are close to linear functions. This is a problem since we are only checking specific locations of gg, to be exact, 1/n1/n fraction of locations. This is why local decoding we’ve discussed above is necessary to achieve soundness constraints.

Satisfiability Test

The satisfiability test is also quite straightforward:

  • Choose r{0,1}mr \in \{0,1\}^m uniformly at random.
  • Accept if r(AU)=g(ATr)=rbr \odot (AU) = g(A^Tr) = r \odot b

Again, based on the random subsum principle, each test rejects correctly with at least 12\frac{1}{2} probability. Again, we only need to repeat the test constant number of times to achieve desired parameters.

Summary of Exponential-size PCP

As a recap, the exponential-size PCP verifier uses four testing procedures: linearity test, tensor test (with local decoding), and satisfiability test. Each procedure achieves constant soundness with constant number of queries, and thus we can repeat each procedure constant number of times to achieve overall constant soundness with constant number of queries.

Polynomial-size PCP

NPPCP[O(logn),logO(1)n]\text{NP} \subseteq \text{PCP}[O(\log n), \log^{O(1)} n]

Here, the effective proof size is 2O(log(n))logO(1)n=poly(n)2^{O(\log(n))} \cdot \log^{O(1)} n = poly(n), hence the name polinomial-size PCP. To prove this statement, we will again consider the NP-complete problem QUADEQ. But instead of quadratic equations over F2\mathbb F_2, we will consider the general problem of quadratic equations over an arbitrary finite field F\mathbb F, which is still a NP-complete problem. For the exponential-size PCP, the proof is some version of the satisfying assignment encoded by the Walsh-Hadamard code, which corresponds to linear functions. For the polynomial-size PCPs, we will also use techniques from coding theory, namely low-degree extension and Reed-Muller code, which are closely related and correspond to low-degree polynomial functions. Reed-Muller code won’t be used explicity in the proof, but will be used to encode or amplify the problem instance so that the verifier can check satisfiability with small number of random bits. Then, the main proof will be the low-degree extension of the satisfying assignment, and with the clever SumCheck protocol, the verifier can check the assignment with small number of queries. Additionally, like linearity testing for the exponential-size PCP, the verifier will need to verify the validity of the proof with low-degree testing first.

Amplifying the QUADED with Reed-Muller code

Let’s remind of ourselves the QUADEQ problem: we are given mm quadratic equations of nn variables: p1,,pmF[x1,,xn]p_1, \dots, p_m \in \mathbb F[x_1, \dots, x_n], and we want to know if there is a common zero of the equations xFn\mathbf x \in \mathbb F^n. For the exponential-size PCP, we have to use poly(n)poly(n) number of random bits, essentially because we check the satisfiability of each equation. We will try to tackle this first.

First Naive Solution

What if we just pick an equation at random? This only uses log(m)\log(m) number of bits, which is on the order of log(n)\log(n). The number of queries depend on the arity of the equation we selected, which could be potentially nn, which would be a problem. However, from the reduction of the circuit satisfiability problem, we can restrict the problem to quadratic equations of max arity 3\leq 3, while still resulting in a NP-complete problem. So we actually only need constant number of queries.

However, the soundness is fairly bad. In the worst case, there is an assignment x\mathbf x that satisfies m1m-1 equations, then our soundness is only 1/m1/m. Remember that we need constant soundness so that we can easily amplify it without blowing up the number of random bits or queries.

Reed-Solomon code

To resolve the problem, we need to leverage coding theory to “spread the error”. Roughly, we want to construct more equations so that if an original equation is not satisfied, a lot of constructed equations will not be satisfied.

To achieve this, consider a non-zero message of length mm, u=(u1,,um)Fm\mathbf u = (u_1, \dots, u_m) \in \mathbb F^m. The encoding is a code of length ll, which corresponds to the evaluations of a polynomial pp at ll arbitrary different locations, say x1,,xlFx_1, \dots, x_l \in \mathbb F. The polynomial pp is defined by

f(x)=i=1muixi1f(x) = \sum_{i=1}^{m} u_i x^{i-1}

i.e., the coefficients of the polynomial is defined by the message. Then the code is v=(f(x1),,f(xl))\mathbf v = (f(x_1), \dots, f(x_l)). Since pp is a degree m1m-1 polynomial, it has at most m1m-1 roots. And thus if u0\mathbf u \neq \mathbf 0, there are at most m1m-1 zero coordinates in v\mathbf v; then, if we pick a random coordinate of v\mathbf v, we have a lm+1l\frac{l-m+1}{l} probability to find a non-zero coordinate, which can be made constant if we take say l=2ml = 2m.

This encoding procedure is a linear transformation via the Vandermonde matrix TFl×mT \in \mathbb F^{l\times m}:

T=(1x1x12x1m11x2x22x2m11xlxl2xlm1)T = \begin{pmatrix} 1 & x_1 & x_1^2 & \cdots & x_1^{m-1} \\ 1 & x_2 & x_2^2 & \cdots & x_2^{m-1} \\ \cdots \\ 1 & x_l & x_l^2 & \cdots & x_l^{m-1} \\ \end{pmatrix}

such that v=Tu\mathbf v = T u.

If we consider our mm quadratic functions as a vector function p=(p1,,pm)\mathbf p = (p_1, \dots, p_m), we can similarly encode the vector function to get a new vector function q=Tp\mathbf q = T \mathbf p. Or equivalently, for every evaluation of our quadratic equations, we encode the result with TT. Then if p(x)\mathbf p(\mathbf x) where xFn\mathbf x \in \mathbb F^n has one non-zero coordinate, at least lm+1l\frac{l-m+1}{l} cooridinates of q(x)\mathbf q(\mathbf x) are non-zero.

In this way, we achieve constant soundness and we don’t need much randomness. We only need to use logl\log l number of random bits, which is still on the order of mm. However, we have a problem with the number of queries. Namely, to have ll different locations in F\mathbb F, Fl|\mathbb F| \geq l. But as we will see, we need the size of F\mathbb F to be smaller to achieve small number of queries.

Reed-Muller code

To reduce the size of F\mathbb F, we need to use Reed-Muller code, which extends from single-variable polynomials to multi-variable polynomials. Given a message of length mm, u=(u1,,um)Fm\mathbf u = (u_1, \dots, u_m) \in \mathbb F^m, we will use the message as the coefficients of a multi-variable polynomial ff. We assume that

m=i=0r(ki)m = \sum_{i=0}^{r} {k \choose i}

for some integer rr representing the degree of ff and integer kk representing the number of variables. Then we can define

f(x1,,xk)=S[k],SruSiSxif(x_1, \dots, x_k) = \sum_{S \subseteq [k], |S|\leq r} u_S \prod_{i \in S} x_i

where uSu_S indexes uu. With Reed-Muller code, we can choose rr and kk properly to ensure that F=polylog(m)|\mathbb F| = polylog(m). Further, we will have Fk=poly(m)|\mathbb F^k| = poly(m) new polynomial equations, and we will achieve constant soundness by randomly picking one equation.

Low-Degree Extension

Now with Reed-Muller code to encode the equations, we are left to deal with poly(m)poly(m) equations and we can randomly check one of them to achieve constant soundness. However, we have a big problem with the query complexity. Namely, both the Reed-Solomon and Reed-Muller code “spread” the variables into new polynomials, so that each new polynomial now may have max arity of nn. This will require us to query all positions of the assignment provided by thr prover, but we want to achieve query complexity of polylog(n)polylog(n).

To circumvent checking all coordinates, we will require the prover to provide instead an encoding of the satisfying assignment, the low-degree extension of the assignment. Given an assignment a:[n]Fa: [n] \to \mathbb F, we will consider a subfield HF\mathbb H \subset \mathbb F and an integer ll, such that Hl=n|\mathbb H|^l = n. Then, we can view the assignment function as a:HlFa: \mathbb H^l \to \mathbb F. In effect, we are using ll coordinates over a small field to index nn coordinates.

Finally, we will claim without a proof (which is not complicated) that we can always construct a low-degree extension a^:FlF\hat a: \mathbb F^l \to \mathbb F such that a^Hl=a\hat a|_{\mathbb H^l} = a and individual degree of a^<H\hat a < |\mathbb H|. We will ask the prover to send the evaluation table of this low-degree extension a^\hat a as a part of the proof to the verifier.

Why will this help at all? Let’s consider more concretly the task of the verifier. Suppose that the verifier uses Reed-Muller code and randomly pick a new polynomial

q(x1,,xn)=i,j[n]cijxixjq(x_1, \dots, x_n) = \sum_{i, j \in [n]} c_{ij} x_i x_j

where we drop the degree 11 terms and constants for simplicity of discussion, and split the coefficients for symmetric terms like x1x2,x2x1x_1x_2, x_2x_1. Let’s now use the indexing with ll coordinates from H\mathbb H instead and apply the low-degree extension of assignment a^\hat a:

q(x1,,xn)=s,tHlcsta^(s)a^(t)q(x_1, \dots, x_n) = \sum_{s, t \in \mathbb H^l} c_{s t} \hat a(s) \hat a(t)

Note that cstc_st is computed by the verifier and can be viewed as a function c:H2lFc: \mathbb H^{2l} \to \mathbb F. The verifier can find the low-degree extension of it c^:F2lF\hat c: \mathbb F^{2l} \to \mathbb F. Let’s view the summand as a single function

g(u1,,u2l)=c^(u1,,u2l)a^(u1,,ul)a^(ul+1,,u2l)g(u_1, \dots, u_{2l}) = \hat c(u_1, \dots, u_{2l}) \hat a(u_1, \dots, u_{l}) \hat a(u_{l+1}, \dots, u_{2l})

so that the evaluation of qq becomes

q(x1,,xn)=uH2lg(u)q(x_1, \dots, x_n) = \sum_{\mathbf u \in \mathbb H^{2l}} g(\mathbf u)

Why will this transformation be helpful? We will soon discuss the SumCheck protocol, which can cleverly evaluate the equation with the prover. Instead of substituting in all H2l|\mathbb H|^{2l} terms, the protocol checks each of the 2l2l coordinates one by one, resulting in query complexity on the order of O(lH)O(l|\mathbb H|). Note that the individual degree of g(u)g(\mathbf u) is bounded by 2H2|\mathbb H|, which is criticial for this protocol.

SumCheck Protocol

Let’s consider more generally the SumCheck protocol, and analyze its application to our particular problem in the end. We will first introduce the SumCheck Protocol as an IP (interactive proof) protocol, for which the prover and verifier communicates back and forth.

The problem considers a polynomial function f:FnFf: \mathbb F^n \to \mathbb F, where ff has a small individual degree d<Fd < |\mathbb F| in every variable. The verifier wants to check the value of

xHnf(x)\sum_{\mathbf x \in \mathbb H^n} f(\mathbf x)

where HF\mathbb H \subset \mathbb F is a subfield.

Besides our problem, a very useful scenario is when ff encodes a Boolean formula, H=F2\mathbb H = \mathbb F_2, and F=Fp\mathbb F = \mathbb F_p for some large prime p>2np > 2^n. In this case, dd is on the order of clauses, and the problem is asking for the number of satisfying assignments to ff. Thus, with the SumCheck Protocol, we can prove many results related to the complexity class IP.

The verifier will pick nn random elements r1,,rnFr_1, \dots, r_n \in \mathbb F, and define the following functions:

fi(x)=uHnif(r1,,ri1,x,u1,,uni)f_i(x) = \sum_{\mathbf u \in \mathbb H^{n-i}} f(r_1, \dots, r_{i-1}, x, u_1, \dots, u_{n-i})

We can make the following observations:

fi(ri)=xHfi+1(x)f0=xHnf(x)fn(rn)=f(r1,,rn)f_{i}(r_i) = \sum_{ x \in \mathbb H} f_{i+1}(x) \\ f_0 = \sum_{\mathbf x \in \mathbb H^n} f(\mathbf x) \\ f_n(r_n) = f(r_1, \dots, r_n) \\

Note that f0f_0 is the solution we’re looking for, fn(rn)f_n(r_n) is easily computable, and the recursive relation motivates a recursive IP protocol as follows:

  1. The verifier receives f0^F\hat{f_0} \in \mathbb F from the prover.
  2. The verifier receives a polynomial f1^\hat{f_1} of degree d\leq d (the coefficients) from the prover, and checks that xHf1(x)=f0\sum_{x \in \mathbb H}f_1(x) = f_0.
  3. For i=2ni=2\cdots n, the verifier sends ri1r_{i-1} to the prover, and the prover sends back a polynomial f^i\hat f_i, and the verifier checks that xHfi(x)=fi1(ri1)\sum_{x \in \mathbb H}f_i(x) = f_{i-1}(r_{i-1}).
  4. Finally, the verifier checks that f^n(rn)=fn(rn)\hat f_n(r_n) = f_n(r_n).

Now the protocol is clearly complete: the prover just needs to send the information as defined. The number of random bits we need is nFn |\mathbb F|. Now the interesting part is the completeness, which calls into attention the requirement that dd, the individual degree of ff, is small (compared to F|\mathbb F|). Assume that the verifier accepts at the last step. If f^n(rn)fn(rn)\hat f_n(r_n) \neq f_n(r_n), the function g^(x)=f^n(x)fn(rn)\hat g(x) = \hat f_n(x) - f_n(r_n) is a polynomial of maximal degree dd (we can directly reject if the prover sends a higher order polynomial). Thus, rnr_n is a root of f(x)f(x) with probability d/F\leq d / |\mathbb F|. Then we can make inductive steps, assuming that f^i=fi\hat f_i = f_i, by the same logic, f^i1fi1\hat f_{i-1} \neq f_{i-1} with probability d/F\leq d / |\mathbb F|. Finally, by the union bound, we falsely accept with probability nd/F\leq nd / |\mathbb F|.

Now in the context of PCPs, the prover has to send a single (poly-size) proof instead of interactively communicating. Thus, the prover needs to write down the proof in respect to every possible trace of randomness. In effect, this is a tree of depth nn, where each parent has F|\mathbb F| children. And for each child, the prover needs to write down the coefficients of the polynomial of degree d\leq d, so the total length is O(dFn)O(d|\mathbb F|^n). Finally, for each round, the verifier needs to query a polynomial of degree d\leq d, so the total queries is O(dn)O(dn).

Now back to the context of our problem. We have that d=2H,n=2ld = 2|\mathbb H|, n = 2l. We will need to define the parameters for our low-degree extension as follows:

H=logn,l=lognloglogn    Hl=nF=lHδ,δ>1l2    Fl=poly(n)|\mathbb H| = \log n, l = \frac{\log n}{\log \log n} \implies |\mathbb H|^l = n \\ |\mathbb F| = \frac{l |\mathbb H|}{\delta}, \delta > \frac{1}{l^2} \implies |\mathbb F|^l = poly(n)

Thus, for the SumCheck protocol, we will achieve soundness of O(δ)O(\delta), proof length of O(HFl)=poly(n)O(|\mathbb H||\mathbb F|^l) = poly(n), number of queries equal to O(lH)=polylog(n)O(l|\mathbb H|) = polylog(n), and randomness of O(lF)=O(logn)O(l|\mathbb F|) = O(\log n).

Finally, note that we cannot arbitrarily decide F|\mathbb F|. This is constrained by the code we used to amplify the equations. Recall that Reed-Solomon code will require F=poly(n)|\mathbb F| = poly(n), thus not applicable in our scenario. Luckily, Reed-Muller code suffices for our case.

Low-degree Testing

A final step to complete the proof is a low-degree testing. We ask for a low-degree extension of the assignment function from the prover, and we need to make sure that’s the case. We will skip the detailed algorithm and proof for this testing, but provide the following fact which motivates the algorithm.

Given a multivariate function fFd[x1,,xn]f \in \mathbb F^{\leq d}[x_1, \dots, x_n], for x,hFpn\mathbf x, \mathbf h \in \mathbb F_p^n, where pp is a prime,

i=0d+1αif(x+ih)=0\sum_{i=0}^{d+1} \alpha_i f(\mathbf x + i \mathbf h) = 0

where

αi=(1)i+1(d+1i)\alpha_i = (-1)^{i+1}{{d+1}\choose i}

The test basically involves randomly sampling x,hFpn\mathbf x, \mathbf h \in \mathbb F_p^n and tests for this local property.

PCP Theorem via Proof Composition

Now we’ve introduced two weaker PCP theorems, we will sketch how to compose them to prove the PCP theorem. In order to do that, we introduce two variants of PCPs, whose purposes will be explicit once we get to proof composition.

PCP of Proximity (PCPP)

We now present a relaxation of PCPs that only verify that the input is close to an element of the language. The advantage of this relaxation is that it allows the possibility that the verifier may read only a small number of bits from the input. Actually, for greater generality, we will divide the input into two parts (x,y)(x,y), giving the verifier xx explicitly and yy as an oracle, and we only count the verifier’s queries to the latter. Thus we consider languages consisting of pairs of strings. For a pair language LL, we define L(x)={y:(x,y)L}L(x) = \{y: (x,y) \in L\}.

Definition

A Language LL is in the complexity class PCPPc,s,δ[r,q]Σ_{c, s, \delta}[r, q]_\Sigma if there exists a polynomial-time probablistic oracle Turing machine called the PCPP verifier VLV_L such that

  • Completeness: If xLx \in L, there exists a proof yπy \circ \pi such that Prρ{0,1}q[VLyπ(x;ρ)=1]>c\Pr_{\rho \sim \{0,1\}^q}[V_L^{y \circ \pi}(x; \rho) = 1] > c
  • Soundness: If Δ(y,L(x))>δ\Delta(y, L(x)) > \delta, for all proofs π\pi, Prρ{0,1}q[VLyπ(x;ρ)=1]<s\Pr_{\rho \sim \{0,1\}^q}[V_L^{y \circ \pi}(x; \rho) = 1] < s

We introduce a new proximity parameter δ<1\delta < 1, and the distance Δ(y,L(x))\Delta(y, L(x)) is defined as

Δ(y,L(x))=minyL(x)Δ(y,y)\Delta(y, L(x)) = \min_{y' \in L(x)} \Delta(y, y')

if xLx \in L and Δ(y,L(x))=1\Delta(y, L(x)) = 1 if xLx \notin L.

On one hand, the soundness criterion of PCPPs is a relaxation of the soundness of PCPs. Whereas, a PCP is required to reject (with high probability) every input that is not in the language, a PCPP is only required to reject input pairs (x,y)(x,y) in which the second element (i.e., yy) is far from being suitable for the first element (i.e., yy is far from L(x)). That is, in a PCPP, nothing is required in the case that yy is close to L(x)L(x) and yet yL(x)y \notin L(x). On the other hand, the query complexity of a PCPP is measured more stringently, as it accounts also for the queries to the input-part y (on top of the standard queries to the proof ππ). This should be contrasted with a standard PCP that has free access to all its input, and is only charged for access to an auxiliary proof.

Robust PCP

We now present a strengthening of the standard PCP soundness condition. Instead of asking that any proof is rejected with high probability, we ask that any proof is far from acceptance with high probability.

Definition

Given an input xx and a proof π\pi, if we fix the random bits ρ\rho, we have a local view π(x,ρ)\pi(x, \rho). We define the accepting views as

A(V,x,ρ)={π(x,ρ)Vπ(x,ρ)=1}A(V, x, \rho) = \{ \pi(x, \rho) | V^\pi(x, \rho) = 1 \}

A Language LL is in the complexity class RPCPc,s,σ[r,q]Σ_{c, s, \sigma}[r, q]_\Sigma if there exists a polynomial-time probablistic oracle Turing machine called the RPCP verifier VLV_L such that

  • Completeness: If xLx \in L, there exists a proof π\pi such that Prρ{0,1}q[VLπ(x;ρ)=1]>c\Pr_{\rho \sim \{0,1\}^q}[V_L^\pi(x; \rho) = 1] > c
  • Soundness: If xLx \notin L, for all proofs π\pi, Prρ{0,1}q[Δ(π(x,ρ),A(V,x,ρ))<σ]<s\Pr_{\rho \sim \{0,1\}^q}[\Delta(\pi(x, \rho), A(V, x, \rho))<\sigma] < s

Here, the distance function Δ\Delta is defined similarly as in the case of PCPP. Note that PCPc,s[r,q]=_{c, s}[r, q] = RPCPc,s,0[r,q]_{c, s, 0}[r, q], i.e., a vanilla PCP has 00 robustness.

Proof Composition

To carry out proof composition, we will have an outer RPCP which has a small size, and an inner PCPP which uses a few queries. When the outer RPCP determines the oracle positions to query given random bits ρ\rho, πout(x,ρ)\pi_{out}(x, \rho), the inner PCPP will verify that the selected positions are accepted, Vinπout(x,ρ),πinρ(x)=1V_{in}^{\pi_{out}(x, \rho), \pi_{in}^\rho}(x)=1. The new proof will be the concatenation of πout\pi_{out} and πinρ\pi_{in}^\rho for all ρ\rho. Note that we need the outer RPCP to be robust, because the inner PCPP only has soundness gurantee if πout(x,ρ)\pi_{out}(x, \rho) is far from accepting.

References

[1] CS 294 at UC Berkeley, Probabilistically Checkable and Interactive Proof Systems, Spring 2019, Website


By NowhereMan who goes nowhere.


© 2024, NowhereLog by NowhereMan