Skip to main content

StackedReductionProver

Trait StackedReductionProver 

Source
pub trait StackedReductionProver<'a, PB: ProverBackend, PD> {
    // Required methods
    fn new(
        device: &'a PD,
        stacked_per_commit: Vec<&'a PB::PcsData>,
        need_rot_per_commit: Vec<Vec<bool>>,
        r: &[PB::Challenge],
        lambda: PB::Challenge,
    ) -> Self;
    fn batch_sumcheck_uni_round0_poly(
        &mut self,
    ) -> UnivariatePoly<PB::Challenge>;
    fn fold_ple_evals(&mut self, u_0: PB::Challenge);
    fn batch_sumcheck_poly_eval(
        &mut self,
        round: usize,
        u_prev: PB::Challenge,
    ) -> [PB::Challenge; 2];
    fn fold_mle_evals(&mut self, round: usize, u_round: PB::Challenge);
    fn into_stacked_openings(self) -> Vec<Vec<PB::Challenge>>;
}
Expand description

Helper trait for proving the reduction of column opening claims and column rotation opening claims to opening claims of column polynomials of the stacked matrix.

Returns the reduction proof and the random vector u of length 1 + n_stack.

Required Methods§

Source

fn new( device: &'a PD, stacked_per_commit: Vec<&'a PB::PcsData>, need_rot_per_commit: Vec<Vec<bool>>, r: &[PB::Challenge], lambda: PB::Challenge, ) -> Self

We only provide a view to the stacked PcsData per commitment because the WHIR prover will still use the PLE evaluations of the stacked matrices later. The order of stacked_per_commit is common_main, preprocessed for trace_idx=0 (if any), cached_0 for trace_idx=0, ..., preprocessed for trace_idx=1 (if any), ....

The lambda is the batching randomness for the batch sumcheck.

Source

fn batch_sumcheck_uni_round0_poly(&mut self) -> UnivariatePoly<PB::Challenge>

Return the s_0 batched polynomial from univariate round 0 of sumcheck.

Source

fn fold_ple_evals(&mut self, u_0: PB::Challenge)

Source

fn batch_sumcheck_poly_eval( &mut self, round: usize, u_prev: PB::Challenge, ) -> [PB::Challenge; 2]

Source

fn fold_mle_evals(&mut self, round: usize, u_round: PB::Challenge)

Source

fn into_stacked_openings(self) -> Vec<Vec<PB::Challenge>>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<'a, SC: StarkProtocolConfig> StackedReductionProver<'a, CpuColMajorBackend<SC>, ReferenceDevice<SC>> for StackedReductionCpu<'a, SC>
where SC::F: TwoAdicField, SC::EF: TwoAdicField + ExtensionField<SC::F>, CpuColMajorBackend<SC>: ProverBackend<Val = SC::F, Challenge = SC::EF, PcsData = StackedPcsData<SC::F, SC::Digest>, Matrix = ColMajorMatrix<SC::F>>,