OS Manuals

/usr/bin/cbmc

CBMC bounded model checker for C and C++ programs

From cbmc 6.11.0-r0 (os), captured 2026-11-05 by running cbmc --help (exit 0). permalink

* *          CBMC 6.11.0 (cbmc-6.11.0-dirty) 64-bit         * *
* *                 Copyright (C) 2001-2018                 * *
* *              Daniel Kroening, Edmund Clarke             * *
* * Carnegie Mellon University, Computer Science Department * *
* *                  kroening@kroening.com                  * *
* *        Protected in part by U.S. patent 7,225,417       * *

Usage:                       Purpose:

 cbmc [-?] [-h] [--help]      show this help
 cbmc --version               show version and exit
 cbmc [options] file.c ...    perform bounded model checking

Analysis options:
 --show-properties            show the properties, but don't run analysis
 --symex-coverage-report f    generate a Cobertura XML coverage report in f
 --property id                only check one specific property
 --trace                      give a counterexample trace for failed properties
 --stop-on-fail               stop analysis once a failed property is detected
                              (implies --trace)
 --localize-faults            localize faults (experimental)

C/C++ frontend options:
 --preprocess                 stop after preprocessing
 --test-preprocessor          stop after preprocessing, discard output
 -I path                      set include path (C/C++)
 --include file               set include file (C/C++)
 -D macro                     define preprocessor macro (C/C++)
 --c89, --c99, --c11,
 --c17, --c23                 set C language standard (default: c11)
 --cpp98, --cpp03, --cpp11    set C++ language standard (default: cpp98)
 --unsigned-char              make "char" unsigned by default
 --round-to-nearest, --round-to-even  rounding towards nearest even (default)
 --round-to-plus-inf          rounding towards plus infinity
 --round-to-minus-inf         rounding towards minus infinity
 --round-to-zero              rounding towards zero
 --no-library                 disable built-in abstract C library
 --max-nondet-tree-depth N    limit size of nondet (e.g. input) object tree; at
                              level N pointers are set to null
 --min-null-tree-depth N      minimum level at which a pointer can first be
                              NULL in a recursively nondet initialized struct
 --function name              set main function name

Platform options:
 --arch arch_name             set architecture (default: x86_64) to one of:
                              alpha, arm, arm64, armel, armhf, hppa, i386, ia64
                              , mips, mips64, mips64el, mipsel, mipsn32,
                              mipsn32el, powerpc, ppc64, ppc64le, riscv64, s390
                              , s390x, sh4, sparc, sparc64, v850, x32, x86_64,
                              or none
 --os os_name                 set operating system (default: linux) to one of:
                              freebsd, linux, macos, netbsd, openbsd, solaris,
                              hurd, or windows
 --i386-linux, --i386-win32, --i386-macos, --ppc-macos, --win32, --winx64  set
                              architecture and operating system
 --LP64, --ILP64, --LLP64, --ILP32, --LP32  set width of int, long and
                              pointers, but don't override default architecture
                              and operating system
 --16, --32, --64             equivalent to --LP32, --ILP32, --LP64 (on
                              Windows: --LLP64)
 --little-endian              allow little-endian word-byte conversions
 --big-endian                 allow big-endian word-byte conversions
 --gcc                        use GCC as preprocessor

Program representations:
 --show-parse-tree            show parse tree
 --show-symbol-table          show loaded symbol table
 --show-goto-functions        show loaded goto program
 --list-goto-functions        list loaded goto functions
 --validate-goto-model        enable additional well-formedness checks on the
                              goto program
 --validate-ssa-equation      enable additional well-formedness checks on the
                              SSA representation
 --export-symex-ready-goto f  serialise goto-program in symex-ready-goto form
                              in f

