hyperplonk/subroutines/src/poly_iop/mod.rs
subroutines/src/poly_iop/mod.rsRaw
1// Copyright (c) 2023 Espresso Systems (espressosys.com)
2// This file is part of the HyperPlonk library.
3
4// You should have received a copy of the MIT License
5// along with the HyperPlonk library. If not, see <https://mit-license.org/>.
6
7use ark_ff::PrimeField;
8use std::marker::PhantomData;
9
10mod errors;
11mod perm_check;
12pub mod prelude;
13mod prod_check;
14mod structs;
15mod sum_check;
16mod utils;
17mod zero_check;
18
19#[derive(Clone, Debug, Default, Copy, PartialEq, Eq)]
20/// Struct for PolyIOP protocol.
21/// It has an associated type `F` that defines the prime field the multi-variate
22/// polynomial operates on.
23///
24/// An PolyIOP may be instantiated with one of the following:
25/// - SumCheck protocol.
26/// - ZeroCheck protocol.
27/// - PermutationCheck protocol.
28///
29/// Those individual protocol may have similar or identical APIs.
30/// The systematic way to invoke specific protocol is, for example
31/// `<PolyIOP<F> as SumCheck<F>>::prove()`
32pub struct PolyIOP<F: PrimeField> {
33 /// Associated field
34 #[doc(hidden)]
35 phantom: PhantomData<F>,
36}