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