pub type VerifierConstraintFolder<'a, SC> = GenericVerifierConstraintFolder<'a, Val<SC>, <SC as StarkGenericConfig>::Challenge, Val<SC>, <SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenge>;
Aliased Type§
struct VerifierConstraintFolder<'a, SC> {
pub preprocessed: VerticalPair<DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>, DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>>,
pub partitioned_main: Vec<VerticalPair<DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>, DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>>>,
pub after_challenge: Vec<VerticalPair<DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>, DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>>>,
pub challenges: &'a [Vec<<SC as StarkGenericConfig>::Challenge>],
pub is_first_row: <SC as StarkGenericConfig>::Challenge,
pub is_last_row: <SC as StarkGenericConfig>::Challenge,
pub is_transition: <SC as StarkGenericConfig>::Challenge,
pub alpha: <SC as StarkGenericConfig>::Challenge,
pub accumulator: <SC as StarkGenericConfig>::Challenge,
pub public_values: &'a [<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val],
pub exposed_values_after_challenge: &'a [Vec<<SC as StarkGenericConfig>::Challenge>],
pub _marker: PhantomData<(<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val, <SC as StarkGenericConfig>::Challenge)>,
}
Fields§
§preprocessed: VerticalPair<DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>, DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>>
§partitioned_main: Vec<VerticalPair<DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>, DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>>>
§after_challenge: Vec<VerticalPair<DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>, DenseMatrix<<SC as StarkGenericConfig>::Challenge, &'a [<SC as StarkGenericConfig>::Challenge]>>>
§challenges: &'a [Vec<<SC as StarkGenericConfig>::Challenge>]
§is_first_row: <SC as StarkGenericConfig>::Challenge
§is_last_row: <SC as StarkGenericConfig>::Challenge
§is_transition: <SC as StarkGenericConfig>::Challenge
§alpha: <SC as StarkGenericConfig>::Challenge
§accumulator: <SC as StarkGenericConfig>::Challenge
§public_values: &'a [<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val]
§exposed_values_after_challenge: &'a [Vec<<SC as StarkGenericConfig>::Challenge>]
§_marker: PhantomData<(<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val, <SC as StarkGenericConfig>::Challenge)>
Implementations
Source§impl<F, EF, PubVar, Var, Expr> GenericVerifierConstraintFolder<'_, F, EF, PubVar, Var, Expr>
impl<F, EF, PubVar, Var, Expr> GenericVerifierConstraintFolder<'_, F, EF, PubVar, Var, Expr>
pub fn eval_constraints(&mut self, constraints: &SymbolicExpressionDag<F>)
pub fn assert_zero(&mut self, x: impl Into<Expr>)
Trait Implementations
Source§impl<F, EF, PubVar, Var, Expr> SymbolicEvaluator<F, Expr> for GenericVerifierConstraintFolder<'_, F, EF, PubVar, Var, Expr>
impl<F, EF, PubVar, Var, Expr> SymbolicEvaluator<F, Expr> for GenericVerifierConstraintFolder<'_, F, EF, PubVar, Var, Expr>
fn eval_const(&self, c: F) -> Expr
fn eval_is_first_row(&self) -> Expr
fn eval_is_last_row(&self) -> Expr
fn eval_is_transition(&self) -> Expr
fn eval_var(&self, symbolic_var: SymbolicVariable<F>) -> Expr
fn eval_expr(&self, symbolic_expr: &SymbolicExpression<F>) -> E
Source§fn eval_nodes(&self, nodes: &[SymbolicExpressionNode<F>]) -> Vec<E>where
E: Clone,
fn eval_nodes(&self, nodes: &[SymbolicExpressionNode<F>]) -> Vec<E>where
E: Clone,
Assumes that
nodes
are in topological order (if B references A, then B comes after A).
Simple serial evaluation in order.