Published November 24, 2023 | Version 0.4
Software Open

CPV: A Circuit-Based Program Verifier

  • 1. Ludwig-Maximilians-Universität München


(source code also available on GitLab)

System Requirements

CPV relies on CoVeriTeam to coordinate the underlying hardware verifiers. Therefore, the following dependencies are required:

  • Linux Ubuntu 18.04 or newer
  • Python 3.7 or newer
  • Cgroups v1

The complete dependencies of CoVeriTeam can be found in its documentation.

Additional required Python packages are listed in requirements.txt.


To verify whether a C program (c_prog) satisfies the given property (specified by prp_file), run:

./bin/cpv --property <prp_file> --model {ILP32,LP64} <c_prog>

Please refer to ./bin/cpv -h for more information.


CPV uses Kratos2 (in kratos2/) and utility tools for Btor2 and AIGER (in bin/) to translate C programs and manipulate circuits, and hardware model checkers (in cvt-cache/) for verification. Their cooperation is implemented with the CoVeriTeam library (in lib/). The above tools are available under their respective licenses.

Other components of CPV, including program instrumentation, witness translation, and portfolio execution, are licensed under the Apache 2.0 License.



Files (98.9 MB)

Name Size Download all
98.9 MB Preview Download