A library for PFCS (Prime Field Constraint Systems).
The notion of PFCS is introduced by this library; it is not an existing notion that this library formalizes. We use the acronym `PFCS' for both singular (`System') and plural (`Systems').
A PFCS is a system of constraints over a prime field; the constraints include variables that range over a prime field. The motivation for PFCS stems from zero-knowledge proofs, but there may be more general applications. PFCS generalize R1CS (Rank-1 Constraint Systems), which are used in zero-knowledge proofs, in two ways:
Currently this library contains an abstract syntax of PFCS, some operations on the abstract syntax, and a semantics expressed as a shallow embedding; see the documentation of these artifacts for more information. It also includes some examples. It is expected that this library will be extended with more artifacts related to PFCS.
Some of the concepts in this library are more general than prime fields. Thus, it may be possible to generalize some parts of this library to some more general form of constraints.
This library makes use of the prime fields library and is related to the R1CS library in the community books.