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;
27mod oracles;
28mod packed_field_storage;
29mod prove;
30#[cfg(test)]
31mod tests;
32mod verify;
33
34pub use error::*;
35pub use gkr_gpa::{
36	GrandProductBatchProveOutput, GrandProductClaim, GrandProductWitness, LayerClaim,
37};
38pub use oracles::*;
39pub use prove::*;
40pub use verify::*;