hyperplonk/poly-iop/src/lib.rs
poly-iop/src/lib.rsRaw
1use ark_ff::PrimeField;
2use std::marker::PhantomData;
3
4mod errors;
5mod perm_check;
6mod structs;
7mod sum_check;
8mod transcript;
9mod utils;
10mod virtual_poly;
11mod zero_check;
12
13pub use errors::PolyIOPErrors;
14pub use perm_check::{
15 util::{identity_permutation_mle, random_permutation_mle},
16 PermutationCheck,
17};
18pub use sum_check::SumCheck;
19pub use virtual_poly::{VPAuxInfo, VirtualPolynomial};
20pub use zero_check::ZeroCheck;
21
22#[derive(Clone, Debug, Default, Copy)]
23/// Struct for PolyIOP protocol.
24/// It has an associated type `F` that defines the prime field the multi-variate
25/// polynomial operates on.
26///
27/// An PolyIOP may be instantiated with one of the following:
28/// - SumCheck protocol.
29/// - ZeroCheck protocol.
30/// - PermutationCheck protocol.
31///
32/// Those individual protocol may have similar or identical APIs.
33/// The systematic way to invoke specific protocol is, for example
34/// `<PolyIOP<F> as SumCheck<F>>::prove()`
35pub struct PolyIOP<F: PrimeField> {
36 /// Associated field
37 #[doc(hidden)]
38 phantom: PhantomData<F>,
39}