Trait QuotientCommitter

Source
pub trait QuotientCommitter<PB: ProverBackend> {
    // Required method
    fn eval_and_commit_quotient(
        &self,
        challenger: &mut PB::Challenger,
        pk_views: &[DeviceStarkProvingKey<'_, PB>],
        public_values: &[Vec<PB::Val>],
        cached_views_per_air: &[Vec<SingleCommitPreimage<&PB::Matrix, &PB::PcsData>>],
        common_main_pcs_data: &PB::PcsData,
        prover_data_after: &ProverDataAfterRapPhases<PB>,
    ) -> (PB::Commitment, PB::PcsData);
}
Expand description

Only needed in proof systems that use quotient polynomials.

Required Methods§

Source

fn eval_and_commit_quotient( &self, challenger: &mut PB::Challenger, pk_views: &[DeviceStarkProvingKey<'_, PB>], public_values: &[Vec<PB::Val>], cached_views_per_air: &[Vec<SingleCommitPreimage<&PB::Matrix, &PB::PcsData>>], common_main_pcs_data: &PB::PcsData, prover_data_after: &ProverDataAfterRapPhases<PB>, ) -> (PB::Commitment, PB::PcsData)

Given a view of the PCS data from all phases of proving, first get the trace polynomials evaluated on the quotient domains. Then compute the quotient polynomial evaluated on the quotient domain and commit to it.

The lengths of

  • pk_views: proving key per AIR
  • public_values: public values per AIR
  • cached_views_per_air: committed trace views per AIR (if any)

must be equal, and all equal to the number of AIRs.

Quotient polynomials for multiple RAP matrices are committed together into a single commitment. The quotient polynomials can be committed together even if the corresponding trace matrices are committed separately.

Implementors§