Published November 24, 2023 | Version 0.4
Software Open

CPV: A Circuit-Based Program Verifier

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

Description

(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.

Usage

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.

License

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.

References

Files

cpv-0.4.zip

Files (98.9 MB)

Name Size Download all
md5:8f3f045eb5fd9cae86c82f2cd72328e1
98.9 MB Preview Download