Program instrumentation options:
 --no-standard-checks         disable default checks (more information in
                              manpage)
 --bounds-check               enable array bounds checks (default on)
 --no-bounds-check            disable array bounds checks
 --pointer-check              enable pointer checks (default on)
 --no-pointer-check           disable pointer checks
 --memory-leak-check          enable memory leak checks
 --memory-cleanup-check       enable memory cleanup checks
 --div-by-zero-check          enable division by zero checks on integers
                              (default on)
 --float-div-by-zero-check    enable division by zero checks on floating-point
                              numbers (default off)
 --no-div-by-zero-check       disable division by zero checks
 --signed-overflow-check      enable signed arithmetic over- and underflow
                              checks (default on)
 --no-signed-overflow-check   disable signed arithmetic over- and underflow
                              checks
 --unsigned-overflow-check    enable arithmetic over- and underflow checks
 --pointer-overflow-check     enable pointer arithmetic over- and underflow
                              checks
 --conversion-check           check whether values can be represented after
                              type cast
 --undefined-shift-check      check shift greater than bit-width (default on)
 --no-undefined-shift-check   disable check for shift greater than bit-width
 --float-overflow-check       check floating-point for +/-Inf
 --nan-check                  check floating-point for NaN
 --enum-range-check           checks that all enum type expressions have values
                              in the enum range
 --pointer-primitive-check    checks that all pointers in pointer primitives
                              are valid or null (default on)
 --no-pointer-primitive-check  disable checks that all pointers in pointer
                              primitives are valid or null
 --retain-trivial-checks      include checks that are trivially true
 --error-label label          check that label label is unreachable
 --no-built-in-assertions     ignore assertions in built-in library
 --no-assertions              ignore user assertions
 --no-assumptions             ignore user assumptions
 --assert-to-assume           convert user assertions to assumptions
 --cover CC                   create test-suite with coverage criterion CC,
                              where CC is one of assertion[s], assume[s], branch
                              [es], condition[s], cover, decision[s], location[s
                              ], or mcdc
 --cover-failed-assertions    do not stop coverage checking at failed
                              assertions (this is the default for --cover
                              assertions)
 --show-test-suite            print test suite for coverage criterion (requires
                              --cover)
 --mm MM                      memory consistency model for concurrent programs
                              (default: sc)
 --malloc-may-fail            allow malloc calls to return a null pointer
 --no-malloc-may-fail         disable potential malloc failure
 --malloc-fail-assert         set malloc failure mode to assert-then-assume
 --malloc-fail-null           set malloc failure mode to return null
 --string-abstraction         track C string lengths and zero-termination
 --dfcc-debug-lib             enable debug assertions in the cprover contracts
                              library
 --dfcc-simple-invalid-pointer-model  use simplified invalid pointer model in
                              the cprover contracts library (faster, unsound)
 --reachability-slice-fb      remove instructions that cannot appear on a trace
                              from entry point through a property
 --full-slice                 run full slicer (experimental)
 --drop-unused-functions      drop functions trivially unreachable from main
                              function

Semantic transformations:
 --nondet-static              add nondeterministic initialization of variables
                              with static lifetime

BMC options:
 --paths [strategy]           explore paths one at a time
 --show-symex-strategies      list strategies for use with --paths
 --show-goto-symex-steps      show which steps symex travels, includes
                              diagnostic information
 --show-points-to-sets        show points-to sets for pointer dereference.
                              Requires --json-ui.
 --program-only               only show program expression
 --show-byte-ops              show all byte extracts and updates
 --depth nr                   limit search depth
 --max-field-sensitivity-array-size M  maximum size M of arrays for which field
                              sensitivity will be applied to array, the default
                              is 64
 --no-array-field-sensitivity  deactivate field sensitivity for arrays, this is
                              equivalent to setting the maximum field
                              sensitivity size for arrays to 0
 --show-loops                 show the loops in the program
 --unwind nr                  unwind loops nr times
 --unwindset [T:]L:B,...      unwind loop L with a bound of B (optionally
                              restricted to thread T) (use --show-loops to get
                              the loop IDs)
 --incremental-loop L         check properties after each unwinding of loop L
                              (use --show-loops to get the loop IDs)
 --unwind-min nr              start incremental-loop after nr unwindings but
                              before solving that iteration. If for example it
                              is 1, then the loop will be unwound once, and
                              immediately checked. Note: this means for
                              --unwind-min 1 or 0 all properties are checked.
 --unwind-max nr              stop incremental-loop after nr unwindings
 --ignore-properties-before-unwind-min  do not check properties before
                              unwind-min when using --incremental-loop
 --show-vcc                   show the verification conditions
 --slice-formula              remove assignments unrelated to property
 --unwinding-assertions       generate unwinding assertions (cannot be used
                              with --cover)
 --partial-loops              permit paths with partial loops
 --no-self-loops-to-assumptions  do not simplify while(1){} to assume(0)
 --symex-complexity-limit N   how complex (N) a path can become before symex
                              abandons it. Currently uses guard size to
                              calculate complexity.
 --symex-complexity-failed-child-loops-limit N  how many child branches (N) in
                              an iteration are allowed to fail due to
                              complexity violations before the loop gets
                              blacklisted
 --graphml-witness filename   write the witness in GraphML format to filename
 --symex-cache-dereferences   enable caching of repeated dereferences

