Skip to content

The Univariate Skip

Integrating the univariate skip with deterministic challenges

We now describe our univariate skip variant. We focus here on the overall protocol steps, and on the verifier's perspective. We defer the details of the prover's implementation to the page after this one.

By the definition of AND constraint satisfaction, the prover's AND constraints hold if and only if

a[x]&b[x]=?c[x]\begin{equation*}a[x] \mathbin{\&} b[x] \stackrel{?}= c[x]\end{equation*}

holds for each x{0,,nand1}x \in \{0, \ldots , n_\text{and} - 1\}. Here, aa, bb and cc are the constraint arrays associated with the prover's AND constraints.

Whatever these arrays are, we can oblong-multilinearize them. In this way, we get oblong-multilinears a^(I^,X)\widehat{a}(\widehat{I}, X), b^(I^,X)\widehat{b}(\widehat{I}, X) and c^(I^,X)\widehat{c}(\widehat{I}, X) whose respective tables of values on D×BandD \times \mathcal{B}_{\ell_\text{and}} are the constraint arrays aa, bb and cc.

Having done this, we can say that prover's AND constraints hold if and only if

a^(i^,x)b^(i^,x)=?c^(i^,x)\begin{equation*}\widehat{a}(\widehat{i}, x) \cdot \widehat{b}(\widehat{i}, x) \stackrel{?}= \widehat{c}(\widehat{i}, x)\end{equation*}

holds for each i^D\widehat{i} \in D and each xBandx \in \mathcal{B}_{\ell_\text{and}}. Our goal here will be to reduce the satisfaction of this condition to a further one, involving evaluation claims on the oblong-multilinearizations a^(I^,X)\widehat{a}(\widehat{I}, X), b^(I^,X)\widehat{b}(\widehat{I}, X) and c^(I^,X)\widehat{c}(\widehat{I}, X). It will be the job of the shift reduction to assess those latter claims (and in particular, to connect them to the witness).

Protocol Description

For notation's sake, we write

f(I^,X)a^(I^,X)b^(I^,X)c^(I^,X).\begin{equation*}f(\widehat{I}, X) \coloneqq \widehat{a}(\widehat{I}, X) \cdot \widehat{b}(\widehat{I}, X) - \widehat{c}(\widehat{I}, X).\end{equation*}

Our goal is now to show that f(I^,X)f(\widehat{I}, X) vanishes identically on D×BandD \times \mathcal{B}_{\ell_\text{and}}; more precisely, our goal is to reduce the question of this vanishing to evaluation claims on a^(I^,X)\widehat{a}(\widehat{I}, X), b^(I^,X)\widehat{b}(\widehat{I}, X) and c^(I^,X)\widehat{c}(\widehat{I}, X). Note that f(I^,X)f(\widehat{I}, X) is multivariate in 1+and1 + \ell_\text{and} variables; it is not oblong-multilinear.

