Paper 2020/1586

CirC: Compiler infrastructure for proof systems, software verification, and more

Alex Ozdemir, Fraser Brown, and Riad S. Wahby


Cryptographic tools like proof systems, multi-party computation, and fully homomorphic encryption are usually applied to computations expressed as systems of arithmetic constraints. In practice, this means that these applications rely on compilers from high-level programming languages (like C) to such constraints. This compilation task is challenging, but not entirely new: the software verification community has a rich literature on compiling programs to logical constraints (like SAT or SMT). In this work, we show that building shared compiler infrastructure for compiling to constraint representations is possible, because these representations share a common abstraction: stateless, non-uniform, non-deterministic computations that we call existentially quantified circuits, or EQCs. Moreover, we show that this shared infrastructure is useful, because it allows compilers for proof systems to benefit from decades of work on constraint compilation techniques for software verification. To make our approach concrete we create CirC, an infrastructure for building compilers to EQCs. CirC makes it easy to compile to new EQCs: we build support for three, R1CS (used for proof systems), SMT (used for verification and bug-finding), and ILP (used for optimization), in ≈2000 LOC. It's also easy to extend CirC to support new source languages: we build a feature-complete compiler for a cryptographic language in one week and ≈900 LOC, whereas the reference compiler for the same language took years to write, comprises ≈24000 LOC, and produces worse-performing output than our compiler. Finally, CirC enables novel applications that combine multiple EQCs. For example, we build the first pipeline that (1) automatically identifies bugs in programs, then (2) automatically constructs cryptographic proofs of the bugs' existence.

Note: Substantial Revisions

Available format(s)
Publication info
Published elsewhere. Major revision. IEEE S&P 2022
zero knowledgeimplementation
Contact author(s)
aozdemir @ cs stanford edu
2022-04-08: last of 6 revisions
2020-12-21: received
See all versions
Short URL
Creative Commons Attribution


      author = {Alex Ozdemir and Fraser Brown and Riad S.  Wahby},
      title = {{CirC}: Compiler infrastructure for proof systems, software verification, and more},
      howpublished = {Cryptology ePrint Archive, Paper 2020/1586},
      year = {2020},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.