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 to
7//! 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 output.
11//!
12//! Naming Convention for challenges:
13//! 1) Sumcheck challenge: $r'_k$
14//! $k$-variate sumcheck challenge vector generated during the course of gpa_sumcheck
15//! 2) GPA Challenge $\mu_k$
16//! 1-variate generated during layer proving after the sumcheck proof is created after the layer k to k+1 sumcheck
17//! 3) Layer Challenge $r_{k+1} := (r_k, \mu_k)$
18//! $k+1$ variate, materialized as a combination of the above two, used in `LayerClaim`
19//!
20//! See [Thaler13] Section 5.3.1 for further background on the GKR polynomial identities for a binary tree circuit.
21//!
22//! [Thaler13]: <https://eprint.iacr.org/2013/351>
23
24mod error;
25#[allow(clippy::module_inception)]
26mod gkr_gpa;
27pub mod gpa_sumcheck;
28mod oracles;
29mod packed_field_storage;
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::*;