Freedom251 › Formal Verification Tools
CBMC

What CBMC is
CBMC is a free bounded model checker for examining C and C++ programs. It explores execution paths and checks assertions, including array bounds, pointer safety, exceptions, user-defined assertions, and some undefined behavior such as signed integer overflow. Its method unwinds loops and sends the resulting equation to a decision procedure, so inputs may need a bounded size. The repository lists support for C89, C99, most of C11, C17, C23, many GCC and Visual Studio extensions, and SystemC through Scoot; listed input languages also include Java bytecode. CBMC supports contracts and can produce counterexamples. Its incremental SMT2 backend can use an SMT-LIB 2.6-compliant solver, with Z3 and CVC5 as examples. Distribution options include macOS Homebrew instructions, Ubuntu DEB packages, Windows MSI installers, and Docker images. The tool is licensed under the 4-clause BSD license. The guide describes use in routine development and continuous integration; released versions are intended for production use, unlike develop versions.
Who it suits
CBMC is for developers who need to check C or C++ program behavior and assertions, including in continuous integration. It suits teams able to work with bounded inputs and a supported solver or distribution.
What it does well
- Checks bounds, pointer safety, and user assertions.
- Can produce counterexamples.
- Supports several C standards and extensions.
- Available through installers and Docker images.
- Licensed under the 4-clause BSD license.
What to know first
- Analysis may require bounded inputs.
- Develop versions are not recommended for production.
- Uses loop unwinding before decision procedures.
Limits
CBMC performs bounded analysis, which may require restricting input sizes and unwinding loops. The free plan is the software under the 4-clause BSD license.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| CBMC | 4-clause BSD licensed open-source software | Free |
As diffblue.github.io lists them, read 4 Oct 2026. The maker's own page has the final word.
Getting started
- Visit the CBMC website for project information.
- Choose a distribution route for Linux, macOS, Windows, or Docker.
- Install a released version for production use.
- Configure an SMT-LIB 2.6-compliant solver such as Z3 or CVC5 if using the incremental SMT2 backend.
- Use goto-cc in Makefiles to collect project models for verification.
Verdict
CBMC provides a free route to bounded verification of C and C++ programs, with multiple distribution options and solver support. Its bounded analysis may require input limits, and the repository distinguishes production-intended releases from develop versions.
Questions
How much does CBMC cost?
The listed plan is free, and CBMC is licensed under the 4-clause BSD license.
Which platforms does CBMC support?
It is listed for Linux, macOS, Windows, and self-hosted deployment. Distribution options include Ubuntu DEB packages, macOS Homebrew instructions, Windows MSI installers, and Docker images.
Which programming languages can CBMC analyze?
The listed input languages are C, C++, Java bytecode, and SystemC. The repository describes support for multiple C standards and SystemC using Scoot.
Can CBMC provide counterexamples?
Yes. CBMC supports contracts and can produce counterexamples.
Which solvers can CBMC use?
Its incremental SMT2 backend can use an SMT-LIB 2.6-compliant solver; Z3 and CVC5 are given as examples.
How can users get help with problems?
The repository directs users who encounter problems to file a bug report as a GitHub issue.
Facts from CBMC's own pages
- Bounded analysis
- CBMC may require restricting inputs to a bounded size, and its verification unwinds loops before passing the resulting equation to a decision procedure. · diffblue.github.io, 4 Oct 2026
- Build integration
- goto-cc can replace gcc or cl.exe in Makefiles to collect project models for verification. · diffblue.github.io, 4 Oct 2026
- Continuous integration
- The user guide describes using CBMC as part of routine software development and continuous integration. · diffblue.github.io, 4 Oct 2026
- Distribution
- The release page provides macOS Homebrew instructions, Ubuntu DEB packages, Windows MSI installers, and Docker container images. · github.com, 4 Oct 2026
- Language support
- The repository states support for C89, C99, most of C11, C17, C23, many GCC and Visual Studio extensions, and SystemC using Scoot. · github.com, 4 Oct 2026
- License
- The repository identifies CBMC as licensed under the 4-clause BSD license. · github.com, 4 Oct 2026
- Platforms
- The installation guide points to installation instructions for macOS, Ubuntu, Windows, and Docker. · diffblue.github.io, 4 Oct 2026
- Purpose
- CBMC is a bounded model checker for C and C++ programs that explores possible execution paths and checks assertions. · diffblue.github.io, 4 Oct 2026
- Related tools
- The user guide names CBMC Viewer and CBMC Starter Kit as third-party tools for summarizing findings and adding verification to a project. · diffblue.github.io, 4 Oct 2026
- Release guidance
- The repository says released versions are tested and intended for production use, while develop versions are not recommended for production use. · github.com, 4 Oct 2026
- Safety checks
- It can check array bounds, pointer safety, exceptions, user-specified assertions, and some undefined behavior such as signed integer overflow. · github.com, 4 Oct 2026
- Solver support
- CBMC supports an incremental SMT2 backend that can use an SMT-LIB 2.6 compliant solver, with examples for Z3 and CVC5. · diffblue.github.io, 4 Oct 2026
- Support
- The repository asks users encountering problems to file a bug report as a GitHub issue. · github.com, 4 Oct 2026
Where CBMC stands on Freedom251
- Formal Verification Tools#2 of 34