arnaucube
arnaucube/hyperplonkPublic Self-hosted repository
hyperplonk/subroutines/src/poly_iop/mod.rs
subroutines/src/poly_iop/mod.rsRaw
 1use ark_ff::PrimeField;
 2use std::marker::PhantomData;
 3
 4mod errors;
 5mod perm_check;
 6pub mod prelude;
 7mod prod_check;
 8mod structs;
 9mod sum_check;
10mod utils;
11mod zero_check;
12
13#[derive(Clone, Debug, Default, Copy, PartialEq, Eq)]
14/// Struct for PolyIOP protocol.
15/// It has an associated type `F` that defines the prime field the multi-variate
16/// polynomial operates on.
17///
18/// An PolyIOP may be instantiated with one of the following:
19/// - SumCheck protocol.
20/// - ZeroCheck protocol.
21/// - PermutationCheck protocol.
22///
23/// Those individual protocol may have similar or identical APIs.
24/// The systematic way to invoke specific protocol is, for example
25///     `<PolyIOP<F> as SumCheck<F>>::prove()`
26pub struct PolyIOP<F: PrimeField> {
27    /// Associated field
28    #[doc(hidden)]
29    phantom: PhantomData<F>,
30}