This file defines a trait similar to kimchi::curve::KimchiCurve for Pallas and
Vesta. It aims to define all the parameters that are needed by a curve to be
used in Arrabbiata. For instance, the sponge parameters, the endomorphism
coefficients, etc.
The goal of this trait is to parametrize the whole library with the
different curves.
This module contains the implementation of the IVC scheme in addition to
running an arbitrary function that can use up to crate::NUMBER_OF_COLUMNS
columns.
At the moment, all constraints must be of maximum degree
crate::MAX_DEGREE, but it might change in the future.
This module defines methods and structures for setting up the circuit, or in
a more theoretical language, the “NP relation” that the circuit will be
related to.
Note that when mentioning “circuit” in this context, we are referring to
a specific user application in addition to the circuit used to encode the
verifier.
The arity of the multivariate polynomials describing the constraints.
We consider, erroneously, that a public input can be considered as a
column and fit an entire polynomial. This is subject to change, as most
values considered as public inputs at the moment are fixed for the
relation. We also suppose that the private inputs on the next row can be
used, hence the multiplication by two.