1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Copyright 2024 Ulvetanna Inc.

//! The multivariate sumcheck polynomial protocol, special cased when the sumcheck is part of the GKR Protocol.
//!
//! The parent GKR Module must have certain properties in order to qualify to use this sumcheck protocol.
//!     1) The GKR Circuit must be data-parallel
//!     2) The GKR Circuit must admit layer reduction sumcheck claims on multilinear composite polynomials $f(x)$
//! that have the form $f(x) = g(x) \cdot h(x)$, where $g(x)$ is a partially evaluated equality indicator
//! multilinear polynomial.
//!     3) $h(x)$ must agree with the current layer multilinear everywhere on the boolean hypercube.
//!
//! If the above conditions are met, then this GKR sumcheck module exploits this structure to yield a
//! more efficient prover algorithm than the sumcheck module.
//!
//! This module only supports batch proving and batch verification as batch proving a singleton claim is not any
//! less efficient than it would be to prove it in a non-batch setting.

mod batch;
mod error;
#[allow(clippy::module_inception)]
mod gkr_sumcheck;
mod prove;
#[cfg(test)]
mod tests;

pub use batch::*;
pub use error::*;
pub use gkr_sumcheck::{GkrSumcheckClaim, GkrSumcheckWitness};
pub use prove::*;