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