The Procedure
Here, we get to the "grand finale" of this site. Our setup is a list of polynomials , respectively of sizes , all defined over , and jointly committed to in just the way prescribed by our batch commitment procedure. That is, we've actually committed to just a single, massive, piecewise polynomial , which takes the values that the individual polynomials respectively do on various subcubes of (and zero-fills the remaining vertices).
We now fix a list of sum claims, each of the form
Here, the are further transparent polynomials that arise during the ring-switching reduction. We don't need to worry what these polynomials even are for the purposes of this page; we merely need the fact that they're transparent (i.e., efficiently evaluable by the verifier at any given point).
Our goal in this page will be to jointly evaluate all of these sum claims. Our algorithm will essentially run FRI, our front-loaded sumcheck, and our piecewise evaluation procedure together, in an interleaved way, and using just one stream of random challenges for all three algorithms.
Some Preliminaries
We now record our evaluation protocol. We drop a slightly simplified variant in which a certain oracle skipping optimization is omitted. (We refer to [DP24, § 6.2] for a description of this optimization.)
We write for the result of the prover's initial commitment. Here, is a Reed–Solomon domain of size . We moreover fix the usual sequence of further FRI domains , as well as the 2-to-1 folding maps . Using these, we get a FRI folding procedure, which, given a word and a folding challenge , produces a folded word , a map .
We moreover use a notational device which we've already used in the previous two pages. We assume as usual that the polynomials are arranged in sorted order, so that holds. Moreover, for each , we are going to write for the minimal for which holds. We note that necessarily holds; moreover, will too, provided we assume that each is positive—which we do now. Finally, the elements will be nonincreasing.
The Steps
Here is our algorithm. Again, to reiterate, we are trying to batch-process a list of sum claims of the form
where the are batch-committed and the are transparent. The verifier initializes claim datastructures , each featuring and fields. The verifier initializes for each .
Here we go:
- The verifier samples a batching challenge and sends it to the prover. As in the front-loaded sumcheck, the verifier computes the batched sum claim:
- For each round , the prover and verifier proceed as:
- The prover computes the round polynomial and sends it to the verifier. Here, the upper limit is as we've already explained.
- The verifier checks whether holds.
- The verifier samples and sends it to the prover. The verifier moreover computes the updated sum claim:
- The prover computes , and commits to the string oracle (unless we're in the last round , in which case the prover just sends the constant value ).
- For each (these are exactly the for which which holds), the prover nondeterministically sends the "now-ready" claimed evaluation
- Again for each , the verifier does the following things:
- It mutates The quantity it just computes directly, which it can, since it's transparent.
- It moreover marks:
- Now, the verifier kicks off a "smoothing" step for lower-dimensional subcubes. It initializes , and then runs the following loop. While :
- The verifier sets .
- If , then the verifier sets and overwrites . Otherwise, the verifier sets .
- In any case, the verifier overwrites , and also updates .
- At the very end, the verifier requires .
- The verifier moreover requires , where is the final constant FRI value.
- The verifier kicks off FRI querying.
Security Claim
The claim is that if the verifier accepts all of its checks above, then (except with low probability) all of the individual sum claims were valid. The security proof is not simple, but it combines essentially the respective security proofs of FRI, front-loaded sumcheck, and piecewise evaluation. A rigorous treatment of a simpler case–in which just one polynomial is being committed—can be found in [DP24, § 3.3].