Skip to main content

Crate p3_sumcheck

Crate p3_sumcheck 

Source
Expand description

Sumcheck protocol implementation for multilinear polynomial verification.

§The Sumcheck Protocol

The sumcheck protocol verifies a claimed sum of the form:

sum_{x in {0,1}^l} g(x) = t

Without it, the verifier would need to evaluate g at all 2^l hypercube points. The protocol reduces this to a single evaluation at a random point, using l rounds.

In each round, the prover sends a low-degree univariate polynomial:

h_i(X) = sum_{x_{i+1}, ..., x_l in {0,1}} g(r_1, ..., r_{i-1}, X, x_{i+1}, ..., x_l)

The verifier checks h_i(0) + h_i(1) == claimed_sum. Then samples a random challenge r_i and updates the claim to h_i(r_i).

After l rounds, the verifier holds (r_1, ..., r_l) and queries g directly.

Re-exports§

pub use data::SumcheckData;
pub use data::verify_final_sumcheck_rounds;
pub use error::SumcheckError;
pub use table::OpeningProtocol;
pub use table::PointSchedule;
pub use table::TableShape;
pub use table::TableSpec;

Modules§

commit
Base-field commitment used by the sumcheck opening protocol.
constraints
data
error
lagrange
Interpolation utilities for sumcheck using evaluation at infinity.
layout
Stacked sumcheck layout.
product_polynomial
SIMD-aware polynomial pair for quadratic sumcheck.
strategy
Sumcheck helpers: variable ordering, round coefficients, and the prover state.
svo
Small-Value Optimization (SVO) for the sumcheck protocol.
table
zk
Honest-verifier zero-knowledge sumcheck for WHIR.

Structs§

Claim
A claimed evaluation together with layout-specific auxiliary data.