  Plonkish is a popular circuit format for developing zero-knowledge proof
systems that powers a number of major projects in the blockchain space,
responsible for holding billions of dollars and processing millions of
transactions per day. These projects, including zero-knowledge rollups, rely on
highly hand-optimized circuits whose correctness comes at the cost of
time-consuming testing and auditing.
  In this paper, we present Clap, the first Rust eDSL with a proof system
agnostic circuit format, facilitating extensibility, automatic optimizations,
and formal assurances for the resultant constraint system. Clap casts the
problem of producing Plonkish constraint systems and their witness generators
as a semantic-preserving compilation problem. Soundness and completeness of the
transformation guarantees the absence of subtle bugs caused by under- or
over-constraining. Our experimental evaluation shows that its automatic
optimizations achieve better performance compared to manual circuit
optimization. The optimizer can also be used to automatically derive custom
gates from circuit descriptions.