We now describe the protocol explicitly. Later, we explain soundness and implementation considerations.

  • the verifier samples a partial challenge rxF2128and3\overline{r_x} \gets \mathbb{F}_{2^{128}}^{\ell_\text{and} - 3}, as usual in the deterministic zerocheck variant. the verifier sends rx\overline{r_x} to the prover.
  • the parties both define rx(σ0,σ1,σ2,rx,0,,rx,4),\begin{equation*} r_x \coloneqq (\sigma_0, \sigma_1, \sigma_2, \overline{r_{x, 0}}, \ldots , \overline{r_{x, \ell - 4}}),\end{equation*} where the elements σ0\sigma_0, σ1\sigma_1, and σ2\sigma_2 of F2128\mathbb{F}_{2^{128}} are the fixed deterministic challenges we've already explained.
  • the univariate polynomial g(I^)xBandf(I^,x)eq~(rx,x)\begin{equation*}g(\widehat{I}) \coloneqq \sum_{x \in \mathcal{B}_{\ell_\text{and}}} f(\widehat{I}, x) \cdot \widetilde{\texttt{eq}}(r_x, x)\end{equation*} is univariate, of degree at most 2(2k1)2 \cdot (2^k - 1), and vanishes on DD if the prover is honest. The prover sends this polynomial, by sending its values on at least 2k12^k - 1 points outside of DD (we will be more precise about this later).
  • the verifier checks that g(I^)g(\widehat{I}) vanishes identically on DD.
  • the verifier samples a single challenge ri^F2128r_{\widehat{i}} \gets \mathbb{F}_{2^{128}} and sends it to the prover.
  • both parties write s0g(ri^)s_0 \coloneqq g(r_{\widehat{i}}), and run an and\ell_\text{and}-round sumcheck on the claim s0=?xBandf(ri^,x)eq~(rx,x).\begin{equation*}s_0 \stackrel{?}= \sum_{x \in \mathcal{B}_{\ell_\text{and}}} f(r_{\widehat{i}}, x) \cdot \widetilde{\texttt{eq}}(r_x, x).\end{equation*}
  • at the end, the verifier needs to evaluate sand=?f(ri^,rx)eq~(rx,rx),\begin{equation*}s_{\ell_\text{and}} \stackrel{?}= f(r_{\widehat{i}}, r'_x) \cdot \widetilde{\texttt{eq}}(r_x, r'_x),\end{equation*} where sands_{\ell_\text{and}} and rxr'_x are values that arise during the sumcheck. The verifier can evaluate eq~(rx,rx)\widetilde{\texttt{eq}}(r_x, r'_x) himself; he outputs the final evaluation claim on f(ri^,rx)f(r_{\widehat{i}}, r'_x).

Completeness and Soundness

If the prover is honest—i.e., if f(i^,x)=0f(\widehat{i}, x) = 0 for each i^D\widehat{i} \in D and each xBandx \in \mathcal{B}_{\ell_\text{and}}, and if the prover carries out the above protocol as prescribed—then he will pass. First off, f(I^,X)f(\widehat{I}, X)'s vanishing on D×BD \times \mathcal{B}_\ell implies g(I^)g(\widehat{I})'s vanishing on DD. Moreover, if the prover computes g(I^)g(\widehat{I}) as prescribed, then

s0=g(ri^)=xBandf(ri^,x)eq~(rx,x)\begin{equation*}s_0 = g(r_{\widehat{i}}) = \sum_{x \in \mathcal{B}_{\ell_\text{and}}} f(r_{\widehat{i}}, x) \cdot \widetilde{\texttt{eq}}(r_x, x)\end{equation*}

will hold, by definition of g(I^)g(\widehat{I}); this is exactly the claim that the parties will sumcheck.

If the prover is dishonest, then there exists an i^D\widehat{i}^* \in D for which the set (f(i^,x))xBand\left( f(\widehat{i}^*, x) \right)_{x \in \mathcal{B}_{\ell_\text{and}}} of bits is not identically zero.

By the soundness analysis of the partially-deterministic zerocheck, the chance, over the verifier's choice of rxF2128and3\overline{r_x} \gets \mathbb{F}_{2^{128}}^{\ell_\text{and} - 3}, that

0=?xBandf(i^,x)eq~(rx,x)\begin{equation*}0 \stackrel{?}= \sum_{x \in \mathcal{B}_{\ell_\text{and}}} f(\widehat{i}^*, x) \cdot \widetilde{\texttt{eq}}(r_x, x)\end{equation*}

holds is at most 32128\frac{\ell - 3}{2^{128}}. Assuming that this doesn't happen, we conclude that

g(i^)0;\begin{equation*}\overline{g}(\widehat{i}^*) \neq 0;\end{equation*}

here, we write

g(I^)xBandf(I^,x)eq~(rx,x)\begin{equation*}\overline{g}(\widehat{I}) \coloneqq \sum_{x \in \mathcal{B}_{\ell_\text{and}}} f(\widehat{I}, x) \cdot \widetilde{\texttt{eq}}(r_x, x)\end{equation*}

for the univariate polynomial that the prover should send in the first round.

In light of the verifier's check that gD\left. g \right|_D is identically zero, the inequality g(i^)0\overline{g}(\widehat{i}^*) \neq 0 above implies that the prover can pass that check only by sending a round polynomial g(I^)g(\widehat{I}) unequal to g(I^)\overline{g}(\widehat{I}) (as polynomials).

By standard univariate Schwartz–Zippel, the probability, over the verifier's ri^F2128r_{\widehat{i}} \gets \mathbb{F}_{2^{128}}, that g(ri^)=g(ri^)g(r_{\widehat{i}}) = \overline{g}(r_{\widehat{i}}) is thus at most 2(2k1)2128\frac{2 \cdot (2^k - 1)}{2^{128}}. If that equality doesn't happen, then the parties' sumcheck claim

s0g(ri^)g(ri^)=xBandf(ri^,x)eq~(rx,x)\begin{equation*}s_0 \coloneqq g(r_{\widehat{i}}) \neq \overline{g}(r_{\widehat{i}}) = \sum_{x \in \mathcal{B}_{\ell_\text{and}}} f(r_{\widehat{i}}, x) \cdot \widetilde{\texttt{eq}}(r_x, x)\end{equation*}

will be false, which proves soundness.

The End

At the very end of the and\ell_\text{and}-round sumcheck, the verifier will need to evaluate

sand=?f(ri^,rx)eq~(rx,rx)=[a^(ri^,rx)b^(ri^,rx)c^(ri^,rx)]eq~(rx,rx);\begin{equation*} s_{\ell_\text{and}} \stackrel{?}= f(r_{\widehat{i}}, r'_x) \cdot \widetilde{\texttt{eq}}(r_x, r'_x) = \left[ \widehat{a}(r_{\widehat{i}}, r'_x) \cdot \widehat{b}(r_{\widehat{i}}, r'_x) - \widehat{c}(r_{\widehat{i}}, r'_x) \right] \cdot \widetilde{\texttt{eq}}(r_x, r'_x);\end{equation*}

here, sands_{\ell_\text{and}} and rxr'_x are further quantities that will arise during the sumcheck. In the second equality, we unroll the definition of f(ri^,rx)f(r_{\widehat{i}}, r'_x), using our definition of f(I^,X)f(\widehat{I}, X) above.

The verifier can locally evaluate eq~(rx,rx)\widetilde{\texttt{eq}}(r_x, r'_x). At this point, the prover can nondeterministically send the verifier scalars αa\alpha_a, αb\alpha_b and αc\alpha_c which it claims satisfy:

αa=?a^(ri^,rx),αb=?b^(ri^,rx),αc=?c^(ri^,rx),\begin{align*} \alpha_a &\stackrel{?}= \widehat{a}(r_{\widehat{i}}, r'_x), \\ \alpha_b &\stackrel{?}= \widehat{b}(r_{\widehat{i}}, r'_x), \\ \alpha_c &\stackrel{?}= \widehat{c}(r_{\widehat{i}}, r'_x), \end{align*}

Then the verifier can explicitly check whether

sand=?[αaαbαc]eq~(rx,rx).\begin{equation*}s_{\ell_\text{and}} \stackrel{?}= \left[ \alpha_a \cdot \alpha_b - \alpha_c \right] \cdot \widetilde{\texttt{eq}}(r_x, r'_x). \end{equation*}

If this equality passes, then the verifier will have closed out the univariate skip, pending the correctness of the prover's three evaluation claims. These are exactly the kind of claims that the shift reduction is designed to evaluate.