Arithmetization is the process by which a computer program is transformed into a set of polynomial equations for use in a zero-knowledge proof system. There are four main methods:
- R1CS: quadratic rank-1 constraint system, systems of equations, at most quadratic in each variable, of the form, for , the scalar dot product: .
- PlonK: system of equations of the form (models arithmetic gates for addition, multiplication, addition by a constant)
- are called selectors, for the left input, the right input, the output, the multiplication, the constant term in an arithmetic gate
- One can also extend the equations (custom gates): by adding a cubic term, using more than three wires (two inputs and one output), more than one constraint…
- AIR (section 5.1): A matrix representing the evolution of variables over time (execution trace), where the columns correspond to registers and the rows represent the state of these registers at a given step (as field elements). There are relations linking the state at step to the state at step , expressed through polynomial constraints: polynomials of a predefined degree and in variables. The execution trace is valid if for any polynomial constraint , and any consecutive rows and , .
- CCS: generalizes and captures R1CS, PlonK and AIR, allowing for efficient conversions between these constraint systems