CPV Release 0.7
Description
A Circuit-based Program Verifier for C
System Requirements
CPV relies on CoVeriTeam to coordinate the underlying hardware verifiers. Therefore, the following dependencies are required:
- Linux Ubuntu 22.04 or newer
- Python 3.10 or newer
- Control groups (cgroups)
The complete dependencies of CoVeriTeam can be found in its documentation.
Additional Python and Debian packages required by CPV can be installed by:
apt-get install clang clang-format cpp python3 python3-bitstring python3-lxml python3-pycparser
Note that to execute the backend model-checking engines, the system also have to meet the requirements of the respective tools.
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/) to translate C programs, utility tools and libraries for Btor2, AIGER, and VMT (in bin/ and lib/) to 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 instrumentor, functional encoder, witness translator, and portfolio executor, are licensed under the Apache 2.0 License.
References
- CPV: A Circuit-Based Program Verifier (Competition Contribution), by Po-Chun Chien and Nian-Ze Lee. In Proc. TACAS. Springer (2024).
Files
cpv-0.7.zip
Files
(232.7 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:9b805299b4cd70062a3265e562f8488f
|
232.7 MB | Preview Download |
Additional details
Software
- Repository URL
- https://gitlab.com/sosy-lab/software/cpv