Command line options are split into several categories. Each table below describes options of one category.
You can obtain a similar information directly from JBMC tool by running it with the option --help.
Program instrumentation options
| Option | Description |
| --bounds-check | enable array bounds checks |
| --pointer-check | enable pointer checks (always enabled for Java) |
| --memory-leak-check | enable memory leak checks |
| --div-by-zero-check | enable division by zero checks |
| --signed-overflow-check | enable 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 |
| --float-overflow-check | check floating-point for +/-Inf |
| --nan-check | check floating-point for NaN |
| --no-built-in-assertions | ignore assertions in built-in library |
| --no-assertions | ignore user assertions |
| --no-assumptions | ignore user assumptions |
| --error-label label | check that label is unreachable |
| --cover CC | create test-suite with coverage criterion CC |
| --mm MM | memory consistency model for concurrent programs |
| --reachability-slice | remove instructions that cannot appear on a trace from entry point to a property |
| --reachability-slice-fb | remove instructions that cannot appear on a trace from entry point through a property |
| --full-slice | run full slicer (experimental) |
Java Bytecode frontend options
| Option | Description |
| --classpath dir/jar | set the classpath to load additional jar files or class files |
| --main-class class-name | set the name of the main class |
| --no-core-models | don't load internally provided models for core classes in the Java Class Library |
| --java-assume-inputs-non-null | never initialize reference-typed parameter to the entry point with null |
| --java-throw-runtime-exceptions | make implicit runtime exceptions explicit (propagate them instead of checking whether they occur) |
| --java-max-input-array-length N | limit input array size to <= N |
| --java-max-input-tree-depth N | object references are (deterministically) set to null in the object |
| --java-max-vla-length | limit the length of user-code-created arrays |
| --java-cp-include-files | regexp or JSON list of files to load (with '@' prefix) |
| --lazy-methods | only translate methods that appear to be reachable from the --function entry point or main class Note --show-symbol-table/goto-functions/properties output will be restricted to loaded methods in this case |
| --lazy-methods-extra-entry-point METHODNAME | treat METHODNAME as a possible program entry point for the purpose of lazy method loading A '.*' wildcard is allowed to specify all class members |
| --java-unwind-enum-static | try to unwind loops in static initialization of enums |
| --symex-driven-lazy-loading | only load functions when first entered by symbolic execution Note --show-symbol-table/goto-functions/properties output will be restricted to loaded methods in this case, and only output after the symex phase |
BMC options
| Option | Description |
| --paths | explore paths one at a time |
| --program-only | only show program expression |
| --show-loops | show the loops in the program |
| --depth nr | limit search depth |
| --unwind nr | unwind nr times |
| --unwindset L:B,... | unwind loop L with a bound of B (use --show-loops to get the loop IDs) |
| --show-vcc | show the verification conditions |
| --slice-formula | remove assignments unrelated to property |
| --unwinding-assertions | generate unwinding assertions |
| --partial-loops | permit paths with partial loops |
| --no-pretty-names | do not simplify identifiers |
| --graphml-witness filename | write the witness in GraphML format to filename |
Backend options
| Option | Description |
| --object-bits n | number of bits used for object addresses |
| --dimacs | generate CNF in DIMACS format |
| --beautify | beautify the counterexample (greedy heuristic) |
| --localize-faults | localize faults (experimental) |
| --smt1 | use default SMT1 solver (obsolete) |
| --smt2 | use default SMT2 solver (Z3) |
| --boolector | use Boolector |
| --mathsat | use MathSAT |
| --cvc4 | use CVC4 |
| --yices | use Yices |
| --z3 | use Z3 |
| --refine | use refinement procedure (experimental) |
| --refine-strings | use string refinement (experimental) |
| --string-printable | add constraint that strings are printable (experimental) |
| --string-max-length | add constraint on the length of strings for the string solver |
| --string-max-input-length | add constraint on the length of input strings |
| --max-nondet-string-length n | bounds the maximum length n of non-deterministic strings (default: unrestricted) |
| --outfile filename | output formula to given file |
| --arrays-uf-never | never turn arrays into uninterpreted functions |
| --arrays-uf-always | always turn arrays into uninterpreted functions |