jf_relation::constraint_system

Trait Arithmetization

Source
pub trait Arithmetization<F: FftField>: Circuit<F> {
Show 14 methods // Required methods fn srs_size(&self) -> Result<usize, CircuitError>; fn eval_domain_size(&self) -> Result<usize, CircuitError>; fn compute_selector_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>; fn compute_extended_permutation_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>; fn compute_prod_permutation_polynomial( &self, beta: &F, gamma: &F, ) -> Result<DensePolynomial<F>, CircuitError>; fn compute_wire_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>; fn compute_pub_input_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>; // Provided methods fn compute_range_table_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError> { ... } fn compute_key_table_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError> { ... } fn compute_table_dom_sep_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError> { ... } fn compute_q_dom_sep_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError> { ... } fn compute_merged_lookup_table( &self, _tau: F, ) -> Result<Vec<F>, CircuitError> { ... } fn compute_lookup_sorted_vec_polynomials( &self, _tau: F, _lookup_table: &[F], ) -> Result<(Vec<F>, DensePolynomial<F>, DensePolynomial<F>), CircuitError> { ... } fn compute_lookup_prod_polynomial( &self, _tau: &F, _beta: &F, _gamma: &F, _lookup_table: &[F], _sorted_vec: &[F], ) -> Result<DensePolynomial<F>, CircuitError> { ... }
}
Expand description

An interface that transforms Plonk circuits to polynomial used by Plonk-based SNARKs.

Required Methods§

Source

fn srs_size(&self) -> Result<usize, CircuitError>

The required SRS size for the circuit.

Source

fn eval_domain_size(&self) -> Result<usize, CircuitError>

Get the size of the evaluation domain for arithmetization (after circuit has been finalized).

Source

fn compute_selector_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>

Compute and return selector polynomials. Return an error if the circuit has not been finalized yet.

Source

fn compute_extended_permutation_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>

Compute and return extended permutation polynomials. Return an error if the circuit has not been finalized yet.

Source

fn compute_prod_permutation_polynomial( &self, beta: &F, gamma: &F, ) -> Result<DensePolynomial<F>, CircuitError>

Compute and return the product polynomial for permutation arguments. Return an error if the circuit has not been finalized yet.

Source

fn compute_wire_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>

Compute and return the list of wiring witness polynomials. Return an error if the circuit has not been finalized yet.

Source

fn compute_pub_input_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>

Compute and return the public input polynomial. Return an error if the circuit has not been finalized yet. The IO gates of the circuit are guaranteed to be in the front.

Provided Methods§

Source

fn compute_range_table_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>

Plookup-related methods Return default errors if the constraint system does not support lookup gates.

Compute and return the polynomial that interpolates the range table elements. Return an error if the circuit does not support lookup or has not been finalized yet.

Source

fn compute_key_table_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>

Compute and return the polynomial that interpolates the key table elements. Return an error if the circuit does not support lookup or has not been finalized yet.

Source

fn compute_table_dom_sep_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>

Compute and return the polynomial that interpolates the table domain separation ids. Return an error if the circuit does not support lookup or has not been finalized.

Source

fn compute_q_dom_sep_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>

Compute and return the polynomial that interpolates the lookup domain sepration selectors for the lookup gates. Return an error if the circuit does not support lookup or has not been finalized.

Source

fn compute_merged_lookup_table(&self, _tau: F) -> Result<Vec<F>, CircuitError>

Compute and return the combined lookup table vector given random challenge tau.

Source

fn compute_lookup_sorted_vec_polynomials( &self, _tau: F, _lookup_table: &[F], ) -> Result<(Vec<F>, DensePolynomial<F>, DensePolynomial<F>), CircuitError>

Compute the sorted concatenation of the (merged) lookup table and the witness values to be checked in lookup gates. Return the sorted vector and 2 polynomials that interpolate the vector. Return an error if the circuit does not support lookup or has not been finalized yet.

Source

fn compute_lookup_prod_polynomial( &self, _tau: &F, _beta: &F, _gamma: &F, _lookup_table: &[F], _sorted_vec: &[F], ) -> Result<DensePolynomial<F>, CircuitError>

Compute and return the product polynomial for Plookup arguments. beta and gamma are random challenges, sorted_vec is the sorted concatenation of the lookup table and the lookup witnesses. Return an error if the circuit does not support lookup or has not been finalized yet.

Implementors§

Source§

impl<F> Arithmetization<F> for PlonkCircuit<F>
where F: PrimeField,