use crate::sumcheck::{Env, Var};
use ark_ff::Field;
pub use test_field::Fm;
#[derive(Clone, Debug)]
pub struct ZeroSumcheck<V>(pub V);
pub struct ZeroCheck<V>(pub V);
pub trait ZeroCheckAvailable: Sized {
fn zerocheck_eq() -> Self;
fn zero_check<F, V, C, E>(env: &E, zero_check: ZeroCheck<V>) -> ZeroSumcheck<V>
where
F: Field,
V: Var<F>,
E: Env<F, V, Self, C>,
{
let idx = Self::zerocheck_eq();
let eq = env.get(idx);
ZeroSumcheck(zero_check.0 * eq)
}
}
pub trait ZeroAvailable: Sized {
fn zero() -> Self;
}
mod test_field {
#![allow(non_local_definitions)]
use ark_ff::{Fp64, MontBackend, MontConfig};
#[derive(MontConfig)]
#[modulus = "4294967291"]
#[generator = "3"]
pub struct M32Config;
pub type Fm = Fp64<MontBackend<M32Config, 1>>;
}