binius_core/piop/
mod.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3//! The compilation of a multilinear polynomial IOP to an IP using the techniques from [DP24]
4//! (FRI-Binius).
5//!
6//! This module implements the transformations used to prove the evaluations of committed
7//! multilinears over binary towers. This is basically a polynomial commitment scheme, though we
8//! follow the cryptographic formalism of a compiler from multilinear polynomials IOPs to IPs,
9//! which is more direct.
10//!
11//! The specific protocol we use works as follows. We commit a batch of multilinears over a
12//! cryptographically large field $\mathcal{T}_\tau$ by
13//!
14//! 1) ensuring they are in sorted order from fewest number of variables to greatest,
15//! 2) concatenating their coefficients in reverse order and padding with zeros to the next power of
16//!    two size,
17//! 3) committing that message with FRI
18//!
19//! Then polynomial IOP (PIOP) proceeds with oracle access to sumcheck claims over these
20//! multilinears. The output of the PIOP is these sumcheck statements, which have the form of being
21//! a sum over the hypercube of the product of a committed polynomial in the batch and a
22//! transparent multilinear.
23//!
24//! We verify these claims using the protocol from section 3 of [DP24], interleaving the sumcheck
25//! invocations with the FRI opening protocol on the combined, committed multilinear polynomial.
26//! Whenever a sumcheck claim is resolved (which may happen before the end of the protocol if it is
27//! for a multivariate with fewer variables than the combined multilinear), the prover sends the
28//! verifier the claimed multilinear evaluation of the committed piece before further interaction.
29//! At the end of the interleaved sumcheck-FRI invocation, the verifier tests consistency of the
30//! claimed piecewise evaluations against the final FRI output.
31//!
32//! [DP24]: <https://eprint.iacr.org/2024/504>
33
34pub mod commit;
35mod error;
36mod logging;
37mod prove;
38#[cfg(test)]
39mod tests;
40mod util;
41mod verify;
42
43pub use commit::*;
44pub use error::*;
45pub use prove::*;
46pub use verify::{CommitMeta, PIOPSumcheckClaim, make_commit_params_with_optimal_arity, verify};