Backend options:
 --object-bits n              number of bits used for object addresses
 --sat-solver solver          use specified SAT solver
 --external-sat-solver cmd    command to invoke SAT solver process
 --no-sat-preprocessor        disable the SAT solver's simplifier
 --dimacs                     generate CNF in DIMACS format
 --beautify                   beautify the counterexample (greedy heuristic)
 --smt1                       use default SMT1 solver (obsolete)
 --smt2                       use default SMT2 solver (Z3)
 --bitwuzla                   use Bitwuzla
 --boolector                  use Boolector
 --cprover-smt2               use CPROVER SMT2 solver
 --cvc5                       use CVC5
 --mathsat                    use MathSAT
 --yices                      use Yices
 --z3                         use Z3
 --fpa                        use theory of floating-point arithmetic
 --external-smt2-solver cmd   command to invoke SMT2 solver (combine with one
                              of the solver choices for solver-specific
                              constraints)
 --refine                     use refinement procedure (experimental)
 --refine-arrays              use refinement for arrays only
 --refine-arithmetic          refinement of arithmetic expressions only
 --max-node-refinement        maximum refinement iterations for arithmetic
                              expressions
 --incremental-smt2-solver cmd  command to invoke external SMT solver for
                              incremental solving (experimental)
 --outfile filename           output formula to given file
 --dump-smt-formula filename  output smt incremental formula to the given file
 --write-solver-stats-to json-file  collect the solver query complexity
 --refine-strings             use string refinement (experimental)
 --string-printable           restrict to printable strings (experimental)
 --arrays-uf-never            never turn arrays into uninterpreted functions
 --arrays-uf-always           always turn arrays into uninterpreted functions
 --show-array-constraints     show array theory constraints added during post
                              processing. Requires --json-ui.

User-interface options:
 --xml-ui                     use XML-formatted output
 --xml-interface              bi-directional XML interface
 --json-ui                    use JSON-formatted output
 --json-interface             bi-directional JSON interface
 --trace-json-extended        add rawLhs property to trace
 --trace-show-function-calls  show function calls in plain trace
 --trace-show-code            show original code in plain trace
 --trace-hex                  represent plain trace values in hex
 --compact-trace              give a compact trace
 --stack-trace                give a stack trace only
 --flush                      flush every line of output
 --verbosity #                verbosity level (default 6)
 --timestamp [monotonic|wall]  print microsecond-precision timestamps. monotonic
                              : stamps increase monotonically. wall: ISO-8601
                              wall clock timestamps.
Options (151)
OptionDescriptionSource
--show-propertiesshow the properties, but don't run analysishelp + man
--symex-coverage-report fgenerate a Cobertura XML coverage report in fhelp + man
--property idonly check one specific propertyhelp + man
--tracegive a counterexample trace for failed propertieshelp + man
--stop-on-failstop analysis once a failed property is detected (implies --trace)help + man
--localize-faultslocalize faults (experimental)help + man
--preprocessstop after preprocessinghelp + man
--test-preprocessorstop after preprocessing, discard outputhelp + man
-I pathset include path (C/C++)help + man
--include fileset include file (C/C++)help + man
-D macrodefine preprocessor macro (C/C++)help + man
--c89, --c99, --c11set C language standard (default: c11)help + man
--c17, --c23set C language standard (default: c11)help
--cpp98, --cpp03, --cpp11set C++ language standard (default: cpp98)help + man
--unsigned-charmake "char" unsigned by defaulthelp + man
--round-to-nearest, --round-to-evenrounding towards nearest even (default)help + man
--round-to-plus-infrounding towards plus infinityhelp + man
--round-to-minus-infrounding towards minus infinityhelp + man
--round-to-zerorounding towards zerohelp + man
--no-librarydisable built-in abstract C libraryhelp + man
--max-nondet-tree-depth Nlimit size of nondet (e.g. input) object tree;help + man
--min-null-tree-depth Nminimum level at which a pointer can first be NULL in a recursively nondet initialized structhelp + man
--function nameset main function namehelp + man
--arch arch_nameset architecture (default: x86_64) to one of: alpha, arm, arm64, armel, armhf, hppa, i386, ia64 , mips, mips64, mips64el, mipsel, mipsn32, mipsn32el, powerpc, ppc64, ppc64le, riscv64, s390 , s390x,…help + man
--os os_nameset operating system (default: linux) to one of: freebsd, linux, macos, netbsd, openbsd, solaris, hurd, or windowshelp + man
--i386-linux, --i386-win32, --i386-macos, --ppc-macos, --win32, --winx64Set analysis architecture and operating system.help + man
--LP64, --ILP64, --LLP64, --ILP32, --LP32Set width of int, long and pointers, but don't override default architecture and operating system.help + man
--16, --32, --64Equivalent to --LP32, --ILP32, --LP64 (on Windows: --LLP64).help + man
--little-endianallow little-endian word-byte conversionshelp + man
--big-endianallow big-endian word-byte conversionshelp + man
--gccuse GCC as preprocessorhelp + man
--show-parse-treeshow parse treehelp + man
--show-symbol-tableshow loaded symbol tablehelp + man
--show-goto-functionsshow loaded goto programhelp + man
--list-goto-functionslist loaded goto functionshelp + man
--validate-goto-modelenable additional well-formedness checks on the goto programhelp + man
--validate-ssa-equationenable additional well-formedness checks on the SSA representationhelp + man
--export-symex-ready-goto fexport the symex ready version of the goto-model into the given filenamehelp + man
--no-standard-checksdisable the standard (default) checks applied to a C/GOTO program (see above for more information)help + man
--bounds-checkenable array bounds checks (default on)help + man
--no-bounds-checkdisable array bounds checkshelp + man
--pointer-checkenable pointer checks (default on)help + man
--no-pointer-checkdisable pointer checkshelp + man
--memory-leak-checkenable memory leak checkshelp + man
--memory-cleanup-checkEnable memory cleanup checks: assert that all dynamically allocated memory is explicitly freed before terminating the program.help + man
--div-by-zero-checkenable division by zero checks on integers (default on)help + man
--float-div-by-zero-checkenable division by zero checks on floating-point numbers (default off)help + man
--no-div-by-zero-checkdisable division by zero checkshelp + man
--signed-overflow-checkenable signed arithmetic over- and underflow checks (default on)help + man
--no-signed-overflow-checkdisable signed arithmetic over- and underflow checkshelp + man
--unsigned-overflow-checkenable arithmetic over- and underflow checkshelp + man
--pointer-overflow-checkenable pointer arithmetic over- and underflow checkshelp + man
--conversion-checkcheck whether values can be represented after type casthelp + man
--undefined-shift-checkcheck shift greater than bit-width (default on)help + man
--no-undefined-shift-checkdo not perform check for shift greater than bit-widthhelp + man
--float-overflow-checkcheck floating-point for +/-Infhelp + man
--nan-checkcheck floating-point for NaNhelp + man
--enum-range-checkchecks that all enum type expressions have values in the enum rangehelp + man
--pointer-primitive-checkchecks that all pointers in pointer primitives are valid or null (default on)help + man
--no-pointer-primitive-checkdisable checks that all pointers in pointer primitives are valid or nullhelp + man
--retain-trivial-checksinclude checks that are trivially truehelp + man
--error-label labelcheck that label label is unreachablehelp + man
--no-built-in-assertionsignore assertions in built-in libraryhelp + man
--no-assertionsignore user assertionshelp + man
--no-assumptionsignore user assumptionshelp + man
--assert-to-assumeconvert user assertions to assumptionshelp + man
--cover CCcreate test-suite with coverage criterion CC, where CC is one of assertion[s], assume[s], branch [es], condition[s], cover, decision[s], location[s ], or mcdchelp + man
--cover-failed-assertionsdo not stop coverage checking at failed assertions (this is the default for --cover assertions)help + man
--show-test-suiteprint test suite for coverage criterion (requires --cover)help + man
--mm MMmemory consistency model for concurrent programs (default: sc)help + man
--malloc-may-failallow malloc calls to return a null pointerhelp + man
--no-malloc-may-faildo not allow malloc calls to fail by defaulthelp + man
--malloc-fail-assertset malloc failure mode to assert-then-assumehelp + man
--malloc-fail-nullset malloc failure mode to return nullhelp + man
--string-abstractiontrack C string lengths and zero-terminationhelp + man
--dfcc-debug-libenable debug assertions in the cprover contracts libraryhelp + man
--dfcc-simple-invalid-pointer-modeluse simplified invalid pointer model in the cprover contracts library (faster, unsound)help + man
--reachability-slice-fbremove instructions that cannot appear on a trace from entry point through a propertyhelp + man
--full-slicerun full slicer (experimental)help + man
--drop-unused-functionsdrop functions trivially unreachable from main functionhelp + man
--nondet-staticadd nondeterministic initialization of variables with static lifetimehelp + man
--paths strategyexplore paths one at a timehelp
--show-symex-strategieslist strategies for use with --pathshelp + man
--show-goto-symex-stepsshow which steps symex travels, includes diagnostic informationhelp + man
--show-points-to-setsshow points-to sets for pointer dereference.help + man
--program-onlyonly show program expressionhelp + man
--show-byte-opsshow all byte extracts and updateshelp + man
--depth nrlimit search depthhelp + man
--max-field-sensitivity-array-size Mmaximum size M of arrays for which field sensitivity will be applied to array, the default is 64help + man
--no-array-field-sensitivitydeactivate field sensitivity for arrays, this is equivalent to setting the maximum field sensitivity size for arrays to 0help + man
--show-loopsshow the loops in the programhelp + man
--unwind nrunwind all loops at most nr timeshelp + man
--unwindset T:]L:Bunwind loop L with a bound of B (optionally restricted to thread T) (use --show-loops to get the loop IDs)help
--incremental-loop Lcheck properties after each unwinding of loop L (use --show-loops to get the loop IDs)help + man
--unwind-min nrstart incremental-loop after nr unwindings but before solving that iteration.help + man
--unwind-max nrstop incremental-loop after nr unwindingshelp + man
--ignore-properties-before-unwind-mindo not check properties before unwind-min when using --incremental-loophelp + man
--show-vccshow the verification conditionshelp + man
--slice-formularemove assignments unrelated to propertyhelp + man
--unwinding-assertionsgenerate unwinding assertions (cannot be used with --cover)help + man
--partial-loopspermit paths that execute loops only partially (up to the given unwinding bound) and then continue beyond the loop even when the loop condition would still hold (such paths may be spurious, resulting…help + man
--no-self-loops-to-assumptionsdo not simplify while(1){} to assume(0)help + man
--symex-complexity-limit Nhow complex (N) a path can become before symex abandons it.help + man
--symex-complexity-failed-child-loops-limit Nhow many child branches (N) in an iteration are allowed to fail due to complexity violations before the loop gets blacklistedhelp + man
--graphml-witness filenamewrite the witness in GraphML format to filenamehelp + man
--symex-cache-dereferencesenable caching of repeated dereferenceshelp + man
--object-bits nnumber of bits used for object addresseshelp + man
--sat-solver solveruse specified SAT solverhelp + man
--external-sat-solver cmdcommand to invoke SAT solver processhelp + man
--no-sat-preprocessordisable the SAT solver's simplifierhelp + man
--dimacsgenerate CNF in DIMACS formathelp + man
--beautifybeautify the counterexample (greedy heuristic)help + man
--smt1use default SMT1 solver (obsolete)help + man
--smt2use default SMT2 solver (Z3)help + man
--bitwuzlause Bitwuzlahelp + man
--boolectoruse Boolectorhelp + man
--cprover-smt2use CPROVER SMT2 solverhelp + man
--cvc5use CVC5help + man
--mathsatuse MathSAThelp + man
--yicesuse Yiceshelp + man
--z3use Z3help + man
--fpause theory of floating-point arithmetichelp + man
--external-smt2-solver cmdcommand to invoke SMT2 solver (combine with one of the solver choices for solver-specific constraints)help + man
--refineuse refinement procedure (experimental)help + man
--refine-arraysuse refinement for arrays onlyhelp + man
--refine-arithmeticrefinement of arithmetic expressions onlyhelp + man
--max-node-refinementmaximum refinement iterations for arithmetic expressionshelp + man
--incremental-smt2-solver cmdUse the incremental SMT backend where cmd is the command to invoke the SMT solver of choice.help + man
--outfile filenameoutput formula to given filehelp + man
--dump-smt-formula filenameoutput smt incremental formula to the given filehelp + man
--write-solver-stats-to json-filecollect the solver query complexityhelp + man
--refine-stringsuse string refinement (experimental)help + man
--string-printablerestrict to printable strings (experimental)help + man
--arrays-uf-nevernever turn arrays into uninterpreted functionshelp + man
--arrays-uf-alwaysalways turn arrays into uninterpreted functionshelp + man
--show-array-constraintsshow array theory constraints added during post processing.help + man
--xml-uiuse XML-formatted outputhelp + man
--xml-interfacebi-directional XML interfacehelp + man
--json-uiuse JSON-formatted outputhelp + man
--json-interfacebi-directional JSON interfacehelp + man
--trace-json-extendedadd rawLhs property to tracehelp + man
--trace-show-function-callsshow function calls in plain tracehelp + man
--trace-show-codeshow original code in plain tracehelp + man
--trace-hexrepresent plain trace values in hexhelp + man
--compact-tracegive a compact tracehelp + man
--stack-tracegive a stack trace onlyhelp + man
--flushflush every line of outputhelp + man
--verbosity #verbosity level (default 6)help + man
--timestamp monotonic|wallprint microsecond-precision timestamps.help
--no-unwinding-assertionsdo not generate unwinding assertions (in the manual page but not in --help)man
--reachability-sliceremove instructions that cannot appear on a trace from entry point to a property (in the manual page but not in --help)man

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.