cprover
CProver Developer Documentation

These pages contain user tutorials, automatically-generated API documentation, and higher-level architectural overviews for the CProver codebase. CProver is a platform for software verification. Users can download CProver tools from the CProver website; contributors should use the repository hosted on GitHub. CBMC is part of CProver.

CBMC is a Bounded Model Checker for C and C++ programs. It supports C89, C99, most of C11 and most compiler extensions provided by gcc and Visual Studio. It also supports SystemC using Scoot. It allows verifying array bounds (buffer overflows), pointer safety, arithmetic exceptions and user-specified assertions. Furthermore, it can check C and C++ for consistency with other languages, such as Verilog. The verification is performed by unwinding the loops in the program and passing the resulting equation to a decision procedure.

For further information see cprover.org.

Versions

Get the latest release

  • Releases are tested and for production use.

Get the current develop version: git clone https://github.com/diffblue/cbmc.git

  • Develop versions are not recommended for production use.

Report bugs

If you encounter a problem please file a bug report:

Contributing to the code base

  1. Fork the the CBMC repository on GitHub.
  2. Clone your fork with git clone git@github.com:YOURNAME/cbmc.git
  3. Create a branch from the develop branch (default branch)
  4. Make your changes - follow the coding guidelines
  5. Push your changes to your branch
  6. Create a Pull Request targeting the develop branch

License

4-clause BSD license.

Overview of Documentation

For users:

  • The CBMC User Manual details the capabilities of CBMC and describes how to install and use these tools. It also covers the underlying theory and prerequisite concepts behind how these tools work.
  • There is a helpful user tutorial on the wiki with lots of linked resources, you can access it here.

For contributors: