FREEDOM251

Freedom251 › Formal Verification Tools

CBMC

Free plan LinuxMacSelf-hostedWindows

Visit CBMC Alternatives Pricing

CBMC's own site

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

PlanBilled and limitsPrice
CBMC4-clause BSD licensed open-source softwareFree

As diffblue.github.io lists them, read 4 Oct 2026. The maker's own page has the final word.

Getting started

  1. Visit the CBMC website for project information.
  2. Choose a distribution route for Linux, macOS, Windows, or Docker.
  3. Install a released version for production use.
  4. Configure an SMT-LIB 2.6-compliant solver such as Z3 or CVC5 if using the incremental SMT2 backend.
  5. 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

Look at these too