Dense PCS
Code: slop: crates/stacked/src/verifier.rs:verify_trusted_evaluation
Now we can move onto the evaluation of , which is the dense representation of all data (to which the prover originally committed).
As described above, we split this into uniform columns of size (can be , it's configurable - this exponent of is the log_stacking_height), so for example, if the total trace area is , then itself is of form . The multilinear polynomial can be computed as
which means that one just needs a proof of all the values, i.e. each column's evaluation at . This can be done simply with Batched BaseFold as usual Batch-FRI.
In more detail, the prover first decomposes the multilinear evaluation claim about into claims about the distinct columns of which is composed. The verifier checks that this decomposition is consistent with the claimed value of . The verifier then chooses a random linear combination of the columns and the parties run basefold on the resulting polynomial.
Basefold
slop: crates/basefold/src/verifier.rs:verify_mle_evaluations
This is the standard Basefold, the multilinear version of FRI. At a high-level the protocol combines the standard FRI protocol together with a sumcheck, which is used to establish the multilinear evaluation of the committed oracle.
Hypercube's core and recursion proofs do not rely on proximity gap conjectures. Rather, they rely on the proximity gaps theorem, established by Ben Sasson et al. (Eli Ben-Sasson, Dan Carmon, Yuval Ishai, Swastik Kopparty, Shubhangi Saraf: Proximity Gaps for Reed-Solomon Codes, JACM 2023).
The FRI parameters used (rate, queries, grinding, etc) can be found in
slop: crates/primitives/src/fri_params.rs