pub fn verify<F, CH, E>(
    claim: &impl AbstractSumcheckClaim<F>,
    proof: AbstractSumcheckProof<F>,
    reductor: impl AbstractSumcheckReductor<F, Error = E>,
    challenger: CH
) -> Result<ReducedClaim<F>, E>
where F: Field, CH: CanSample<F> + CanObserve<F>, E: From<Error> + From<Error> + Sync,