In Jim Posen's note, the protocol ends with the verifier querying
for all .
Using these, the verifier computes the evaluations
and is able to check that equals the final Sumcheck sum.
If we assume that the values are provided as-is, we can check that they are correct using a single query to . Moreover, this avoids an extra invocation of the Sumcheck protocol, though it comes at the expense of more verifier work.
The verifier sends a new random element and evaluates the Lagrange polynomials over at . The evaluations , for each can be computed using . This allows the verifier to compute an evaluation of at . The following shows how the same evaluation can be derived by the verifier:
Alternatively, we can minimize the amount of verifier work by invoking a slightly more optimized Sumcheck instance.
Reusing the same random value , we define the -variate polynomial such that for all . The verifier computes
which is the claimed sum for the Sumcheck instance
The following shows that the sum is correct:
While this introduces additional rounds of interaction, the verifier only performs field operations.