pub struct QuotientCommitter<'pcs, SC: StarkGenericConfig> { /* private fields */ }
Implementations§
Source§impl<'pcs, SC: StarkGenericConfig> QuotientCommitter<'pcs, SC>
impl<'pcs, SC: StarkGenericConfig> QuotientCommitter<'pcs, SC>
pub fn new( pcs: &'pcs SC::Pcs, alpha: SC::Challenge, extra_capacity_bits: usize, ) -> Self
Sourcepub fn quotient_values(
&self,
constraints: &[&SymbolicExpressionDag<Val<SC>>],
extended_views: Vec<RapView<impl Matrix<Val<SC>>, Val<SC>, SC::Challenge>>,
quotient_degrees: &[u8],
) -> QuotientData<SC>
pub fn quotient_values( &self, constraints: &[&SymbolicExpressionDag<Val<SC>>], extended_views: Vec<RapView<impl Matrix<Val<SC>>, Val<SC>, SC::Challenge>>, quotient_degrees: &[u8], ) -> QuotientData<SC>
Constructs quotient domains and computes the evaluation of the quotient polynomials on the quotient domains of each RAP.
§Assumptions
constraints
,extended_views
,quotient_degrees
have equal lengths and the length equals number of RAPs.quotient_degrees
is the factor to multiply the trace degree by to get the degree of the quotient polynomial. This should be determined from the constraint degree of the RAP.extended_views
is a view of the trace polynomials evaluated on the quotient domain, with rows bit reversed to account for the fact that the quotient domain is different for each RAP.
Note: This function assumes that the
quotient_domain.split_evals(quotient_degree, quotient_flat)
function from Plonky3 works
as described in [compute_single_rap_quotient_values].
pub fn commit(&self, data: QuotientData<SC>) -> (Com<SC>, PcsData<SC>)
Auto Trait Implementations§
impl<'pcs, SC> Freeze for QuotientCommitter<'pcs, SC>
impl<'pcs, SC> RefUnwindSafe for QuotientCommitter<'pcs, SC>where
<SC as StarkGenericConfig>::Challenge: RefUnwindSafe,
<SC as StarkGenericConfig>::Pcs: RefUnwindSafe,
impl<'pcs, SC> Send for QuotientCommitter<'pcs, SC>
impl<'pcs, SC> Sync for QuotientCommitter<'pcs, SC>
impl<'pcs, SC> Unpin for QuotientCommitter<'pcs, SC>
impl<'pcs, SC> UnwindSafe for QuotientCommitter<'pcs, SC>where
<SC as StarkGenericConfig>::Challenge: UnwindSafe,
<SC as StarkGenericConfig>::Pcs: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more