ESBMC (Efficient SMT-Based Context-Bounded Model Checker)
line decor
line decor

NEW! 19/12/2014: ESBMC v1.24.1 won two gold and two bronze medals in the 4th International Competition on Software Verification (SV-COMP 2015).


NEW! 20/11/2014: ESBMC v1.24.1 for Linux released for the SV-COMP 2015.


NEW! 13/12/2013: ESBMC v1.22 won the gold medal in the SequentializedConcurrent category of the Third Intl. Competition on Software Verification (SVCOMP'14).

ESBMC[1] is a context-bounded model checker for embedded C/C++ software based on Satisfiability Modulo Theories (SMT) solver. It allows the verification engineer (i) to verify single- and multi-threaded software (with shared variables and locks); (ii) to reason about arithmetic under- and overflow, pointer safety, memory leaks, array bounds, atomicity and order violations, deadlock and data race; (iii) to verify programs that make use of bit-level, pointers, structs, unions and fixed-point arithmetic.

ESBMC does not require the user to annotate the programs with pre/post-conditions, but allows the user to state additional properties using assert-statements, that are then checked as well. It also provides three approaches (lazy, schedule recording, and underapproximation and widening) to model check multi-threaded software. ESBMC can be invoked through the command-line interface or configured through the Eclipse plug-in. ESBMC converts the verification conditions using different background theories and passes them directly to an SMT solver. In addition, ESBMC can output verification conditions using the SMT logics QF_AUFBV and QF_AUFLIRA. ESBMC is built on top of the CProver framework.

ESBMC uses the SMT solvers Z3 (default) and Boolector, which are also included in the distribution. The restrictions of the Z3, Boolector and CProver licenses apply.

ESBMC is a joint project with the University of Southampton, University of Stellenbosch, and Federal University of Amazonas.

For further information about ESBMC, please send an e-mail to

You should also read the ESBMC license.

[1] This product includes software developed by Daniel Kroening, ETH Zurich and Edmund Clarke, Computer Science Department, Carnegie Mellon University.