binius_core/protocols/gkr_gpa/
mod.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3//! The grand product argument protocol based on a GKR-instantiation.
4//!
5//! Grand Product Argument reduces a grand product claim to a multilinear evalcheck claim.
6//! A Grand Product Claim is that a multilinear polynomials evaluations over the hypercube multiply
7//! to some claimed final product.
8//!
9//! The GKR circuit used here has only one gate type: the fan-in-2 multiplication gate.
10//! In the natural way, the 2^n input wires are multiplied together in n layers to produce the
11//! output.
12//!
13//! Naming Convention for challenges:
14//! 1) Sumcheck challenge: $r'_k$ $k$-variate sumcheck challenge vector generated during the course
15//!    of gpa_sumcheck
16//! 2) GPA Challenge $\mu_k$ 1-variate generated during layer proving after the sumcheck proof is
17//!    created after the layer k to k+1 sumcheck
18//! 3) Layer Challenge $r_{k+1} := (r_k, \mu_k)$ $k+1$ variate, materialized as a combination of the
19//!    above two, used in `LayerClaim`
20//!
21//! See [Thaler13] Section 5.3.1 for further background on the GKR polynomial identities for a
22//! binary tree circuit.
23//!
24//! [Thaler13]: <https://eprint.iacr.org/2013/351>
25
26mod error;
27#[allow(clippy::module_inception)]
28mod gkr_gpa;
29mod oracles;
30mod prove;
31#[cfg(test)]
32mod tests;
33mod verify;
34
35pub use error::*;
36pub use gkr_gpa::{
37	GrandProductBatchProveOutput, GrandProductClaim, GrandProductWitness, LayerClaim,
38};
39pub use oracles::*;
40pub use prove::*;
41pub use verify::*;