pax_global_header00006660000000000000000000000064133345176770014532gustar00rootroot0000000000000052 comment=097cf712f57d59cff9c53a9fb7b9b81be1245f93 cbmc-cbmc-5.10/000077500000000000000000000000001333451767700132655ustar00rootroot00000000000000cbmc-cbmc-5.10/.clang-format000066400000000000000000000054031333451767700156420ustar00rootroot00000000000000--- AccessModifierOffset: '-2' AlignAfterOpenBracket: AlwaysBreak AlignConsecutiveAssignments: 'false' AlignConsecutiveDeclarations: 'false' AlignEscapedNewlinesLeft: 'false' AlignOperands: 'true' AlignTrailingComments: 'true' AllowAllParametersOfDeclarationOnNextLine: 'false' AllowShortBlocksOnASingleLine: 'false' AllowShortCaseLabelsOnASingleLine: 'false' AllowShortFunctionsOnASingleLine: None AllowShortIfStatementsOnASingleLine: 'false' AllowShortLoopsOnASingleLine: 'false' AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: 'true' AlwaysBreakTemplateDeclarations: 'true' BinPackArguments: 'false' BinPackParameters: 'false' BreakBeforeBinaryOperators: None BreakBeforeBraces: Allman BreakBeforeTernaryOperators: 'true' BreakConstructorInitializersBeforeComma: 'false' ColumnLimit: '80' ConstructorInitializerAllOnOneLineOrOnePerLine: 'true' ConstructorInitializerIndentWidth: '2' ContinuationIndentWidth: '2' Cpp11BracedListStyle: 'true' DerivePointerAlignment: 'false' DisableFormat: 'false' ExperimentalAutoDetectBinPacking: 'false' ForEachMacros: [ 'forall_rw_range_set_r_objects', 'Forall_rw_range_set_r_objects', 'forall_rw_range_set_w_objects', 'Forall_rw_range_set_w_objects', 'forall_rw_set_r_entries', 'Forall_rw_set_r_entries', 'forall_rw_set_w_entries', 'Forall_rw_set_w_entries', 'forall_goto_functions', 'Forall_goto_functions', 'forall_goto_program_instructions', 'Forall_goto_program_instructions', 'forall_objects', 'Forall_objects', 'forall_valid_objects', 'Forall_valid_objects', 'forall_nodes', 'Forall_nodes', 'forall_literals', 'Forall_literals', 'forall_operands', 'Forall_operands', 'forall_expr', 'Forall_expr', 'forall_expr_list', 'Forall_expr_list', 'forall_symbolptr_list', 'Forall_symbolptr_list', 'forall_guard', 'Forall_guard', 'forall_irep', 'Forall_irep', 'forall_named_irep', 'Forall_named_irep', 'forall_value_list', 'Forall_value_list', 'forall_symbols', 'Forall_symbols', 'forall_symbol_base_map', 'Forall_symbol_base_map', 'forall_symbol_module_map', 'Forall_symbol_module_map', 'forall_subtypes', 'Forall_subtypes'] IndentCaseLabels: 'false' IndentWidth: '2' IndentWrappedFunctionNames: 'false' KeepEmptyLinesAtTheStartOfBlocks: 'false' Language: Cpp MaxEmptyLinesToKeep: '1' NamespaceIndentation: None PenaltyBreakString: 10000 PointerAlignment: Right ReflowComments: 'false' SortIncludes: 'true' SpaceAfterCStyleCast: 'false' SpaceBeforeAssignmentOperators: 'true' SpaceBeforeParens: Never SpaceInEmptyParentheses: 'false' SpacesBeforeTrailingComments: '1' SpacesInAngles: 'false' SpacesInCStyleCastParentheses: 'false' SpacesInContainerLiterals: 'false' SpacesInParentheses: 'false' SpacesInSquareBrackets: 'false' Standard: Cpp11 TabWidth: '2' UseTab: Never ... cbmc-cbmc-5.10/.dir-locals.el000066400000000000000000000002151333451767700157140ustar00rootroot00000000000000((c-mode . ((indent-tabs-mode . nil))) (c++-mode . ((indent-tabs-mode . nil))) (nil . ((c-file-style . "linux") (c-basic-offset . 2)))) cbmc-cbmc-5.10/.editorconfig000066400000000000000000000004071333451767700157430ustar00rootroot00000000000000root = true [*] charset = utf-8 indent_style = space indent_size = 2 trim_trailing_whitespace = true max_line_length = 80 end_of_line = lf insert_final_newline = true [*patch] # Trailing spaces are significant in patch files trim_trailing_whitespace = false cbmc-cbmc-5.10/.gitattributes000066400000000000000000000001751333451767700161630ustar00rootroot00000000000000*.cpp text *.c text *.h text *.y text *.tex text *.shtml text *.html text *.css text *.inc text test.desc text Makefile text cbmc-cbmc-5.10/.githooks/000077500000000000000000000000001333451767700151725ustar00rootroot00000000000000cbmc-cbmc-5.10/.githooks/pre-commit000077500000000000000000000023421333451767700171750ustar00rootroot00000000000000#!/bin/bash # Runs scripts/cpplint.py on the modified files # Based on https://github.com/s0enke/git-hooks/ # # @author Peter Schrammel gitRoot="$(dirname $0)/../.." # this is the magic: # retrieve all files in staging area that are added, modified or renamed # but no deletions etc files=$(git diff-index --name-only --cached --diff-filter=ACMR HEAD -- ) if [ "$files" == "" ]; then exit 0 fi # create temporary copy of staging area and delete upon exit cleanup() { rm -rf $tmpStaging } trap cleanup EXIT tmpStaging=$(mktemp -d) touch $tmpStaging/.git # Copy contents of staged version of files to temporary staging area # because we only want the staged version that will be commited and not # the version in the working directory stagedFiles="" for file in $files do id=$(git diff-index --cached HEAD $file | cut -d " " -f4) # create staged version of file in temporary staging area with the same # path as the original file mkdir -p "$tmpStaging/$(dirname $file)" git cat-file blob $id > "$tmpStaging/$file" stagedFiles="$stagedFiles $tmpStaging/$file" done output=$(cd $gitRoot; scripts/cpplint.py $stagedFiles 2>&1) retval=$? if [ $retval -ne 0 ] then echo "$output" exit 1 fi cbmc-cbmc-5.10/.gitignore000066400000000000000000000061171333451767700152620ustar00rootroot00000000000000# Local files generated by IDEs .vs/* .vscode/* ~AutoRecover.* *.sln *.vcxproj* scripts/__pycache__/* src/goto-analyzer/taint_driver_scripts/.idea/* /*.config /*.creator /*.creator.user /*.files /*.idea /*.includes # Eclipse src/.cproject src/.project src/.settings/* # Visual Studio Debug/* Release/* # compilation files *.lo *.od *.d *.o *.obj *.a *.lib util/version.cpp src/ansi-c/arm_builtin_headers.inc src/ansi-c/clang_builtin_headers.inc src/ansi-c/cprover_builtin_headers.inc src/ansi-c/cprover_library.inc src/ansi-c/cw_builtin_headers.inc src/ansi-c/gcc_builtin_headers_types.inc src/ansi-c/gcc_builtin_headers_alpha.inc src/ansi-c/gcc_builtin_headers_arm.inc src/ansi-c/gcc_builtin_headers_generic.inc src/ansi-c/gcc_builtin_headers_ia32-2.inc src/ansi-c/gcc_builtin_headers_ia32-3.inc src/ansi-c/gcc_builtin_headers_ia32-4.inc src/ansi-c/gcc_builtin_headers_ia32.inc src/ansi-c/gcc_builtin_headers_math.inc src/ansi-c/gcc_builtin_headers_mem_string.inc src/ansi-c/gcc_builtin_headers_omp.inc src/ansi-c/gcc_builtin_headers_tm.inc src/ansi-c/gcc_builtin_headers_mips.inc src/ansi-c/gcc_builtin_headers_power.inc src/ansi-c/gcc_builtin_headers_ubsan.inc src/ansi-c/windows_builtin_headers.inc src/cpp/cprover_library.inc # regression/test files *.out regression/**/tests.log regression/**/*.gb regression/**/*.smt2 jbmc/regression/**/tests.log jbmc/regression/**/tests-symex-driven-loading.log # regression/coverage file /regression/coverage_** # files stored by editors *~ # libs downloaded by make [name]-download minisat*/ glucose-syrup/ # flex/bison generated files src/ansi-c/ansi_c_lex.yy.cpp src/ansi-c/ansi_c_y.output src/ansi-c/ansi_c_y.tab.cpp src/ansi-c/ansi_c_y.tab.h src/assembler/assembler_lex.yy.cpp src/jsil/jsil_lex.yy.cpp src/jsil/jsil_y.output src/jsil/jsil_y.tab.cpp src/jsil/jsil_y.tab.h src/json/json_lex.yy.cpp src/json/json_y.output src/json/json_y.tab.cpp src/json/json_y.tab.h src/xmllang/xml_lex.yy.cpp src/xmllang/xml_y.output src/xmllang/xml_y.tab.cpp src/xmllang/xml_y.tab.h src/memory-models/mm_lex.yy.cpp src/memory-models/mm_y.output src/memory-models/mm_y.tab.cpp src/memory-models/mm_y.tab.h # binaries src/cbmc/cbmc src/cbmc/cbmc.exe src/goto-analyzer/goto-analyzer src/goto-analyzer/goto-analyzer.exe src/goto-cc/goto-cc src/goto-cc/goto-cc.exe src/goto-cc/goto-cl.exe src/goto-instrument/goto-instrument src/goto-instrument/goto-instrument.exe src/solvers/smt2_solver src/solvers/smt2_solver.exe src/goto-diff/goto-diff src/goto-diff/goto-diff.exe src/clobber/clobber src/clobber/clobber.exe src/big-int/test-bigint src/big-int/test-bigint.exe jbmc/src/janalyzer/janalyzer jbmc/src/janalyzer/janalyzer.exe jbmc/src/jdiff/jdiff jbmc/src/jdiff/jdiff.exe jbmc/src/jbmc/jbmc jbmc/src/jbmc/jbmc.exe # build tools src/ansi-c/file_converter src/ansi-c/file_converter.exe src/ansi-c/library/converter src/ansi-c/library/converter.exe jbmc/src/java_bytecode/library/converter.exe jbmc/src/java_bytecode/library/converter jbmc/src/java_bytecode/library/core-models.jar jbmc/src/java_bytecode/library/classes jbmc/src/java_bytecode/library/src build/ dist/ *.pyc # auto generated documentation doc/html/ cbmc-cbmc-5.10/.gitmodules000066400000000000000000000002131333451767700154360ustar00rootroot00000000000000[submodule "jbmc/lib/java-models-library"] path = jbmc/lib/java-models-library url = https://github.com/diffblue/java-models-library.git cbmc-cbmc-5.10/.travis.yml000066400000000000000000000274701333451767700154100ustar00rootroot00000000000000language: cpp jobs: include: - &formatting-stage stage: Linter + Doxygen + non-debug Ubuntu/gcc-5 test env: NAME="clang-format" addons: apt: packages: - clang-format-3.8 install: script: | # Apparently update-alternatives doesn't work in Travis containers mkdir -p priority-symlinks ln -s /usr/bin/clang-format-3.8 priority-symlinks/clang-format export PATH=${PWD}/priority-symlinks:${PATH} # Now we can do the formatting pass clang-format --version git-clang-format-3.8 "${TRAVIS_BRANCH}" git diff > formatted.diff if [[ -s formatted.diff ]] ; then echo 'Formatting error! The following diff shows the required changes' echo 'Use the raw log to get a version of the diff that preserves spacing' cat formatted.diff exit 1 fi echo 'No formatting errors found' exit 0 before_cache: - &linter-stage stage: Linter + Doxygen + non-debug Ubuntu/gcc-5 test env: NAME="CPP-LINT" install: script: scripts/travis_lint.sh before_cache: - &string-table-check stage: Linter + Doxygen + non-debug Ubuntu/gcc-5 test env: NAME="string-table" install: script: scripts/string_table_check.sh before_cache: - stage: Linter + Doxygen + non-debug Ubuntu/gcc-5 test env: NAME: "DOXYGEN-CHECK" DOXYGEN_VERSION: "1.8.14" addons: apt: sources: - sourceline: 'deb http://packages.cloud.google.com/apt cloud-sdk-trusty main' key_url: 'https://packages.cloud.google.com/apt/doc/apt-key.gpg' packages: - cmake - google-cloud-sdk - graphviz cache: directories: - ${TRAVIS_BUILD_DIR}/doxygen/build/bin install: - | # Build doxygen if it is not in Travis cache if ! [ -x doxygen/build/bin/doxygen ] then mkdir -p doxygen/build \ && wget http://ftp.stack.nl/pub/users/dimitri/doxygen-${DOXYGEN_VERSION}.src.tar.gz -O- | tar -xz --strip-components=1 --directory doxygen \ && ( cd doxygen/build && cmake .. ) \ && make -j4 -C doxygen/build fi - export PATH="$PATH:${TRAVIS_BUILD_DIR}/doxygen/build/bin" script: - echo $PATH - doxygen --version - scripts/travis_doxygen.sh before_cache: after_success: # Google Cloud Integration - export BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" - openssl aes-256-cbc -k ${GCLOUD_TRAVIS_CBMC_KEY} -in gcloud-travis-cbmc.json.enc -out gcloud-travis-cbmc.json -d - export G_KEY=${PWD}/gcloud-travis-cbmc.json - gcloud auth activate-service-account --key-file ${G_KEY} - scripts/publish_doc.sh # Ubuntu Linux with glibc using g++-5 - stage: Linter + Doxygen + non-debug Ubuntu/gcc-5 test os: linux sudo: false compiler: gcc cache: ccache addons: apt: sources: - ubuntu-toolchain-r-test packages: - libwww-perl - g++-5 - libubsan0 - parallel before_install: - mkdir bin - ln -s /usr/bin/gcc-5 bin/gcc - ln -s /usr/bin/g++-5 bin/g++ # env: COMPILER=g++-5 SAN_FLAGS="-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer" env: - COMPILER="ccache /usr/bin/g++-5" - EXTRA_CXXFLAGS="-D_GLIBCXX_DEBUG" # OS X using clang++ - stage: Test different OS/CXX/Flags os: osx sudo: false compiler: clang cache: ccache before_install: - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache parallel - export PATH=$PATH:/usr/local/opt/ccache/libexec env: COMPILER="ccache clang++" # Ubuntu Linux with glibc using g++-5, debug mode - stage: Test different OS/CXX/Flags os: linux sudo: false compiler: gcc cache: ccache addons: apt: sources: - ubuntu-toolchain-r-test packages: - libwww-perl - g++-5 - libubsan0 before_install: - mkdir bin - ln -s /usr/bin/gcc-5 bin/gcc - ln -s /usr/bin/g++-5 bin/g++ # env: COMPILER=g++-5 SAN_FLAGS="-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer" env: - COMPILER="ccache /usr/bin/g++-5" - EXTRA_CXXFLAGS="-DDEBUG" script: echo "Not running any tests for a debug build." # Ubuntu Linux with glibc using clang++-3.7, no-debug mode - stage: Test different OS/CXX/Flags os: linux sudo: false compiler: clang cache: ccache addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.7 packages: - libwww-perl - clang-3.7 - g++-5 - libstdc++-5-dev - libubsan0 - parallel before_install: - mkdir bin - ln -s /usr/bin/gcc-5 bin/gcc - ln -s /usr/bin/c++-5 bin/g++ - export CCACHE_CPP2=yes # env: COMPILER=clang++-3.7 SAN_FLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined,integer -fno-omit-frame-pointer" env: - COMPILER="ccache /usr/bin/clang++-3.7" - EXTRA_CXXFLAGS="-Qunused-arguments -fcolor-diagnostics -DNDEBUG" - CCACHE_CPP2=yes # Ubuntu Linux with glibc using clang++-3.7, debug mode, disable USE_DSTRING - stage: Test different OS/CXX/Flags os: linux sudo: false compiler: clang cache: ccache addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.7 packages: - libwww-perl - clang-3.7 - g++-5 - libstdc++-5-dev - libubsan0 before_install: - mkdir bin - ln -s /usr/bin/gcc-5 bin/gcc - ln -s /usr/bin/g++-5 bin/g++ - export CCACHE_CPP2=yes # env: COMPILER=clang++-3.7 SAN_FLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined,integer -fno-omit-frame-pointer" env: - COMPILER="ccache /usr/bin/clang++-3.7" - EXTRA_CXXFLAGS="-Qunused-arguments -fcolor-diagnostics -DDEBUG -DUSE_STD_STRING" - CCACHE_CPP2=yes script: echo "Not running any tests for a debug build." # cmake build using g++-5 - stage: Test different OS/CXX/Flags os: linux compiler: gcc cache: ccache env: - BUILD_SYSTEM=cmake addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-5 before_install: - mkdir bin - ln -s /usr/bin/gcc-5 bin/gcc - ln -s /usr/bin/g++-5 bin/g++ install: - ccache -z - ccache --max-size=1G - cmake -H. -Bbuild '-DCMAKE_BUILD_TYPE=Release' '-DCMAKE_CXX_COMPILER=/usr/bin/g++-5' - git submodule update --init --recursive - cmake --build build -- -j4 script: (cd build; ctest -V -L CORE -j2) # cmake build using g++-7 - stage: Test different OS/CXX/Flags os: linux compiler: gcc cache: ccache env: - BUILD_SYSTEM=cmake addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 before_install: - mkdir bin - ln -s /usr/bin/gcc-7 bin/gcc - ln -s /usr/bin/g++-7 bin/g++ install: - ccache -z - ccache --max-size=1G - cmake -H. -Bbuild '-DCMAKE_BUILD_TYPE=Release' '-DCMAKE_CXX_COMPILER=/usr/bin/g++-7' - git submodule update --init --recursive - cmake --build build -- -j4 script: (cd build; ctest -V -L CORE -j2) # cmake build using clang++-6 - stage: Test different OS/CXX/Flags os: linux compiler: clang cache: ccache env: - BUILD_SYSTEM=cmake addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-6.0 packages: - libwww-perl - g++-5 - clang-6.0 - libstdc++-5-dev - libubsan0 - parallel before_install: - mkdir bin # Use gcc/g++ 5 for tests, as Clang doesn't work yet # See https://github.com/diffblue/cbmc/issues/2370 for details. - ln -s /usr/bin/gcc-5 bin/gcc-5 - ln -s /usr/bin/g++-5 bin/g++-5 install: - ccache -z - ccache --max-size=1G - cmake -H. -Bbuild '-DCMAKE_BUILD_TYPE=Release' '-DCMAKE_CXX_COMPILER=/usr/bin/clang++-6.0' '-DCMAKE_CXX_FLAGS=-Qunused-arguments' - git submodule update --init --recursive - cmake --build build -- -j4 script: (cd build; ctest -V -L CORE -j2) # cmake build on OSX, using default clang - stage: Test different OS/CXX/Flags os: osx compiler: clang cache: ccache before_install: - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache - export PATH=$PATH:/usr/local/opt/ccache/libexec env: - BUILD_SYSTEM=cmake - CCACHE_CPP2=yes install: - ccache -z - ccache --max-size=1G - cmake -H. -Bbuild '-DCMAKE_BUILD_TYPE=Release' '-DCMAKE_OSX_ARCHITECTURES=x86_64' - git submodule update --init --recursive - cmake --build build -- -j4 script: (cd build; ctest -V -L CORE -j2) # Run Coverity - stage: Test different OS/CXX/Flags if: type = cron os: linux sudo: false compiler: gcc cache: ccache addons: apt: sources: - ubuntu-toolchain-r-test packages: - libwww-perl - g++-5 coverity_scan: project: name: "diffblue/cbmc" description: "Travis build of ${TRAVIS_COMMIT}" notification_email: "coverity-scan@diffblue.com" build_command_prepend: "make -C jbmc/src setup-submodules" build_command_prepend: "make -C src minisat2-download" build_command: "make -C src -j2; make -C jbmc/src -j2" branch_pattern: "develop" before_install: - mkdir bin ; ln -s /usr/bin/gcc-5 bin/gcc - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 90 - g++ --version # Coverity runs as part of before_script env: - NAME="COVERITY_SCAN" - COMPILER="ccache g++" script: echo "This is coverity build. No need for tests." allow_failures: - <<: *formatting-stage - <<: *linter-stage install: - ccache -z - ccache --max-size=1G - make -C jbmc/src setup-submodules - make -C src minisat2-download - make -C src/ansi-c library_check - make -C src/cpp library_check - make -C src "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j3 - make -C src "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j3 clobber.dir memory-models.dir - make -C jbmc/src "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j3 script: - if [ -e bin/gcc ] ; then export PATH=$PWD/bin:$PATH ; fi ; - env UBSAN_OPTIONS=print_stacktrace=1 make -C regression test-parallel "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 JOBS=2 - make -C unit "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 - make -C unit test - env UBSAN_OPTIONS=print_stacktrace=1 make -C jbmc/regression test-parallel "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 JOBS=2 - make -C jbmc/unit "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 - make -C jbmc/unit test before_cache: - ccache -s notifications: webhooks: urls: - http://dashboard.diffblue.com/api/travis-webhooks - https://us-central1-dev-user-joelallred.cloudfunctions.net/trigger-testgen-from-cbmc on_success: always on_failure: always on_start: never on_cancel: never on_error: always cbmc-cbmc-5.10/CHANGELOG000066400000000000000000000141171333451767700145030ustar00rootroot000000000000005.9 === * GOTO-INSTRUMENT: --generate-function-body can be used to generate bodies for functions that don't have a body in the goto code. This supercedes the functionality of --undefined-function-is-assume-false * The --fixedbv command-line option has been removed (it was marked deprecated in January 2017) * GOTO-INSTRUMENT: New option --print-global-state-size 5.8 === * GOTO-INSTRUMENT: --reachability-slice can be used with --property to slice down to a single property only. * GOTO-INSTRUMENT: New option --list-calls-args * GOTO-INSTRUMENT: New option --print-path-lenghts * GOTO-ANALYZER: New option --unreachable-functions, --reachable-functions * GOTO-INSTRUMENT: New option --undefined-function-is-assume-false * GOTO-INSTRUMENT: New option --remove-function-body * GOTO-INSTRUMENT: New option --use-all-headers, changed --use-system-headers to --no-system-headers * GOTO-INSTRUMENT: dump-c can output the generated environment via --harness 5.7 === * General: All tools now support the same set of --*-check options. * General: Added --conversion-check to catch type casts that cause loss of information. Previously --(un)signed-overflow-check would report these. * CBMC: New option --symex-coverage-report to produce a Cobertura-compatible statement- and branch coverage report. * CBMC/Java: New options --java-max-vla-length, --java-unwind-enum-static, --java-cp-include-files, --lazy-methods. * GOTO-INSTRUMENT: Static loop unwinding via --unwind or via new options --unwindset, --unwindset-file, --unwinding-assertions, --partial-loops, --continue-as-loops, --log * GOTO-INSTRUMENT: New option --slice-global-inits * GOTO-INSTRUMENT: Inlining via --inline, --partial-inline, --function-inline, --no-caching * GOTO-INSTRUMENT: New options --remove-function-pointers, --model-argc-argv, --show-threaded * GOTO-CC: Additional drop-in replacement support for bcc, as, as86 * GOTO-CC: GCC-style error/warning messages * GOTO-CC: New options --native-compiler and --native-linker to select the compiler/linker to be used when building combined native/goto object files. * CBMC, SYMEX, GOTO-INSTRUMENT: New option --drop-unused-functions. Removed ambiguous --show-reachable-properties. * CBMC: New option --no-built-in-assertions 5.6 === Bugfixes in the C, C++, Java front-ends. 5.5 === This is a major release, with significant changes. The option --all-properties is now the default; to restore the previous behaviour, use --stop-on-fail. The primary area of attention was again the Java front-end. We have furthermore added test-suite generation for branch coverage, location coverage, condition coverage, decision coverage and MC/DC. 5.4 === This is a minor release, focused primarily on maintenance. The primary area of attention was again the Java front-end. We have also updated to Minisat 2.2.1. 5.3 === This is a minor release, focused primarily on maintenance. The primary area of attention is the Java front-end. 5.2 === This is a minor release, focused primarily on maintenance. The primary areas of attention are the full slicer, the Java frontend, test suite generation and support for the Glucose solver. 5.1 === This is a minor release, focused primarily on maintenance. Support for solving floating-point problems using for SMT-LIB2 solvers without support for the floating-point theory has been added. 5.0 === This is a major release, focused primarily on performance improvements. Furthermore, the support for the floating-point theory for SMT-LIB2 has been improved substantially. This release breaks compatibility with the goto-binary format used by earlier releases; i.e., you will need to rebuild your goto-binaries. 4.9 === This release is primarily for maintenance purposes and does not add any major new features. The support for SMT-LIB2 solvers has been improved substantially. 4.8 === 4.7 === Added support for Solaris 11. Bugfixes in partial-order encoding. Added --float-overflow-check 4.6 === Improved floating-point encoding. Improved AIG->CNF encoder. 4.5 === Optimizations to reduce memory consumption. Bugfixes in partial-order encoding. 4.4 === Now checks concurrent programs, with partial-order encoding. Support for SMT-LIB standard floating-point theory. goto-instrument knows k-induction and underapproximating loop accelleration. 4.3 === Floating-point arithmetic now takes the rounding mode into account, which can be changed dynamically. goto-gcc generates hybrid executables on Linux, containing both machine code and the CFG. Limited support for Spec#-style quantifiers added. Pointer-checks no longer use a heavy-weight alias analysis. Limited support for some x86 and ARM inline assembly constructs. 4.2 === goto-cc now passes all command line options to the gcc preprocessor. The MacOS binaries are now signed. The C/C++ front-end has been tested and fixed for the Visual Studio 2012 header files. The man-page has been elaborated. Support for the C99 complex type and gcc's vector type has been added. Various built-ins for x86 MMX and SSE instructions have been added. Support for various C11 features has been added. Support for various built-in primitives has been added, in particular for the __sync_* commands. New feature: --all-claims now reports the status of all claims; the verification continues even if a counterexample is found. This feature uses incremental SAT. The counterexample beautification (--beautify) now uses incremental SAT. Numerous improvements to SMT1 and SMT2 interfaces. Support for further SAT solvers (PRECOSAT, PICOSAT, LINGELING) 4.1 === The support for low-level accesses to dynamically allocated data structures and "integer addressed memory" (usually memory-mapped I/O) has been further improved. Numerous improvements to the SMT back-ends. Specifically, support through the SMT1 path for Boolector and Z3 has been improved; support for MathSAT has been added. In combination with the very latest version of MathSAT, CBMC now also supports an SMT2 flow (use --mathsat --smt2 to activate this). 4.0 === Better support for low-level accesses to dynamically allocated data structures. Numerous front-end improvements. cbmc-cbmc-5.10/CMakeLists.txt000066400000000000000000000043221333451767700160260ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.2) find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") message(STATUS "Rule launch compile: ${CCACHE_PROGRAM}") endif() set(CMAKE_EXPORT_COMPILE_COMMANDS true) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9) include(GNUInstallDirs) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" ) # Ensure NDEBUG is not set for release builds set(CMAKE_CXX_FLAGS_RELEASE "-O2") # Enable lots of warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror -Wno-deprecated-declarations") elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # This would be the place to enable warnings for Windows builds, although # config.inc doesn't seem to do that currently endif() set(enable_cbmc_tests on CACHE BOOL "Whether CBMC tests should be enabled") set(sat_impl "minisat2" CACHE STRING "This setting controls the SAT library which is used. Valid values are 'minisat2' and 'glucose'" ) if(${enable_cbmc_tests}) enable_testing() endif() add_subdirectory(src) add_subdirectory(regression) add_subdirectory(unit) add_subdirectory(jbmc) set_target_properties( analyses ansi-c assembler big-int cbmc cbmc-lib clobber clobber-lib cpp driver goto-analyzer goto-analyzer-lib goto-cc goto-cc-lib goto-diff goto-diff-lib goto-instrument goto-instrument-lib goto-programs goto-symex jsil json langapi linking miniBDD mmcc pointer-analysis solvers test-bigint testing-utils unit util xml java_bytecode java-models-library jbmc jbmc-lib janalyzer janalyzer-lib jdiff jdiff-lib java-testing-utils java-unit miniz PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED true XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Developer ID Application: Daniel Kroening" ) cbmc-cbmc-5.10/CODEOWNERS000066400000000000000000000047661333451767700146750ustar00rootroot00000000000000# These owners will be the default owners for everything in the repo. * @kroening @tautschnig @peterschrammel @smowton @chrisr-diffblue # These files should rarely change /src/big-int/ @kroening /src/ansi-c/ @kroening @tautschnig /src/assembler/ @kroening @tautschnig /src/goto-cc/ @kroening @tautschnig /src/linking/ @kroening @tautschnig /src/memory-models/ @kroening @tautschnig /src/goto-symex/ @kroening @tautschnig @peterschrammel /src/json/ @kroening @tautschnig @peterschrammel /src/langapi/ @kroening @tautschnig @peterschrammel /src/xmllang/ @kroening @tautschnig @peterschrammel /src/nonstd/ @smowton @peterschrammel /src/solvers/cvc @martin-cs @kroening /src/solvers/flattening @martin-cs @kroening @tautschnig @peterschrammel /src/solvers/floatbv @martin-cs @kroening /src/solvers/miniBDD @tautschnig @kroening /src/solvers/prop @martin-cs @kroening @tautschnig @peterschrammel /src/solvers/sat @martin-cs @kroening @tautschnig @peterschrammel /src/solvers/smt2 @martin-cs @tautschnig @peterschrammel /jbmc/src/miniz/ @smowton @mgudemann @peterschrammel # These files change frequently and changes are high-risk /src/cbmc/ @smowton @kroening @tautschnig @peterschrammel /src/goto-programs/ @smowton @kroening @tautschnig @peterschrammel @pkesseli /src/util/ @smowton @kroening @tautschnig @peterschrammel @pkesseli /src/solvers/refinement @martin-cs @romainbrenguier @peterschrammel /jbmc/src/java_bytecode/ @smowton @mgudemann @thk123 @cristina-david @cesaro @pkesseli @NathanJPhillips @peterschrammel /src/analyses/ @martin-cs @peterschrammel @chrisr-diffblue @thk123 @smowton /src/pointer-analysis/ @martin-cs @peterschrammel @chrisr-diffblue @smowton # These files change frequently and changes are medium-risk /src/goto-analyzer/ @martin-cs @chrisr-diffblue @peterschrammel /src/goto-instrument/ @martin-cs @chrisr-diffblue @peterschrammel /src/goto-diff/ @tautschnig @peterschrammel /jbmc/src/jbmc/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel /jbmc/src/janalyzer/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel /jbmc/src/jdiff/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel /src/cpp/ @kroening @tautschnig @peterschrammel # These files change frequently and changes are low-risk /src/util/irep_ids.def /unit/ /regression/ /jbmc/unit/ /jbmc/regression/ /scripts/ @diffblue/devops @thk123 @forejtv @peterschrammel /.travis.yml @diffblue/devops @thk123 @forejtv @peterschrammel /appveyor.yml @diffblue/devops @thk123 @forejtv @peterschrammel cbmc-cbmc-5.10/CODING_STANDARD.md000066400000000000000000000365011333451767700160370ustar00rootroot00000000000000Here a few minimalistic coding rules for the CPROVER source tree. # Whitespaces Formatting is enforced using clang-format. For more information about this, see `COMPILING.md`. A brief summary of the formatting rules is given below: - Use 2 spaces indent, no tabs. - No lines wider than 80 chars. - When line is wider, do the following: - Subsequent lines should be indented two more than the initial line - Break after `=` if it is part of an assignment - For chained calls, prefer immediately before `.` - For other operators (e.g. `&&`, `+`) prefer immediately after the operator - For brackets, break after the bracket - In the case of function calls, put each argument on a separate line if they do not fit after one line break - Nested function calls do not need to be broken up into separate lines even if the outer function call does. - If a method is bigger than 50 lines, break it into parts. - Put matching `{ }` into the same column, except for initializer lists and lambdas, where you should place `{` directly after the closing `)`. This is to comply with clang-format, which doesn't support aligned curly braces in these cases. - Spaces around binary operators (`=`, `+`, `==` ...) - Space after comma (parameter lists, argument lists, ...) - Space after colon inside `for` - For pointers and references, the `*`/`&` should be attached to the variable name as opposed to the type. E.g. for a pointer to an int the syntax would be: `int *x;` - No whitespaces at end of line - No whitespaces in blank lines - Put argument lists on next line (and indent 2 spaces) if too long - Put parameters on separate lines (and indent 2 spaces) if too long - Spaces around colon for inheritance, put inherited into separate lines in case of multiple inheritance - The initializer list follows the constructor with a whitespace around the colon. - `if(...)`, `else`, `for(...)`, `do`, and `while(...)` are always in a separate line - Break expressions in `if`, `for`, `while` if necessary and align them with the first character following the opening parenthesis - Use `{}` instead of `;` for the empty statement - Single line blocks without `{ }` are allowed, but put braces around multi-line blocks - Use blank lines to visually separate logically cohesive code blocks within a function - Have a newline at the end of a file # Comments - Do not use `/* */` - Each source and header file must start with a comment block stating the author. See existing source for an example of the format of this block. This should be followed by a Doxygen `\file` comment: ```c++ /// \file /// ``` Note that the `\file` tag must be immediately followed by a newline in order for Doxygen to relate the comment to the current file. - Each class, member variable and function should be preceded by a Doxygen comment describing it when it is not immediately obvious what it does. The format should match the [LLVM guidelines](http://llvm.org/docs/CodingStandards.html#doxygen-use-in-documentation-comments), with one extension: for functions, `\param` and `\return` comments longer than a single line should have subsequent lines indented by two spaces, so that the tags stand out. An example: ```c++ /// This sentence, until the first dot followed by whitespace, becomes /// the brief description. More detailed text follows. Feel free to /// break this into paragraphs to aid readability. /// \param arg_name: This parameter doesn't need much description /// \param [out] long_arg_name: This parameter is mutated by the function. /// Extra info about the parameter gets indented an extra two columns, /// like this. /// \return The return value is literally the value returned by the /// function. For out-parameters, use "\param [out]". return_typet my_function(argt arg_name, argt &long_arg_name) ``` - The priority of documentation is readability. Therefore, feel free to use Doxygen features, or to add whitespace for multi-paragraph comment blocks if necessary. - A comment block should immediately precede the definition of the entity it documents, which will generally mean that it will live in the source file. This allows us to take advantage of the one definition rule. If each entity is defined only once, then it is also documented only once. - The documentation block must *immediately* precede the entity it documents. Don't insert empty lines between docs and functions, because this will confuse Doxygen. - Put comments on a separate line - Use comments to explain the non-obvious - Use #if 0 for commenting out source code - Use #ifdef DEBUG to guard debug code # Naming - Identifiers should make clear the purpose of the thing they are naming. - Identifiers may use the characters `[a-z0-9_]` and should start with a lower-case letter (parameters in constructors may start with `_`). - Omit names of parameters or exception objects when they are not used. If parameter names help documenting an interface, keep the name and use `(void)parameter_name;` in the body of the method. - Use American spelling for identifiers. - Separate basic words by `_` - Avoid abbreviations (e.g. prefer `symbol_table` to `st`). - User defined type identifiers have to be terminated by `t`. Moreover, before `t` may not be `_`. - Do not use `m_` prefix nor `_` suffix for names of attributes of structured types. - Enum values may use the characters `[A-Z0-9_]` # Header files - Avoid unnecessary `#include`s, especially in header files - Prefer forward declaration to includes, but forward declare at the top of the header file rather than in line - Guard headers with `#ifndef CPROVER_DIRECTORIES_FILE_H`, etc - The corresponding header for a given source file should always be the *first* include in the source file. For example, given `foo.h` and `foo.cpp`, the line `#include "foo.h"` should precede all other include statements in `foo.cpp`. - Use the C++ versions of C headers (e.g. `cmath` instead of `math.h`). Some of the C headers use macros instead of functions which can have unexpected consequences. # Makefiles - Each source file should appear on a separate line - The final source file should still be followed by a trailing slash - The last line should be a comment to not be deleted, i.e. should look like: ```makefile SRC = source_file.cpp \ source_file2.cpp \ # Empty last line ``` This ensures the Makefiles can be easily merged. # Program Command Line Options - Each program contains a `program_name_parse_optionst` class which should contain a define `PROGRAM_NAME_PARSE_OPTIONS` which is a string of all the parse options in brackets (with a colon after the bracket if it takes a parameter) - Each parameter should be one per line to yield easy merging - If parameters are shared between programs, they should be pulled out into a common file and then included using a define - The defines should be `OPT_FLAG_NAMES` which should go into the `OPTIONS` define - The defines should include `HELP_FLAG_NAMES` which should contain the help output in the format: ``` " --flag explanations\n" \ " --another flag more explanation\n" \ <-------30 chars------> ``` - The defines may include `PARSE_OPTIONS_FLAG_NAMES` which move the options from the command line into the options # C++ features - Do not use namespaces, except for anonymous namespaces. - Prefer use of `typedef` instead of `using`. - Prefer use of `class` instead of `struct`. - Write type modifiers before the type specifier. - Make references `const` whenever possible - Make member functions `const` whenever possible - Do not hide base class functions - When overriding a virtual function, use `override` (without `virtual`) - Single argument constructors must be `explicit` - Avoid implicit conversions - Avoid `friend` declarations - Avoid iterators, use ranged `for` instead - Avoid allocation with `new`/`delete`, use `unique_ptr` - Avoid pointers, use references - Avoid `char *`, use `std::string` - For numbers, use `int`, `unsigned`, `long`, `unsigned long`, `double` - Use `mp_integer`, not `BigInt` - Use the functions in util for conversions between numbers and strings - Avoid C-style functions. Use classes with an `operator()` instead. - Use `irep_idt` for identifiers (not `std::string`) - Avoid destructive updates if possible. The `irept` has constant time copy. - Use instances of `std::size_t` for comparison with return values of `.size()` of STL containers and algorithms, and use them as indices to arrays or vectors. - Do not use default values in public functions - Use assertions to detect programming errors, e.g. whenever you make assumptions on how your code is used - Use exceptions only when the execution of the program has to abort because of erroneous user input - We allow to use 3rd-party libraries directly. No wrapper matching the coding rules is required. Allowed libraries are: STL. - When throwing, omit the brackets, i.e. `throw "error"`. - Error messages should start with a lower case letter. - Use the `auto` keyword if and only if one of the following - The type is explicitly repeated on the RHS (e.g. a constructor call) - Adding the type will increase confusion (e.g. iterators, function pointers) - Avoid `assert`. If the condition is an actual invariant, use INVARIANT, PRECONDITION, POSTCONDITION, CHECK_RETURN, UNREACHABLE or DATA_INVARIANT. If there are possible reasons why it might fail, throw an exception. - All raw pointers (such as those returned by `symbol_tablet::lookup`) are assumed to be non-owning, and should not be `delete`d. Raw pointers that point to heap-allocated memory should be private data members of an object which safely manages the pointer. As such, `new` should only be used in constructors, and `delete` in destructors. Never use `malloc` or `free`. # CProver conventions - Avoid if at all possible using irept methods like `get(ID_name)`, instead cast to a derived type (e.g. `class_typet`) and use the wrapper method `get_name` - Use `can_cast_type`/`can_cast_expr` instead of directly checking the `id()` of an `irept`. # Architecture-specific code - Avoid if possible. - Use `__LINUX__`, `__MACH__`, and `_WIN32` to distinguish the architectures. - Don't include architecture-specific header files without `#ifdef` ... # Output - Do not output to `cout` or `cerr` directly (except in temporary debug code, and then guard `#include ` by `#ifdef DEBUG`) - Derive from `messaget` if the class produces output and use the streams provided (`status()`, `error()`, `debug()`, etc) - Use `\n` instead of `std::endl` # Unit tests - Unit tests are written using [Catch](https://github.com/philsquared/Catch) - For large classes: - Create a separate file that contains the tests for each method of each class - The file should be named according to `unit/class/path/class_name/function_name.cpp` - For small classes: - Create a separate file that contains the tests for all methods of each class - The file should be named according to `unit/class/path/class_name.cpp` - Catch supports tagging, tests should be tagged with all the following tags: - [core] should be used for all tests unless the test takes more than 1 second to run, then it should be tagged with [long] - [folder_name] of the file being tested - [class_name] of the class being tested - [function_name] of the function being tested --- You are allowed to break rules if you have a good reason to do so. --- # Pre-commit hook to run cpplint locally To install the hook ```sh cp .githooks/pre-commit .git/hooks/pre-commit ``` or use a symbolic link. Then, when running git commit, you should get the linter output (if any) before being prompted to enter a commit message. To bypass the check (e.g. if there was a false positive), add the option `--no-verify`. # CODE COVERAGE Code coverage metrics are provided using gcov and lcov. Ensure that you have installed lcov from http://ltp.sourceforge.net/coverage/lcov.php note for ubuntu lcov is available in the standard apt-get repos. To get coverage metrics run the following script from the regression directory: ``` get_coverage.sh ``` This will: 1) Rebuild CBMC with gcov enabled 2) Run all the regression tests 3) Collate the coverage metrics 4) Provide an HTML report of the current coverage # USING CLANG-FORMAT CBMC uses clang-format to ensure that the formatting of new patches is readable and consistent. There are two main ways of running clang-format: remotely, and locally. ## RUNNING CLANG-FORMAT REMOTELY When patches are submitted to CBMC, they are automatically run through continuous integration (CI). One of the CI checks will run clang-format over the diff that your pull request introduces. If clang-format finds formatting issues at this point, the build will be failed, and a patch will be produced in the CI output that you can apply to your code so that it conforms to the style guidelines. To apply the patch, copy and paste it into a local file (`patch.txt`) and then run: ``` patch -p1 -i patch.txt ``` Now, you can commit and push the formatting fixes. ## RUNNING CLANG-FORMAT LOCALLY ### INSTALLATION To avoid waiting until you've made a PR to find formatting issues, you can install clang-format locally and run it against your code as you are working. Different versions of clang-format have slightly different behaviors. CBMC uses clang-format-3.8 as it is available the repositories for Ubuntu 16.04 and Homebrew. To install on a Unix-like system, try installing using the system package manager: ``` apt-get install clang-format-3.8 # Run this on Ubuntu, Debian etc. brew install clang-format@3.8 # Run this on a Mac with Homebrew installed ``` If your platform doesn't have a package for clang-format, you can download a pre-built binary, or compile clang-format yourself using the appropriate files from the [LLVM Downloads page](http://releases.llvm.org/download.html). An installer for Windows (along with a Visual Studio plugin) can be found at the [LLVM Snapshot Builds page](http://llvm.org/builds/). ### FORMATTING A RANGE OF COMMITS Clang-format is distributed with a driver script called git-clang-format-3.8. This script can be used to format git diffs (rather than entire files). After committing some code, it is recommended to run: ``` git-clang-format-3.8 upstream/develop ``` *Important:* If your branch is based on a branch other than `upstream/develop`, use the name or checksum of that branch instead. It is strongly recommended to rebase your work onto the tip of the branch it's based on before running `git-clang-format` in this way. ### RETROACTIVELY FORMATTING INDIVIDUAL COMMITS If your works spans several commits and you'd like to keep the formatting correct in each individual commit, you can automatically rewrite the commits with correct formatting. The following command will stop at each commit in the range and run clang-format on the diff at that point. This rewrites git history, so it's *unsafe*, and you should back up your branch before running this command: ``` git filter-branch --tree-filter 'git-clang-format-3.8 upstream/develop' \ -- upstream/develop..HEAD ``` *Important*: `upstream/develop` should be changed in *both* places in the command above if your work is based on a different branch. It is strongly recommended to rebase your work onto the tip of the branch it's based on before running `git-clang-format` in this way. cbmc-cbmc-5.10/COMPILING.md000066400000000000000000000222511333451767700151320ustar00rootroot00000000000000# WHAT ARCHITECTURE? CPROVER now needs a C++11 compliant compiler and works in the following environments: - Linux - MacOS X - Solaris 11 - FreeBSD 11 - Cygwin - Microsoft Visual Studio The rest of this document is split up into three parts: compilation on Linux, MacOS, Windows. Please read the section appropriate for your machine. # COMPILATION ON LINUX We assume that you have a Debian/Ubuntu or Red Hat-like distribution. 1. You need a C/C++ compiler, Flex and Bison, and GNU make. The GNU Make needs to be version 3.81 or higher. On Debian-like distributions, do as root: ``` apt-get install g++ gcc flex bison make git libwww-perl patch ``` On Red Hat/Fedora or derivates, do as root: ``` dnf install gcc gcc-c++ flex bison perl-libwww-perl patch ``` Note that you need g++ version 5.0 or newer. On Amazon Linux and similar distributions, do as root: ``` yum install gcc72-c++ flex bison perl-libwww-perl patch ``` To compile JBMC, you additionally need the JDK and the java-models-library. For the JDK, on Debian-like distributions, do as root: ``` apt-get install unzip openjdk-8-jdk ``` On Red Hat/Fedora or derivates, do as root: ``` dnf install unzip java-1.8.0-openjdk-devel ``` 2. As a user, get the CBMC source via ``` git clone https://github.com/diffblue/cbmc cbmc-git cd cbmc-git ``` 3. To compile, do ``` make -C src minisat2-download make -C src ``` 4. Linking against an IPASIR SAT solver Get an IPASIR package and build picosat by default ``` make -C src ipasir-build ``` Build CBMC with IPASIR and link against the ipasir solver library Note: the LIBSOLVER variable could be pointed towards other solvers ``` make -C src IPASIR=../../ipasir LIBSOLVER=$(pwd)/ipasir/libipasir.a ``` 5. To compile JBMC, do ``` make -C jbmc/src setup-submodules make -C jbmc/src ``` # COMPILATION ON SOLARIS 11 1. As root, get the necessary development tools: ``` pkg install system/header pkgadd -d http://get.opencsw.org/now /opt/csw/bin/pkgutil -U /opt/csw/bin/pkgutil -i gcc5g++ bison flex git ``` 2. As a user, get the CBMC source via ``` export PATH=/opt/csw/bin:$PATH git clone https://github.com/diffblue/cbmc cbmc-git cd cbmc-git ``` 3. To compile CBMC, type ``` gmake -C src minisat2-download DOWNLOADER=wget TAR=gtar gmake -C src ``` 4. To compile JBMC, type ``` gmake -C jbmc/src setup-submodules gmake -C jbmc/src ``` # COMPILATION ON FREEBSD 11 1. As root, get the necessary tools: ``` pkg install bash gmake git www/p5-libwww patch flex bison ``` To compile JBMC, additionally install ``` pkg install openjdk8 wget ``` 2. As a user, get the CBMC source via ``` git clone https://github.com/diffblue/cbmc cbmc-git cd cbmc-git ``` 3. To compile CBMC, do ``` gmake -C src minisat2-download gmake -C src ``` 4. To compile JBMC, do ``` gmake -C jbmc/src setup-submodules gmake -C jbmc/src ``` # COMPILATION ON MACOS X Follow these instructions: 1. You need a C/C++ compiler, Flex and Bison, and GNU make. To this end, first install the XCode from the App-store and then type ``` xcode-select --install ``` in a terminal window. 2. Then get the CBMC source via ``` git clone https://github.com/diffblue/cbmc cbmc-git cd cbmc-git ``` 3. To compile CBMC, do ``` make -C src minisat2-download make -C src ``` 4. To compile JBMC, do ``` make -C jbmc/src setup-submodules make -C jbmc/src ``` # COMPILATION ON WINDOWS There are two options: the Visual Studio compiler with version 12 (2013) or later, or the MinGW cross compiler with version 5.4 or later. We recommend Visual Studio. Follow these instructions: 1. First install Cygwin, then from the Cygwin setup facility install the following packages: `flex, bison, tar, gzip, git, make, wget, patch, libwww-perl`. 2. Get the CBMC source via ``` git clone https://github.com/diffblue/cbmc cbmc-git cd cbmc-git ``` 3. Depending on your choice of compiler: 1. To compile with Visual Studio, change the second line of `src/config.inc` to ``` BUILD_ENV = MSVC ``` Open the Developer Command Prompt for Visual Studio, then start the Cygwin shell with ``` bash.exe -login ``` 2. To compile with MinGW, use Cygwin setup to install a mingw g++ compiler package, i.e. one of `mingw{32,64}-{x86_64,i686}-gcc-g++`. You may also have to adjust the section in `src/common` that defines `CC` and `CXX` for BUILD_ENV = Cygwin. Then start the Cygwin shell. 4. To compile CMBC, open the Cygwin shell and type ``` make -C src DOWNLOADER=wget minisat2-download make -C src ``` 5. To compile JBMC, open the Cygwin shell and type ``` make -C jbmc/src setup-submodules make -C jbmc/src ``` (Optional) A Visual Studio project file can be generated with the script "generate_vcxproj" that is in the subdirectory "scripts". The project file is helpful for GUI-based tasks, e.g., the class viewer, debugging, etc., and can be used for building with MSBuild. Note that you still need to run flex/bison using "make generated_files" before opening the project. # WORKING WITH CMAKE (EXPERIMENTAL) There is an experimental build based on CMake instead of hand-written makefiles. It should work on a wider variety of systems than the standard makefile build, and can integrate better with IDEs and static-analysis tools. On Windows, the CMake build does not depend on Cygwin or MinGW, and doesn't require manual modification of build files. 1. Ensure you have all the build dependencies installed. Build dependencies are the same as for the makefile build, but with the addition of CMake version 3.2 or higher. The installed CMake version can be queried with `cmake --version`. To install cmake: - On Debian-like distributions, do ``` apt-get install cmake ``` - On Red Hat/Fedora or derivates, do ``` yum install cmake ``` - On macOS, do ``` xcode-select --install ``` You shoud also install [Homebrew](https://brew.sh), after which you can run `brew install cmake` to install CMake. - On Windows, ensure you have Visual Studio 2013 or later installed. Then, download CMake from the [official download page](https://cmake.org/download). You'll also need `git` and `patch`, which are both provided by the [git for Windows](git-scm.com/download/win) package. Finally, Windows builds of flex and bison should be installed from [the sourceforge page](sourceforge.net/projects/winflexbison). The easiest way to 'install' these executables is to unzip them and to drop the entire unzipped package into the CBMC source directory. - Use of CMake has not been tested on Solaris or FreeBSD. However, it should be possible to install CMake from the system package manager or the [official download page](https://cmake.org/download) on those systems. The dependencies (as listed in the relevant sections above) will also be required, and should be installed using the suggested methods. 2. Navigate to the *top level* folder of the project. This is different from the Makefile build, which requires you to navigate to the `src` directory first. 3. Update git submodules: ``` git submodule update --init ``` 4. Generate build files with CMake: ``` cmake -H. -Bbuild ``` This command tells CMake to use the configuration in the current directory, and to generate build files into the `build` directory. This is the point to specify custom build settings, such as compilers and build back-ends. You can use clang (for example) by adding the argument `-DCMAKE_CXX_COMPILER=clang++` to the command line. You can also tell CMake to generate IDE projects by supplying the `-G` flag. Run `cmake -G` for a comprehensive list of supported back-ends. Generally it is not necessary to manually specify individual compiler or linker flags, as CMake defines a number of "build modes" including Debug and Release modes. To build in a particular mode, add the flag `-DCMAKE_BUILD_TYPE=Debug` (or `Release`) to the initial invocation. If you *do* need to manually add flags, use `-DCMAKE_CXX_FLAGS=...` and `-DCMAKE_EXE_LINKER_FLAGS=...`. This is useful for enabling clang's sanitizers. Finally, to enable building universal binaries on macOS, you can pass the flag `-DCMAKE_OSX_ARCHITECTURES=i386;x86_64`. If you don't supply this flag, the build will just be for the architecture of your machine. 5. Run the build: ``` cmake --build build ``` This command tells CMake to invoke the correct tool to run the build in the `build` directory. You can also use the build back-end directly by invoking `make`, `ninja`, or opening the generated IDE project as appropriate. # WORKING WITH ECLIPSE To work with Eclipse, do the following: 1. Select File -> New -> Makefile Project with Existing Code 2. Type "cprover" as "Project Name" 3. Select the "src" subdirectory as "Existing Code Location" 4. Select a toolchain appropriate for your platform 5. Click "Finish" 6. Select Project -> Build All cbmc-cbmc-5.10/LICENSE000066400000000000000000000036501333451767700142760ustar00rootroot00000000000000(C) 2001-2016, Daniel Kroening, Edmund Clarke, Computer Science Department, University of Oxford Computer Science Department, Carnegie Mellon University All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by Daniel Kroening, Edmund Clarke, Computer Science Department, University of Oxford Computer Science Department, Carnegie Mellon University 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cbmc-cbmc-5.10/README.md000066400000000000000000000041321333451767700145440ustar00rootroot00000000000000[![Build Status][travis_img]][travis] [![Build Status][appveyor_img]][appveyor] [![Build Status][coverity_img]][coverity] [CProver Wiki](http://www.cprover.org/wiki) [CProver Documentation](http://cprover.diffblue.com) About ===== CBMC is a Bounded Model Checker for C and C++ programs. It supports C89, C99, most of C11 and most compiler extensions provided by gcc and Visual Studio. It also supports SystemC using Scoot. It allows verifying array bounds (buffer overflows), pointer safety, exceptions and user-specified assertions. Furthermore, it can check C and C++ for consistency with other languages, such as Verilog. The verification is performed by unwinding the loops in the program and passing the resulting equation to a decision procedure. For full information see [cprover.org](http://www.cprover.org/cbmc). Versions ======== Get the [latest release](https://github.com/diffblue/cbmc/releases) * Releases are tested and for production use. Get the current *develop* version: `git clone https://github.com/diffblue/cbmc.git` * Develop versions are not recommended for production use. Report bugs =========== If you encounter a problem please file a bug report: * Create an [issue](https://github.com/diffblue/cbmc/issues) Contributing to the code base ============================= 1. Fork the repository 2. Clone the repository `git clone git@github.com:YOURNAME/cbmc.git` 3. Create a branch from the `develop` branch (default branch) 4. Make your changes (follow the [coding guidelines](https://github.com/diffblue/cbmc/blob/develop/CODING_STANDARD.md)) 5. Push your changes to your branch 6. Create a Pull Request targeting the `develop` branch License ======= 4-clause BSD license, see `LICENSE` file. [travis]: https://travis-ci.org/diffblue/cbmc [travis_img]: https://travis-ci.org/diffblue/cbmc.svg?branch=master [appveyor]: https://ci.appveyor.com/project/diffblue/cbmc/ [appveyor_img]: https://ci.appveyor.com/api/projects/status/github/diffblue/cbmc?svg=true&branch=master [coverity]: https://scan.coverity.com/projects/diffblue-cbmc [coverity_img]: https://scan.coverity.com/projects/13552/badge.svg cbmc-cbmc-5.10/appveyor.yml000066400000000000000000000125521333451767700156620ustar00rootroot00000000000000version: 1.0.{build} image: Visual Studio 2013 clone_depth: 50 environment: PATH: C:\projects\cbmc\deps\bin;%PATH% INCLUDE: C:\projects\cbmc\deps\include install: - ps: | #check if dependencies were copied from cache, if not, download them. if (!(Test-Path deps)) { md deps } cd deps appveyor DownloadFile "https://storage.googleapis.com/diffblue-mirror/appveyor-deps/win_flex_bison-latest.zip?GoogleAccessId=diffbluemaster@diffblue-cr.iam.gserviceaccount.com&Expires=1543674503&Signature=CojdaOYrFl50gbxCQL%2BlfVtuo7j9v1OzfWD6jYIkfv1h7xzCacigAM51%2BVjaVx%2B8yvUjk%2B4MOU%2FKmLzev7dABWNi5n7p7SvlXYPFVVwDE57Me35Xi7BzW%2FhoSaPnVIGuhAmDfxjGoHhB0Of%2Fd2FfMl4cklGgc2YafTpFX3agNCE4dcc1UyG0SY5CbvTGTuBP%2B99zaQ69lNT1TSNUNp0PW2Hhj%2FPylts0IdDm713RA4wcNIHvLTTppBiNwMm0y%2B0qRG1op3R4vc5gahz%2B6dTUnCevYWO5l%2FIvmXQyo4XNkgqLKIRgk4wisLjtSuRh5vPyD%2FQPOrn2ubT53YnDcW6geA%3D%3D" 7z x win_flex_bison-latest.zip -y Move-Item win_bison.exe bin\bison.exe -force Move-Item win_flex.exe bin\flex.exe -force Move-Item FlexLexer.h include\FlexLexer.h -force Remove-Item bin\data -Force -Recurse -ErrorAction SilentlyContinue Remove-Item java-models-library-master -Force -Recurse -ErrorAction SilentlyContinue Move-Item data bin\data -force bison -V flex -V if (!(Test-Path bin\iconv.exe)) { & appveyor DownloadFile "https://storage.googleapis.com/diffblue-mirror/appveyor-deps/libiconv-1.9.2-1-bin.zip?GoogleAccessId=diffbluemaster@diffblue-cr.iam.gserviceaccount.com&Expires=1519839050&Signature=sS3Y2lC1oWOhBDsL8C9ASuO4LOM%2BpB%2F8PwG5w5CdB9JnPfLqhb3FnA1zkkZJoSNuIYS3DM6CN2qxoWjpJbLEtVQe0PpxziQZjLpJw2MpxXdJiJHRDu8x9THgzwuZ3ze5BWHzPoCBQPdRkKzVPezf1HwptUsm3Y9c2jlWljQjhc8NVsI4iPmjEOwT8E%2BYpR5fsLs2GsRjuoyqKa%2Bi4JJ6MbpXVX1IgR4fzp1Li9SnE39ujHDb%2FyI3c96eCdVm1Oa6jNxzSJNfq%2FgOZM8BIxlR55a%2BtM3oBQhU0voEtDOABwuO7ZBay8dLt%2FG5vz1%2Bi%2FIlRLFxQfICaprPLzw6pXRm8Q%3D%3D" & 7z x libiconv-1.9.2-1-bin.zip } if (!(Test-Path bin\libintl3.dll)) { & appveyor DownloadFile "https://storage.googleapis.com/diffblue-mirror/appveyor-deps/libintl-0.14.4-bin.zip?GoogleAccessId=diffbluemaster@diffblue-cr.iam.gserviceaccount.com&Expires=1519839050&Signature=lJViGr6bl%2F4i%2B6nIfeYChreq%2FKfgid9QqGSq7Ie%2FMG%2Fmr9nPyPUA%2BLtT7jn1ogunTzQLZP%2FNxVFcYqyd8gyuT%2Bn2MF80Ds4Whw4cRYnXPb2LZg4%2FiEqZV6wgBMIQfq5v2l3lAsglISVErOik%2BQAHec5gZe2%2BKaVjRnJnhPRziZkQyzF9Xdf2xsPi28hBaX4RQx8XqSLcY1kQpY13PDBZDi9lmdKHf0pBKu%2F0WXspmRAU02HtleMk6Zeg5vEDFcwoe8C3fb4vwtpwGwN9TX5ddaq56yUVn70zh%2BH2KgKIsRl26avnrCpeWF9M5lLck0ngaqFX84w%2BgxmZu40IVU%2Ff0A%3D%3D" & 7z x libintl-0.14.4-bin.zip } if (!(Test-Path bin\make.exe)) { & appveyor DownloadFile "https://storage.googleapis.com/diffblue-mirror/appveyor-deps/make-3.81-bin.zip?GoogleAccessId=diffbluemaster@diffblue-cr.iam.gserviceaccount.com&Expires=1519839050&Signature=PRC97AWzJ2ZAyjEK4p7eCbA3RAEr8sTf8TUK5zoMBcrXPUHWYjnCwXRMnIxUUufBYjsAx8t1XnOQdlTuAPJYpcha%2FFJRlcxMmfQjNbpNEQFJuqEpA5c%2FGhFYxSD3a26vjpgReUW5MuQXeLeNh7PziLB0GP0sdRHN%2B1eDiHeCJWYNMYhrEY9BAkf5rXeRQWr1ZG0Hzq%2FxZEHceypx8xyaT%2BFzREYQOyKjGdre1QXtI%2FXo4ImA1xWt%2F8TnlGcAnCEaTltxuSRVB%2F7s1ShMr9KoagCb%2BjBWq6BgbcNGxyzyOZfi2Sjjo39mhudF9DNbKbkczes9Kp3ySgXmrXSWjIG4Iw%3D%3D" & 7z x make-3.81-bin.zip } if (!(Test-Path bin\regex2.dll)) { & appveyor DownloadFile "https://storage.googleapis.com/diffblue-mirror/appveyor-deps/regex-2.7-bin.zip?GoogleAccessId=diffbluemaster@diffblue-cr.iam.gserviceaccount.com&Expires=1519839050&Signature=bXRvFV%2Be4Dpm8vzp%2F1bJWwgkERE6WakcPTBN57n9vNh0dr42jDTXv8JF%2BWCmTIb%2Fy4XzxYl0faggt3g6TqTLYn5UDVUBYx%2FMLmNVVNEv%2BaBlDd87UAZGLi6fkEV5oAP4W4FYsqEnKRDfGPOBoL7D7CuW9Kcxy3Moubxdl%2Bmes%2BMI%2FzWJ6BgLD3Oj04GyD42zLCYVtAzkeDAX0UADoh06ExhpTjI4BNnQ%2FhzSlPtPG7mon4q81%2F2tDNskKVJS466eR%2F8XV6H4QT3LoCkh6dxQ9%2B9ZnkWJplundRbiIlpj43vmdvjIChczl4jbAgL6zFj5Gz6u58uvCV%2FbOuyx3Sw1fg%3D%3D" & 7z x regex-2.7-bin.zip } if (!(Test-Path minisat2-2.2.1)) { & appveyor DownloadFile http://ftp.debian.org/debian/pool/main/m/minisat2/minisat2_2.2.1.orig.tar.gz & 7z x minisat2_2.2.1.orig.tar.gz &7z x minisat2_2.2.1.orig.tar } cd .. cache: deps build_script: - cmd: | make -C jbmc/src setup-submodules cp -r deps/minisat2-2.2.1 minisat-2.2.1 patch -d minisat-2.2.1 -p1 < scripts/minisat-2.2.1-patch call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64 make -C src -j2 BUILD_ENV=MSVC make -C jbmc/src -j2 BUILD_ENV=MSVC test_script: - cmd: | cd regression rem HACK disable failing tests rmdir /s /q ansi-c\Forward_Declaration2 rmdir /s /q ansi-c\Incomplete_Type1 rmdir /s /q ansi-c\Universal_characters1 rmdir /s /q cbmc\Malloc23 rmdir /s /q cbmc\byte_update2 rmdir /s /q cbmc\byte_update3 rmdir /s /q cbmc\byte_update4 rmdir /s /q cbmc\byte_update5 rmdir /s /q cbmc\byte_update6 rmdir /s /q cbmc\byte_update7 rmdir /s /q cbmc\pipe1 rmdir /s /q cbmc\unsigned___int128 rmdir /s /q goto-gcc rmdir /s /q goto-instrument\slice08 cd .. make -C regression test BUILD_ENV=MSVC make -C unit all -j2 BUILD_ENV=MSVC make -C unit test BUILD_ENV=MSVC cd jbmc/regression rmdir /s /q jbmc\VarLengthArrayTrace1 rmdir /s /q jbmc\classpath1 rmdir /s /q jbmc\jar-file3 cd ../.. make -C jbmc/regression test BUILD_ENV=MSVC make -C jbmc/unit all -j2 BUILD_ENV=MSVC make -C jbmc/unit test BUILD_ENV=MSVC cbmc-cbmc-5.10/buildspec-windows.yml000066400000000000000000000077031333451767700174610ustar00rootroot00000000000000version: 0.2 phases: install: commands: - choco install cyg-get -y --no-progress - cyg-get bash patch bison flex make wget perl - nuget install clcache -OutputDirectory "c:\tools" -ExcludeVersion -Version 4.1.0 build: commands: - | $env:Path = "C:\tools\cygwin\bin;$env:Path" bash -c "make -C src minisat2-download DOWNLOADER=wget" - | $env:Path = "C:\tools\cygwin\bin;c:\tools\clcache\clcache-4.1.0;$env:Path" $env:CLCACHE_DIR = "C:\clcache" $env:CLCACHE_BASEDIR = (Get-Item -Path ".\").FullName cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make CXX=clcache.exe -j4 -C src BUILD_ENV=MSVC" ' cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make CXX=clcache.exe -j4 -C unit all BUILD_ENV=MSVC" ' - | $env:Path = "C:\tools\cygwin\bin;c:\tools\clcache\clcache-4.1.0;$env:Path" $env:CLCACHE_DIR = "C:\clcache" $env:CLCACHE_BASEDIR = (Get-Item -Path ".\").FullName cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -j4 -C jbmc/src setup-submodules" && bash -c "make CXX=clcache.exe -j4 -C jbmc/src BUILD_ENV=MSVC" ' cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make CXX=clcache.exe -j4 -C jbmc/unit all BUILD_ENV=MSVC" ' - | # display cache stats $env:Path = "C:\tools\cygwin\bin;c:\tools\clcache\clcache-4.1.0;$env:Path" $env:CLCACHE_DIR = "C:\clcache" $env:CLCACHE_BASEDIR = (Get-Item -Path ".\").FullName cmd /c 'clcache -s' post_build: commands: - | cd regression # HACK disable failing tests Remove-Item ansi-c\Forward_Declaration2 -Force -Recurse Remove-Item ansi-c\Incomplete_Type1 -Force -Recurse Remove-Item cbmc\Malloc23 -Force -Recurse Remove-Item cbmc\byte_update2 -Force -Recurse Remove-Item cbmc\byte_update3 -Force -Recurse Remove-Item cbmc\byte_update4 -Force -Recurse Remove-Item cbmc\byte_update5 -Force -Recurse Remove-Item cbmc\byte_update6 -Force -Recurse Remove-Item cbmc\byte_update7 -Force -Recurse Remove-Item cbmc\pipe1 -Force -Recurse Remove-Item cbmc\unsigned___int128 -Force -Recurse Remove-Item cpp -Force -Recurse Remove-Item cbmc-cpp -Force -Recurse Remove-Item goto-gcc -Force -Recurse Remove-Item systemc -Force -Recurse Remove-Item goto-instrument\slice08 -Force -Recurse Remove-Item goto-analyzer/constant_propagation_nondet_rounding_mode -Force -Recurse cd .. cd jbmc/regression Remove-Item jbmc\VarLengthArrayTrace1 -Force -Recurse Remove-Item jbmc\classpath1 -Force -Recurse Remove-Item jbmc\jar-file3 -Force -Recurse cd ../.. - | $env:Path = "C:\tools\cygwin\bin;$env:Path" cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C regression test BUILD_ENV=MSVC" ' cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C regression/goto-cl test BUILD_ENV=MSVC" ' - | $env:Path = "C:\tools\cygwin\bin;$env:Path" cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C unit test BUILD_ENV=MSVC" ' - | $env:Path = "C:\tools\cygwin\bin;$env:Path" cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C jbmc/regression test BUILD_ENV=MSVC" ' - | $env:Path = "C:\tools\cygwin\bin;$env:Path" cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C jbmc/unit test BUILD_ENV=MSVC" ' cache: paths: - 'c:\clcache\**\*' cbmc-cbmc-5.10/buildspec.yml000066400000000000000000000021671333451767700157700ustar00rootroot00000000000000version: 0.2 phases: install: commands: - add-apt-repository ppa:ubuntu-toolchain-r/test -y - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA9EF27F - add-apt-repository ppa:openjdk-r/ppa -y - apt-get update -y - apt-get install -y g++-5 flex bison make git libwww-perl patch ccache libc6-dev-i386 - apt-get install -y openjdk-8-jdk - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1 - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1 build: commands: - echo Build started on `date` - make -C src minisat2-download - make -C jbmc/src setup-submodules - make -C src CXX="ccache g++" -j2 - make -C unit CXX="ccache g++" -j2 - make -C jbmc/src CXX="ccache g++" -j2 - make -C jbmc/unit CXX="ccache g++" -j2 post_build: commands: - make -C unit test - make -C regression test - make -C jbmc/unit test - make -C jbmc/regression test - echo Build completed on `date` cache: paths: - '/var/cache/apt/**/*' - '/var/lib/apt/lists/**/*' - '/root/.ccache/**/*' cbmc-cbmc-5.10/cmake/000077500000000000000000000000001333451767700143455ustar00rootroot00000000000000cbmc-cbmc-5.10/cmake/DownloadProject.CMakeLists.cmake.in000066400000000000000000000012041333451767700230450ustar00rootroot00000000000000# Distributed under the OSI-approved MIT License. See accompanying # file LICENSE or https://github.com/Crascit/DownloadProject for details. cmake_minimum_required(VERSION 2.8.2) project(${DL_ARGS_PROJ}-download NONE) include(ExternalProject) ExternalProject_Add(${DL_ARGS_PROJ}-download ${DL_ARGS_UNPARSED_ARGUMENTS} SOURCE_DIR "${DL_ARGS_SOURCE_DIR}" BINARY_DIR "${DL_ARGS_BINARY_DIR}" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" ) cbmc-cbmc-5.10/cmake/DownloadProject.cmake000066400000000000000000000175541333451767700204610ustar00rootroot00000000000000# Distributed under the OSI-approved MIT License. See accompanying # file LICENSE or https://github.com/Crascit/DownloadProject for details. # # MODULE: DownloadProject # # PROVIDES: # download_project( PROJ projectName # [PREFIX prefixDir] # [DOWNLOAD_DIR downloadDir] # [SOURCE_DIR srcDir] # [BINARY_DIR binDir] # [QUIET] # ... # ) # # Provides the ability to download and unpack a tarball, zip file, git repository, # etc. at configure time (i.e. when the cmake command is run). How the downloaded # and unpacked contents are used is up to the caller, but the motivating case is # to download source code which can then be included directly in the build with # add_subdirectory() after the call to download_project(). Source and build # directories are set up with this in mind. # # The PROJ argument is required. The projectName value will be used to construct # the following variables upon exit (obviously replace projectName with its actual # value): # # projectName_SOURCE_DIR # projectName_BINARY_DIR # # The SOURCE_DIR and BINARY_DIR arguments are optional and would not typically # need to be provided. They can be specified if you want the downloaded source # and build directories to be located in a specific place. The contents of # projectName_SOURCE_DIR and projectName_BINARY_DIR will be populated with the # locations used whether you provide SOURCE_DIR/BINARY_DIR or not. # # The DOWNLOAD_DIR argument does not normally need to be set. It controls the # location of the temporary CMake build used to perform the download. # # The PREFIX argument can be provided to change the base location of the default # values of DOWNLOAD_DIR, SOURCE_DIR and BINARY_DIR. If all of those three arguments # are provided, then PREFIX will have no effect. The default value for PREFIX is # CMAKE_BINARY_DIR. # # The QUIET option can be given if you do not want to show the output associated # with downloading the specified project. # # In addition to the above, any other options are passed through unmodified to # ExternalProject_Add() to perform the actual download, patch and update steps. # The following ExternalProject_Add() options are explicitly prohibited (they # are reserved for use by the download_project() command): # # CONFIGURE_COMMAND # BUILD_COMMAND # INSTALL_COMMAND # TEST_COMMAND # # Only those ExternalProject_Add() arguments which relate to downloading, patching # and updating of the project sources are intended to be used. Also note that at # least one set of download-related arguments are required. # # If using CMake 3.2 or later, the UPDATE_DISCONNECTED option can be used to # prevent a check at the remote end for changes every time CMake is run # after the first successful download. See the documentation of the ExternalProject # module for more information. It is likely you will want to use this option if it # is available to you. Note, however, that the ExternalProject implementation contains # bugs which result in incorrect handling of the UPDATE_DISCONNECTED option when # using the URL download method or when specifying a SOURCE_DIR with no download # method. Fixes for these have been created, the last of which is scheduled for # inclusion in CMake 3.8.0. Details can be found here: # # https://gitlab.kitware.com/cmake/cmake/commit/bdca68388bd57f8302d3c1d83d691034b7ffa70c # https://gitlab.kitware.com/cmake/cmake/issues/16428 # # If you experience build errors related to the update step, consider avoiding # the use of UPDATE_DISCONNECTED. # # EXAMPLE USAGE: # # include(DownloadProject) # download_project(PROJ googletest # GIT_REPOSITORY https://github.com/google/googletest.git # GIT_TAG master # UPDATE_DISCONNECTED 1 # QUIET # ) # # add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) # #======================================================================================== set(_DownloadProjectDir "${CMAKE_CURRENT_LIST_DIR}") include(CMakeParseArguments) function(download_project) set(options QUIET) set(oneValueArgs PROJ PREFIX DOWNLOAD_DIR SOURCE_DIR BINARY_DIR # Prevent the following from being passed through CONFIGURE_COMMAND BUILD_COMMAND INSTALL_COMMAND TEST_COMMAND ) set(multiValueArgs "") cmake_parse_arguments(DL_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) # Hide output if requested if (DL_ARGS_QUIET) set(OUTPUT_QUIET "OUTPUT_QUIET") else() unset(OUTPUT_QUIET) message(STATUS "Downloading/updating ${DL_ARGS_PROJ}") endif() # Set up where we will put our temporary CMakeLists.txt file and also # the base point below which the default source and binary dirs will be. # The prefix must always be an absolute path. if (NOT DL_ARGS_PREFIX) set(DL_ARGS_PREFIX "${CMAKE_BINARY_DIR}") else() get_filename_component(DL_ARGS_PREFIX "${DL_ARGS_PREFIX}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}") endif() if (NOT DL_ARGS_DOWNLOAD_DIR) set(DL_ARGS_DOWNLOAD_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-download") endif() # Ensure the caller can know where to find the source and build directories if (NOT DL_ARGS_SOURCE_DIR) set(DL_ARGS_SOURCE_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-src") endif() if (NOT DL_ARGS_BINARY_DIR) set(DL_ARGS_BINARY_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-build") endif() set(${DL_ARGS_PROJ}_SOURCE_DIR "${DL_ARGS_SOURCE_DIR}" PARENT_SCOPE) set(${DL_ARGS_PROJ}_BINARY_DIR "${DL_ARGS_BINARY_DIR}" PARENT_SCOPE) # The way that CLion manages multiple configurations, it causes a copy of # the CMakeCache.txt to be copied across due to it not expecting there to # be a project within a project. This causes the hard-coded paths in the # cache to be copied and builds to fail. To mitigate this, we simply # remove the cache if it exists before we configure the new project. It # is safe to do so because it will be re-generated. Since this is only # executed at the configure step, it should not cause additional builds or # downloads. file(REMOVE "${DL_ARGS_DOWNLOAD_DIR}/CMakeCache.txt") # Create and build a separate CMake project to carry out the download. # If we've already previously done these steps, they will not cause # anything to be updated, so extra rebuilds of the project won't occur. # Make sure to pass through CMAKE_MAKE_PROGRAM in case the main project # has this set to something not findable on the PATH. configure_file("${_DownloadProjectDir}/DownloadProject.CMakeLists.cmake.in" "${DL_ARGS_DOWNLOAD_DIR}/CMakeLists.txt") execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -D "CMAKE_MAKE_PROGRAM:FILE=${CMAKE_MAKE_PROGRAM}" . RESULT_VARIABLE result ${OUTPUT_QUIET} WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}" ) if(result) message(FATAL_ERROR "CMake step for ${DL_ARGS_PROJ} failed: ${result}") endif() execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result ${OUTPUT_QUIET} WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}" ) if(result) message(FATAL_ERROR "Build step for ${DL_ARGS_PROJ} failed: ${result}") endif() endfunction() cbmc-cbmc-5.10/doc/000077500000000000000000000000001333451767700140325ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/CPPLINT.cfg000066400000000000000000000000211333451767700156150ustar00rootroot00000000000000exclude_files=.* cbmc-cbmc-5.10/doc/architectural/000077500000000000000000000000001333451767700166645ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/architectural/background-concepts.md000066400000000000000000000010031333451767700231330ustar00rootroot00000000000000\ingroup module_hidden \page background-concepts Background Concepts \author Martin Brain, Peter Schrammel # Representations # ## AST: types, globals, variables, functions, code blocks, language primitives, assignments, expressions, variables ## To be documented. ## CFG ## To be documented. ## SSA ## To be documented. # Analysis techniques # ## Bounded model checking ## To be documented (can copy from the CBMC manual). ## SAT and SMT ## To be documented. ## Static analysis ## To be documented. cbmc-cbmc-5.10/doc/architectural/bmct-class.md000066400000000000000000000001401333451767700212310ustar00rootroot00000000000000\ingroup module_hidden \page bmct-class Bmct class \author ## equation ## To be documented. cbmc-cbmc-5.10/doc/architectural/cbmc-architecture.md000066400000000000000000000052401333451767700225730ustar00rootroot00000000000000\ingroup module_hidden \page cbmc-architecture CBMC Architecture \author Martin Brain, Peter Schrammel This section provides a graphical overview of how CBMC fits together. CBMC takes C code or a goto-binary as input and tries to emit traces of executions that lead to crashes or undefined behaviour. The diagram below shows the intermediate steps in this process. \dot digraph G { rankdir="TB"; node [shape=box, fontcolor=blue]; subgraph top { rank=same; 1 -> 2 -> 3 -> 4; } subgraph bottom { rank=same; 5 -> 6 -> 7 -> 8 -> 9; } /* shift bottom subgraph over */ 9 -> 1 [color=white]; 4 -> 5; 1 [label="command line\nparsing" URL="\ref cbmc_parse_optionst"]; 2 [label="preprocessing,\nparsing" URL="\ref preprocessing"]; 3 [label="language\ntype-checking" URL="\ref type-checking"]; 4 [label="goto\nconversion" URL="\ref goto-conversion"]; 5 [label="instrumentation" URL="\ref instrumentation"]; 6 [label="symbolic\nexecution" URL="\ref symbolic-execution"]; 7 [label="SAT/SMT\nencoding" URL="\ref sat-smt-encoding"]; 8 [label="decision\nprocedure" URL="\ref decision-procedure"]; 9 [label="counter example\nproduction" URL="\ref counter-example-production"]; } \enddot The \ref cbmc-user-manual "CBMC User Manual" describes CBMC from a user perspective. Each node in the diagram above links to the appropriate class or module documentation, describing that particular stage in the CBMC pipeline. CPROVER is structured in a similar fashion to a compiler. It has language specific front-ends which perform limited syntactic analysis and then convert to an intermediate format. The intermediate format can be output to files (this is what `goto-cc` does) and are (informally) referred to as “goto binaries” or “goto programs”. The back-end are tools process this format, either directly from the front-end or from it’s saved output. These include a wide range of analysis and transformation tools (see \ref section-other-tools). # Concepts # ## {C, java bytecode} → Parse tree → Symbol table → GOTO programs → GOTO program transformations → BMC → counterexample (goto_tracet) → printing ## To be documented. ## Instrumentation: goto functions → goto functions ## To be documented. ## Goto functions → BMC → Counterexample (trace) ## To be documented. ## Trace → interpreter → memory map ## To be documented. ## Goto functions → abstract interpretation ## To be documented. ## Executables (flow of transformations): ## ### goto-cc ### To be documented. ### goto-instrument ### To be documented. ### cbmc ### To be documented. ### goto-analyzer ### To be documented. cbmc-cbmc-5.10/doc/architectural/compilation-and-development.md000066400000000000000000000057251333451767700246150ustar00rootroot00000000000000\ingroup module_hidden \page compilation-and-development Compilation and Development \author Martin Brain, Peter Schrammel ## Makefiles ## First off, read the \ref cbmc-user-manual "CBMC User Manual". It describes how to get, build and use CBMC. This document covers the internals of the system and how to get started on development. ## CMake files ## To be documented. ## Personal configuration: config.inc, macro DEBUG ## To be documented. ## Running tests ## ### Regression tests ### The regression tests are contained in the `regression/` folder. They are grouped into directories for each of the tools/modules. Each of these contains multiple directories, each of which contains input files and one or more`.desc` files that describe what command to run, what output is expected and so on. There is a Perl script, `test.pl` that is used to invoke the tests as: ../test.pl -c PATH_TO_CBMC The `–help` option gives instructions for use and the format of the description files. To be documented further. ### Unit tests ### To be documented. ## Documentation ## Apart from the (user-orientated) CBMC user manual and this document, most of the rest of the documentation is inline in the code as `doxygen` and some comments. A man page for CBMC, goto-cc and goto-instrument is contained in the `doc/` directory and gives some options for these tools. All of these could be improved and patches are very welcome. In some cases the algorithms used are described in the relevant papers. ## Accessing doxygen documentation ## The doxygen documentation can be [accessed online](http://cprover.diffblue.com). To build it locally, run `doxygen` in `/src`. HTML output will be created in `/doc/html`. The index page is `/doc/html/index.html`. ## Coding standards ## See `CODING_STANDARD.md` file in the root of the CBMC repository. CPROVER is written in a fairly minimalist subset of C++; templates and meta-programming are avoided except where necessary. External library dependencies are avoided (only STL and a SAT solver are required). Boost is not used. The `util` directory contains many utilities that are not (yet) in the standard library. Patches should be formatted so that code is indented with two space characters, not tab and wrapped to 80 columns. Headers for doxygen should be given (and preferably filled!) and the author will be the person who first created the file. Add doxygen comments to undocumented functions as you touch them. Coding standards and doxygen comments are enforced by CI before a patch can be merged by running `clang-format` and `cpplint`. Identifiers should be lower case with underscores to separate words. Types (classes, structures and typedefs) names must end with a `t`. Types that model types (i.e. C types in the program that is being interpreted) are named with `_typet`. For example `ui_message_handlert` rather than `UI_message_handlert` or `UIMessageHandler` and `union_typet`.cbmc-cbmc-5.10/doc/architectural/data-structures-core-structures-and-ast.md000066400000000000000000000103301333451767700270310ustar00rootroot00000000000000\ingroup module_hidden \page data-structures-core-structures-and-ast Data structures: core structures and AST \author Martin Brain, Peter Schrammel, Owen Jones ## Strings: dstringt, the string_container and the ID_* ## Within cbmc, strings are represented using `irep_idt`. By default this is typedefed to \ref dstringt, which stores a string as an index into a large static table of strings. This makes it easy to compare if two `irep_idt`s are equal (just compare the index) and it makes it efficient to store many copies of the same string. The static list of strings is initially populated from `irep_ids.def`, so for example the fourth entry in `irep_ids.def` is “IREP_ID_ONE(type)”, so the string “type” has index 3. You can refer to this `irep_idt` as `ID_type`. The other kind of line you see is “IREP_ID_TWO(C_source_location, #source_location)”, which means the `irep_idt` for the string “#source_location” can be referred to as `ID_C_source_location`. The “C” is for comment, which will be explained in the next section. Any strings that need to be stored as `irep_id`s which aren't in `irep_ids.def` are added to the end of the table when they are first encountered, and the same index is used for all instances. See documentation at \ref dstringt. ## irept: a 4-triple (data, named-sub, comments, sub) ## See documentation at \ref irept. As that documentation says, `irept`s are generic tree nodes. You should think of them as having a single string (data, actually an `irep_idt`) and lots of child nodes, some of which are numbered (sub) and some of which are labelled, and the label can either start with a “#” (comments-sub) or without one (named-sub). The meaning of the “#” is that this child should not be considered important, for example it shouldn’t be counted when comparing two `irept`s for equality. ## typet ## To be documented. ### symbol_typet ### To be documented. ## exprt ## \ref exprt is the class to represent an expression. It inherits from \ref irept, and the only things it adds to it are that every \ref exprt has a named sub containing its type and everything in the sub of an \ref exprt is again an \ref exprt, not just an \ref irept. You can think of \ref exprt as a node in the abstract syntax tree for an expression. There are many classes that inherit from \ref exprt and which represent more specific things. For example, there is \ref minus_exprt, which has a sub of size 2 (for the two argument of minus). Recall that every \ref irept has one piece of data of its own, i.e. its `id()`, and all other information is in its `named_sub`, `comments` or `sub`. For `exprt`s, the `id()` is used to specify why kind of \ref exprt this is, so a \ref minus_exprt has `ID_minus` as its `id()`. This means that a \ref minus_exprt can be passed wherever an \ref exprt is expected, and if you want to check if the expression you are looking at is a minus expression then you have to check its `id()` (or use `can_cast_expr`). ## codet ## \ref exprt represents expressions and \ref codet represents statements. \ref codet inherits from \ref exprt, so all `codet`s are `exprt`s, with `id()` `ID_code`. Many different kinds of statements inherit from \ref codet, and they are distinguished by their `statement()`. For example, a while loop would be represented by a \ref code_whilet, which has `statement()` `ID_while`. \ref code_whilet has two operands in its sub, and helper functions to make it easier to use: `cond()` returns the first subexpression, which is the condition for the while loop, and `body()` returns the second subexpression, which is the body of the while loop - this has to be a \ref codet, because the body of a while loop is a statement. ## symbolt, symbol_table, and namespacet ## To be documented. ### Symbol lifetimes, symbol modes, name, base-name, pretty-name; semantic of lifetimes for symex? ### To be documented. ### Storing symbols and hiding symbols (namespacet) ### To be documented. ### ns.follow ## To be documented. ## Examples: how to represent the AST of statements, in C and in java ## ### x = y + 123 ### To be documented.. ### if (x > 10) { y = 2 } else { v[3] = 4 } ### To be documented. ### Java arrays: struct Array { int length, int *data }; ### To be documented. cbmc-cbmc-5.10/doc/architectural/data-structures-from-ast-to-goto-program.md000066400000000000000000000015041333451767700271210ustar00rootroot00000000000000\ingroup module_hidden \page data-structures-from-ast-to-goto-program Data structures: from AST to GOTO program \author Martin Brain, Peter Schrammel ## goto_programt ## See \ref goto_programt. ### instructiont ### See [instructiont](\ref goto_programt::instructiont). #### Types, motivation of each type ##### See [instructiont](\ref goto_programt::instructiont). #### Accepted code (codet) values #### To be documented. #### Accepted guard (exprt) values #### To be documented. ## goto_functionst ## \ref goto_functionst is a map from function names to function bodies (CFGs). To be documented. ## goto_modelt ## \ref goto_modelt is a compilation unit. To be documented. ## Example: ## ### Unsigned mult (unsigned a, unsigned b) { int acc, i; for (i = 0; i < b; i++) acc += a; return acc; } ### To be documented. cbmc-cbmc-5.10/doc/architectural/folder-walkthrough.md000066400000000000000000000037061333451767700230240ustar00rootroot00000000000000\ingroup module_hidden \page folder-walkthrough Folder Walkthrough \author Martin Brain, Peter Schrammel ## `src/` ## The source code is divided into a number of sub-directories, each containing the code for a different part of the system. - GOTO-Programs * \ref goto-programs * \ref linking - Symbolic Execution * \ref goto-symex - Static Analyses * \ref analyses * \ref pointer-analysis - Solvers * \ref solvers - Language Front Ends * Language API: \ref langapi * C: \ref ansi-c * C++: \ref cpp * Java: \ref java_bytecode * JavaScript: \ref jsil - Tools * \ref cbmc * \ref clobber * \ref goto-analyzer * \ref goto-instrument * \ref goto-diff * \ref memory-models * \ref goto-cc * \ref jbmc - Utilities * \ref big-int * \ref json * \ref xmllang * \ref util * \ref miniz * \ref nonstd In the top level of `src` there are only a few files: * `config.inc`: The user-editable configuration parameters for the build process. The main use of this file is setting the paths for the various external SAT solvers that are used. As such, anyone building from source will likely need to edit this. * `Makefile`: The main systems Make file. Parallel builds are supported and encouraged; please don’t break them! * `common`: System specific magic required to get the system to build. This should only need to be edited if porting CBMC to a new platform / build environment. * `doxygen.cfg`: The config file for doxygen.cfg ## `doc/` ## Contains the CBMC man page. Doxygen HTML pages are generated into the `doc/html` directory when running `doxygen` from `src`. ## `regression/` ## The `regression/` directory contains the regression test suites. See \ref compilation-and-development for information on how to run and develop regression tests. ## `unit/` ## The `unit/` directory contains the unit test suites. See \ref compilation-and-development for information on how to run and develop unit tests. cbmc-cbmc-5.10/doc/architectural/front-end-languages-generating-codet-from-multiple-languages.md000066400000000000000000000012311333451767700330160ustar00rootroot00000000000000\ingroup module_hidden \page front-end-languages-generating-codet-from-multiple-languages Front-end languages: generating codet from multiple languages \author Martin Brain, Peter Schrammel ## language_uit, language_filest, languaget classes: ## ### Purpose ### To be documented. ### Parse ### To be documented. ### Typecheck ### To be documented. ### Final ### To be documented. ## Java bytecode ## ### Explain how a java program / class is represented in a .class ### To be documented. ### Explain the 2 step conversion from bytecode to codet ### To be documented. ### A worked example of converting java bytecode to codet ### To be documented. cbmc-cbmc-5.10/doc/architectural/front-page.md000066400000000000000000000071761333451767700212630ustar00rootroot00000000000000CProver Developer Documentation ===================== These pages contain user tutorials, automatically-generated API documentation, and higher-level architectural overviews for the CProver codebase. CProver is a platform for software verification. Users can download CProver tools from the CProver website; contributors should use the repository hosted on GitHub. CBMC is part of CProver. CBMC is a Bounded Model Checker for C and C++ programs. It supports C89, C99, most of C11 and most compiler extensions provided by gcc and Visual Studio. It also supports SystemC using Scoot. It allows verifying array bounds (buffer overflows), pointer safety, arithmetic exceptions and user-specified assertions. Furthermore, it can check C and C++ for consistency with other languages, such as Verilog. The verification is performed by unwinding the loops in the program and passing the resulting equation to a decision procedure. For further information see [cprover.org](http://www.cprover.org/cbmc). Versions ======== Get the [latest release](https://github.com/diffblue/cbmc/releases) * Releases are tested and for production use. Get the current *develop* version: `git clone https://github.com/diffblue/cbmc.git` * Develop versions are not recommended for production use. Report bugs =========== If you encounter a problem please file a bug report: * Create an [issue](https://github.com/diffblue/cbmc/issues) Contributing to the code base ============================= 1. Fork the the CBMC repository on GitHub. 2. Clone your fork with `git clone git@github.com:YOURNAME/cbmc.git` 3. Create a branch from the `develop` branch (default branch) 4. Make your changes - follow the coding guidelines 5. Push your changes to your branch 6. Create a Pull Request targeting the `develop` branch License ======= 4-clause BSD license. Overview of Documentation ======= ### For users: * The \ref cbmc-user-manual "CBMC User Manual" details the capabilities of CBMC and describes how to install and use these tools. It also covers the underlying theory and prerequisite concepts behind how these tools work. * There is a helpful user tutorial on the wiki with lots of linked resources, you can access it here. ### For contributors: * \subpage compilation-and-development * \subpage background-concepts * \subpage cbmc-architecture * \subpage folder-walkthrough * \subpage data-structures-core-structures-and-ast * \subpage data-structures-from-ast-to-goto-program * \subpage front-end-languages-generating-codet-from-multiple-languages * \subpage bmct-class * \subpage symbolic-executors * \subpage solvers-infrastructure * \subpage static-analysis-apis * \subpage other-tools * For higher-level architectural information, each of the pages under the Modules link gives an overview of a directory in the CProver codebase. * If you already know exactly what you're looking for, the API reference is generated from the codebase. You can search for classes and class members in the search bar at top-right or use one of the links in the sidebar. * The \subpage tutorial "CBMC Developer Tutorial" helps new contributors to CProver to get their feet wet through a series of programming exercises - mostly modifying goto-instrument, and thus learning to manipulate the main data structures used within CBMC. \defgroup module_hidden _hidden cbmc-cbmc-5.10/doc/architectural/howto.md000066400000000000000000000210411333451767700203440ustar00rootroot00000000000000\ingroup module_hidden \page tutorial Tutorials \section cbmc_tutorial CBMC Developer Tutorial \tableofcontents \author Kareem Khazem This is an introduction to hacking on the `cprover` codebase. It is not intended as a user guide to `CBMC` or related tools. It is structured as a series of programming exercises that aim to acclimatise the reader to the basic data structures and workflow needed for contributing to `CBMC`. ## Initial setup Clone the [CBMC repository][cbmc-repo] and build it: git clone https://github.com/diffblue/cbmc.git cd cbmc/src make minisat2-download make Ensure that [graphviz][graphviz] is installed on your system (in particular, you should be able to run a program called `dot`). Install [Doxygen][doxygen] and generate doxygen documentation: # In the src directory doxygen doxyfile # View the documentation in a web browser firefox doxy/html/index.html If you've never used doxygen documentation before, get familiar with the layout. Open the generated HTML page in a web browser; search for the class `goto_programt` in the search bar, and jump to the documentation for that class; and read through the copious documentation. The build writes executable programs into several of the source directories. In this tutorial, we'll be using binaries inside the `cbmc`, `goto-instrument`, and `goto-cc` directories. Add these directories to your `$PATH`: # Assuming you cloned CBMC into ~/code export PATH=~/code/cbmc/src/goto-instrument:~/code/cbmc/src/goto-cc:~/code/cbmc/src/cbmc:$PATH # Add to your shell's startup configuration file so that you don't have to run that command every time. echo 'export PATH=~/code/cbmc/src/goto-instrument:~/code/cbmc/src/goto-cc:~/code/cbmc/src/cbmc:$PATH' >> .bashrc Optional: install an image viewer that can read images on stdin. I use [feh][feh]. [cbmc-repo]: https://github.com/diffblue/cbmc/ [doxygen]: http://www.stack.nl/~dimitri/doxygen/ [graphviz]: http://www.graphviz.org/ [feh]: https://feh.finalrewind.org/ ## Whirlwind tour of the tools CBMC's code is located under the `cbmc` directory. Even if you plan to contribute only to CBMC, it is important to be familiar with several other of cprover's auxiliary tools. ### Compiling with `goto-cc` There should be an executable file called `goto-cc` in the `goto-cc` directory; make a symbolic link to it called `goto-gcc`: cd cbmc/src/goto-cc ln -s "$(pwd)/goto-cc" goto-gcc Find or write a moderately-interesting C program; we'll call it `main.c`. Run the following commands: goto-gcc -o main.goto main.c cc -o main.exe main.c Invoke `./main.goto` and `./main.exe` and observe that they run identically. The version that was compiled with `goto-gcc` is larger, though: du -hs *.{goto,exe} Programs compiled with `goto-gcc` are mostly identical to their `clang`- or `gcc`-compiled counterparts, but contain additional object code in cprover's intermediate representation. The intermediate representation is (informally) called a *goto-program*. ### Viewing goto-programs `goto-instrument` is a Swiss army knife for viewing goto-programs and performing single program analyses on them. Run the following command: goto-instrument --show-goto-functions main.goto Many of the instructions in the goto-program intermediate representation are similar to their C counterparts. `if` and `goto` statements replace structured programming constructs. Find or write a small C program (2 or 3 functions, each containing a few varied statements). Compile it using `goto-gcc` as above into an object file called `main`. If you installed `feh`, try the following command to dump a control-flow graph: goto-instrument --dot main | tail -n +2 | dot -Tpng | feh - If you didn't install `feh`, you can write the diagram to the file and then view it: goto-instrument --dot main | tail -n +2 | dot -Tpng > main.png Now open main.png with an image viewer (the invocation of `tail` is used to filter out the first line of `goto-instrument` output. If `goto-instrument` writes more or less debug output by the time you read this, read the output of `goto-instrument --dot main` and change the invocation of `tail` accordingly.) There are a few other views of goto-programs. Run `goto-instrument -h` and try the various switches under the "Diagnosis" section. ## Learning about goto-programs In this section, you will learn about the basic goto-program data structures. Reading from and manipulating these data structures form the core of writing an analysis for CBMC. ### First steps with `goto-instrument`
**Task:** Write a simple C program with a few functions, each containing a few statements. Compile the program with `goto-gcc` into a binary called `main`.
The entry point of `goto-instrument` is in `goto_instrument_main.cpp`. Follow the control flow into `goto_instrument_parse_optionst::doit()`, located in `goto_instrument_parse_options.cpp`. At some point in that function, there will be a long sequence of `if` statements.
**Task:** Add a `--greet` switch to `goto-instrument`, taking an optional argument, with the following behaviour: $ goto-instrument --greet main hello, world! $ goto-instrument --greet Leperina main hello, Leperina! You will also need to add the `greet` option to the `goto_instrument_parse_options.h` file in order for this to work. Notice that in the `.h` file, options that take an argument are followed by a colon (like `(property):`), while simple switches have no colon. Make sure that you `return 0;` after printing the message.
The idea behind `goto-instrument` is that it parses a goto-program and then performs one single analysis on that goto-program, and then returns. Each of the switches in `doit` function of `goto_instrument_parse_options` does something different with the goto-program that was supplied on the command line. ### Goto-program basics At this point in `goto-instrument_parse_options` (where the `if` statements are), the goto-program will have been loaded into the object `goto_functions`, of type `goto_functionst`. This has a field called `function_map`, a map from function names to functions.
**Task:** Add a `--print-function-names` switch to `goto-instrument` that prints out the name of every function in the goto-binary. Are there any functions that you didn't expect to see?
The following is quite difficult to follow from doxygen, but: the value type of `function_map` is `goto_function_templatet`.
**Task:** Read the documentation for `goto_function_templatet` and `goto_programt`.
Each \ref goto_programt object contains a list of \ref goto_programt::instructiont called `instructions`. Each instruction has a field called `code`, which has type \ref codet.
**Task:** Add a `--pretty-program` switch to `goto-instrument`. This switch should use the `codet::pretty()` function to pretty-print every \ref codet in the entire program. The strings that `pretty()` generates for a codet look like this: index * type: unsignedbv * width: 8 * #c_type: char 0: symbol * type: array * size: nil * type: * #source_location: * file: src/main.c * line: 18 * function: * working_directory: /some/dir 0: unsignedbv * width: 8 * #c_type: char ...
The sub-nodes of a particular node in the pretty representation are numbered, starting from 0. They can be accessed through the `op0()`, `op1()` and `op2()` methods in the `exprt` class. Every node in the pretty representation has an identifier, accessed through the `id()` function. The file `util/irep_ids.def` lists the possible values of these identifiers; have a quick scan through that file. In the pretty representation above, the following facts are true of that particular node: - `node.id() == ID_index` - `node.type().id() == ID_unsignedbv` - `node.op0().id() == ID_symbol` - `node.op0().type().id() == ID_array` The fact that the `op0()` child has a `symbol` ID menas that you could cast it to a `symbol_exprt` (which is a subtype of `exprt`) using the function `to_symbol_expr`.
**Task:** Add flags to `goto-instrument` to print out the following information: * the name of every function that is *called* in the program; * the value of every constant in the program; * the value of every symbol in the program.
cbmc-cbmc-5.10/doc/architectural/other-tools.md000066400000000000000000000053601333451767700214710ustar00rootroot00000000000000\ingroup module_hidden \page other-tools Other Tools \author Martin Brain, Peter Schrammel # Other Tools FIXME: The text in this section is a bit outdated. The CPROVER subversion archive contains a number of separate programs. Others are developed separately as patches or separate branches.Interfaces are have been and are continuing to stablise but older code may require work to compile and function correctly. In the main archive: * `CBMC`: A bounded model checking tool for C and C++. See \ref cbmc. * `goto-cc`: A drop-in, flag compatible replacement for GCC and other compilers that produces goto-programs rather than executable binaries. See \ref goto-cc. * `goto-instrument`: A collection of functions for instrumenting and modifying goto-programs. See \ref goto-instrument. Model checkers and similar tools: * `SatABS`: A CEGAR model checker using predicate abstraction. Is roughly 10,000 lines of code (on top of the CPROVER code base) and is developed in its own subversion archive. It uses an external model checker to find potentially feasible paths. Key limitations are related to code with pointers and there is scope for significant improvement. * `Scratch`: Alistair Donaldson’s k-induction based tool. The front-end is in the old project CVS and some of the functionality is in `goto-instrument`. * `Wolverine`: An implementation of Ken McMillan’s IMPACT algorithm for sequential programs. In the old project CVS. * `C-Impact`: An implementation of Ken McMillan’s IMPACT algorithm for parallel programs. In the old project CVS. * `LoopFrog`: A loop summarisation tool. * `TAN`: Christoph’s termination analyser. Test case generation: * `cover`: A basic test-input generation tool. In the old project CVS. * `FShell`: A test-input generation tool that allows the user to specify the desired coverage using a custom language (which includes regular expressions over paths). It uses incremental SAT and is thus faster than the naïve “add assertions one at a time and use the counter-examples” approach. Is developed in its own subversion. Alternative front-ends and input translators: * `Scoot`: A System-C to C translator. Probably in the old project CVS. * `???`: A Simulink to C translator. In the old project CVS. * `???`: A Verilog front-end. In the old project CVS. * `???`: A converter from Codewarrior project files to Makefiles. In the old project CVS. Other tools: * `ai`: Leo’s hybrid abstract interpretation / CEGAR tool. * `DeltaCheck?`: Ajitha’s slicing tool, aimed at locating changes and differential verification. In the old project CVS. There are tools based on the CPROVER framework from other research groups which are not listed here. cbmc-cbmc-5.10/doc/architectural/solvers-infrastructure.md000066400000000000000000000003161333451767700237610ustar00rootroot00000000000000\ingroup module_hidden \page solvers-infrastructure Solvers infrastructure \author ## Flattening ## To be documented. ## SMT solving API ## To be documented. ## SAT solving API ## To be documented. cbmc-cbmc-5.10/doc/architectural/static-analysis-apis.md000066400000000000000000000001451333451767700232500ustar00rootroot00000000000000\ingroup module_hidden \page static-analysis-apis Static analysis APIs \author To be documented. cbmc-cbmc-5.10/doc/architectural/symbolic-executors.md000066400000000000000000000001641333451767700230470ustar00rootroot00000000000000\ingroup module_hidden \page symbolic-executors Symbolic executors \author ## Symex class ## To be documented. cbmc-cbmc-5.10/doc/assets/000077500000000000000000000000001333451767700153345ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/assets/binsearch.c000066400000000000000000000004211333451767700174330ustar00rootroot00000000000000int binsearch(int x) { int a[16]; signed low=0, high=16; while(low>1); if(a[middle]x) low=middle+1; else // a[middle]=x ! return middle; } return -1; } cbmc-cbmc-5.10/doc/assets/c_to_ir.svg000066400000000000000000001321121333451767700174730ustar00rootroot00000000000000 cbmc-cbmc-5.10/doc/assets/cegar-1.png000066400000000000000000000733051333451767700172710ustar00rootroot00000000000000PNG  IHDR/iCCPICC Profilexc``2ptqre``+) rwRR` ``\\yy | 2 U +'300%@q9@HR6. r!+ v.z H}:b'A2 vIj^ʢ#ǔTbϼĒZ@! A!ahii "q(v!( cd2f` G1G)I/15C}}sïPo pHYsaa?i IDATx]!AZ [ -R\/Bp .] ŋ+A8 ɽ;>swVfgvvv_~%oBe_} L$&ns }Y@y0^c- y0d[/,᧟ _w}ݻwx߰^{*1ˆߤN ^zRɟ|pM7k/L9a W]uqo>zk/-qYdO?o1=>lXx+|@>SO=utM^-_ǀc00|ͰKX&x 38A J<@۷o9rdX|Zh+ '0 >&^{C=ha7l 6Dy|É꥽-qpHEN@} b~z#*+bAC)?ǀc{10>b4_'&nDbs5Wx7OD>⿉& &kiQPS5'p¨HH2)Lp?iy:N}]vTv•ޣ"Y~|+m:8@c`|J1ICXA nJJ8 0&zKBYbi G5sy94UsAATwbϡuE$Lb~É'?o5}gy|C(XaKp 8] gh0ٳcJ8ZyySxmfgBC5qH[wRewްZk8 A}!8>JF( v@km9Q O!փh{Nh%l=ܣO#)+yc1p t&dB[oMkԪ b\ [6?`v(ΫGF y"Nzc1PJ(ɏ $?x3y$Ew"mY(l2ic6r &lnUk/}G/pUO,pfv JO2i1n'JC\w '8a2 GE bu_6fm:\@r/SMOʖMZ^\"!7D8(/fe$M'MH@!N Ӂh6X˽H1'C'a?{0[#`S|_ZG( T( le jphF (| 8& SۻeIc'0($㥗^&NDqJ(I9oL>ؗbKp Xܪ'PKK^r@1P(DSYbs(7}{7 Dl#rJ!!4ֳ#߫ ({Qp>L}+:>=Ŋ7  G@+b{L't*=V!jˍ78dc^wN1 *G&BP: XTPp@qmE箻2.2nLnNZs($Q)a:蠃c*߄ԋ x17=SiHq}EbS\v|p\Âz~;k3Fix[ #lT (pMpL䢼1xQd_x믇UW].3d=&6~b@hz[tE2JJr9v- M@|}K]˭d34[Vؚ(N|;t?*">nV@qVO>o3/AbD꧄ O)anI7_769+zZh!3գB~ #T_OKHA .A}' QpLr1Al^ q&W {rLJr)?DtD(8PݛY=9 ~?lmYpl)((?_@%a:J{L'f_򃲠xX||p=DUgJ+dd|@ }gK-U I'kT\z]??yw߆7^G)Xug?KI9(WpkM7{(wQʘ;uMu^<Wɋh?XA 4T*A wfmHW?i "Bզ(V9(h^#K%uM&u\V[zh|ME\l;;찀{5VL.zTXoT϶;10殃,E Ul&PI#},]a~0poճ\uPVy ܓ_7Sѓw/WӸ{tM6K˾HeJ|4k^ Gn:kK:& 5.rOձϓ0p|iX0 ǻ&)N>"|eC G1@/~Gj-oǷH~Q}RqT&m wQ@ea/ |"ph> ԭJxbqPχcBt8TNݚM{&cTjҔ;Jlr}%[b\QOMnP*[Ce'z#?7JQBR/3Gi :˝.r3?䓛]ϨLq4k Oo5jYp MB-ůOzW / +2pqWZɟ0z "D;aqg"Y}z?p!!C( x-}-CGw_Ơ>1oaȐ!&JaYp:pM&nu&N$g0Ay.,V(,*h1sv'?;(lkNSj V@5nL@I_“h'OT f/Wgr\ _[Y^(/dqûKy1@{lFfܦj*Olz駭>\{aM6 @z2za) Tп0-FpE'5 JG_ӷ1P ( ->L@><SN9| Wah} \΁^Nkߋ _lq Guԯ/+ SJ^;/VQH bD$\ec{ Çy& E8t6K;w%р,PRHq (?_eq,ӿP},.+`СB1=+$ r4LK9`wy<47 `k F#iÍps1Q vv~!h1g^z%Sm'>L@=7 쳭q"Dkp'x-ԐH88ڂgӶPq3`5)31l)?[m&SD X&dl:7 {v}w) /la|K'x7+XVBY"ɉf8AN;͈ "~)J Ǟ&] Ǎ@VD,b'cppp_KW^|!λ.D-s @S% ?MEw ^p mpV4ӁH|k p]xRO+(ĀJ8LX%Mqsy. (MN9)nph\se\>0y&> (@D|'PMjh NI8 zd?64-C,'1SA pgi&p!px&&eJ!w*#/Vr-F Ið: "Nfd؛ZfeLxjٴѣٴfB<-{G8s=zچ~ `QaCgٯDIw.Li_W8 N Hq=.+QQ2FcSeRt T@CdE fpp "VwppRfA`TJO@0 Y2@!"8&єcS2|#a`L.l>w5״ j+YN#N?pI& !Q'!Jb\CTㆬB;ԟ~G}jun+b\p^ eQYD_GHooV8/%7<7꫌qMG_K|X*7eDE W^ ^ (O:=_:8 ngEد_q`l{ ƟɁI `3!jpmN%;&RHqqc(1h ɃYBH#4nt5Aȏ|j RK5⑶ܔO~J/uKæk0o J[Omy7&5]qWrOgxI;_o3_ JXөx {C\Ƚ\U S/^雕,lpskkxg`X}O%&w{S<͇־` !B3ȯ&%lq sגq Ԃ|KF^ iwhHu&J\~x-8~v*ߔWi)?Uʣ[Ƅ S-0u~5J 'X/ƚ5!w1r4A*A#LqsEؿL0B Us^Lc !(yxv dzE\a8ID eZmLɐQXaܻDxLV)mƀڗFp}׿7va( kV7!?qxN.nKp`"fC:(ԏ%qNJ=ya-瞳8`|#"oSaCP?~yADŽ&6Zp݋1*I`@آLK`Nsgy Ve3v= SLi=UBXϢC$bB`BY 2 !ݻw@L,b .9.D!nKWH"E:XhjI/֐H@]qJY6ZMA@㽥VGq *ؿ J&WVG}&N:8"3!Կ%r+?,yCdВIB%-a"?TSwy•8iۡ1 INC8q1;:}' HQ?@b?Lbq!$?@ϱ(@`1VL n>{)msl?Տ+9 _yb8}5V\O=V "i#姽>b,T @P@ ?W?!-ɇ$IiF֚qSH5{db&!*Su'- 0"Bl P, ŦG9RFmh[D{ - ܏rIı,АW7@b23Fi{W,t+ġOCC>;}qe!5sI} ~ x2_ߤ!&? oسTn1P1B w߱..+R+?#R`baQ9 4ץwDr'ZJ[+SK$wvN h/K13;l%}ƁSbO6"4./$HBHn>~iӾp{]J:.S @]4]IÈN`S? 'v N8ʏoV bɇoV)n +Bx]ͻnҨZƀp^#}D}BO' +E(WχU: N8@=c, %lby@ቒ:CS8ӗsO]Ez]Jzs[y0xWZ򓿾y OGqx4S| W—pS_(Ӿ#Q\p 4x/7}/ G+%%ko/oݭ(~  |해7FO{ oYWw[ Wο[>ZTF~pʓ-¢P(J8Ls=hT6/86o!P / e>}XǘiR8z 7Dh dW-a%|sJvqĨ}NyviLgr_8"H b@?h+k<h{vivr=m U4xJA־SDWLȭ9RB2aZ>v*%N8ԬC1q6BHm)%: ip^n-uaDIX*Z@r/ԏU<"Uʡ&{H;F~1~ mY>G<W. Z#3և bZ_kz{1P=%u4,ZjNqj_Àڡ}4vlx=Ʈuծ}N1ϞVQ~pO (IVԘ[B7ۡЀoJScײkjז>'I` ‰R״UgRH Pr55a;fa\p9F b٤!xسĜZ\e5_}5 _)Oc {(aD-/+{GZBP{:@c`@sRB0y3Tα+(oO-W<[)q˅/疖 13v>e/~w|(2Ѧ'1p T€&^7yIh:&4țoA~)LG/ ϡaL& OzD& 6ucAZ@L - *^fw(qf""w 82,k=hGM-?q::`-;հy C_ZNô,"dqډ-՜ R\9U9z ];1XKbsg۵!{;<*繸|!!";AvgfQ%Ƿc1~) ,^UW]k79X! 9,Z^K'Z@&Ž,NYųQY$_|YN$IxXPH_z1;,ee L7gqK#$fQ#{onheqO-vm- /^k3OQ)ҢP f@ 4-Y4o{ q 8wewe Wk>O "L#Fd;찃qg;S Q;#t6x?CXI?^Eq\ ڻ+z̟p oXa^@BH/rV"gBiE 2PiЈ-up 8% 070op}N=0s%ɤk5:j!P!"q;>"=s称s(` q whI䈘,]7yql5Dz q( p@8w#JBͭՑ?À n=l8Ly9h?& 'D<$(RAVrOPՆٳDXwj(L@NԡP8Eu>̈D/c1``tM0(pмbGZXId"ai{)mIqY|M<#]84/WD>hfs! S_}1p Ԃ&pц@J-*,sZs5ͨ~YgLcQp{\vgtIq/8`WV!F裏s=iq qamy8%U@p 7 H&&pԝ 70f. ַopQGQ*= ./Zϥ^ڬE  awxbCn8jQ/D0?qvZ+W:_}2[%m5vPV)h&0ZB;]$n[A`}  wt9:V# '%o@ꮰ/T)|KI?o~#*N9Ģ#-(ǀc1P pIls0xՅ?GW:͝Bwl,5WroFb2U $XǣMọ>SoO(Qp: rV+p 45-j6#2+G-kF;Za1 [}oC|gH3Mxw)^~ :*0 r7r.]V`D(c1c9b< fD^U?+Ԕ8Wp E !l H(k eEBdFO?[hݞ0 5d/&P fQ3۷ SP/c1P 9DYT5΢IRǝD[neИ'%x7wjy/^XiF]׾7% ýR@!wPKNBꭑTp 8r`{c3HXCªb4yU~.)a\ 雧R8׃x)qHsJ= B@6ؚxbꫯCɑXSс}$?(Y?ǀc  op ʸ RV*GAE#YҗW h($QR 2-'?:">/bXp 5c@K,aKRu t5D(@ViqBpn>;18:p=@R5u$T`ȏ8DǓ_K( :jKa\ Zq=nu~oO(8pݶ^"($Q2O]Ɉk3.%\?NAxjve1,dC%¯:3y6^-qzg] }ڣGjyi()~[4Z-­mZ 7ܰ{`D6묳f- aE qPdMfJ2 \rǘtIkZ zЄÇaoFjw|s'5\cw nk_2.UkX1(dՈ:00j=4c|^yaСa/vqԸ!kz+bV jE}s-jYO~/Z<+& }'-)qRHGMA^vm7#HyFClMZ~JKiW [͏ -P5TR,,}'̘P7jS(GPF~*3O+|[J҃kE(Pf+BcD i_a]*u~TCud P_:#cCTH ;0 0j)i嗦J;?7Bcvd1xmH)HC2UߩNO>qG w;V>ITζx9pOcWwq1жԅJ{ޱu:d(ȵ |\}HL2$6SȗELto~gW^yň;b3̥\{FIK~8ZౣT6I[S^_~ڀ W_}5*^LJ[3K0HO=4kJ 2²_h+ԧ!P;{1nЯ_? $bD b+"1T`|ϷXEB, dYL ? !6Fθ0zф(lrVUx?CXnIܸ Ǐ=*%\2΁_ĉC E"Fs9Tx K?*\VX,`S>p矿T“F QJD+- ,Gmil!HˠwllF2rP|WLBoYP`"<(9; nn2Ex& (3h?^?6}QlYgd?dOS. lymƈ%N!RcQ‚J +;*N$]; ȰE߇#?FDǛma!b|P]s5?03dž9 , bh^"t{ղG}1ݽ QMptʶA61S Ed"q+NE#RC,va#n\d  i3 @¤oMl \ɏ!7;XQ cc'J jc?T'i͓1!I`1 :О?@f/[n]%=#M{;0Ըc8a"QԠғ|w}11)@ PϠCD0-2raZf%U 8%C u(&hߓN:Wp,(BhW"S@F/446ph>.Eп'g bo!~pbv %=!Q! a؇b+ъKHw=l<][oEQFŤ{ !H콠'D:Y!x"_~zkBvaF)#!c `fwΞŞʭ2$}N@gOi\֚# S'x+wT=^G,U{총V/}wg"#2M˕Ɖ+,[ޢ~$pYDZS.E@Y n;.20|o h'rT/E˧o\\ Y8S)R8 ʢv ?,b9qqPe0'Hir(>h/8 WF 1gKs<_wSN18c/—s'j+;V$qu:K uW8^Mm˻9qoDF6]45tTzc1LmHN_LԜ 8p`o[ZT* ~¦K˔k)-k;DQf4T<ؚ=l1PhG(Iᔰh G`cCx>˚lޞl:"|f> Tk+Al JPk|:Uro7cZ\=l"GAwvZv~ 5Q(:p~᫯lV byfVPJ3fepÀGd/rGǯ-9O\x)NkXqT rH7Xr4& ʈN+1"[fu} \)p]wY7J8`:&%d,& Ew#vmÖUla6U} $Vϵ`B`f6gr_(ACkH{p?r?Ŋ=i v*}"=Eza+M9|%%̏ؠAB~l " !BL`1C_<`үXbr@KNxDw n@fq{WMR+F:w#.F.!b2Ц5dc ီ&`fA4ܸ(6f2WZi%\i33QPH}8" &oõ(]m23h2 Cb#?MYiU192fR` :G}dmXwƍ?[Fȭ.p)` E :}d~PwHNHVURw 9@b[ric(4> Z]$5XpjS`@BNC<҉= BK3!h}DNo"θCw}CD nXwaxDd ť)ˏr9N#@ )!l,1\!",]Zt "~!Bi[}%*&Z5i ƻk-d dlC|8-'`p\rIu.OؗbetqǙ(KT["?]h!;8oeE܂& L@B>vƉpp{?(^lejX`pdA! !l@Bcc L'A- o:?qj0<{FY|zq^ZiвKeP6`'+v!b !aQc"AdHdJHB׍ed*CZh5^s@b*3)eIuO뙾+ i">>1 }Z­RQByARo-[8l&~9F_ÝqOQB1\5ߴ-?ĺ%15G㉘)?- Z'I쑩<;u,ZqZK/v>]޲S8pVne#ұ\ZZJ6^4M#}W:>[MʊXZUi>F,tw-mɇKUh 0ޕ.3N_``Pq0q+"ÍO;ӄ@G_t..A坦-w.|+ZTZx0^iQ>q=mW&}Ox']¤qNqFxpGp{q$@5b"-@F<&J5"y r#ZޕV=FO4iSܦ~i*[])ntpi= hbsy[;T:ȒhAU*h ~g gXd&fPA{ } >-0\8F?;!fn]£>ZR#odӖr9&?i:HڬIڃ.ð,(5De B@{oh !nľs. ;EP0k3oX"wj7]Px T :7Fwõ]뎲|j=O[m*˯;WļO>8>Σ謊OV;+}Y&T} iE,$<pp-\Q,f)үq㡒Sn,AKq< ICc C/Yl}g^us\]*"9"{CEe=QؐDơcO(?qAguāq^ @]Q N]N}#)`Y \MƵZdppQEsEm-WEcsjI#0kΘ0?Yށtsz7Jrs?;<f0eRkx=Nmevt$l 7|ӮFćM;WFsޣGtxY h=v }ӶEDGӧ$^Jnt (MVLm[B=>`04y+Q@a$G/{o9t0!D=!4 ^ XX/GE4)DKMH:ǀ:o%ELPAGyI+虔heb":7O8/ əV vک: w%<#GaÆ>N8!y;?4 88G~?.uǍ4La^ e8[R@: ⟎p]a, h׳Oجׅ\BE|&`q3IZ@MԚyr{0EQk'|T9ISN [ɛ}2#D}3UHNK턑8 ANc1PFP)j h2Փ:3>nDF"6i tMm1lfΞՈ]zÍw߱#?[Y|I:qAׯ::m@څw&jMmI:ܚzAv ,Y,ŏ?xjȋ=\1{S-饐=}Oc1бpԱ` %Teq"ne9+B'Os \""piIp~uPJp t (u =6`@ ƒZx"СCJ *".jC9cĊBc/d/w=󕔻a-4~8ûkQy~vU:zʖ#<f+_|a h 8Qjnzkna|j j&h"I%0Kd /|xW_}l ?;]\~ 3 ;oM/ ofWc[ 'иUVY'dITSMeiM-jYf1BJ@H1$p$ dBW^ye8Lv袋4L6h0S~:Kk.#n7xZqB$f3n 7l0#*s9gXi /`aωg}g 6SL1Ex衇JDQDc 0D Y(Wa]v wqGm‹/^/n뮻n8}ga_~_|I}v0 '0.wआ>裰kaXN:%r?ꨣ+b;41o,Mt TĀqzSOfa03ھc =z*?Q7lC {キAKn3G#:[{èQ;q>"$׿5;6;h E AX 7r-Vhf L̕7.D0 $p1^x3!C17MHL6dO=%\: A`F]tѰ+_ߞҘ#CD(@ +|C΋!p)SZt 4 (5KK7Y=t Hp9p- q@&nDvoyXhLSOq@XAD!{-J~pD"vF~& gVʈPJӟfĀ՛Έ J:Pp@dQ:ÌKA=_|q㢞}Y q}S>},?P)DK3k(6@B\D@8∀rۇs 4Sjo!PFEo}ӟd׈͖]vYgAX}jгgpM7Y\8*Дݻ*҇R{W_5h= W\q8 (ѫUs2hv 8Qj B Lfu*(7#FԾ^6l3;"{Yd#.">:>E F|w[<\T}L zO>1T\}Y]<+{a!$6lV駟b?5.p<7b!r!f)a族'? Kx4 +{,wq8;8N҈PX@8T{o/~(}' P)j~bsSXzpp 4(5[7h}{D 7~)D!u/;e[+POH`R[q &tAN"L^ߟ`R[q z%DyD6J=o@ób9@cR3H HLgGi9ݏ'J^0 U1Lk@q !l6Z3T3 Y?wp 8)5N[6tM#7h 3ϳ^{W1ЄpԄ^OUK[(qS _24?@C`RC4csTk\]5Z:N붦Rr8hXs5͜_;% 8Q*_]C}N 10pi&w98'JצMQ#7Ee&€SբhQ \u 8`\[ ereI߫~.1 8Qj )q *基^ɿ? -Mm/_v@F˅_(^nC擏RPSN3τN:)W4w 4(A+ KOݩV/?U7-Wzz~au E&R4MYΏCiWO=TyKӰ?MWi/ rMarS{WR||(d/,PFÀ(?`5jT/J9?|7$ĬG~LLG:wqG/ kҦlaō4G>ߗs`|%Mބ׾e_xJ4GXpIS6x (w~堬L9 ǸO?ԂNھC ,DMo>%mySGpp 4@q( dez=3馛ez1¾^zi{Fao?묳W^9eYUVY%{J|dz^ze}w^ vmAva +EM34Sv=X88IfG={fHjoZ8q/N٣>j~e뭷^/7zlv8gm]F?fs=wZkeq |?o,!ʦvs E?뮻<~K.iOl-,O>1x~x)ix≆wRK-92;2_tEK/E;~g-o~3_7+8p`<.k/z+:b@s=gEqU$WF(jO?}69 . '\sa!Zo&ɷ~;BIx4Xॗ^#{g-vSV&cɘoIyxfJ-pwf oIaVO>9Ovee# Z{{xf[l&9 BNq&܎|y,r;Y/8IEY]H ±@\G;8FN)g}웅Dmذa^M7a@_p/\Fz:_o=9N p"JLLDZS\&^&>&&oT3V٤+d /p9pLeYDp" ?BEKÍDY=^{nH_,Éi"LԂs9;c=8W_}R .z뭳s9GƪE h!CX]#SR'o=6(37CYi*"gܨ?u t+i/ڎ98P` ž, .\g3{;0 Zq)^$M.c%L0=6Ҙgyl"-/&{ cc"$&b@qo+L16R6@RFTz0㟂&qx7I'6lamP"7dO L( l]xr)- J rGM׿B&駟"Ue]J8 _@y9x[}S@vOa]w57?88}WVd"ʯ2!2q߈M2.& 'jKƊ.(iwC@/@&l2:&dtJ@D@Fq+]wdJ\&VcT0 2O=ԥo^L"nL/`W#r&SO=)pW!F ?vdM ܣ2H!*dXv< m;ܚ9ʄ??҃åLԳGD`FtK ĎP@ W+'](Mqz-EVК6c=6/P]:(DaO6Q08clJ~GQ4=ВsZd@ڼp'sSF+ީ ;6|3dlG^ICr)Ǟ^aُ((Ck>0]"Oa8 e!\Z^8ܒ|_ڃJ)؛BaG>"(i[ɶ9b LpIP'N9Pp r^eCHrNvmZ-ؖ%,H - ˰L-0U>yVeYO EŽ)= / ;Aq<M2^eg%v2JI^COJ<:">JW=vgpP+M-% ¦#X,,zy@N)Ԏ%wzV Ad{JcDPNS)^ ^z*Yϰnk^{ˎ3=<^fI=쨤D_JtǨCߗ˥{£[V&&{)xYJܰy<k{ۍx0cl:m\Ġ4PJ~xL]EzSGޛRl6wgEeX`~*v<[`litzA/ Б(N/x[[a^{O>x<.S&!8u~Oc|AGie dai_rdev) == dummy_major, "i_rdev mismatch"); MOD_INC_USE_COUNT; if (locked) return -1; locked = TRUE; return 0; /* success */ } unsigned int dummy_read (struct file *filp, char *buf, int max) { int n; if (locked) { n = nondet_int (); __CPROVER_assume ((n >= 0) && (n <= max)); /* writing to the buffer is not modeled here */ return n; } return -1; } int dummy_release (struct inode *inode, struct file *filp) { if (locked) { MOD_DEC_USE_COUNT; locked = FALSE; return 0; } return -1; } cbmc-cbmc-5.10/doc/assets/driver.h000066400000000000000000000007461333451767700170070ustar00rootroot00000000000000#ifndef __DRIVER_H__ #define __DRIVER_H__ #define MODULE #include "modules.h" #define TRUE 1 #define FALSE 0 #define BUF_SIZE 255 extern int init_module (void); extern void cleanup_module (void); extern int dummy_open (struct inode*, struct file*); extern unsigned int dummy_read (struct file*, char*, int); extern int dummy_release (struct inode*, struct file*); /* Functions for SATABS */ int nondet_int (); unsigned int nondet_uint (); unsigned char nondet_uchar (); #endif cbmc-cbmc-5.10/doc/assets/expr.c000066400000000000000000000001211333451767700164500ustar00rootroot00000000000000int *ptr; int main(void) { if (ptr) *ptr = 0; if (!ptr) *ptr = 1; } cbmc-cbmc-5.10/doc/assets/expr.svg000066400000000000000000000417331333451767700170430ustar00rootroot00000000000000 cbmc-cbmc-5.10/doc/assets/file1.c000066400000000000000000000001221333451767700164730ustar00rootroot00000000000000int puts(const char *s) { } int main(int argc, char **argv) { puts(argv[2]); } cbmc-cbmc-5.10/doc/assets/file2.c000066400000000000000000000001441333451767700165000ustar00rootroot00000000000000int array[10]; int sum() { unsigned i, sum; sum=0; for(i=0; i<10; i++) sum+=array[i]; } cbmc-cbmc-5.10/doc/assets/gcc-wrap.c000066400000000000000000000043631333451767700172110ustar00rootroot00000000000000const char gcc[]="gcc"; #include #include #include #include #include #include #include void run(const char *what, char *const argv[]) { pid_t childpid; /* variable to store the child's pid */ int retval; /* child process: user-provided return code */ /* now create new process */ childpid = fork(); if(childpid>=0) /* fork succeeded */ { if(childpid==0) /* fork() returns 0 to the child process */ { execvp(what, argv); /* usually no return */ fprintf(stderr, "execp %s failed\n", what); exit(1); } else /* fork() returns new pid to the parent process */ { int status; /* parent process: child's exit status */ wait(&status); /* wait for child to exit, and store its status */ int code=WEXITSTATUS(status); if(code!=0) exit(code); } } else /* fork returns -1 on failure */ { perror("fork failed"); /* display error message */ exit(1); } } int main(int argc, char * argv[]) { // First do original call. // on some systems, gcc gets confused if it is not argument 0 // (which normally contains the path to the executable being called). argv[0]=strdup(gcc); run(gcc, argv); // now do preprocessing call char **new_argv=malloc(sizeof(char *)*(argc+1)); _Bool compile=0; _Bool assemble=0; _Bool next_is_o=0; unsigned i; for(i=0; i cbmc-cbmc-5.10/doc/assets/ireptree.svg000066400000000000000000000244051333451767700177010ustar00rootroot00000000000000 + operands symbol typecast identifier type type type operands symbol width signedbv 32 signedbv 8 width b type #location identifier a 0 1 0 #location cbmc-cbmc-5.10/doc/assets/kdev_t.h000066400000000000000000000006361333451767700167660ustar00rootroot00000000000000#ifndef __KDEV_T_H__ #define __KDEV_T_H__ #define MINORBITS 8 typedef unsigned short kdev_t; #define MAJOR(dev) ((dev) >> MINORBITS) #define MINOR(dev) ((dev) % 256) #define NODEV 0 typedef unsigned int mode_t; typedef unsigned int loff_t; struct inode { kdev_t i_rdev; }; struct file { mode_t f_mode; loff_t f_pos; }; struct data { int size; char *content; }; #endif cbmc-cbmc-5.10/doc/assets/lock-example-fixed.c000066400000000000000000000006271333451767700211630ustar00rootroot00000000000000_Bool nondet_bool(); _Bool LOCK = 0; _Bool lock() { if(nondet_bool()) { assert(!LOCK); LOCK=1; return 1; } return 0; } void unlock() { assert(LOCK); LOCK=0; } int main() { unsigned got_lock = 0; int times; while(times > 0) { if(lock()) { got_lock++; /* critical section */ } if(got_lock!=0) { unlock(); got_lock--; } times--; } } cbmc-cbmc-5.10/doc/assets/lock-example.c000066400000000000000000000006151333451767700200630ustar00rootroot00000000000000_Bool nondet_bool(); _Bool LOCK = 0; _Bool lock() { if(nondet_bool()) { assert(!LOCK); LOCK=1; return 1; } return 0; } void unlock() { assert(LOCK); LOCK=0; } int main() { unsigned got_lock = 0; int times; while(times > 0) { if(lock()) { got_lock++; /* critical section */ } if(got_lock!=0) unlock(); got_lock--; times--; } } cbmc-cbmc-5.10/doc/assets/modules.h000066400000000000000000000006551333451767700171630ustar00rootroot00000000000000#ifndef __MODULES_H__ #define __MODULES_H__ #include "kdev_t.h" extern int usecount; #define MOD_INC_USE_COUNT (usecount = usecount + 1) #define MOD_DEC_USE_COUNT (usecount = usecount - 1) #define MOD_IN_USE (usecount != 0) #define ENODEV 0xf #define MAJOR_NUMBER 42 extern int register_chrdev (unsigned int, const char *); extern int unregister_chrdev (unsigned int, const char *); #endif cbmc-cbmc-5.10/doc/assets/pid.c000066400000000000000000000037271333451767700162650ustar00rootroot00000000000000// CONSTANTS: #define MAX_CLIMB_SUM_ERR 10 #define MAX_CLIMB 1 #define CLOCK 16 #define MAX_PPRZ (CLOCK*600) #define CLIMB_LEVEL_GAZ 0.31 #define CLIMB_GAZ_OF_CLIMB 0.75 #define CLIMB_PITCH_OF_VZ_PGAIN 0.05 #define CLIMB_PGAIN -0.03 #define CLIMB_IGAIN 0.1 const float pitch_of_vz_pgain=CLIMB_PITCH_OF_VZ_PGAIN; const float climb_pgain=CLIMB_PGAIN; const float climb_igain=CLIMB_IGAIN; const float nav_pitch=0; /** PID function INPUTS */ // The user input: target speed in vertical direction float desired_climb; // Vertical speed of the UAV detected by GPS sensor float estimator_z_dot; /** PID function OUTPUTS */ float desired_gaz; float desired_pitch; /** The state variable: accumulated error in the control */ float climb_sum_err=0; /** Computes desired_gaz and desired_pitch */ void climb_pid_run() { float err=estimator_z_dot-desired_climb; float fgaz=climb_pgain*(err+climb_igain*climb_sum_err)+CLIMB_LEVEL_GAZ+CLIMB_GAZ_OF_CLIMB*desired_climb; float pprz=fgaz*MAX_PPRZ; desired_gaz=((pprz>=0 && pprz<=MAX_PPRZ) ? pprz : (pprz>MAX_PPRZ ? MAX_PPRZ : 0)); /** pitch offset for climb */ float pitch_of_vz=(desired_climb>0) ? desired_climb*pitch_of_vz_pgain : 0; desired_pitch=nav_pitch+pitch_of_vz; climb_sum_err=err+climb_sum_err; if (climb_sum_err>MAX_CLIMB_SUM_ERR) climb_sum_err=MAX_CLIMB_SUM_ERR; if (climb_sum_err<-MAX_CLIMB_SUM_ERR) climb_sum_err=-MAX_CLIMB_SUM_ERR; } int main() { while(1) { /** Non-deterministic input values */ desired_climb=nondet_float(); estimator_z_dot=nondet_float(); /** Range of input values */ __CPROVER_assume(desired_climb>=-MAX_CLIMB && desired_climb<=MAX_CLIMB); __CPROVER_assume(estimator_z_dot>=-MAX_CLIMB && estimator_z_dot<=MAX_CLIMB); __CPROVER_input("desired_climb", desired_climb); __CPROVER_input("estimator_z_dot", estimator_z_dot); climb_pid_run(); __CPROVER_output("desired_gaz", desired_gaz); __CPROVER_output("desired_pitch", desired_pitch); } return 0; } cbmc-cbmc-5.10/doc/assets/pid.png000066400000000000000000000107451333451767700166250ustar00rootroot00000000000000PNG  IHDR,5PLTE???___ |@ͷp`@@``@@Uk/P@ݠݔ ܸ kzrEPp.W""d݂U22fffMMM333@**@0`@ Ai@6{WtRNS@f pHYs+IIDATx 8Ele_I| 9m3( HwSoF"@H R)B!E"@H >Yoiwhlw_tQ7 597Ꮁ7u9`c;ݲSw?v 7]kkPo/5<0$Ě?itlBې&| s[y{ lCB> lCpP2L`߄$'#dF.R)B!E"@H R)B!E"@H R)B!E"@H R!S#ko!#+Ks_#[o$X\QxF(;( Ew~_ xfܕ`أ(0kZH+5YQ` cI0[x,) W}<D*5sTdDY*4}*1_x Q~u# O=ѱ1=@c{uc9&z7߸vn\C61W}0掓%+oiiocn;7o+_>ix23_==CKOa8 ~Wx/ҾOޖaVfBW>D؆3NeNn IzșWXR|chbؘ Hm;< Y@xOėNCq~u&nUXY'#D`#;XUZ7TVA{s3TIxAeu3BB!UN^RIF !E*&@vcor@"@H UN79 @H ]*& Re.e`@R"d 0f )T  xaeb+B"LB!E?@ VB) @H ]k+ \ 謷nym,zv5oN.Es2[D1eyuC fZm ^  kam}_>Jx&@v.,f/Ox\E.߂! B87  6~yvpZm  `L ˩2ؿv3{>Ds//<@5mL1 x}:΁c|@>TX D^_X9" 9H߂EcCǜ`r`Vo9# 91 lx Y>g"D5$k|L; aR|'!W|'!XoOB  &*d s:D81'Wg;?ǜ`2L14rC5@&7##;)TX~!#D0֙o9`R[+#_-`EU#_D/"Sq}E f0]kmc|21sIp5r 0ŸЁ+oJ=+rhc " ,D`5-D?N9t( ӎ$&M86 B4#u@B*˅hG L+B4U$DžhHhgN{tLIh?{>5ƴo foqK뛷L,:`3$j]: D.njCIi[n+WKy b߂WvwqDKsMB޿d)T%ʼnec|~"{+ <]mZ~)I}@J[p5*Cqnc'Y~'`UR'oQ~jLxzK7LCˤ8~d\9Z$8.L{O'u_pzLˁWqAc`]PO$2LR_*u$v$+C"@He d`/B*Xpg$ d\M`NpnM꟔D \/zt,ΑktuOJ 6?dDL3 xK$>07ۿ&,Y`}Rx FT׈voI >ѯ}bL& _2U( =7&V(|m T`rZ! e se` TPֈW@H  IxB*h]W),<Iw$tddc`ONJqnkLR0$*ص΅9H :eMu"@HhZMJ0&)|b'ƥtCIc$R<mr[5;[c__` hvYy&@̎\wݵӝBoٱY?26g^.{ ,,'"b YXBߔwd\ ([ ju!/ooﻍ+4`Nny9lnvPIʴW@: iW޸ 诀Be[/b}P\v1W+|fkLVu$jE?јX}2b=@K\12 8OI: @uCIȝW@lJ s1KmF @7L!=@"@H RC`'GYR)BJ `ܵxn!E"@H d2 @`FiR)BJ `txf!E"@H D2 D`'FyR)B! U<L(B!E"@H $ 'Q)%"@H R)BJ`gER:=&)qv:&)q7߸ט61˿A;`߄ӿ_6 g+$m0 !MH 6 YET)B-PCq@$'#R)B!EJrep9 9I?5޺p$/y6.oCט/m<"~'#cK *;AǼ:68&a"sv ޘ\X */[! 0 6{q>]ٚ /=}4|A@")8 OT 1'C  'BJ Og@O|A@(π / )  }bG~,,Dg, 7.xY>Y X sK#G@xo,P<@@x`ISA@<-e =K h[, XT,DbY xD `y'ZA'z4# sƍc= xϚ5KMWxC!q<RNIK6mrsܹ۷Æ 6mZڝ_GZxwzIxa6m ҳ 9ҭ[cǎK;ğѽ{wmĎ{ر_^j t. mZbEwK'!?@$Y&%eÇ=yt}vI… њ[*gnȉq҃@xxxƍ_~e=s<#?Pt%}*eL9|ժ͛HAE`Ϟ=s~w)ZR},XXB t_}U!޿ƍ'Z7pMBS84`( s#Gctҥׯ|[ZdZ W\Y`[ mR`SǎQSr.;KΔ)Ӑ#""37{Xشiʕ+)?~#~zgʘq/n&WA@e4fŜ~qC<\t€/˟3~ 9CI81v+dOq :pj{{(O/^|*ViĥZ„2Ё[ou۶ ㏋/N2e  sXiL${3})_< 1CƌѰTSq RL3fL)#Q [hsG>FxeÒ%@kXNd d.]",THǐUqsu[\G}(w}֫W|yD3f߰Atn>ˉ ݤIߜ8q3Y7f{챟O}_Ԡ/F/] }AE9M4rx'w{.X@Uk\UxYoߺ墥\RճgO5kxѢmLj+8rvxŹQKGR?[Λ7lԡ{bŊKX+YLs ۵s'j3`}AuzKY,+[ٳX ̛;wǎ1>~/s>&5©cM6B6gΜ#\Jƍ#6riK<:>:y͛j_ ,Y~ڵ˙#p̥ 0eԪYT4;y|ԓKV1OdVz="n@dࣾIoFD_pԩyfΜ(7[Tqܸa>YdFaVʓ'޽{q5c eJuM.Ӄ-VV oLf/6ש[n`ŭ[QG؝఍3y|R)\d8;.,cs<.\XNxbHGPtw8 ~f_ h-[FI߬( :LUiCf Di>b>n'2"?ѣbJDmtdz7:Py(7;͛6ugDFbVQ \N_6ɆбXktHlB]squ,\M6Y ҦM+UΝk_/5Dx[\tIEsqS_ګo&qCo?N79zor1 Q[^(u.bi -q f(&>: ` VpEb)qĽ('xOSDcV=)o(4kڔb4xC?D_GƏG~IDf'nHeԖ8cޒ8Qt"W&Ox9C;J7gfX۷oAmJ$={[СC1Y޵\iQwƂc9s.>&obdSUUlTftFZ|VCAZGPR"౜hԦ]'6 lmF nuz AQT@ ,ւ|%mHrhU2q6ȧm6}V 0|Eش1ODj#8o67nޮ]3{QrޒA1O:b qvb\5W!bĺnݺct_`IPń,P6EW(}3vD!"hka5GIL٭v^=扌Ԧc(̬ٳ7|ذ/[W53Jw60&7'#̞3>UT b9k`hSsŝ{|u4nL-ZaWAB6U{_֩O6s6fOLy?9Bj ?a->cJ]KB(@ (U]:ujz]nsJ":4o܆>V0D*1oP˳ic .|/sfc#MHBV: XqyI(Ik#ڐN);vhѼ9[dɐ99$BFi((FrH<+/SVӧ#qs2CaNX>;دKkNeE?ˎ RZl:v蠔a7t/ $ұ}vĔ!)Cy ev_~ɓ'hSI,iӦTW& gnP%|@ry 6@l5 I8͛X:u.mZܼ}XΚ%iF) Ym+! aGJ{5X葻v҈(G._#^V-Ǵ~vD: 7v8r06{Yr% Y_J>;F8ܒ%KeϮc܀X蘶k1TVj.*FtĜr5 +fxžFM!}y!x!$#=O}6 6E}3m >Vv^'MTċ0:FM٣:ώ8ZH,gҥDEfck6JFi0@u2JG9(]@[L2%w8 Jhk |\ vl^A uCN9^빈/tX-[&Eٝ1Ek-ei#zŷ;{FȐx&Ӈ۶mx3}hL&={x&E~Q]mիkн:i_Mb9FicZ(~h3\4K/'v҅zz)fLNڴnMJoqK.4o8tݑ5.mEt#n*7F¸6/,ŋENHmVvUxeSW?62}83yt| Qq޽ 76@ssСk`_Fľ^j@ԩy~믾2 ʘz~X6r!:mr"j+Spi}ٺu1U|*Zρ~q 9ٓ D!@3gμe zl+T0ץK5s)b;[ ւy]S(w2mK )溽\U@>8 1Ѝ7.5O>+Qԫ}ĉu$Ib[N`k#v3fqxb֬Y5}l3fΘQX11&uX<ND&:u@ςv"w$Xx!97^<#rTO;#Qn+Rg~֩[^9Qs"ڰQ#ÖgQBDƑHeEGL2i J}ܹʩ5R'8DS12 A]֏1K(-/D9 .R]x+_x(K6sb&Ą=ԋErg̔@f.=i{kUQ9z3J{4Հhx&MOaC[tQŦ'^%$J'iEIW՗QJkvK^Q+WHOO0c'sfϞݼsc쐚N-UUefcRiQ+ &A"8?@4ɿb'O_ND%/(c >F\Y/D{ɗ?tF`|}^-9R'Lߊ?oJJA,mCիSCǏSpFd|y)0x"9n&%)R%XVMXiEQLb|4zyj`mSƌl}t\ a쥀Ds $\VNnjDGIn,(@  ,,L^;\}4Tg.R9N%:GC361:77 YԩSJoPH Lf^k ޺yQtF͚۸lWCO\gr#f1| -GtFd|vH$cƐ!BЭ[̛79>HeFiޘ71,8D3Vv^J~mLؙ 4ۚ^={*z$ƍXxĉBCf$J",ӓL!#Ş={ΝO2jI鸘/@$zYڳ h;9|F-s8թcG8{С!d۵x5 ӻnWG;?hPH c[CGG v4JАDx<̈`"Ɂ/_Ojxy֯(; K3)IDATϟwFz%6y(w εfhlaEv[q`τ.< 8-_|֭DYOdCE' {vڅVI(MrС.=ƨf=( 7db vH0+_OP f[;T-&Ľ۷/G $l- XhQnaa>OdZI>1g\Z0)C Yx1OCſ;r\# hR[cjX&@UbEz5ea1;v4lN=} g c@ CDztヒ&SՑQ:IҤW^5uVKܵnf׮aƔ8hҸ1@ȉa;wJфI-όXN1}{(c;|`. ԭ[Wlٲ$_veJF4oVM_l@#c`lO0a۶m1U~dV uWj޼9ݼepⰍT8Z9Y~߾C=amc2Jc 35v&F؎Xf9~|:Q )4EE'xB\4Ό[P Vf,hznڼYԈ6)':xifJS(L(cRbRs'4{g]E /ZRR6LG13/_~)f[hѵkĊ 7dY˖ e^svW!!6X[$DuDmR`^>^J}8*#@Q3}txnǎG<.2E vލTOG%fQj5Xϛ;aqƝtQK5:y"#F֭/.yaQlwfmtJ*͚=݂ ׶m[3 y ~QڦM l 8f<8U#:1LV(רei"SNT}})R/6rB?hO?}۽"*/CDM }_~1cF=^D{rxQ:QD;wѼ(:u뢼ĴUF\SEk 7h1aC t"ֈwJS̶,Y⟙TNo. OT2JXla DێLn$<(EJj:T۩5ڵoHxe3i DgM&4g17ibNVTfA!`(B('bRs) Џ`z'w:kk@DQ)" hb. a>H0T~7(aOkqc0T-"`&Kljr}4_d#xr,+EՓ3G%p8p":È=͌)U m5Qq^x=PѼu(IICP)nѢE;l ~<N}2BdB%r㿞=zaC$K*]ҔJ-z1Bx-{YCnݜ h>) hFa$igz1 9FM@踏gg,6 H6mbcǎ!koZnҤIկR0o:t4qd䉸'K,l|%m68K.4]v=2E3ի Q^@i2 <ժW΍a$ayK.ÉÔ,;SoM(:yb98$I2v 2دQ33nO|Hc@)Ո}<y%Q禓'jtCVڵjVZT :w&SdɻIyB^ak eX@2'-VLb?9X&{1dɓ{+@} /Fy-ˠ }JꜨ& dCuJvN>ݦ^rҒ)cFl7IPq3қ7s n!'UX]w@7$Gr4*5j$fOFi< '⴩S'M13&j/!90cHb$DtDJO?%/f 4 kѢq̘4 UltȢ鬁{vl 6P0<$| Rի)N,%zW̘49s3FyyiѤ:y"!hժXѢ%~XԶѯI4*/ gXqj"*tDƎgW7nܘ7GUu S8M>.9$Qй@|uގdf\)Tب X")]p<:9x>Q1 qLihҤN}#""m4W^}aRU"V-ʕ+,PTRޗb|E]f #G*VU11v]:u:suHVv/*zt$qF 3:gΜԱ[߱cGyCʕtcL 7O-sfD{2XŋyO,nʕp6mZouE. %sk׮T_a _t+-̸^R++T$qb K?zHd(S3A4iRBgbO=vR. .1NɑQ-c^)R$#唑QceFa߃'h0l# %xـ+L:MžఽTz=jٳՖ $p|ƍ۷b^BK) 2:+VC@iζmvIXIrebQ_͛;wǎ1>~hye4n^Q¢ kW”qG)n%2CA@!ODW3B/]"xR/@@ O6oN*g>tHH Dֵ[7jCBBoA@D<"+̈z B sA@E@}_ X VA@"(AJOݔOA/VB@xEE@x+ $.:Z۷-]wvUD@v(c Otȏ1bwa˖-.XlD=z:J BDǀ`UVU.o֭5W'o!44tSkV@)S^2LD$qղe˴pIlsԩҥKqz۶maw`FxHr8IzK֠aC"5J6<^Wd*U \0u딯ڵk׹s甯+U9cR n"`pDԽsG]@Yc?;{N{ ݗ_y%Kq!xkԩm8ɒ5X&[} ŋ6L]N˖-SI|/5.mڳOQP{&O̦Ҫ_v;\ӯ_ʕ+9sE+bNɭG+3X^7s,Ђ MvۦҝTt剳g0` qO?!i>tR soݺ5ƛd(46Wf˖-ЖAwؿS֯CѣSL9~Dܹ;}c{AnSL<֭['vl|5kVDDݻw]<s4,n݊H֬Y*BǏ% 'O'OdbjtRB8j[7o0aCBtͯ&Hi{}Oݘ⇲L NJ]Lw\2\4%y8q"ήJ;aDcƌ)5:̎zdF*gΜ١C 5lݻw mFܱ_ )`|% | RfM)"!)]Uܟ5}[n0+?z,3ɛ'ӧigiSF}گo_ J#A\I 4xeϖ u@LR2Y WUꡬ'R٦M'g=ҌbέN( 9*Ȓ/[֠~}Dڠ1Omcm"XBvKϝ?I$Q&ujz?_&OFNwaXʾ[ƦsdCVgȘdbŎ͸Ԕ-WnÆ E#[;H9c@.XtvQN$ʧI&5kRVlL>V-gΜShMphiou:S%8J 1%ڷ_͞35zIF}hBGL>ELq"Ǡ˳V"q CI şZD̃uRs!R꯿7x:.=wz# e 9nI&U>ol0fժU0=N> u3V,rl8BPi1k_K0{H7o@t26:]+Z4l|6pI8sH}m"qqL ϝ={= ՃTX)461 7EԩSϙ=^y?85ΐ!C޼yG;v@>}`bn=ƍ,Y̛;wUx8:Jw\|DK"@ZHUH @"^m 2}j}6\+^L=W*mRoߋ\EO])`qEAUtHJ^(AR>RS#^" #include #include #define MAX 1000 #define SIZE 10 unsigned int sample() { return random()%(MAX+1); } unsigned int ring_buffer[SIZE]; int main() { unsigned index=0; while(1) { unsigned output; output=ring_buffer[index]; printf("%u\n", output); assert(output<=MAX); ring_buffer[index]=sample(); index=(index+1)%SIZE; assert(index #include #include #define MAX 1000 #define SIZE 10 unsigned int sample() { return random()%(MAX+1); } unsigned int ring_buffer[SIZE]; int main() { unsigned index=0, previous_index=SIZE-1; while(1) { unsigned output; output=(ring_buffer[index]+ring_buffer[previous_index])/2; assert(ring_buffer[index]<=MAX); assert(output<=MAX); ring_buffer[index]=sample(); previous_index=index; index=(index+1)%SIZE; assert(indexȳ.'xR隁F<) ؀ꭷzw{=r}s1IpGW2>Co]L2*@Uwp UO>DPeo͏?X بqf-}Hܨw<3D:zNu~w&$!kL'OFo+i)#O*R7SOIʑ Td%j^x7x`C̀nqqDž߶~ rל>>պvq~dz>sAtMruUk}jfA40Oc~z~ t~꽇m`(>4F=O:tӔ%@s9L3U7a>h<$]}),jK253>*8L6\s2,˺Q44|s1묳"6TO:iz5qUo>y`0vZo{լZ {ZQy# /L}Uw( =SV#IaV[{Ǟyx[1m`c#z'HwbT+{wir2Rhlsi-yvީdIw馋`S[nOIXT/\ .7da:ロMBO1ň0|uu<^~;tX~q'2Zp dJ5KC7|ś%X,Oy lfK-TT`Yz'lz* %S-V\q"g%)~'lPB:IW߲RmK*e`7_TgZfJ+~;<׍`ӟC[o0p/袴")tM~]vxb5\c$|הc$-.BfW^9C_:|]wBᕎe.ar^O?ٵ%`<@}6`]r%#Z.Gb-u:%"gtSy98_z饐hx-Bon8{kQ{ҕ6gRJ8\q|b;,OuYa!)N묳ȑ#u72?袋Ydf5qrQF[Lj4(WZKgk4G~]?~lfAgynS9#T_ b0;H\L8Fff]wEԖ[S;vӖ2`x, _ P-hWW_}5S%7=&ϻzMl 7O>9U^?ߚL1]].S' `cj0ٖgF2,/9 /Dql# e^dr rtP4RT_ 61c?U1{hO뭷`>7}tzM`g)qKz'|2U HlҟY~.U >`bs`JU24 {Oj]vYXZ- }[k2i\Lߖ0cy'͍7h4l-Mg-]4Gud6*~퇙gra&8qcO Jo%Lm+ȰFlTv "1z5%{*-X L+AN&˙ y{8RWy}nST}3FaE;lvܡ=lc]r%1cbJ [M)AB`޲C!mYR,PlAl3k/3a’Z V ~eϴ-05SN%15lPҾČx6E ѷv[Lq K4YF6Z>d ?C:}Ĉ 8(pk1 @u+Wqx衇2cYtoj'Ga'2s٥!mIi?kzq Дqx2Mm2^9BW $5s@=ܩâJIkcIBrIa_kzxšs~Sfbx+#91CAH:`OΖA5<"C- 'BV>#?Glv+mG|.C3eІdl3l T*x/R1iZpCt^=mXSn#N2 n dSjҁM%ް~iR =U.e 6;:Sf uӁM۪$~M6O}=,LqsLO2c?شZ{ZOo7mX꽶AII퓘` ς7ACIt'n D#辦aL"r uP)&i*AM.K3I{ o5q/Rl.*ćz뮻[>bgm'g{8s~Փ &[Z׻n0l\c̎l Y=;ɝ=VY $*`ӅӚRX1(Yr-g`VꪫV]u$e.^MfvF!o.Ky,9$$ȡUxB9:.m dB2[RXPa j_?lNasǒTB/bؚgl s1ok/d4~^]OaX"Nvi1 KC&$*PvS]#= o c UӇvlJ| !dI0FK0zÛ~(O܆o[Fp% zC)H9>I:}4iVa[uCڿ*0,[l!0w@,P?lƓ"G^TMMqDIim]L^ Yv*!}ʝ'hR-BOXc#s`­FU2V*&T<;/!sBĘ]{?״sѹߘ?KLZ Tz=lw#mr'6[x|/EO2Z,بsEtEJ? ig:HfLVnQz=IX8eLpU>77NR#O!o.[sIHC&whC!Tm1!0yKCwnZ$E bmk4F@zꩼX,0ԉ{%֒~/NnL')l?яLUii-N8A+m60j[Q;9򡱤-67|s&;7N9[ʖi-BdKp*[˺V[$1&b%C9 RL<w0ǓN:ɔMx*lHA霽4e9#QϝK>;S(hdS05òZ[wv!Xb0 "B3Dܰv0(N|d "oŬKSg,{[p~%/GP6ɠ[U)> lUQ]l*W9ފu)sVhTx+T%ˬ[Rh& l= o=z ֛J4 l=GW`ɶ[/_x gX1`?o!"6 r7|5裏:&y檥)=aP[;<LBTB*Ւ{|?@Q8!M#qlϝCI9dپ:!>馛f#FєoQY l駟z6gemYD]/aMN4PI|-pbԜEfu u%[᭶Zh!j*ؽ&zy筷iF`ynwe2b@6=!eC~DZ(`5kx34`Puo"3^~=hw}w"pcRGdM'PVx/St!F=yP*C\:vMuڛ~-~) U`@[oc%i[Hgi:9>K.n'}g=˜ nkXAT-ACMc+7Ar،]??Q T.^X28*%2apLIK|g`#Xa^qM7]~˜;eqf*щ&I]fY`CgPl!kUR+, oDMm fF~ =-PUD.;hnr H7 LG ݽ0;=a oNѨ,1ǰ@Z? lL4\pJ儡Cn tG8'16lN2iv~ MI98_~+暋Myx27FUż+o5"k$ww_po'vZN^ƢE,䒵`# ?Xk0[xrTz?o B,57JVc5' ol}=ie7o>G?&uwX-mi -)>3"gy& n0[dakf0ۓO> |xBfRy>)Nkr el^ nuR;YM5X^]{rN: oJ7KE83ƅHU|y繱clgMghu]0;xc|/9HZR5rD\@Y>Y$E+'9U`*}W|u_U`/q oe le,Ux"BVͤ[ͭ[[ [ +%*#R,˗RRIRUGTx_YSUr]UTDw٨]ƥ^-NNOUuXUPފu*5>úC& o{cJ.oo5Dϴ[uPx% oD^*Y؊vVXT`+Lͨ[1uS9= oPYTxv=U`분) o] l]o%^{uV+mr Y8?@xO tڸ;swN)l|4}Y'8:/8M1prp:Ovm~Z਽O?wދ/p 'B;Is:.2^ ?pB%:ɑ% >.қn)8gpM7uMW޶n#cxec/I7v )l mR$}d* .,p_~ q~73G}TbϕW^Y WARLsYuUs=Tuhۇ~Ëe#xߒe~ R#S\wr<}ETxRJ+s9rK-qpJ}R"[f{J"J03c%N;eY\-F'w vi?sc6uQ|<^=L9hqV9{߁Q_X&M7tEiSeǐ xy:5uM[F;Zn1oM(;pΚ -&lv?vN T&8sn0mgJ|Q;BR0QTԻ|v!(IDAT 5\Ob )j_ve"dC4|Hs3`j9L[`'&{e]9.zЬZgˮ-=%\ب0}d)va3qw٘FCf剸8{キ"Y0oWK["v 9`'hZ5:ow4YP-^JyvK_ $׆</ijjB-9S)$YM#L^zҡ~՘fٞb U0c*7f8dM6 mv`Q%6mWoL4!vΆu5EҪ]*6 p%[uI1+k ]H[sS xҫk^dA0<4 Ђ! ctjިw2IEMO?=ǥyt nfVR^M_~dSԻWv܃^`(X]`Ozd6t`c]ǘAf x&:v K`E$t'Ұ n2pC@$5wv 6"G7)`qTg7'6ЉCXCt`K7͹+S=IBIIb9Qʜ $6P reHY6pT$ &8! (&fucHVɉ Qr>eݕ=|oZiJɦi,P6CM\S6w[fͫ2Sg a'u$j"t@pF= }d1[u 6I3Hvouw 7N-*AT-/GX~2[EjyܚySZkȷ9MNOl7Ú hK?YF5jJ.GX6oCm91d۶/{IWMZwy DlnFp"@1mY k[5o:) mʓN:) BkRS96ŰOF-m7}R?WLvIE\i-*+2~1& o{8:JW]x-E)tMWyM{Rm`\9MR!b"wRf>&>YƴHX$84vLSF%f:VՄnjdFGx) ѯ⊭ErԨQonB 93-A4L*8+L 89MLBqb 6#` i 4%#Fe7iZkչ ;#Cy` *Lt058< <=!fuKv!Pl*;E: ē0-PJ$T+~9u @KP)n.uFpam *h,퀺#\M+`#}B$w` )RIV\:| ҫ)*gq W3ՅlVp^SR~gBZLӱ-!O[ jb<)R4к707yλx[FJ`^Ia*+]k$NOH;Sp x |2C,g(6P PgG)Y g!ECf,_EB 㛪׋k+B _qyG-gM)&"J¾x=N;`ba _T>X<4칤nNz>ʁxO5PŁ-0r z)X>]V6CV  ,w[-Vg l)v["z%hItoEȦbQ.Fe]eǼnGOG`ɒYJ&Ի^WZLo4;MܿA:҇ϕ zh(~WF͹ zIy+(G![xvPu: ͦLX z8QC]Czר;FPeul~/y` X QR+z)|E,͌s ͱ/`ðO4WTڀF&IyT:qTf]Sɓ9~0a:5d {('唀cVx3n$ L_4%.R$2ب$JR*J%@TDKqU’H[I*bc%Pm*aI$IIENDB`cbmc-cbmc-5.10/doc/cbmc-user-manual.md000066400000000000000000002720311333451767700175140ustar00rootroot00000000000000\ingroup module_hidden \page cbmc-user-manual CBMC User Manual \author Daniel Kroening This tutorial is intended for users of CProver primarily focused on CBMC. \tableofcontents \section man_introduction Introduction ## Motivation Numerous tools to hunt down functional design flaws in silicon have been available for many years, mainly due to the enormous cost of hardware bugs. The use of such tools is wide-spread. In contrast, the market for tools that address the need for quality software is still in its infancy. Research in software quality has an enormous breadth. We focus the presentation using two criteria: 1. We believe that any form of quality requires a specific *guarantee*, in theory and practice. 2. The sheer size of software designs requires techniques that are highly *automated*. In practice, quality guarantees usually do not refer to "total correctness" of a design, as ensuring the absence of all bugs is too expensive for most applications. In contrast, a guarantee of the absence of specific flaws is achievable, and is a good metric of quality. ## Bounded Model Checking with CBMC CBMC implements a technique called *Bounded Model Checking* (BMC). In BMC, the transition relation for a complex state machine and its specification are jointly unwound to obtain a Boolean formula, which is then checked for satisfiability by using an efficient SAT procedure. If the formula is satisfiable, a counterexample is extracted from the output of the SAT procedure. If the formula is not satisfiable, the program can be unwound more to determine if a longer counterexample exists. In many engineering domains, real-time guarantees are a strict requirement. An example is software embedded in automotive controllers. As a consequence, the loop constructs in these types of programs often have a strict bound on the number of iterations. CBMC is able to formally verify such bounds by means of *unwinding assertions*. Once this bound is established, CBMC is able to prove the absence of errors. A more detailed description of how to apply CBMC to verify programs is \ref man_cbmc-tutorial "here". ### Example: Buffer Overflows In order to give a brief overview of the capabilities of CBMC we start with a small example. The issue of *[buffer overflows](http://en.wikipedia.org/wiki/Buffer_overflow)* has obtained wide public attention. A buffer is a contiguously-allocated chunk of memory, represented by an array or a pointer in C. Programs written in C do not provide automatic bounds checking on the buffer, which means a program can – accidentally or maliciously – write past a buffer. The following example is a perfectly valid C program (in the sense that a compiler compiles it without any errors): ```{.c} int main() { int buffer[10]; buffer[20] = 10; } ``` However, the write access to an address outside the allocated memory region can lead to unexpected behavior. In particular, such bugs can be exploited to overwrite the return address of a function, thus enabling the execution of arbitrary user-induced code. CBMC is able to detect this problem and reports that the "upper bound property" of the buffer is violated. CBMC is capable of checking these lower and upper bounds, even for arrays with dynamic size. A detailed discussion of the properties that CBMC can check automatically is \ref man_instrumentation-properties "here". ## Hardware/Software Co-Verification Software programs often interact with hardware in a non-trivial manner, and many properties of the overall design only arise from the interplay of both components. CBMC and SATABS therefore support *Co-Verification*, i.e., are able to reason about a C/C++ program together with a circuit description given in Verilog. These co-verification capabilities can also be applied to perform refinement proofs. Software programs are often used as high-level descriptions of circuitry. While both describe the same functionality, the hardware implementation usually contains more detail. It is highly desirable to establish some form for equivalence between the two descriptions. Hardware/Software co-verification and equivalence checking with CBMC is described \ref man_hard-soft-introduction "here". \section man_installation Installation \subsection man_install-cbmc Installing CBMC ### Requirements CBMC is available for Windows, i86 Linux, and MacOS X. CBMC requires a code pre-processing environment comprising of a suitable preprocessor and an a set of header files. 1. **Linux:** the preprocessor and the header files typically come with a package called *gcc*, which must be installed prior to the installation of CBMC. 2. **Windows:** The Windows version of CBMC requires the preprocessor `cl.exe`, which is part of Microsoft Visual Studio. We recommend the free [Visual Studio Community 2013](http://www.visualstudio.com/en-us/products/visual-studio-community-vs). 3. **MacOS:** Install the [XCode Command Line Utilities](http://developer.apple.com/technologies/xcode.html) prior to installing CBMC. Just installing XCode alone is not enough. Important note for Windows users: Visual Studio's `cl.exe` relies on a complex set of environment variables to identify the target architecture and the directories that contain the header files. You must run CBMC from within the *Visual Studio Command Prompt*. Note that the distribution files for the [Eclipse plugin](installation-plugin.shtml) include the CBMC executable. Therefore, if you intend to run CBMC exclusively within Eclipse, you can skip the installation of the CBMC executable. However, you still have to install the compiler environment as described above. ### Installing the CBMC Binaries 1. Download CBMC for your operating system. The binaries are available from http://www.cprover.org/cbmc/. 2. Unzip/untar the archive into a directory of your choice. We recommend to add this directory to your `PATH` environment variable. You are now ready to \ref man_cbmc-tutorial "use CBMC"! ### Building CBMC from Source Alternatively, the CBMC source code is available [via SVN](http://www.cprover.org/svn/cbmc/). To compile the source code, follow [these instructions](http://www.cprover.org/svn/cbmc/trunk/COMPILING). \subsection man_install-eclipse Installing the Eclipse Plugin ### Requirements We provide a graphical user interface to CBMC which is realized as a plugin to the Eclipse framework. Eclipse is available at http://www.eclipse.org. We do not provide installation instructions for Eclipse (basically, you only have to download the current version and extract the files to your hard-disk) and assume that you have already installed the current version. Important note for Windows users: Visual Studio's `cl.exe` relies on a complex set of environment variables to identify the target architecture and the directories that contain the header files. You must run Eclipse from within the *Visual Studio Command Prompt*. ### Installing the Eclipse Plugin The installation instructions for the Eclipse Plugin, including the link to the download site, are available [here](http://www.cprover.org/eclipse-plugin/). This includes a small tutorial on how to use the Eclipse plugin. \section man_cbmc CBMC: Bounded Model Checking for C, C++ and Java \subsection man_cbmc-tutorial A Short Tutorial ### First Steps We assume you have already installed CBMC and the necessary support files on your system. If not so, please follow the instructions \ref man_install-cbmc "here". Like a compiler, CBMC takes the names of .c files as command line arguments. CBMC then translates the program and merges the function definitions from the various .c files, just like a linker. But instead of producing a binary for execution, CBMC performs symbolic simulation on the program. As an example, consider the following simple program, named file1.c: int puts(const char *s) { } int main(int argc, char **argv) { puts(argv[2]); } Of course, this program is faulty, as the `argv` array might have fewer than three elements, and then the array access `argv[2]` is out of bounds. Now, run CBMC as follows: cbmc file1.c --show-properties --bounds-check --pointer-check The two options `--bounds-check` and `--pointer-check` instruct CBMC to look for errors related to pointers and array bounds. CBMC will print the list of properties it checks. Note that it lists, among others, a property labelled with "object bounds in argv" together with the location of the faulty array access. As you can see, CBMC largely determines the property it needs to check itself. This is realized by means of a preliminary static analysis, which relies on computing a fixed point on various [abstract domains](http://en.wikipedia.org/wiki/Abstract_interpretation). More detail on automatically generated properties is provided \ref man_instrumentation-properties "here". Note that these automatically generated properties need not necessarily correspond to bugs – these are just *potential* flaws, as abstract interpretation might be imprecise. Whether these properties hold or correspond to actual bugs needs to be determined by further analysis. CBMC performs this analysis using *symbolic simulation*, which corresponds to a translation of the program into a formula. The formula is then combined with the property. Let's look at the formula that is generated by CBMC's symbolic simulation: cbmc file1.c --show-vcc --bounds-check --pointer-check With this option, CBMC performs the symbolic simulation and prints the verification conditions on the screen. A verification condition needs to be proven to be valid by a [decision procedure](http://en.wikipedia.org/wiki/Decision_problem) in order to assert that the corresponding property holds. Let's run the decision procedure: cbmc file1.c --bounds-check --pointer-check CBMC transforms the equation you have seen before into CNF and passes it to a SAT solver (more background on this step is in the book on [Decision Procedures](http://www.decision-procedures.org/)). It then determines which of the properties that it has generated for the program hold and which do not. Using the SAT solver, CBMC detects that the property for the object bounds of `argv` does not hold, and will thus print a line as follows: [main.pointer_dereference.6] dereference failure: object bounds in argv[(signed long int)2]: FAILURE ### Counterexample Traces Let us have a closer look at this property and why it fails. To aid the understanding of the problem, CBMC can generate a *counterexample trace* for failed properties. To obtain this trace, run cbmc file1.c --bounds-check --trace CBMC then prints a counterexample trace, i.e., a program trace that begins with `main` and ends in a state which violates the property. In our example, the program trace ends in the faulty array access. It also gives the values the input variables must have for the bug to occur. In this example, `argc` must be one to trigger the out-of-bounds array access. If you add a branch to the example that requires that `argc>=3`, the bug is fixed and CBMC will report that the proofs of all properties have been successful. ### Verifying Modules In the example above, we used a program that starts with a `main` function. However, CBMC is aimed at embedded software, and these kinds of programs usually have different entry points. Furthermore, CBMC is also useful for verifying program modules. Consider the following example, called file2.c: int array[10]; int sum() { unsigned i, sum; sum=0; for(i=0; i<10; i++) sum+=array[i]; } In order to set the entry point to the `sum` function, run cbmc file2.c --function sum --bounds-check It is often necessary to build a suitable *harness* for the function in order to set up the environment appropriately. ### Loop Unwinding When running the previous example, you will have noted that CBMC unwinds the `for` loop in the program. As CBMC performs Bounded Model Checking, all loops have to have a finite upper run-time bound in order to guarantee that all bugs are found. CBMC can optionally check that enough unwinding is performed. As an example, consider the program binsearch.c: int binsearch(int x) { int a[16]; signed low=0, high=16; while(low>1); if(a[middle]x) low=middle+1; else // a[middle]==x return middle; } return -1; } If you run CBMC on this function, you will notice that the unwinding does not stop on its own. The built-in simplifier is not able to determine a run time bound for this loop. The unwinding bound has to be given as a command line argument: cbmc binsearch.c --function binsearch --unwind 6 --bounds-check --unwinding-assertions CBMC verifies that verifies the array accesses are within the bounds; note that this actually depends on the result of the right shift. In addition, as CBMC is given the option `--unwinding-assertions`, it also checks that enough unwinding is done, i.e., it proves a run-time bound. For any lower unwinding bound, there are traces that require more loop iterations. Thus, CBMC will report that the unwinding assertion has failed. As usual, a counterexample trace that documents this can be obtained with the option `--property`. ### Unbounded Loops CBMC can also be used for programs with unbounded loops. In this case, CBMC is used for bug hunting only; CBMC does not attempt to find all bugs. The following program (lock-example.c) is an example of a program with a user-specified property: ``` _Bool nondet_bool(); _Bool LOCK = 0; _Bool lock() { if(nondet_bool()) { assert(!LOCK); LOCK=1; return 1; } return 0; } void unlock() { assert(LOCK); LOCK=0; } int main() { unsigned got_lock = 0; int times; while(times > 0) { if(lock()) { got_lock++; /* critical section */ } if(got_lock!=0) unlock(); got_lock--; times--; } } ``` The `while` loop in the `main` function has no (useful) run-time bound. Thus, a bound has to be set on the amount of unwinding that CBMC performs. There are two ways to do so: 1. The `--unwind` command-line parameter can to be used to limit the number of times loops are unwound. 2. The `--depth` command-line parameter can be used to limit the number of program steps to be processed. Given the option `--unwinding-assertions`, CBMC checks whether the argument to `--unwind` is large enough to cover all program paths. If the argument is too small, CBMC will detect that not enough unwinding is done reports that an unwinding assertion has failed. Reconsider the example. For a loop unwinding bound of one, no bug is found. But already for a bound of two, CBMC detects a trace that violates an assertion. Without unwinding assertions, or when using the `--depth` command line switch, CBMC does not prove the program correct, but it can be helpful to find program bugs. The various command line options that CBMC offers for loop unwinding are described in the section on \ref man_cbmc-loops "understanding loop unwinding". ### A Note About Compilers and the ANSI-C Library Most C programs make use of functions provided by a library; instances are functions from the standard ANSI-C library such as `malloc` or `printf`. The verification of programs that use such functions has two requirements: 1. Appropriate header files have to be provided. These header files contain *declarations* of the functions that are to be used. 2. Appropriate *definitions* have to be provided. Most C compilers come with header files for the ANSI-C library functions. We briefly discuss how to obtain/install these library files. #### Linux Linux systems that are able to compile software are usually equipped with the appropriate header files. Consult the documentation of your distribution on how to install the compiler and the header files. First try to compile some significant program before attempting to verify it. #### Windows On Microsoft Windows, CBMC is pre-configured to use the compiler that is part of Microsoft's Visual Studio. Microsoft's [Visual Studio Community](http://www.visualstudio.com/en-us/products/visual-studio-community-vs) is fully featured and available for download for free from the Microsoft webpage. Visual Studio installs the usual set of header files together with the compiler. However, the Visual Studio compiler requires a large set of environment variables to function correctly. It is therefore required to run CBMC from the *Visual Studio Command Prompt*, which can be found in the menu *Visual Studio Tools*. Note that in both cases, only header files are available. CBMC only comes with a small set of definitions, which includes functions such as `malloc`. Detailed information about the built-in definitions is \ref man_instrumentation-libraries "here". ### Command Line Interface This section describes the command line interface of CBMC. Like a C compiler, CBMC takes the names of the .c source files as arguments. Additional options allow to customize the behavior of CBMC. Use `cbmc --help` to get a full list of the available options. Structured output can be obtained from CBMC using the option `--xml-ui`. Any output from CBMC (e.g., counterexamples) will then use an XML representation. ### Further Reading - \ref man_cbmc-loops "Understanding Loop Unwinding" - [Hardware Verification using ANSI-C Programs as a Reference](http://www-2.cs.cmu.edu/~svc/papers/view-publications-ck03.html) - [Behavioral Consistency of C and Verilog Programs Using Bounded Model Checking](http://www-2.cs.cmu.edu/~svc/papers/view-publications-cky03.html) - [A Tool for Checking ANSI-C Programs](http://www-2.cs.cmu.edu/~svc/papers/view-publications-ckl2004.html) We also have a [list of interesting applications of CBMC](http://www.cprover.org/cbmc/applications/). \subsection man_cbmc-loops Understanding Loop Unwinding ### Iteration-based Unwinding The basic idea of CBMC is to model the computation of the programs up to a particular depth. Technically, this is achieved by a process that essentially amounts to *unwinding loops*. This concept is best illustrated with a generic example: ``` int main(int argc, char **argv) { while(cond) { BODY CODE } } ``` A BMC instance that will find bugs with up to five iterations of the loop would contain five copies of the loop body, and essentially corresponds to checking the following loop-free program: ``` int main(int argc, char **argv) { if(cond) { BODY CODE COPY 1 if(cond) { BODY CODE COPY 2 if(cond) { BODY CODE COPY 3 if(cond) { BODY CODE COPY 4 if(cond) { BODY CODE COPY 5 } } } } } } ``` Note the use of the `if` statement to prevent the execution of the loop body in the case that the loop ends before five iterations are executed. The construction above is meant to produce a program that is trace equivalent with the original programs for those traces that contain up to five iterations of the loop. In many cases, CBMC is able to automatically determine an upper bound on the number of loop iterations. This may even work when the number of loop unwindings is not constant. Consider the following example: ``` _Bool f(); int main() { for(int i=0; i<100; i++) { if(f()) break; } assert(0); } ``` The loop in the program above has an obvious upper bound on the number of iterations, but note that the loop may abort prematurely depending on the value that is returned by `f()`. CBMC is nevertheless able to automatically unwind the loop to completion. This automatic detection of the unwinding bound may fail if the number of loop iterations is highly data-dependent. Furthermore, the number of iterations that are executed by any given loop may be too large or may simply be unbounded. For this case, CBMC offers the command-line option `--unwind B`, where `B` denotes a number that corresponds to the maximal number of loop unwindings CBMC performs on any loop. Note that the number of unwindings is measured by counting the number of *backjumps*. In the example above, note that the condition `i<100` is in fact evaluated 101 times before the loop terminates. Thus, the loop requires a limit of 101, and not 100. ### Setting Separate Unwinding Limits The setting given with `--unwind` is used globally, that is, for all loops in the program. In order to set individual limits for the loops, first use --show-loops to obtain a list of all loops in the program. Then identify the loops you need to set a separate bound for, and note their loop ID. Then use --unwindset L:B,L:B,... where `L` denotes a loop ID and `B` denotes the bound for that loop. As an example, consider a program with two loops in the function main: --unwindset c::main.0:10,c::main.1:20 This sets a bound of 10 for the first loop, and a bound of 20 for the second loop. What if the number of unwindings specified is too small? In this case, bugs that require paths that are deeper may be missed. In order to address this problem, CBMC can optionally insert checks that the given unwinding bound is actually sufficiently large. These checks are called *unwinding assertions*, and are enabled with the option `--unwinding-assertions`. Continuing the generic example above, this unwinding assertion for a bound of five corresponds to checking the following loop-free program: ``` int main(int argc, char **argv) { if(cond) { BODY CODE COPY 1 if(cond) { BODY CODE COPY 2 if(cond) { BODY CODE COPY 3 if(cond) { BODY CODE COPY 4 if(cond) { BODY CODE COPY 5 assert(!cond); } } } } } } ``` The unwinding assertions can be verified just like any other generated assertion. If all of them are proven to hold, the given loop bounds are sufficient for the program. This establishes a [high-level worst-case execution time](http://en.wikipedia.org/wiki/Worst-case_execution_time) (WCET). In some cases, it is desirable to cut off very deep loops in favor of code that follows the loop. As an example, consider the following program: ``` int main() { for(int i=0; i<10000; i++) { BODY CODE } assert(0); } ``` In the example above, small values of `--unwind` will prevent that the assertion is reached. If the code in the loop is considered irrelevant to the later assertion, use the option --partial-loops This option will allow paths that execute loops only partially, enabling a counterexample for the assertion above even for small unwinding bounds. The disadvantage of using this option is that the resulting path may be spurious, i.e., may not exist in the original program. ### Depth-based Unwinding The loop-based unwinding bound is not always appropriate. In particular, it is often difficult to control the size of the generated formula when using the `--unwind` option. The option --depth nr specifies an unwinding bound in terms of the number of instructions that are executed on a given path, irrespectively of the number of loop iterations. Note that CBMC uses the number of instructions in the control-flow graph as the criterion, not the number of instructions in the source code. \subsection man_cbmc-cover COVER: Test Suite Generation with CBMC ### A Small Tutorial with A Case Study We assume that CBMC is installed on your system. If not so, follow \ref man_install-cbmc "these instructions". CBMC can be used to automatically generate test cases that satisfy a certain [code coverage](https://en.wikipedia.org/wiki/Code_coverage) criteria. Common coverage criteria include branch coverage, condition coverage and [Modified Condition/Decision Coverage (MC/DC)](https://en.wikipedia.org/wiki/Modified_condition/decision_coverage). Among others, MC/DC is required by several avionics software development guidelines to ensure adequate testing of safety critical software. Briefly, in order to satisfy MC/DC, for every conditional statement containing boolean decisions, each Boolean variable should be evaluated one time to "true" and one time to "false", in a way that affects the outcome of the decision. In the following, we are going to demonstrate how to apply the test suite generation functionality in CBMC, by means of a case study. The following program is an excerpt from a real-time embedded benchmark [PapaBench](https://www.irit.fr/recherches/ARCHI/MARCH/rubrique.php3?id_rubrique=97), and implements part of a fly-by-wire autopilot for an Unmanned Aerial Vehicle (UAV). It is adjusted mildly for our purposes. The aim of function `climb_pid_run` is to control the vertical climb of the UAV. Details on the theory behind this operation are documented in the [wiki](https://wiki.paparazziuav.org/wiki/Theory_of_Operation) for the Paparazzi UAV project. The behaviour of this simple controller, supposing that the desired speed is 0.5 meters per second, is plotted in the Figure below. \image html pid.png "The pid controller" ``` 01: // CONSTANTS: 02: #define MAX_CLIMB_SUM_ERR 10 03: #define MAX_CLIMB 1 04: 05: #define CLOCK 16 06: #define MAX_PPRZ (CLOCK*600) 07: 08: #define CLIMB_LEVEL_GAZ 0.31 09: #define CLIMB_GAZ_OF_CLIMB 0.75 10: #define CLIMB_PITCH_OF_VZ_PGAIN 0.05 11: #define CLIMB_PGAIN -0.03 12: #define CLIMB_IGAIN 0.1 13: 14: const float pitch_of_vz_pgain=CLIMB_PITCH_OF_VZ_PGAIN; 15: const float climb_pgain=CLIMB_PGAIN; 16: const float climb_igain=CLIMB_IGAIN; 17: const float nav_pitch=0; 18: 19: /** PID function INPUTS */ 20: // The user input: target speed in vertical direction 21: float desired_climb; 22: // Vertical speed of the UAV detected by GPS sensor 23: float estimator_z_dot; 24: 25: /** PID function OUTPUTS */ 26: float desired_gaz; 27: float desired_pitch; 28: 29: /** The state variable: accumulated error in the control */ 30: float climb_sum_err=0; 31: 32: /** Computes desired_gaz and desired_pitch */ 33: void climb_pid_run() 34: { 35: 36: float err=estimator_z_dot-desired_climb; 37: 38: float fgaz=climb_pgain*(err+climb_igain*climb_sum_err)+CLIMB_LEVEL_GAZ+CLIMB_GAZ_OF_CLIMB*desired_climb; 39: 40: float pprz=fgaz*MAX_PPRZ; 41: desired_gaz=((pprz>=0 && pprz<=MAX_PPRZ) ? pprz : (pprz>MAX_PPRZ ? MAX_PPRZ : 0)); 42: 43: /** pitch offset for climb */ 44: float pitch_of_vz=(desired_climb>0) ? desired_climb*pitch_of_vz_pgain : 0; 45: desired_pitch=nav_pitch+pitch_of_vz; 46: 47: climb_sum_err=err+climb_sum_err; 48: if (climb_sum_err>MAX_CLIMB_SUM_ERR) climb_sum_err=MAX_CLIMB_SUM_ERR; 49: if (climb_sum_err<-MAX_CLIMB_SUM_ERR) climb_sum_err=-MAX_CLIMB_SUM_ERR; 50: 51: } 52: 53: int main() 54: { 55: 56: while(1) 57: { 58: /** Non-deterministic input values */ 59: desired_climb=nondet_float(); 60: estimator_z_dot=nondet_float(); 61: 62: /** Range of input values */ 63: __CPROVER_assume(desired_climb>=-MAX_CLIMB && desired_climb<=MAX_CLIMB); 64: __CPROVER_assume(estimator_z_dot>=-MAX_CLIMB && estimator_z_dot<=MAX_CLIMB); 65: 66: __CPROVER_input("desired_climb", desired_climb); 67: __CPROVER_input("estimator_z_dot", estimator_z_dot); 68: 69: climb_pid_run(); 70: 71: __CPROVER_output("desired_gaz", desired_gaz); 72: __CPROVER_output("desired_pitch", desired_pitch); 73: 74: } 75: 76: return 0; 77: } ``` In order to test the PID controller, we construct a main control loop, which repeatedly invokes the function `climb_pid_run` (line 69). This PID function has two input variables: the desired speed `desired_climb` and the estimated speed `estimated_z_dot`. In the beginning of each loop iteration, values of the inputs are assigned non-deterministically. Subsequently, the `__CPROVER_assume` statement in lines 63 and 64 guarantees that both values are bounded within a valid range. The `__CPROVER_input` and `__CPROVER_output` will help clarify the inputs and outputs of interest for generating test suites. To demonstrate the automatic test suite generation in CBMC, we call the following command and we are going to explain the command line options one by one. cbmc pid.c --cover mcdc --unwind 6 --xml-ui The option `--cover mcdc` specifies the code coverage criterion. There are four conditional statements in the PID function: in line 41, line 44, line 48 and line 49. To satisfy MC/DC, the test suite has to meet multiple requirements. For instance, each conditional statement needs to evaluate to *true* and *false*. Consider the condition `"pprz>=0 && pprz<=MAX_PPRZ"` in line 41. CBMC instruments three coverage goals to control the respective evaluated results of `"pprz>=0"` and `"pprz<=MAX_PPRZ"`. We list them in below and they satisfy the MC/DC rules. Note that `MAX_PPRZ` is defined as 16 \* 600 in line 06 of the program. !(pprz >= (float)0) && pprz <= (float)(16 * 600) id="climb_pid_run.coverage.1" pprz >= (float)0 && !(pprz <= (float)(16 * 600)) id="climb_pid_run.coverage.2" pprz >= (float)0 && pprz <= (float)(16 * 600) id="climb_pid_run.coverage.3" The "id" of each coverage goal is automatically assigned by CBMC. For every coverage goal, a test suite (if there exists) that satisfies such a goal is printed out in XML format, as the parameter `--xml-ui` is given. Multiple coverage goals can share a test suite, when the corresponding execution of the program satisfies all these goals at the same time. In the end, the following test suites are automatically generated for testing the PID controller. A test suite consists of a sequence of input parameters that are passed to the PID function `climb_pid_run` at each loop iteration. For example, Test 1 covers the MC/DC goal with id="climb\_pid\_run.coverage.1". The complete output from CBMC is in [pid\_test\_suites.xml](pid_test_suites.xml), where every test suite and the coverage goals it is for are clearly described. Test suite: Test 1. (iteration 1) desired_climb=-1.000000f, estimator_z_dot=1.000000f Test 2. (iteration 1) desired_climb=-1.000000f, estimator_z_dot=1.000000f (iteration 2) desired_climb=1.000000f, estimator_z_dot=-1.000000f Test 3. (iteration 1) desired_climb=0.000000f, estimator_z_dot=-1.000000f (iteration 2) desired_climb=1.000000f, estimator_z_dot=-1.000000f Test 4. (iteration 1) desired_climb=1.000000f, estimator_z_dot=-1.000000f (iteration 2) desired_climb=1.000000f, estimator_z_dot=-1.000000f (iteration 3) desired_climb=1.000000f, estimator_z_dot=-1.000000f (iteration 4) desired_climb=1.000000f, estimator_z_dot=-1.000000f (iteration 5) desired_climb=0.000000f, estimator_z_dot=-1.000000f (iteration 6) desired_climb=1.000000f, estimator_z_dot=-1.000000f Test 5. (iteration 1) desired_climb=-1.000000f, estimator_z_dot=1.000000f (iteration 2) desired_climb=-1.000000f, estimator_z_dot=1.000000f (iteration 3) desired_climb=-1.000000f, estimator_z_dot=1.000000f (iteration 4) desired_climb=-1.000000f, estimator_z_dot=1.000000f (iteration 5) desired_climb=-1.000000f, estimator_z_dot=1.000000f (iteration 6) desired_climb=-1.000000f, estimator_z_dot=1.000000f The option `--unwind 6` unwinds the loop inside the main function body six times. In order to achieve the complete coverage on all the instrumented goals in the PID function `climb_pid_run`, the loop must be unwound sufficient enough times. For example, `climb_pid_run` needs to be called at least six times for evaluating the condition `climb_sum_err>MAX_CLIMB_SUM_ERR` in line 48 to *true*. This corresponds to the Test 5. An introduction to the use of loop unwinding can be found in [Understanding Loop Unwinding](cbmc-loops.shtml). In this small tutorial, we present the automatic test suite generation functionality of CBMC, by applying the MC/DC code coverage criterion to a PID controller case study. In addition to `--cover mcdc`, other coverage criteria like `branch`, `decision`, `path` etc. are also available when calling CBMC. ### Coverage Criteria The table below summarizes the coverage criteria that CBMC supports. Criterion |Definition ----------|---------- assertion |For every assertion, generate a test that reaches it location |For every location, generate a test that reaches it branch |Generate a test for every branch outcome decision |Generate a test for both outcomes of every Boolean expression that is not an operand of a propositional connective condition |Generate a test for both outcomes of every Boolean expression mcdc |Modified Condition/Decision Coverage (MC/DC) path |Bounded path coverage cover |Generate a test for every `__CPROVER_cover` statement \section man_modelling Modelling \subsection man_modelling-nondet Nondeterminism ### Rationale Programs typically read inputs from an environment. These inputs can take the form of data read from a file, keyboard or network socket, or arguments passed on the command line. It is usually desirable to analyze the program for any choice of these inputs. In Model Checking, inputs are therefore modeled by means of *nondeterminism*, which means that the value of the input is not specified. The program may follow any computation that results from any choice of inputs. ### Sources of Nondeterminism The CPROVER tools support the following sources of nondeterminism: - functions that read inputs from the environments; - the thread schedule in concurrent programs; - initial values of local-scoped variables and memory allocated with `malloc`; - initial values of variables that are `extern` in all compilation units; - explicit functions for generating nondeterminism. The CPROVER tools are shipped with a number of stubs for the most commonly used library functions. When executing a statement such as `getchar()`, a nondeterministic value is chosen instead of reading a character from the keyboard. When desired, nondeterminism can be introduced explicitly into the program by means of functions that begin with the prefix `nondet_`. As an example, the following function returns a nondeterministically chosen unsigned short int: unsigned short int nondet_ushortint(); Note that the body of the function is not defined. The name of the function itself is irrelevant (save for the prefix), but must be unique. Also note that a nondeterministic choice is not to be confused with a probabilistic (or random) choice. ### Uninterpreted Functions It may be necessary to check parts of a program independently. Nondeterminism can be used to over-approximate the behaviour of part of the system which is not being checked. Rather than calling a complex or unrelated function, a nondeterministic stub is used. However, separate calls to the function can return different results, even for the same inputs. If the function output only depends on its inputs then this can introduce spurious errors. To avoid this problem, functions whose names begin with the prefix `__CPROVER_uninterpreted_` are treated as uninterpreted functions. Their value is non-deterministic but different invocations will return the same value if their inputs are the same. Note that uninterpreted functions are not supported by all back-end solvers. \subsection man_modelling-assumptions Modeling with Assertions and Assumptions ### Assertions [Assertions](http://en.wikipedia.org/wiki/Assertion_%28computing%29) are statements within the program that attempt to capture the programmer's intent. The ANSI-C standard defines a header file [assert.h](http://en.wikipedia.org/wiki/Assert.h), which offers a macro `assert(cond)`. When executing a statement such as assert(p!=NULL); the execution is aborted with an error message if the condition evaluates to *false*, i.e., if `p` is NULL in the example above. The CPROVER tools can check the validity of the programmer-annotated assertions statically. Specifically, the CPROVER tools will check that the assertions hold for *any* nondeterministic choice that the program can make. The static assertion checks can be disabled using the `--no-assertions` command line option. In addition, there is a CPROVER-specific way to specify assertions, using the built-in function `__CPROVER_assert`: __CPROVER_assert(p!=NULL, "p is not NULL"); The (mandatory) string that is passed as the second argument provides an informal description of the assertion. It is shown in the list of properties together with the condition. The assertion language of the CPROVER tools is identical to the language used for expressions. Note that \ref man_modelling-nondet "nondeterminism" can be exploited in order to check a range of choices. As an example, the following code fragment asserts that **all** elements of the array are zero: int a[100], i; ... i=nondet_uint(); if(i>=0 && i<100) assert(a[i]==0); The nondeterministic choice will guess the element of the array that is nonzero. The code fragment above is therefore equivalent to int a[100], i; ... for(i=0; i<100; i++) assert(a[i]==0); Future CPROVER releases will support explicit quantifiers with a syntax that resembles Spec\#: __CPROVER_forall { *type identifier* ; *expression* } __CPROVER_exists { *type identifier* ; *expression* } ### Assumptions Assumptions are used to restrict nondeterministic choices made by the program. As an example, suppose we wish to model a nondeterministic choice that returns a number from 1 to 100. There is no integer type with this range. We therefore use \_\_CPROVER\_assume to restrict the range of a nondeterministically chosen integer: unsigned int nondet_uint(); unsigned int one_to_hundred() { unsigned int result=nondet_uint(); __CPROVER_assume(result>=1 && result<=100); return result; } The function above returns the desired integer from 1 to 100. You must ensure that the condition given as an assumption is actually satisfiable by some nondeterministic choice, or otherwise the model checking step will pass vacuously. Also note that assumptions are never retroactive: They only affect assertions (or other properties) that follow them in program order. This is best illustrated with an example. In the following fragment, the assumption has no effect on the assertion, which means that the assertion will fail: x=nondet_uint(); assert(x==100); __CPROVER_assume(x==100); Assumptions do restrict the search space, but only for assertions that follow. As an example, the following program will pass: int main() { int x; __CPROVER_assume(x>=1 && x<=100000); x*=-1; __CPROVER_assert(x<0, "x is negative"); } Beware that nondeterminism cannot be used to obtain the effect of universal quantification in assumptions. As an example, int main() { int a[10], x, y; x=nondet_int(); y=nondet_int(); __CPROVER_assume(x>=0 && x<10 && y>=0 && y<10); __CPROVER_assume(a[x]>=0); assert(a[y]>=0); } fails, as there is a choice of x and y which results in a counterexample (any choice in which x and y are different). \subsection man_modelling-pointers Pointer Model ### Pointers in C C programs (and sometimes C++ programs as well) make intensive use of pointers in order to decouple program code from specific data. A pointer variable does not store data such as numbers or letters, but instead points to a location in memory that hold the relevant data. This section describes the way the CPROVER tools model pointers. ### Objects and Offsets The CPROVER tools represent pointers as a pair. The first member of the pair is the *object* the pointer points to, and the second is the offset within the object. In C, objects are simply continuous fragments of memory (this definition of "object" is not to be confused with the use of the term in object-oriented programming). Variables of any type are guaranteed to be stored as one object, irrespectively of their type. As an example, all members of a struct or array belong to the same object. CPROVER simply assigns a number to each active object. The object number of a pointer `p` can be extracted using the expression `__CPROVER_POINTER_OBJECT(p)`. As a consequence, pointers to different objects are always different, which is not sound. The offset (the second member of the pair that forms a pointer) is relative to the beginning of the object; it uses byte granularity. As an example, the code fragment unsigned array[10]; char *p; p=(char *)(array+1); p++; will result in a pointer with offset 5. The offset of a pointer `p` can be extracted using the expression `__CPROVER_POINTER_OFFSET(p)`. ### Dereferencing Pointers The CPROVER tools require that pointers that are dereferenced point to a valid object. Assertions that check this requirement can be generated using the option --pointer-check and, if desired, --bounds-check. These options will ensure that NULL pointers are not dereferenced, and that dynamically allocated objects have not yet been deallocated. Furthermore, the CPROVER tools check that dynamically allocated memory is not deallocated twice. The goto-instrument tool is also able to add checks for memory leaks, i.e., it detects dynamically allocated objects that are not deallocated once the program terminates. The CPROVER tools support pointer typecasts. Most casts are supported, with the following exceptions: 1. One notable exception is that pointers can only be accessed using a pointer type. The conversion of a pointer into an integer-type using a pointer typecast is not supported. 2. Casts from integers to pointers yield a pointer that is either NULL (if the integer is zero) or that point into a special array for modeling [memory-mapped I/O](http://en.wikipedia.org/wiki/Memory-mapped_I/O). Such pointers are assumed not to overlap with any other objects. This is, of course, only sound if a corresponding range check is instrumented. 3. Accesses to arrays via pointers that have the array subtype need to be well-aligned. ### Pointers in Open Programs It is frequently desired to validate an open program, i.e., a fragment of a program. Some variables are left undefined. In case an undefined pointer is dereferenced, CBMC assumes that the pointer points to a separate object of appropriate type with unbounded size. The object is assumed not to alias with any other object. This assumption may obviously be wrong in specific extensions of the program. \subsection man_modelling-floating-point Floating Point The CPROVER tools support bit-accurate reasoning about IEEE-754 floating-point and fixed-point arithmetic. The C standard contains a number of areas of implementation-defined behaviour with regard to floating-point arithmetic: - CPROVER supports C99 Appendix F, and thus, the `__STD_IEC_559__` macro is defined. This means that the C `float` data type maps to IEEE 754 `binary32` and `double` maps to `binary64` and operations on them are as specified in IEEE 754. - `long double` can be configured to be `binary64`, `binary128` (quad precision) or a 96 bit type with 15 exponent bits and 80 significant bits. The last is an approximation of Intel's x87 extended precision double data type. As the C standard allows a implementations a fairly wide set of options for `long double`, it is best avoided for both portable code and bit-precise analysis. The default is to match the build architecture as closely as possible. - In CPROVER, floating-point expressions are evaluated at the 'natural precision' (the greatest of the arguments) and not at a higher precision. This corresponds to `FLT_EVAL_METHOD` set to `0`. Note that this is a different policy to some platforms (see below). - Expression contraction (for example, converting `x * y + c` to `fma(x,y,c)`) is not performed. In effect, the `FP_CONTRACT` pragma is always off. - Constant expressions are evaluated at \`run' time wherever possible and so will respect changes in the rounding mode. In effect, the `FENV_ACCESS` pragma is always off. Note that floating point constants are treated as doubles (unless they are followed by `f` when they are float) as specified in the C standard. `goto-cc` supports `-fsingle-precision-constant`, which allows the (non-standard) treatment of constants as floats. - Casts from int to float and float to float make use of the current rounding mode. Note that the standard requires that casts from float to int use round-to-zero (i.e. truncation). ### x86 and Other Platform-specific Issues Not all platforms have the same implementation-defined behaviour as CPROVER. This can cause mismatches between the verification environment and the execution environment. If this occurs, check the compiler manual for the choices listed above. There are two common cases that can cause these problems: 32-bit x86 code and the use of unsafe optimisations. Many compilers that target 32-bit x86 platforms employ a different evaluation method. The extended precision format of the x87 unit is used for all computations regardless of their native precision. Most of the time, this results in more accurate results and avoids edge cases. However, it can result in some obscure and difficult to debug behaviour. Checking if the `FLT_EVAL_METHOD` macro is non-zero (for these platforms it will typically be 2), should warn of these problems. Changing the compiler flags to use the SSE registers will resolve many of them, give a more standards-compliant platform and will likely perform better. Thus it is *highly* recommended. Use `-msse2 -mfpmath=sse` to enable this option for GCC. Visual C++ does not have an option to force the exclusive use of SSE instructions, but `/arch:SSE2` will pick SSE instructions "when it \[the compiler\] determines that it is faster to use the SSE/SSE2 instructions" and is thus better than `/arch:IA32`, which exclusively uses the x87 unit. The other common cause of discrepancy between CPROVER results and the actual platform are the use of unsafe optimisations. Some higher optimisation levels enable transformations that are unsound with respect to the IEEE-754 standard. Consult the compiler manual and disable any optimisations that are described as unsafe (for example, the GCC options `-ffast-math`). The options `-ffp-contract=off` (which replaces `-mno-fused-madd`), `-frounding-math` and `-fsignaling-nans` are needed for GCC to be strictly compliant with IEEE-754. ### Rounding Mode CPROVER supports the four rounding modes given by IEEE-754 1985; round to nearest (ties to even), round up, round down and round towards zero. By default, round to nearest is used. However, command line options (`--round-to-zero`, etc.) can be used to over-ride this. If more control is needed, CPROVER has models of `fesetround` (for POSIX systems) and `_controlfp` (for Windows), which can be used to change the rounding mode during program execution. Furthermore, the inline assembly commands fstcw/fnstcw/fldcw (on x86) can be used. The rounding mode is stored in the (thread local) variable `__CPROVER_rounding_mode`, but users are strongly advised not to use this directly. ### Math Library CPROVER implements some of `math.h`, including `fabs`, `fpclassify` and `signbit`. It has very limited support for elementary functions. Care must be taken when verifying properties that are dependent on these functions as the accuracy of implementations can vary considerably. The C compilers can (and many do) say that the accuracy of these functions is unknown. ### Fixed-point Arithmetic CPROVER also has support for fixed-point types. The `--fixedbv` flag switches `float`, `double` and `long double` to fixed-point types. The length of these types is platform specific. The upper half of each type is the integer component and the lower half is the fractional part. \section man_hard-soft Hardware and Software Equivalence and Co-Verification \subsection man_hard-soft-introduction Introduction A common hardware design approach employed by many companies is to first write a quick prototype that behaves like the planned circuit in a language like ANSI-C. This program is then used for extensive testing and debugging, in particular of any embedded software that will later on be shipped with the circuit. An example is the hardware of a cell phone and its software. After testing and debugging of the program, the actual hardware design is written using hardware description languages like [VHDL](http://en.wikipedia.org/wiki/VHDL) or [Verilog](http://en.wikipedia.org/wiki/Verilog). Thus, there are two implementations of the same design: one written in ANSI-C, which is written for simulation, and one written in register transfer level HDL, which is the actual product. The ANSI-C implementation is usually thoroughly tested and debugged. Due to market constraints, companies aim to sell the chip as soon as possible, i.e., shortly after the HDL implementation is designed. There is usually little time for additional debugging and testing of the HDL implementation. Thus, an automated, or nearly automated way of establishing the consistency of the HDL implementation is highly desirable. This motivates the verification problem: we want to verify the consistency of the HDL implementation, i.e., the product, [using the ANSI-C implementation as a reference](http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=936243&userType=inst). Es­ta­bli­shing the consistency does not re­quire a formal specification. However, formal methods to verify either the hardware or software design are still desirable. ### Related Work There have been several attempts in the past to tackle the problem. [Semeria et al.](http://portal.acm.org/citation.cfm?id=513951) describe a tool for verifying the combinational equivalence of RTL-C and an HDL. They translate the C code into HDL and use standard equivalence checkers to establish the equivalence. The C code has to be very close to a hardware description (RTL level), which implies that the source and target have to be implemented in a very similar way. There are also variants of C specifically for this purpose. The [SystemC standard](http://en.wikipedia.org/wiki/SystemC) defines a subset of C++ that can be used for synthesis. Further variants of ANSI-C for specifying hardware are SpecC and Handel C, among others. The concept of verifying the equivalence of a software implementation and a synchronous transition system was introduced by [Pnueli, Siegel, and Shtrichman](http://www.springerlink.com/content/ah5lpxaagrjp8ax2/). The C program is re­quired to be in a very specific form, since a mechanical translation is assumed. In 2000, [Currie, Hu, and Rajan](http://doi.acm.org/10.1145/337292.337339) transform DSP assembly language into an equation for the Stanford Validity Checker. The symbolic execution of programs for comparison with RTL is now common practice. The previous work focuses on a small subset of ANSI-C that is particularly close to register transfer language. Thus, the designer is often re­quired to rewrite the C program manually in order to comply with these constraints. We extend the methodology to handle the full set of ANSI-C language features. This is a challenge in the presence of complex, dynamic data structures and pointers that may dynamically point to multiple objects. Furthermore, our methodology allows arbitrary loop constructs. ### Further Material We provide a small \ref man_hard-soft-tutorial "tutorial" and a description on \ref man_hard-soft-inputs "how to synchronize inputs between the C model and the Verilog model". There is also a collection of [benchmark problems](http://www.cprover.org/hardware/sequential-equivalence/) available. Further Reading - [Hardware Verification using ANSI-C Programs as a Reference](http://www-2.cs.cmu.edu/~svc/papers/view-publications-ck03.html) - [Behavioral Consistency of C and Verilog Programs Using Bounded Model Checking](http://www-2.cs.cmu.edu/~svc/papers/view-publications-cky03.html) - [A Tool for Checking ANSI-C Programs](http://www-2.cs.cmu.edu/~svc/papers/view-publications-ckl2004.html) - [Checking Consistency of C and Verilog using Predicate Abstraction and Induction](http://www.kroening.com/publications/view-publications-kc2004.html) \subsection man_hard-soft-tutorial Tutorial ### Verilog vs. ANSI-C We assume that CBMC is installed on your system. If not so, follow \ref man_install-cbmc "these instructions". The following Verilog module implements a 4-bit counter (counter.v): module top(input clk); reg [3:0] counter; initial counter=0; always @(posedge clk) counter=counter+1; endmodule HW-CBMC can take Verilog modules as the one above as additional input. Similar as in co-simulation, the data in the Verilog modules is available to the C program by means of global variables. For the example above, the following C fragment shows the definition of the variable that holds the value of the `counter` register: struct module_top { unsigned int counter; }; extern struct module_top top; Using this definition, the value of the `counter` register in the Verilog fragment above can be accessed as `top.counter`. Please note that the name of the variable **must** match the name of the top module. The C program only has a view of one state of the Verilog model. The Verilog model makes a transition once the function `next_timeframe()` is called. As CBMC performs Bounded Model Checking, the number of timeframes available for analysis must be bounded (SATABS). As it is desirable to change the bound to adjust it to the available computing capacity, the bound is given on the command line and not as part of the C program. This makes it easy to use only one C program for arbitrary bounds. The actual bound is available in the C program using the following declaration: extern const unsigned int bound; Also note that the fragment above declares a constant variable of struct type. Thus, the C program can only read the trace values and is not able to modify them. We will later on describe how to drive inputs of the Verilog module from within the C program. As described in previous chapters, assertions can be used to verify properties of the Verilog trace. As an example, the following program checks two values of the trace of the counter module (counter.c): void next_timeframe(); struct module_top { unsigned int counter; }; extern struct module_top top; int main() { next_timeframe(); next_timeframe(); assert(top.counter==2); next_timeframe(); assert(top.counter==3); } The following CBMC command line checks these assertions with a bound of 20: hw-cbmc counter.c counter.v --module top --bound 20 Note that a specific version of CBMC is used, called `hw-cbmc`. The module name given must match the name of the module in the Verilog file. Multiple Verilog files can be given on the command line. The `--bound` parameter is not to be confused with the `--unwind` parameter. While the `--unwind` parameter specifies the maximum unwinding depth for loops within the C program, the `--bound` parameter specifies the number of times the transition relation of the Verilog module is to be unwound. ### Counterexamples For the given example, the verification is successful. If the first assertion is changed to assert(top.counter==10); and the bound on the command line is changed to 6, CBMC will produce a counterexample. CBMC produces two traces: One for the C program, which matches the traces described earlier, and a separate trace for the Verilog module. The values of the registers in the Verilog module are also shown in the C trace as part of the initial state. Initial State ---------------------------------------------------- bound=6 (00000000000000000000000000000110) counter={ 0, 1, 2, 3, 4, 5, 6 } Failed assertion: assertion line 6 function main Transition system state 0 ---------------------------------------------------- counter=0 (0000) Transition system state 1 ---------------------------------------------------- counter=1 (0001) Transition system state 2 ---------------------------------------------------- counter=2 (0010) Transition system state 3 ---------------------------------------------------- counter=3 (0011) Transition system state 4 ---------------------------------------------------- counter=4 (0100) Transition system state 5 ---------------------------------------------------- counter=5 (0101) Transition system state 6 ---------------------------------------------------- counter=6 (0110) ### Using the Bound The following program is using the bound variable to check the counter value in all cycles: void next_timeframe(); extern const unsigned int bound; struct module_top { unsigned int counter; }; extern struct module_top top; int main() { unsigned cycle; for(cycle=0; cycle #include int main() { printf("sizeof(long int): %d\n", (int)sizeof(long int)); printf("sizeof(int *): %d\n", (int)sizeof(int *)); assert(0); } The counterexample trace contains the strings printed by the `printf` command. The effects of endianness are more subtle. Try the following program with `--big-endian` and `--little-endian`: #include #include int main() { int i=0x01020304; char *p=(char *)&i; printf("Bytes of i: %d, %d, %d, %d\n", p[0], p[1], p[2], p[3]); assert(0); } \subsection man_instrumentation-properties Property Instrumentation ### Properties We have mentioned *properties* several times so far, but we never explained *what* kind of properties CBMC and SATABS can verify. We cover this topic in more detail in this section. Both CBMC and SATABS use [assertions](http://en.wikipedia.org/wiki/Assertion_(computing)) to specify program properties. Assertions are properties of the state of the program when the program reaches a particular program location. Assertions are often written by the programmer by means of the `assert` macro. In addition to the assertions written by the programmer, assertions for specific properties can also be generated automatically by CBMC and SATABS, often relieving the programmer from writing "obvious" assertions. CBMC and SATABS come with an assertion generator called `goto-instrument`, which performs a conservative [static analysis](http://en.wikipedia.org/wiki/Static_code_analysis) to determine program locations that potentially contain a bug. Due to the imprecision of the static analysis, it is important to emphasize that these generated assertions are only *potential* bugs, and that the Model Checker first needs to confirm that they are indeed genuine bugs. The assertion generator can generate assertions for the verification of the following properties: - **Buffer overflows.** For each array access, check whether the upper and lower bounds are violated. - **Pointer safety.** Search for `NULL`-pointer dereferences or dereferences of other invalid pointers. - **Division by zero.** Check whether there is a division by zero in the program. - **Not-a-Number.** Check whether floating-point computation may result in [NaNs](http://en.wikipedia.org/wiki/NaN). - **Unitialized local.** Check whether the program uses an uninitialized local variable. - **Data race.** Check whether a concurrent program accesses a shared variable at the same time in two threads. We refrain from explaining the properties above in detail. Most of them relate to behaviors that are left undefined by the respective language semantics. For a discussion on why these behaviors are usually very undesirable, read [this](http://blog.regehr.org/archives/213) blog post by John Regehr. All the properties described above are *reachability* properties. They are always of the form "*Is there a path through the program such that property ... is violated?*" The counterexamples to such properties are always program paths. Users of the Eclipse plugin can step through these counterexamples in a way that is similar to debugging programs. The installation of this plugin is explained \ref man_install-eclipse "here". ### Using goto-instrument The goto-instrument static analyzer operates on goto-binaries, which is a binary representation of control-flow graphs. The goto-binary is extracted from program source code using goto-cc, which is explained \ref man_instrumentation-goto-cc "here". Given a goto-program, goto-instrument operates as follows: 1. A goto-binary is read in. 2. The specified static analyses are performed. 3. Any potential bugs found are transformed into corresponding assertions, and are added into the program. 4. A new goto-binary (with assertions) is written to disc. As an example, we begin with small C program we call `expr.c` (taken from [here](http://www.spinroot.com/uno/)): int *ptr; int main(void) { if (ptr) *ptr = 0; if (!ptr) *ptr = 1; } The program contains an obvious NULL-pointer dereference. We first compile the example program with goto-cc and then instrument the resulting goto-binary with pointer checks. goto-cc expr.c -o in.gb goto-instrument in.gb out.gb --pointer-check We can now get a list of the assertions that have been generated as follows: goto-instrument out.gb --show-properties Using either CBMC or SATABS on `out.gb`, we can obtain a counterexample trace for the NULL-pointer dereference: cbmc out.gb The goto-instrument program supports the following checks: Flag | Check -----------------------------|---------------------------------------------- `--no-assertions` | ignore user assertions `--bounds-check` | add array bounds checks `--div-by-zero-check` | add division by zero checks `--pointer-check` | add pointer checks `--signed-overflow-check` | add arithmetic over- and underflow checks `--unsigned-overflow-check` | add arithmetic over- and underflow checks `--undefined-shift-check` | add range checks for shift distances `--nan-check` | add floating-point NaN checks `--uninitialized-check` | add checks for uninitialized locals (experimental) `--error-label label` | check that given label is unreachable #### Generating function bodies Sometimes implementations for called functions are not available in the goto program, or it is desirable to replace bodies of functions with certain predetermined stubs (for example to confirm that these functions are never called, or to indicate that these functions will never return). For this purpose goto-instrument provides the `--generate-function-body` option, that takes a regular expression (in [ECMAScript syntax] (http://en.cppreference.com/w/cpp/regex/ecmascript)) that describes the names of the functions to generate. Note that this will only generate bodies for functions that do not already have one; If one wishes to replace the body of a function with an existing definition, the `--remove-function-body` option can be used to remove the body of the function prior to generating a new one. The shape of the stub itself can be chosen with the `--generate-function-body-options` parameter, which can take the following values: Option | Result -----------------------------|------------------------------------------------------------- `nondet-return` | Do nothing and return a nondet result (this is the default) `assert-false` | Make the body contain an assert(false) `assume-false` | Make the body contain an assume(false) `assert-false-assume-false` | Combines assert-false and assume-false `havoc` | Set the contents of parameters and globals to nondet The various combinations of assert-false and assume-false can be used to indicate that functions shouldn't be called, that they will never return or both. Example: We have a program like this: // error_example.c #include void api_error(void); void internal_error(void); int main(void) { int arr[10] = {1,2,3,4,5, 6, 7, 8, 9, 10}; int sum = 0; for(int i = 1; i < 10; ++i) { sum += arr[i]; } if(sum != 55) { // we made a mistake when calculating the sum internal_error(); } if(rand() < 0) { // we think this cannot happen api_error(); } return 0; } Now, we can compile the program and detect that the error functions are indeed called by invoking these commands goto-cc error_example.c -o error_example.goto # Replace all functions ending with _error # (Excluding those starting with __) # With ones that have an assert(false) body goto-instrument error_example.goto error_example_replaced.goto \ --generate-function-body '(?!__).*_error' \ --generate-function-body-options assert-false cbmc error_example_replaced.goto Which gets us the output > ** Results: > [internal_error.assertion.1] assertion false: FAILURE > [api_error.assertion.1] assertion false: FAILURE > > > ** 2 of 2 failed (2 iterations) > VERIFICATION FAILED As opposed to the verification success we would have gotten without the generation. The havoc option takes further parameters `globals` and `params` with this syntax: `havoc[,globals:][,params:]` (where the square brackets indicate an optional part). The regular expressions have the same format as the those for the `--generate-function-body` option and indicate which globals and function parameters should be set to nondet. All regular expressions require exact matches (i.e. the regular expression `a|b` will match 'a' and 'b' but not 'adrian' or 'bertha'). Example: With a C program like this struct Complex { double real; double imag; }; struct Complex AGlobalComplex; int do_something_with_complex(struct Complex *complex); And the command line goto-instrument in.goto out.goto --generate-function-body do_something_with_complex --generate-function-body-options 'havoc,params:.*,globals:AGlobalComplex' The goto code equivalent of the following will be generated: int do_something_with_complex(struct Complex *complex) { if(complex) { complex->real = nondet_double(); complex->imag = nondet_double(); } AGlobalComplex.real = nondet_double(); AGlobalComplex.imag = nondet_double(); return nondet_int(); } A note on limitations: Because only static information is used for code generation, arrays of unknown size and pointers will not be affected by this; Which means that for code like this: struct Node { int val; struct Node *next; }; void do_something_with_node(struct Node *node); Code like this will be generated: void do_something_with_node(struct Node *node) { if(node) { node->val = nondet_int(); node->next = nondet_0(); } } Note that no attempt to follow the `next` pointer is made. If an array of unknown (or 0) size is encountered, a diagnostic is emitted and the array is not further examined. Some care must be taken when choosing the regular expressions for globals and functions. Names starting with `__` are reserved for internal purposes; For example, replacing functions or setting global variables with the `__CPROVER` prefix might make analysis impossible. To avoid doing this by accident, negative lookahead can be used. For example, `(?!__).*` matches all names not starting with `__`. \subsection man_instrumentation-api The CPROVER API Reference The following sections summarize the functions available to programs that are passed to the CPROVER tools. ### Functions #### \_\_CPROVER\_assume, \_\_CPROVER\_assert, assert void __CPROVER_assume(_Bool assumption); void __CPROVER_assert(_Bool assertion, const char *description); void assert(_Bool assertion); The function **\_\_CPROVER\_assume** adds an expression as a constraint to the program. If the expression evaluates to false, the execution aborts without failure. More detail on the use of assumptions is in the section on [Assumptions and Assertions](modeling-assertions.shtml). #### \_\_CPROVER\_r_ok, \_\_CPROVER\_w_ok void __CPROVER_r_ok(const void *, size_t size); void __CPROVER_w_ok(cosnt void *, size_t size); The function **\_\_CPROVER\_r_ok** returns true if reading the piece of memory starting at the given pointer with the given size is safe. **\_\_CPROVER\_w_ok** does the same with writing. #### \_\_CPROVER\_same\_object, \_\_CPROVER\_POINTER\_OBJECT, \_\_CPROVER\_POINTER\_OFFSET, \_\_CPROVER\_DYNAMIC\_OBJECT _Bool __CPROVER_same_object(const void *, const void *); __CPROVER_size_t __CPROVER_POINTER_OBJECT(const void *p); __CPROVER_ssize_t __CPROVER_POINTER_OFFSET(const void *p); _Bool __CPROVER_DYNAMIC_OBJECT(const void *p); The function **\_\_CPROVER\_same\_object** returns true if the two pointers given as arguments point to the same object. The function **\_\_CPROVER\_POINTER\_OFFSET** returns the offset of the given pointer relative to the base address of the object. The function **\_\_CPROVER\_DYNAMIC\_OBJECT** returns true if the pointer passed as arguments points to a dynamically allocated object. #### \_\_CPROVER\_is\_zero\_string, \_\_CPROVER\_zero\_string\_length, \_\_CPROVER\_buffer\_size _Bool __CPROVER_is_zero_string(const void *); __CPROVER_size_t __CPROVER_zero_string_length(const void *); __CPROVER_size_t __CPROVER_buffer_size(const void *); #### \_\_CPROVER\_initialize void __CPROVER_initialize(void); The function **\_\_CPROVER\_initialize** computes the initial state of the program. It is called prior to calling the main procedure of the program. #### \_\_CPROVER\_input, \_\_CPROVER\_output void __CPROVER_input(const char *id, ...); void __CPROVER_output(const char *id, ...); The functions **\_\_CPROVER\_input** and **\_\_CPROVER\_output** are used to report an input or output value. Note that they do not generate input or output values. The first argument is a string constant to distinguish multiple inputs and outputs (inputs are typically generated using nondeterminism, as described [here](modeling-nondet.shtml)). The string constant is followed by an arbitrary number of values of arbitrary types. #### \_\_CPROVER\_cover void __CPROVER_cover(_Bool condition); This statement defines a custom coverage criterion, for usage with the [test suite generation feature](cover.shtml). #### \_\_CPROVER\_isnan, \_\_CPROVER\_isfinite, \_\_CPROVER\_isinf, \_\_CPROVER\_isnormal, \_\_CPROVER\_sign _Bool __CPROVER_isnan(double f); _Bool __CPROVER_isfinite(double f); _Bool __CPROVER_isinf(double f); _Bool __CPROVER_isnormal(double f); _Bool __CPROVER_sign(double f); The function **\_\_CPROVER\_isnan** returns true if the double-precision floating-point number passed as argument is a [NaN](http://en.wikipedia.org/wiki/NaN). The function **\_\_CPROVER\_isfinite** returns true if the double-precision floating-point number passed as argument is a finite number. This function **\_\_CPROVER\_isinf** returns true if the double-precision floating-point number passed as argument is plus or minus infinity. The function **\_\_CPROVER\_isnormal** returns true if the double-precision floating-point number passed as argument is a normal number. This function **\_\_CPROVER\_sign** returns true if the double-precision floating-point number passed as argument is negative. #### \_\_CPROVER\_abs, \_\_CPROVER\_labs, \_\_CPROVER\_fabs, \_\_CPROVER\_fabsl, \_\_CPROVER\_fabsf int __CPROVER_abs(int x); long int __CPROVER_labs(long int x); double __CPROVER_fabs(double x); long double __CPROVER_fabsl(long double x); float __CPROVER_fabsf(float x); These functions return the absolute value of the given argument. #### \_\_CPROVER\_array\_equal, \_\_CPROVER\_array\_copy, \_\_CPROVER\_array\_set _Bool __CPROVER_array_equal(const void array1[], const void array2[]); void __CPROVER_array_copy(const void dest[], const void src[]); void __CPROVER_array_set(const void dest[], value); The function **\_\_CPROVER\_array\_equal** returns true if the values stored in the given arrays are equal. The function **\_\_CPROVER\_array\_copy** copies the contents of the array **src** to the array **dest**. The function **\_\_CPROVER\_array\_set** initializes the array **dest** with the given value. #### Uninterpreted Functions Uninterpreted functions are documented \ref man_modelling-nondet "here". ### Predefined Types and Symbols #### \_\_CPROVER\_bitvector __CPROVER_bitvector [ expression ] This type is only available in the C frontend. It is used to specify a bit vector with arbitrary but fixed size. The usual integer type modifiers **signed** and **unsigned** can be applied. The usual arithmetic promotions will be applied to operands of this type. #### \_\_CPROVER\_floatbv __CPROVER_floatbv [ expression ] [ expression ] This type is only available in the C frontend. It is used to specify an IEEE-754 floating point number with arbitrary but fixed size. The first parameter is the total size (in bits) of the number, and the second is the size (in bits) of the mantissa, or significand (not including the hidden bit, thus for single precision this should be 23). #### \_\_CPROVER\_fixedbv __CPROVER_fixedbv [ expression ] [ expression ] This type is only available in the C frontend. It is used to specify a fixed-point bit vector with arbitrary but fixed size. The first parameter is the total size (in bits) of the type, and the second is the number of bits after the radix point. #### \_\_CPROVER\_size\_t The type of sizeof expressions. #### \_\_CPROVER\_rounding\_mode extern int __CPROVER_rounding_mode; This variable contains the IEEE floating-point arithmetic rounding mode. #### \_\_CPROVER\_constant\_infinity\_uint This is a constant that models a large unsigned integer. #### \_\_CPROVER\_integer, \_\_CPROVER\_rational **\_\_CPROVER\_integer** is an unbounded, signed integer type. **\_\_CPROVER\_rational** is an unbounded, signed rational number type. #### \_\_CPROVER\_memory extern unsigned char __CPROVER_memory[]; This array models the contents of integer-addressed memory. #### \_\_CPROVER::unsignedbv<N> (C++ only) This type is the equivalent of **unsigned \_\_CPROVER\_bitvector\[N\]** in the C++ front-end. #### \_\_CPROVER::signedbv<N> (C++ only) This type is the equivalent of **signed \_\_CPROVER\_bitvector\[N\]** in the C++ front-end. #### \_\_CPROVER::fixedbv<N> (C++ only) This type is the equivalent of **\_\_CPROVER\_fixedbv\[N,m\]** in the C++ front-end. ### Concurrency Asynchronous threads are created by preceding an instruction with a label with the prefix **\_\_CPROVER\_ASYNC\_**. \subsection man_goto-cc-linux goto-cc: Extracting Models from the Linux Kernel The Linux kernel code consists of more than 11 million lines of low-level C and is frequently used to evaluate static analysis techniques. In the following, we show how to extract models from Linux 2.6.39. 1. First of all, you will need to make sure you have around 100 GB of free disc space available. 2. Download the Kernel sources at . 3. Now do `bunzip2 linux-2.6.39.tar.bz2`\ `tar xvf linux-2.6.39.tar`\ `cd linux-2.6.39` 4. Now ensure that you can actually compile a kernel by doing `make defconfig`\ `make` These steps need to succeed before you can try to extract models from the kernel. 5. Now compile [gcc-wrap.c](gcc-wrap.c) and put the resulting binary into a directory that is in your PATH variable: `lwp-download http://www.cprover.org/cprover-manual/gcc-wrap.c`\ `gcc gcc-wrap.c -o gcc-wrap`\ `cp gcc-wrap ~/bin/`\ This assumes that the directory `~/bin` exists and is in your PATH variable. 6. Now change the variable CC in the kernel Makefile as follows: CC = ~/bin/gcc-wrap 7. Now do make clean make This will re-compile the kernel, but this time retaining the preprocessed source files. 8. You can now compile the preprocessed source files with goto-cc as follows: find ./ -name .tmp_*.i > source-file-list for a in `cat source-file-list` ; do goto-cc -c $a -o $a.gb done Note that it is important that the word-size of the kernel configuration matches that of goto-cc. Otherwise, compile-time assertions will fail, generating the error message "bit field size is negative". For a kernel configured for a 64-bit word-width, pass the option --64 to goto-cc. The resulting `.gb` files can be passed to any of the CPROVER tools. \subsection man_goto-cc-apache goto-cc: Extracting Models from the Apache HTTPD The [Apache HTTPD](http://httpd.apache.org/) is still the most frequently used web server. Together with the relevant libraries, it consists of around 0.4 million lines of C code. In the following, we show how to extract models from Apache HTTPD 2.4.2. 1. First of all, we download the sources of Apache HTTPD and two supporting libraries and uncompress them: lwp-download http://www.mirrorservice.org/sites/ftp.apache.org/apr/apr-1.4.6.tar.bz2 lwp-download http://www.mirrorservice.org/sites/ftp.apache.org/apr/apr-util-1.4.1.tar.bz2 lwp-download http://mirror.catn.com/pub/apache/httpd/httpd-2.4.2.tar.bz2 bunzip2 < apr-1.4.6.tar.bz2 | tar x bunzip2 < apr-util-1.4.1.tar.bz2 | tar x bunzip2 < httpd-2.4.2.tar.bz2 | tar x 2. Now compile [gcc-wrap.c](gcc-wrap.c) and put the resulting binary into a directory that is in your PATH variable: lwp-download http://www.cprover.org/cprover-manual/gcc-wrap.c gcc gcc-wrap.c -o gcc-wrap cp gcc-wrap ~/bin/ This assumes that the directory `~/bin` exists and is in your PATH variable. 3. We now build the sources with gcc: (cd apr-1.4.6; ./configure; make CC=gcc-wrap) (cd apr-util-1.4.1; ./configure --with-apr=../apr-1.4.6 ; make CC=gcc-wrap) (cd httpd-2.4.2; ./configure --with-apr=../apr-1.4.6 --with-apr-util=../apr-util-1.4.1 ; make CC=gcc-wrap) 4. You can now compile the preprocessed source files with goto-cc as follows: find ./ -name *.i > source-file-list for a in `cat source-file-list` ; do goto-cc -c $a -o $a.gb done The resulting `.gb` files can be passed to any of the CPROVER tools. cbmc-cbmc-5.10/doc/man/000077500000000000000000000000001333451767700146055ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/man/cbmc.1000066400000000000000000000143511333451767700155770ustar00rootroot00000000000000.\" Process this file with .\" groff -man -Tascii cbmc.1 .\" .TH CBMC 1 "JUNE 2014" "cbmc-4.7" "User Manual" .SH NAME cbmc \- Bounded Model Checker for C/C++ and Java programs .SH SYNOPSIS .B cbmc [--property \fIproperty-id\fB] \fIfile.c\fB ... .B cbmc [--show-properties] \fIfile.c\fB ... .B cbmc [--all-properties] \fIfile.c\fB ... .B goto-cc [-I \fIinclude-path\fB] [-c] \fIfile.c\fB [-o \fIoutfile.o\fB] .B goto-instrument \fIinfile\fB \fIoutfile\fR .PP Only the most useful options are listed here; see below for the remainder. .SH DESCRIPTION \fBcbmc\fR generates traces that demonstrate how an assertion can be violated, or proves that the assertion cannot be violated within a given number of loop iterations. CBMC can read C/C++ source-code directly, or a goto-binary generated by goto-cc. Java programs are given as class or JAR files. Without any further options, cbmc checks all properties (automatically generated or user-specified) found in the program. If any of the properties can be violated, a counterexample is printed and the analysis is aborted. The analysis can be restricted to a particular property with the \-\-property option. The verification result for all properties can be obtained by means of the \-\-all-properties option. \fBgoto-cc\fR reads source code, and generates a goto-binary. Its command-line interface is designed to mimic that of .BR gcc (1). Note in particular that \fBgoto-cc\fR distinguishes between compiling and linking phases, just as gcc does. \fBcbmc\fR expects a goto-binary for which linking has been completed. \fBgoto-instrument\fR reads a goto-binary, performs a given program transformation, and then writes the resulting program as goto-binary on disc. The usual flow is to (1) translate source into a goto-binary using goto-cc, then (2) perform instrumentation with goto-instrument, and finally (3) perform the analysis with cbmc. .SH OPTIONS .SS "FRONTEND OPTIONS (cbmc and goto-cc)" .IP "-I path" Set include path (C/C++) .IP "-D macro" Define preprocessor macro (C/C++) .IP --preprocess Stop after preprocessing .IP --show-symbol-table Show symbol table .IP --show-goto-functions Show goto program .SS "ARCHITECTURAL OPTIONS (cbmc and goto-cc)" \fBcbmc\fR by default uses architectural settings that match those of the machine \fBcbmc\fR is executed on, i.e., the settings below are only needed when verifying software that is meant to run on a different architecture or OS. \fBgoto-cc\fR generates a goto-binary for a particular architecture, i.e., the architecture cannot be changed after the goto-binary is generated. .IP "--16, --32, --64" Set width of int .IP "--LP64, --ILP64, --LLP64, --ILP32, --LP32" Set width of int, long and pointers .IP --little-endian Allow little-endian word-byte conversions .IP --big-endian Allow big-endian word-byte conversions .IP --unsigned-char Make "char" unsigned by default .IP --arch Set target architecture .IP --os Set target operating system .IP --no-arch Don't set up an architecture .IP --no-library Disable built-in abstract C library .IP "--round-to-nearest, --round-to-plus-inf, --round-to-minus-inf, --round-to-zero" IEEE floating point rounding mode to use when the program begins (default is round to nearest). The program under verification can override this setting, e.g., with .BR fesetround (3). .SS "PROGRAM INSTRUMENTATION OPTIONS (cbmc and goto-instrument)" Both \fBcbmc\fR and \fBgoto-instrument\fR can generate assertions that catch specific common errors, as listed below. .IP --bounds-check Enable array bounds checks .IP --div-by-zero-check Enable division by zero checks .IP --pointer-check Enable pointer checks .IP --signed-overflow-check Enable arithmetic over- and underflow checks for signed integer arithmetic .IP --unsigned-overflow-check Enable arithmetic over- and underflow checks for unsigned integer arithmetic .IP --nan-check Check floating-point computations for NaN .IP --no-assertions Ignore user-provided assertions .IP --no-assumptions Ignore user-provided assumptions .IP "--error-label label" Check that the given label is unreachable .SS "PROGRAM INSTRUMENTATION OPTIONS (goto-instrument only)" \fBgoto-instrument\fR supports further, more complex, program transformations. .IP --nondet-volatile Makes reads from volatile variables non-deterministic .IP "--isr function" Instruments an interrupt service routine with the given name .IP --mmio Instruments memory-mapped I/O .IP --nondet-static Variables with static lifetime are initialized non-deterministically .IP --dump-c Output ANSI-C source code instead of a goto binary. .SS "BMC OPTIONS (cbmc)" .IP --all-properties Report status of all properties .IP --show-properties Only show properties .IP --show-loops Show the loops in the program .IP --cover-assertions Check which assertions are reachable .IP "--function name" Set main function name .IP "--property id" Only check specific property with given identifier .IP --program-only Only show program expression .IP "--depth nr " Limit search depth .IP "--unwind nr " Unwind loops nr times .IP "--unwindset L:B,..." Unwind loop L with a bound of B (use \-\-show\-loops to get the loop IDs) .IP --show-vcc Show the verification conditions .IP --slice-formula Remove assignments unrelated to property .IP --no-unwinding-assertions Do not generate unwinding assertions .IP --no-pretty-names Do not simplify identifiers .SS "BACKEND OPTIONS (cbmc)" .IP --dimacs Generate CNF in DIMACS format for use by external SAT solvers .IP --beautify-greedy Beautify the counterexample (greedy heuristic) .IP --smt2 Output subgoals in SMT2 syntax .IP --boolector Use Boolector (experimental) .IP --mathsat Use MathSAT (experimental) .IP --cvc Use CVC3 (experimental) .IP --yices Use Yices (experimental) .IP --z3 Use Z3 (experimental) .IP --refine Use refinement procedure (experimental) .IP "--outfile filename" Output formula to given file .IP --arrays-uf-never Never turn arrays into uninterpreted functions .IP --arrays-uf-always Always turn arrays into uninterpreted functions .SH ENVIRONMENT All tools honor the TMPDIR environment variable when generating temporary files and directories. Furthermore note that the preprocessor used by CBMC will use environment variables to locate header files. GOTO-CC aims to accept all environment variables that GCC does. .SH COPYRIGHT 2001-2016, Daniel Kroening, Edmund Clarke cbmc-cbmc-5.10/doc/satabs-user-manual.md000066400000000000000000000743511333451767700200720ustar00rootroot00000000000000\ingroup module_hidden \page other_documentation Other Documentation \section satabs SATABS We document two programs that try to achieve formal guarantees of the absence of specific problems: CBMC and SATABS. The algorithms implemented by CBMC and SATABS are complementary, and often, one tool is able to solve a problem that the other cannot solve. Both CBMC and SATABS are verification tools for ANSI-C/C++ programs. They verify array bounds (buffer overflows), pointer safety, exceptions and user-specified assertions. Both tools model integer arithmetic accurately, and are able to reason about machine-level artifacts such as integer overflow. CBMC and SATABS are therefore able to detect a class of bugs that has so far gone unnoticed by many other verification tools. This manual also covers some variants of CBMC, which includes HW-CBMC for \ref man_hard-soft-introduction "hardware/software co-verification". ## Automatic Program Verification with SATABS In many cases, lightweight properties such as array bounds do not rely on the entire program. A large fraction of the program is *irrelevant* to the property. SATABS exploits this observation and computes an *abstraction* of the program in order to handle large amounts of code. In order to use SATABS it is not necessary to understand the abstraction refinement process. For the interested reader, a high-level introduction to abstraction refinement is provided \ref man_satabs-overview "here". We also provide \ref man_satabs-tutorials "tutorials on how to use SATABS". Just as CBMC, SATABS attempts to build counterexamples that refute the property. If such a counterexample is found, it is presented to the engineer to facilitate localization and repair of the program. \subsection man_install-satabs Installing SATABS ### Requirements SATABS is available for Windows, i86 Linux, and MacOS X. SATABS requires a code pre-processing environment including a suitable preprocessor and a set of header files. 1. **Linux:** the preprocessor and the header files typically come with a package called *gcc*, which must be installed prior to the installation of SATABS. 2. **Windows:** The Windows version of SATABS requires the preprocessor `cl.exe`, which is part of Visual Studio (including the free [Visual Studio Express](http://msdn.microsoft.com/vstudio/express/visualc/)). 3. **MacOS:** Install Xcode command line tools: run `xcode-select --install` prior to installing SATABS. Important note for Windows users: Visual Studio's `cl.exe` relies on a complex set of environment variables to identify the target architecture and the directories that contain the header files. You must run SATABS from within the *Visual Studio Command Prompt*. Note that the distribution files for the [Eclipse plugin](installation-plugin.shtml) include the command-line tools. Therefore, if you intend to run SATABS exclusively within Eclipse, you can skip the installation of the command-line tools. However, you still have to install the compiler environment as described above. ### Choosing and Installing a Model Checker You need to install a Model Checker in order to be able to run SATABS. You can choose between following alternatives: - **Cadence SMV**. Available from http://www.kenmcmil.com/smv.html. Cadence SMV is a commercial model checker. The free version that is available on the homepage above must not be used for commercial purposes (read the license agreement thoroughly before you download the tool). The documentation for SMV can be found in the directory where you unzip/untar SMV under ./smv/doc/smv/. Read the installation instructions carefully. The Linux/MacOS versions require setting environment variables. You must add add the directory containing the `smv` binary (located in ./smv/bin/, relative to the path where you unpacked it) to your `PATH` environment variable. SATABS uses Cadence SMV by default. - **NuSMV**. Available from http://nusmv.irst.itc.it/. NuSMV is the open source alternative to Cadence SMV. Installation instructions and documentation can be found on the NuSMV homepage. The directory containing the NuSMV binary should be added to your `PATH` environment variable. Use the option --modelchecker nusmv to instruct SATABS to use NuSMV. - **BOPPO**. Available from http://www.cprover.org/boppo/. BOPPO is a model checker which uses SAT-solving algorithms. BOPPO relies on a built-in SAT solver and Quantor, a solver for quantified boolean formulas which is currently bundled with BOPPO, but also available separately from . We recommend to add the directories containing both tools to your `PATH` environment variable. Use the option --modelchecker boppo when you call SATABS and want it to use BOPPO instead of SMV. - **BOOM**. Available from http://www.cprover.org/boom/. Boom has a number of unique features, including the verification of programs with unbounded thread creation. ### Installing SATABS 1. Download SATABS for your operating system. The binaries are available from . 2. Unzip/untar the archive into a directory of your choice. We recommend to add this directory to your `PATH` environment variable. Now you can execute SATABS. Try running SATABS on the small examples presented in the \ref man_satabs-tutorials "SATABS tutorial". If you use the Cadence SMV model checker, the only command line arguments you have to specify are the names of the files that contain your program. ### Requirements We provide a graphical user interface to CBMC and SATABS, which is realized as a plugin to the Eclipse framework. Eclipse is available at http://www.eclipse.org. We do not provide installation instructions for Eclipse (basically, you only have to download the current version and extract the files to your hard-disk) and assume that you have already installed the current version. CBMC and SATABS have their own requirements. As an example, both CBMC and SATABS require a suitable preprocessor and a set of header files. As first step, you should therefore follow the installation instructions for \ref man_install-cbmc "CBMC" and \ref man_install-satabs "SATABS". Important note for Windows users: Visual Studio's `cl.exe` relies on a complex set of environment variables to identify the target architecture and the directories that contain the header files. You must run Eclipse from within the *Visual Studio Command Prompt*. \section man_satabs SATABS---Predicate Abstraction with SAT \subsection man_satabs-overview Overview This section describes SATABS from the point of view of the user. To learn about the technology implemented in SATABS, read \ref man_satabs-background "this". We assume you have already installed SATABS and the necessary support files on your system. If not so, please follow \ref man_install-satabs "these instructions". While users of SATABS almost never have to be concerned about the underlying refinement abstraction algorithms, understanding the classes of properties that can be verified is crucial. Predicate abstraction is most effective when applied to *control-flow dominated properties*. As an example, reconsider the following program (lock-example-fixed.c): ``` _Bool nondet_bool(); _Bool LOCK = 0; _Bool lock() { if(nondet_bool()) { assert(!LOCK); LOCK=1; return 1; } return 0; } void unlock() { assert(LOCK); LOCK=0; } int main() { unsigned got_lock = 0; int times; while(times > 0) { if(lock()) { got_lock++; /* critical section */ } if(got_lock!=0) { unlock(); got_lock--; } times--; } } ``` The two assertions in the program model that the functions `lock()` and `unlock()` are called in the right order. Note that the value of `times` is chosen non-deterministically and is not bounded. The program has no run-time bound, and thus, unwinding the code with CBMC will never terminate. ### Working with Claims The two assertions will give rise to two *properties*. Each property is associated to a specific line of code, i.e., a property is violated when some condition can become false at the corresponding program location. SATABS will generate a list of all properties for the programs as follows: satabs lock-example-fixed.c --show-properties SATABS will list two properties; each property corresponds to one of the two assertions. We can use SATABS to verify both properties as follows: satabs lock-example-fixed.c SATABS will conclude the verification successfully, that is, both assertions hold for execution traces of any length. By default, SATABS attempts to verify all properties at once. A single property can be verified (or refuted) by using the `--property id` option of SATABS, where `id` denotes the identifier of the property in the list obtained by calling SATABS with the `--show-properties` flag. Whenever a property is violated, SATABS reports a feasible path that leads to a state in which the condition that corresponds to the violated property evaluates to false. \subsection man_satabs-libraries Programs that use Libraries SATABS cannot check programs that use functions that are only available in binary (compiled) form (this restriction is not imposed by the verification algorithms that are used by SATABS – they also work on assembly code). The reason is simply that so far no assembly language frontend is available for SATABS. At the moment, (library) functions for which no C source code is available have to be replaced by stubs. The usage of stubs and harnesses (as known from unit testing) also allows to check more complicated properties (like, for example, whether function `fopen` is always called before `fclose`). This technique is explained in detail in the \ref man_satabs-tutorials "SATABS tutorials". \subsection man_satabs-unit-test Unit Testing with SATABS The example presented \ref man_satabs-tutorial-driver "here" is obviously a toy example and can hardly be used to convince your project manager to use static verification in your next project. Even though we recommend to use formal verification and specification already in the early phases of your project, the sad truth is that in most projects verification (of any kind) is still pushed to the very end of the development cycle. Therefore, this section is dedicated to the verification of legacy code. However, the techniques presented here can also be used for *unit testing*. Unit testing is used in most software development projects, and static verification with SATABS can be very well combined with this technique. Unit testing relies on a number test cases that yield the desired code coverage. Such test cases are implemented by a software testing engineer in terms of a test harness (aka test driver) and a set of function stubs. Typically, a slight modification to the test harness allows it to be used with SATABS. Replacing the explicit input values with non-deterministic inputs (as explained in \ref man_satabs-tutorial-aeon "here" and \ref man_satabs-tutorial-driver "here")) guarantees that SATABS will try to achieve **full** path and state coverage (due to the fact that predicate abstraction implicitly detects equivalence classes). However, it is not guaranteed that SATABS terminates in all cases. Keep in mind that you must not make any assumptions about the validity of the properties if SATABS did not run to completion! ### Further Reading - [Model Checking Concurrent Linux Device Drivers](http://www.kroening.com/publications/view-publications-wbwk2007.html) - [SATABS: SAT-based Predicate Abstraction for ANSI-C](http://www-2.cs.cmu.edu/~svc/papers/view-publications-cksy2005.html) - [Predicate Abstraction of ANSI-C Programs using SAT](http://www-2.cs.cmu.edu/~svc/papers/view-publications-cksy2004.html) \subsection man_satabs-background Background ### Sound Abstractions This section provides background information on how SATABS operates. Even for very trivial C programs it is impossible to exhaustively examine their state space (which is potentially unbounded). However, not all details in a C program necessarily contribute to a bug, so it may be sufficient to only examine those parts of the program that are somehow related to a bug. In practice, many static verification tools (such as `lint`) try to achieve this goal by applying heuristics. This approach comes at a cost: bugs might be overlooked because the heuristics do not cover all relevant aspects of the program. Therefore, the conclusion that a program is correct whenever such a static verification tool is unable to find an error is invalid. \image html cegar-1.png "CEGAR Loop" A more sophisticated approach that has been very successful recently is to generate a *sound* abstraction of the original program. In this context, *soundness* refers to the fact that the abstract program contains (at least) all relevant behaviors (i.e., bugs) that are present in the original program. In the Figure above, the first component strips details from the original program. The number of possible behaviors increases as the number of details in the abstract program decreases. Intuitively, the reason is that whenever the model checking tool lacks the information that is necessary to make an accurate decision on whether a branch of an control flow statement can be taken or not, both branches have to be considered. In the resulting *abstract program*, a set of concrete states is subsumed by means of a single abstract state. Consider the following figure: ![](states.png) The concrete states *x*~1~ and *x*~2~ are mapped to an abstract state *X*, and similarly *Y* subsumes *y*~1~ and *y*~2~. However, all transitions that are possible in the concrete program are also possible in the abstract model. The abstract transition *X* → *Y* summarizes the concrete transitions *x*~1~ → *y*~1~ and *x*~1~ → *x*~1~, and *Y* → *X* corresponds to *x*~1~ → *x*~2~. The behavior *X* → *Y* → *X* is feasible in the original program, because it maps to *x*~1~ → *x*~1~ → *x*~2~. However, *Y* → *X* → *Y* is feasible only in the abstract model. ### Spurious Counterexamples The consequence is that the model checker (component number two in the figure above) possibly reports a *spurious* counterexample. We call a counterexample spurious whenever it is feasible in the current abstract model but not in the original program. However, whenever the model checker is unable to find an execution trace that violates the given property, we can conclude that there is no such trace in the original program, either. The feasibility of counterexamples is checked by *symbolic simulation* (performed by component three in the figure above). If the counterexample is indeed feasible, SATABS found a bug in the original program and reports it to the user. ### Automatic Refinement On the other hand, infeasible counterexamples (that originate from abstract behaviors that result from the omission of details and are not present in the original program) are never reported to the user. Instead, the information is used in order to refine the abstraction such that the spurious counterexample is not part of the refined model anymore. For instance, the reason for the infeasibility of *Y* → *X* → *Y* is that neither *y*~1~ nor *x*~1~ can be reached from *x*~2~. Therefore, the abstraction can be refined by partitioning *X*. The refinement steps can be illustrated as follows: ![Iterative refinement](refinement.png) The first step (1) is to generate a very coarse abstraction with a very small state space. This abstraction is then successively refined (2, 3, ...) until either a feasible counterexample is found or the abstract program is detailed enough to show that there is no path that leads to a violation of the given property. The problem is that this point is not necessarily reached for every input program, i.e., it is possible that the the abstraction refinement loop never terminates. Therefore, SATABS allows to specify an upper bound for the number of iterations. When this upper bound is reached and no counterexample was found, this does not necessarily mean that there is none. In this case, you cannot make any conclusions at all with respect to the correctness of the input program. \subsection man_satabs-tutorials Tutorials We provide an introduction to model checking "real" C programs with SATABS using two small examples. \subsubsection man_satabs-tutorial-driver Reference Counting in Linux Device Drivers Microsoft's [SLAM](http://research.microsoft.com/SLAM) toolkit has been successfully used to find bugs in Windows device drivers. SLAM automatically verifies device driver whether a device driver adheres to a set of specifications. SLAM provides a test harness for device drivers that calls the device driver dispatch routines in a non-deterministic order. Therefore, the Model Checker examines all combinations of calls. Motivated by the success this approach, we provide a toy example based on Linux device drivers. For a more complete approach to the verification of Linux device drivers, consider [DDVerify](http://www.cprover.org/ddverify/). Dynamically loadable modules enable the Linux Kernel to load device drivers on demand and to release them when they are not needed anymore. When a device driver is registered, the kernel provides a major number that is used to uniquely identify the device driver. The corresponding device can be accessed through special files in the filesystem; by convention, they are located in the `/dev` directory. If a process accesses a device file the kernel calls the corresponding `open`, `read` and `write` functions of the device driver. Since a driver must not be released by the kernel as long as it is used by at least one process, the device driver must maintain a usage counter (in more recent Linux kernels, this is done automatically, however, drivers that must maintain backward compatibility have to adjust this counter). We provide a skeleton of such a driver. Download the files assets/spec.c, assets/driver.c, assets/driver.h, assets/kdev_t.h, and assets/modules.h. The driver contains following functions: 1. `register_chrdev`: (in assets/spec.c) Registers a character device. In our implementation, the function sets the variable `usecount` to zero and returns a major number for this device (a constant, if the user provides 0 as argument for the major number, and the value specified by the user otherwise). int usecount; int register_chrdev (unsigned int major, const char* name) { usecount = 0; if (major == 0) return MAJOR_NUMBER; return major; } 2. `unregister_chrdev`: (in assets/spec.c) Unregisters a character device. This function asserts that the device is not used by any process anymore (we use the macro `MOD_IN_USE` to check this). int unregister_chrdev (unsigned int major, const char* name) { if (MOD_IN_USE) { ERROR: assert (0); } else return 0; } 3. `dummy_open`: (in assets/driver.c) This function increases the `usecount`. If the device is locked by some other process `dummy_open` returns -1. Otherwise it locks the device for the caller. 4. `dummy_read`: (in assets/driver.c) This function "simulates" a read access to the device. In fact it does nothing, since we are currently not interested in the potential buffer overflow that may result from a call to this function. Note the usage of the function `nondet_int`: This is an internal SATABS-function that non­determi­nistically returns an arbitrary integer value. The function `__CPROVER_assume` tells SATABS to ignore all traces that do not adhere to the given assumption. Therefore, whenever the lock is held, `dummy_read` will return a value between 0 and `max`. If the lock is not held, then `dummy_read` returns -1. 5. `dummy_release`: (in assets/driver.c) If the lock is held, then `dummy_release` decreases the `usecount`, releases the lock, and returns 0. Otherwise, the function returns -1. We now want to check if any *valid* sequence of calls of the dispatch functions (in driver.c) can lead to the violation of the assertion (in assets/spec.c). Obviously, a call to `dummy_open` that is immediately followed by a call to `unregister_chrdev` violates the assertion. The function `main` in spec.c gives an example of how these functions are called. First, a character device "`dummy`" is registered. The major number is stored in the `inode` structure of the device. The values for the file structure are assigned non-deterministically. We rule out invalid sequences of calls by ensuring that no device is unregistered while it is still locked. We use the following model checking harness for calling the dispatching functions: ``` random = nondet_uchar (); __CPROVER_assume (0 <= random && random <= 3); switch (random) { case 1: rval = dummy_open (&inode, &my_file); if (rval == 0) lock_held = TRUE; break; case 2: __CPROVER_assume (lock_held); count = dummy_read (&my_file, buffer, BUF_SIZE); break; case 3: dummy_release (&inode, &my_file); lock_held = FALSE; break; default: break; } ``` The variable `random` is assigned non-deterministically. Subsequently, the value of `random` is restricted to be 0 ≤ `random` ≤ 3 by a call to `__CPROVER_assume`. Whenever the value of `random` is not in this interval, the corresponding execution trace is simply discarded by SATABS. Depending on the value of `random`, the harness calls either `dummy_open`, `dummy_read` or `dummy_close`. Therefore, if there is a sequence of calls to these three functions that leads to a violation of the assertion in `unregister_chrdev`, then SATABS will eventually consider it. If we ask SATABS to show us the properties it verifies with satabs driver.c spec.c --show-properties for our example, we obtain 1. Claim unregister\_chrdev.1:\     file spec.c line 18 function unregister\_chrdev\     MOD\_IN\_USE in unregister\_chrdev\     FALSE 2. Claim dummy\_open.1:\     file driver.c line 15 function dummy\_open\     i\_rdev mismatch\     (unsigned int)inode->i\_rdev >> 8 == (unsigned int)dummy\_major It seems obvious that the property dummy\_open.1 can never be violated. SATABS confirms this assumption: We call satabs driver.c spec.c --property dummy_open.1 and SATABS reports `VERIFICATION SUCCESSFUL` after a few iterations. If we try to verify property unregister\_chrdev.1, SATABS reports that the property in line 18 in file spec.c is violated (i.e., the assertion does not hold, therefore the `VERIFICATION FAILED`). Furthermore, SATABS provides a detailed description of the problem in the form of a counterexample (i.e., an execution trace that violates the property). On this trace, `dummy_open` is called **twice**, leading to a `usecount` of 2. The second call of course fails with `rval=-1`, but the counter is increased nevertheless: ``` int dummy_open (struct inode *inode, struct file *filp) { __CPROVER_assert(MAJOR (inode->i_rdev) == dummy_major, "i_rdev mismatch"); MOD_INC_USE_COUNT; if (locked) return -1; locked = TRUE; return 0; /* success */ } ``` Then, `dummy_release` is called to release the lock on the device. Finally, the loop is left and the call to `unregister_chrdev` results in a violation of the assertion (since `usecount` is still 1, even though `locked=0`). \subsubsection man_satabs-tutorial-aeon Buffer Overflow in a Mail Transfer Agent We explain how to model check Aeon version 0.2a, a small mail transfer agent written by Piotr Benetkiewicz. The description advertises Aeon as a "*good choice for **hardened** or minimalistic boxes*". The sources are available [here](http://www.cprover.org/satabs/examples/loop_detection/aeon-0.2a.tar.gz). Our first naive attempt to verify Aeon using satabs *.c produces a positive result, but also warns us that the property holds trivially. It also reveals that a large number library functions are missing: SATABS is unable to find the source code for library functions like `send`, `write` and `close`. Now, do you have to provide a body for all missing library functions? There is no easy answer to this question, but a viable answer would be "most likely not". It is necessary to understand how SATABS handles functions without bodies: It simply assumes that such a function returns an arbitrary value, but that no other locations than the one on the left hand side of the assignment are changed. Obviously, there are cases in which this assumption is un­sound, since the function potentially modifies all memory locations that it can somehow address. We now use static analysis to generate array bounds checks for Aeon: satabs *.c --pointer-check --bounds-check --show-properties SATABS will show about 300 properties in various functions (read \ref man_instrumentation-properties "this" for more information on the property instrumentation). Now consider the first few lines of the `main` function of Aeon: int main(int argc, char **argv) { char settings[MAX_SETTINGS][MAX_LEN]; ... numSet = getConfig(settings); if (numSet == -1) { logEntry("Missing config file!"); exit(1); } ... and the function `getConfig` in `lib_aeon.c`: int getConfig(char settings[MAX_SETTINGS][MAX_LEN]) { char home[MAX_LEN]; FILE *fp; /* .rc file handler */ int numSet = 0; /* number of settings */ strcpy(home, getenv("HOME")); /* get home path */ strcat(home, "/.aeonrc"); /* full path to rc file */ fp = fopen(home, "r"); if (fp == NULL) return -1; /* no cfg - ERROR */ while (fgets(settings[numSet], MAX_LEN-1, fp) && (numSet < MAX_SETTINGS)) numSet++; fclose(fp); return numSet; } The function `getConfig` makes calls to `strcpy`, `strcat`, `getenv`, `fopen`, `fgets`, and `fclose`. It is very easy to provide an implementation for the functions from the string library (string.h), and SATABS comes with meaningful definitions for most of them. The definition of `getenv` is not so straight-forward. The man-page of `getenv` (which we obtain by entering `man 3 getenv` in a Unix or cygwin command prompt) tells us: `` `getenv' `` searches the list of en­vi­ron­ment variable names and values (using the global pointer `char **environ`) for a variable whose name matches the string at `NAME`. If a variable name matches, `getenv` returns a pointer to the associated value. SATABS has no information whatsoever about the content of `environ`. Even if SATABS could access the environment variables on your computer, a successful verification of `Aeon` would then only guarantee that the properties for this program hold on your computer with a specific set of en­vi­ron­ment variables. We have to assume that `environ` contains en­vi­ron­ment variables that have an arbitrary content of arbitrary length. The content of en­vi­ron­ment variables is not only arbitrary but could be malefic, since it can be modified by the user. The approximation of the behavior of `getenv` that is shipped with SATABS completely ignores the content of the string. Now let us have another look at the properties that SATABS generates for the models of the string library and for `getenv`. Most of these properties require that we verify that the upper and lower bounds of buffers or arrays are not violated. Let us look at one of the properties that SATABS generates for the code in function `getConfig`: Claim getConfig.3:   file lib_aeon.c line 19 function getConfig   dereference failure: NULL plus offset pointer   !(SAME-OBJECT(src, NULL))` The model of the function `strcpy` dereferences the pointer returned by `getenv`, which may return a NULL pointer. This possibility is detected by the static analysis, and thus a corresponding property is generated. Let us check this specific property: satabs *.c --pointer-check --bounds-check --property getConfig.3 SATABS immediately returns a counterexample path that demonstrates how `getenv` returns a NULL, which is subsequently dereferenced. We have identified the first bug in this program: it requires that the environment variable HOME is set, and crashes otherwise. Let us examine one more property in the same function: Claim getConfig.7:   file lib_aeon.c line 19 function getConfig   dereference failure: array `home' upper bound   !(POINTER_OFFSET(dst) + (int)i >= 512) || !(SAME-OBJECT(dst, &home[0])) This property asserts that the upper bound of the array `home` is not violated. The variable `home` looks familiar: We encountered it in the function `getConfig` given above. The function `getenv` in combination with functions `strcpy`, `strcat` or `sprintf` is indeed often the source for buffer overflows. Therefore, we try to use SATABS to check the upper bound of the array `home`: satabs *.c --pointer-check --bounds-check --property getConfig.7 SATABS runs for quite a while and will eventually give up, telling us that its upper bound for abstraction refinement iterations has been exceeded. This is not exactly the result we were hoping for, and we could now increase the bound for iterations with help of the `--iterations` command line switch of SATABS. Before we do this, let us investigate why SATABS has failed to provide a useful result. The function `strcpy` contains a loop that counts from 1 to the length of the input string. Predicate abstraction, the mechanism SATABS is based on, is unable to detect such loops and will therefore unroll the loop body as often as necessary. The array `home` has `MAX_LEN` elements, and `MAX_LEN` is defined to be 512 in `aeon.h`. Therefore, SATABS would have to run through at least 512 iterations, only to verify (or reject) one of the more than 300 properties! Does this fact defeat the purpose of static verification? We can make the job easier: after reducing the value of `MAX_LEN` in `aeon.h` to a small value, say to 10, SATABS provides a counterexample trace that demonstrates how the buffer overflow be reproduced. If you use the Eclipse plugin (as described \ref man_install-eclipse "here"), you can step through this counterexample. The trace contains the string that is returned by `getenv`. cbmc-cbmc-5.10/doc/slides/000077500000000000000000000000001333451767700153155ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/000077500000000000000000000000001333451767700205655ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/arrow.pdf000066400000000000000000000066731333451767700224260ustar00rootroot00000000000000%PDF-1.3 % 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x+TT(c}\C|@1 endstream endobj 4 0 obj 23 endobj 1 0 obj << /Type /Page /Parent 7 0 R /Resources 3 0 R /Contents 2 0 R /MediaBox [0 0 59 48] >> endobj 3 0 obj << /ProcSet [ /PDF ] /XObject << /Fm1 5 0 R >> >> endobj 5 0 obj << /Length 8 0 R /Type /XObject /Subtype /Form /FormType 1 /BBox [0 0 59 48] /Resources 6 0 R /Filter /FlateDecode >> stream xڭn0 Ew} ޏ9|@v[$%e+9 zkڼ<"}-a:(`~Fə@@֢́$+I}> ɑ``j~O.$%.KErJwWy]7]۽6Ck+lng)՚F_ʠEe*\ѵHR05,{Lk_ޡ@UXީTJ> /ExtGState << /Gs2 12 0 R /Gs1 13 0 R /Gs3 14 0 R >> /XObject << /Im1 10 0 R >> >> endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 945 /Height 1 /ColorSpace 9 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xڝORQ[-fnZ[skmfYjDFH( " WHϩv{y9۞i묳D#hiYUGISE5))D))T2x,):D/sT鄤W#dJceUb Y&|Xb"`"~@+v7;b;o Pp@:}`k6}',/ 6r`9[`YXQ3L`7̊|X-o]UL%`tX.5\S{⬃ǎ xhPc_g)b=lݵQkF]#ue ^۟ kh .EhbGPp=ALL}4&3/;#YFk3W/ _4eut> endobj 13 0 obj << /Type /ExtGState /SM 0.02 >> endobj 14 0 obj << /Type /ExtGState /SA true >> endobj 15 0 obj << /Length 16 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 16 0 obj 706 endobj 9 0 obj [ /ICCBased 15 0 R ] endobj 7 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 17 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 18 0 obj << /CreationDate (D:20070108152819+01'00') /ModDate (D:20070108152819+01'00') /Producer (Mac OS X 10.4.8 Quartz PDFContext) >> endobj xref 0 19 0000000000 00000 n 0000000137 00000 n 0000000022 00000 n 0000000239 00000 n 0000000119 00000 n 0000000304 00000 n 0000000844 00000 n 0000002701 00000 n 0000000825 00000 n 0000002665 00000 n 0000001016 00000 n 0000001674 00000 n 0000001694 00000 n 0000001740 00000 n 0000001788 00000 n 0000001836 00000 n 0000002645 00000 n 0000002784 00000 n 0000002834 00000 n trailer << /Size 19 /Root 17 0 R /Info 18 0 R /ID [ <4895f2e10a0d51c999b1d58eaae056b4> <4895f2e10a0d51c999b1d58eaae056b4> ] >> startxref 2977 %%EOF cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/bmc-loop.mp000066400000000000000000000047641333451767700226460ustar00rootroot00000000000000input rboxes verbatimtex %&latex \documentclass{article} \usepackage{times} \begin{document} etex rbox_radius := 3bp; diamond_radius := 5bp; beginfig(1) rboxit.unroll (btex $\matrix{\mathrm{Unroll}\cr\mathrm{transition~function}\cr k~\mathrm{times}}$ etex); rboxit.check (btex $\matrix{\mathrm{Check~for}\cr\mathrm{counterexample}}$ etex); rboxit.checkct (btex $\matrix{\mathrm{Compare~}k\mathrm{~to}\cr\mathrm{completeness}\cr\mathrm{threshold}}$ etex); rboxit.increase (btex $\matrix{\mathrm{Increase}\cr k~\mathrm{by~one}}$ etex); unroll.c = (0,2cm); check.c = (4cm,2cm); checkct.c = (4cm,0); increase.c = (0,0); unroll.se - unroll.nw = check.se - check.nw = checkct.se - checkct.nw = increase.se - increase.nw; drawboxed (unroll, check, checkct, increase); pair diamok; diamok = ((xpart check.ne)+12pt,1cm); draw diamok+(0,diamond_radius)--diamok+(diamond_radius,0)--diamok+(0,-diamond_radius)--diamok+(-diamond_radius,0)--cycle; drawarrow (.5[unroll.nw,unroll.ne])..0.5[unroll.c,check.c] shifted (0,1cm)..(.5[check.nw,check.ne]) cutbefore bpath.unroll cutafter bpath.check; drawarrow .5[check.ne,check.se]..(.5[check.ne,check.se] shifted (4pt,-4pt))..diamok+(0,diamond_radius) cutbefore bpath.check; drawarrow diamok+(0,-diamond_radius)..(.5[checkct.ne,checkct.se] shifted (4pt,4pt))..(.5[checkct.ne,checkct.se]) cutafter bpath.checkct; drawarrow diamok+(diamond_radius,0)--diamok+(diamond_radius+2cm,0); label.top (btex [error found] etex, diamok+(diamond_radius+1cm,0)); label.rt (btex report etex, diamok+(diamond_radius+2cm,0)); pair diamnok; diamnok = (2cm,(ypart checkct.sw)-12pt); draw diamnok+(0,diamond_radius)--diamnok+(diamond_radius,0)--diamnok+(0,-diamond_radius)--diamnok+(-diamond_radius,0)--cycle; drawarrow (.5[checkct.se,checkct.sw])..(.5[checkct.se,checkct.sw] shifted (-4pt,-2pt))..diamnok+(diamond_radius,0) cutbefore bpath.checkct; drawarrow diamnok+(-diamond_radius,0)..(.5[increase.se,increase.sw] shifted (4pt,-2pt))..(.5[increase.se,increase.sw]) cutafter bpath.increase; drawarrow (.5[increase.nw,increase.sw])..(.5[unroll.sw,increase.nw]-(10pt,0)) ..(.5[unroll.nw,unroll.sw]); drawarrow diamnok+(0,-diamond_radius)--diamnok+(0,-diamond_radius-1cm); label.rt (btex [reached] etex, diamnok+(0,-diamond_radius-0.5cm)); label.bot (btex OK etex, diamnok+(0,-diamond_radius-1cm)); drawarrow unroll.nw+(-0.5cm,0.5cm)--unroll.nw cutafter bpath.unroll; label.top (btex C program etex, unroll.nw+(-0.5cm,0.5cm)); endfig; end. cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/cbmc-flow.fig000066400000000000000000000032361333451767700231310ustar00rootroot00000000000000#FIG 3.2 Produced by xfig version 3.2.5 Landscape Center Inches Letter 100.00 Single -2 1200 2 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 3300 1800 4500 1800 4500 2700 3300 2700 3300 1800 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 5400 1800 6600 1800 6600 2700 5400 2700 5400 1800 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 4500 2250 5400 2250 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6600 2250 7500 2250 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 7500 1800 8700 1800 8700 2700 7500 2700 7500 1800 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 9600 1800 10800 1800 10800 2700 9600 2700 9600 1800 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 8700 2250 9600 2250 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 11700 900 12900 900 12900 1800 11700 1800 11700 900 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 11700 2700 12900 2700 12900 3600 11700 3600 11700 2700 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 10800 1950 11700 1500 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 10794 2547 11694 2997 4 1 0 49 -1 -1 12 0.0000 4 180 600 3900 2250 C/C++\001 4 1 0 49 -1 -1 12 0.0000 4 150 615 3900 2475 Source\001 4 1 0 49 -1 -1 12 0.0000 4 150 480 4950 2175 parse\001 4 1 0 49 -1 -1 12 0.0000 4 150 480 6000 2250 parse\001 4 1 0 49 -1 -1 12 0.0000 4 120 345 6000 2475 tree\001 4 1 0 49 -1 -1 12 0.0000 4 150 435 8100 2325 CFG\001 4 1 0 49 -1 -1 12 0.0000 4 150 660 10200 2325 formula\001 4 1 0 49 -1 -1 12 0.0000 4 150 630 9150 2175 unwind\001 4 1 0 49 -1 -1 12 0.0000 4 150 435 12300 1425 CNF\001 4 1 0 49 -1 -1 12 0.0000 4 150 705 12300 3375 AUFBV\001 4 1 0 49 -1 -1 12 0.0000 4 150 450 12300 3150 SMT\001 cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/cbmc-logo-medium.png000066400000000000000000000065371333451767700244260ustar00rootroot00000000000000PNG  IHDR*jPLTE1199)))))111199911119))))!!!!))))11193!!!!))!!)594BBBJJJJJJJBRRZZURRZXkcckgcckhss{wss{uJFBBBJRVSWBGDZVVZJhkcfgvxs{ywcckxxk޼ܾ綄ᵉﶄ컇۾羥řؗ։ȇÄɊڊ؆Ś˔Ϝ͖؜Ԕ՜ݘååǥʥȪ֧͵̽ǷƵ˵ϵ̽Ͻȼսӷíǭ̭ĥةԥխۭ߭ۥߵ۵ݺ׹AW pHYsttfx tEXtComment* IDATxY}l[WMc'Nn+$ViNB!!@]ƐX5QUCh@B+&X3"?e)BC&h/aRPVBӯ$ubpιw]){Ͽw?=ױLMߦb= 2}EDgכNBb0˵XqmhB@` pG 0'`g@0K' 3*XZFؙ!Tqf|ͣTH$#\T:sВפH^$$x;0@"%!y@ $% !@H d![uARmhtBg_zzz@6Ck $ؙνtK`Q|؈vf'0:gBAx2î:S֏}p󐃪 Ty֢:cNy~ ~:4Wv̱yp5#易5-ž@ zāܼ vH_Γ6AT/rGiӗ{XxKKzp\SӀzYq@h+'W&p@ o ڗ&-i)wp< 8[yٌi)+h!AW\+`߸짠ttS2ECMMgK0Cf_hpSpbL+^|;]=CCF_z; ^EKKwtyr=14!eNb8 7  PRt]rI T8qW<^Fޖd2I+ު0NUü$#2Xr,Zf*x)& TU䕕ҝ٬4 4uY}=3a2|F80LքjG 9q\*FX󂍜 E,up^I1w{mR緶rW}H&\oV`TF橸jǪm)?.sT/L?"mT|MCdhq .. [ť]<3An{o\@t*M+i7gnH eQLkVw}N}! >P S.O,TbJ^A+^S&\r8F[[n%~IՕp~=rg3ݼrvwuɃaGxWHbYU>{a8 .:Տ5Surr=[(mkH'rT@I~=T)"ܹ85nQr)*nQ\BnhrM2;(__Crc!C%l :/ƽ]LnUx{WMKěq>?M(iջGnw+M&gܨ]rŇ-.URoWr?!qdxLڭʝRøFލ mx;IA>-yyl7NWb[yk-D*AѠ\cvn-n@vr뢃>!ڋ̳sG-z D~m++wh9 yx5c^ض \aw?#d4kHy>MƳ^OI .גH8R{Z&ծ^.5Z kl F5n>1iׄUFi^$#22,kmˌ,4tPBSq~E\N՗+wLiux÷GE\&`䟢543=t/X >_j:xu?ɟxHuɈQ %1/Lp,a*|K-Ƥ5Mm+W+W EnBk ls.TIENDB`cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/cbmc-slides.tex000066400000000000000000001131001333451767700234700ustar00rootroot00000000000000\input{header} \title{CBMC: Bounded Model Checking for ANSI-C} \date{Version 1.0, 2010} % LTL \def\TEMPOP#1{\mathrm{\bf #1}} \def\X{\TEMPOP{X}} \def\F{\TEMPOP{F}} \def\E{\TEMPOP{E}} \def\A{\TEMPOP{A}} \def\G{\TEMPOP{G}} \def\U{\mathrel{\TEMPOP{U}}} \def\R{\mathrel{\TEMPOP{R}}} \begin{document} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \frame[plain]{\titlepage} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Outline} \setcounter{tocdepth}{1} \tableofcontents \setcounter{tocdepth}{2} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \section{Preliminaries} \begin{frame} \frametitle{Preliminaries} \begin{itemize} \item We aim at the analysis of programs given in a commodity programming language such as C, C++, or Java \vfill \item As the first step, we transform the program into a \emph{control flow graph} (CFG) \end{itemize} \vfill \begin{center} \scalebox{.75}{\input{frontend.xfigtex}} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \lstset{language=C,basicstyle=\rmfamily\tiny,escapechar=\$,columns=flexible} \begin{frame}[fragile] \frametitle{Example: SHS} \begin{columns} \begin{column}{.7\textwidth} \begin{lstlisting}[language=C, basicstyle=\rmfamily\tiny,escapechar=\$,columns=flexible] if ( (0 <= t) && (t <= 79) ) switch ( t / 20 ) { case 0: TEMP2 = ( (B AND C) OR (~B AND D) ); TEMP3 = ( K_1 ); break; case 1: TEMP2 = ( (B XOR C XOR D) ); TEMP3 = ( K_2 ); break; case 2: TEMP2 = ( (B AND C) OR (B AND D) OR (C AND D) ); TEMP3 = ( K_3 ); break; case 3: TEMP2 = ( B XOR C XOR D ); TEMP3 = ( K_4 ); break; default: ${\colorbox{tabutter}{\rmfamily assert(0);}}$ } \end{lstlisting} \end{column} \begin{column}{.3\textwidth} \pause \includegraphics{sha-example-0} \end{column} \end{columns} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Bounded Program Analysis} Goal: check properties of the form $\A\G p$,\\ say assertions. \vfill Idea: {\color{ta3skyblue}follow paths through the CFG} to an assertion,\\ and build a formula that corresponds to the path \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Example} \begin{columns} \begin{column}{.3\textwidth} \only<1| handout:0>{\includegraphics{sha-example-0}}% \only<2->{\includegraphics{sha-example-1}} \end{column} \begin{column}{.1\textwidth} \pause\pause \includegraphics[width=\textwidth]{arrow} \end{column} \begin{column}{.6\textwidth} $\begin{array}{ll} & 0 \le t \le 79 \\ \land & t/20\not=0 \\ \land & t/20=1 \\ \land & \mathit{TEMP2}=B \oplus C \oplus D \\ \land & \mathit{TEMP3}=K\_2 \end{array}$ \end{column} \end{columns} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Example} We pass \[ \begin{array}{ll} & 0 \le t \le 79 \\ \land & t/20\not=0 \\ \land & t/20=1 \\ \land & \mathit{TEMP2}=B \oplus C \oplus D \\ \land & \mathit{TEMP3}=K\_2 \end{array} \] to a decision procedure, and obtain a \alert{satisfying assignment},\\ say: \[ \begin{array}{c} t\mapsto 21,\, B\mapsto 0,\, C\mapsto 0,\, D\mapsto 0,\, K\_2\mapsto 10,\\ \mathit{TEMP2}\mapsto 0,\, \mathit{TEMP3}\mapsto 10 \end{array}\] \vfill \mycheck~It provides the values of any inputs on the path. \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Which Decision Procedures?} \begin{itemize} \item We need a decision procedure for an appropriate logic \begin{itemize} \item Bit-vector logic (incl.~non-linear arithmetic) \item Arrays \item Higher-level programming languages also feature\\ lists, sets, and maps \end{itemize} \vfill \item Examples \begin{itemize} \item \href{http://research.microsoft.com/en-us/um/redmond/projects/z3/} {Z3 (Microsoft)} \item \href{http://yices.csl.sri.com/}{Yices (SRI)} \item \href{http://fmv.jku.at/boolector/}{Boolector} \end{itemize} \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \subsection{Enabling Technology: SAT} \begin{frame} \frametitle{Enabling Technology: SAT} \begin{center} \includegraphics[width=\textwidth]{sa-sat-progress}\\ number of variables of a typical, practical SAT instance\\ that can be solved by the best solvers in that decade \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Enabling Technology: SAT} \begin{itemize} \item propositional SAT solvers have made enourmous progress in the last 10 years \vfill \item Further scalability improvements in recent years because of efficient {\color{ta3skyblue}word-level reasoning} and {\color{ta3skyblue}array decision procedures} \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Let's Look at Another Path} \begin{columns} \begin{column}{.3\textwidth} \only<1| handout:0>{\includegraphics{sha-example-0}}% \only<2->{\includegraphics{sha-example-2}} \end{column} \begin{column}{.1\textwidth} \pause\pause \includegraphics[width=\textwidth]{arrow} \end{column} \begin{column}{.6\textwidth} $\begin{array}{ll} & 0 \le t \le 79 \\ \land & t/20\not=0 \\ \land & t/20\not=1 \\ \land & t/20\not=2 \\ \land & t/20\not=3 \end{array}$\\[2ex] \pause That is UNSAT, so the assertion is unreachable. \end{column} \end{columns} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame}[fragile] \frametitle{What If a Variable is Assigned Twice?} \begin{columns} \begin{column}{.3\textwidth} \begin{lstlisting}[language=C,basicstyle=\rmfamily,escapechar=\$,columns=flexible] x=0; if(y>=0) x++; \end{lstlisting} \end{column} \begin{column}{.1\textwidth} \includegraphics[width=\textwidth]{arrow} \end{column} \begin{column}{.5\textwidth} Rename appropriately: \[\begin{array}{ll} & x\only<2>{\alert{_1}}=0 \\ \land & y\only<2>{\alert{_0}}\ge 0 \\ \land & x\only<2>{\alert{_1}}=x\only<2>{\alert{_0}}+1 \end{array}\] \end{column} \end{columns} \pause \vfill \begin{center} This is a special case of \emph{SSA} (static single assignment) \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame}[fragile] \frametitle{Pointers} How do we handle dereferencing in the program? \pause\vfill \begin{columns} \begin{column}{.4\textwidth} \begin{lstlisting}[language=C,basicstyle=\rmfamily,escapechar=\$,columns=flexible] int *p; p=malloc(sizeof(int)*5); ... p[1]=100; \end{lstlisting} \end{column} \begin{column}{.1\textwidth} \includegraphics[width=\textwidth]{arrow} \end{column} \begin{column}{.5\textwidth} $\begin{array}{ll} & p_1=\&\mathit{DO1} \\ \land & \mathit{DO1}_1 = (\lambda i. \\ &i=1?100: \mathit{DO1}_0[i]) \end{array}$ \end{column} \end{columns} \vfill Track a `may-point-to' abstract state while simulating! \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Scalability of Path Search} Let's consider the following CFG: \begin{center} \includegraphics{unrolling-cfg-0} \end{center} This is a loop with an {\tt if} inside. \vfill \pause {\color{ta3scarletred}Q: how many paths for $n$ iterations?} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \section{BMC Basics} \begin{frame} \frametitle{Bounded Model Checking} \begin{itemize} \item Bounded Model Checking (BMC) is the most successful formal validation technique in the \emph{hardware} industry \vfill \item Advantages: \begin{itemize} \item[\mycheck] \alert{Fully automatic} \item[\mycheck] \alert{Robust} \item[\mycheck] \alert{Lots of subtle bugs found} \end{itemize} \vfill \item Idea: only look for bugs \alert{up to specific depth} \vfill \item Good for many applications, e.g., embedded systems \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Transition Systems} Definition: A transition system is a triple $(S, S_0, T)$ with % \begin{itemize} \item set of states $S$, \item a set of initial states $S_0\subset S$, and \item a transition relation $T \subset (S\times S)$. \end{itemize} \vfill The set $S_0$ and the relation $T$ can be written as their characteristic functions. \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \subsection{Unwinding a Transition System} \begin{frame} \frametitle{Unwinding a Transition System} Q: How do we avoid the exponential path explosion? \vfill We just "{\color{ta3chameleon}concatenate}" the transition relation $T$: \begin{center} \begin{picture}(170,30) \put(5,10){\circle*{5}} \put(5,15){\makebox[0cm][c]{\small $S_0$}} \pause \put(10,10){\vector(1,0){30}} \put(15,15){\makebox[0cm][c]{\small $\wedge$}} \put(25,15){\makebox[0cm][c]{\small $T$}} \put(45,10){\circle*{5}} \pause \put(45,15){\makebox[0cm][c]{\small $\wedge$}} \put(65,15){\makebox[0cm][c]{\small $T$}} \put(50,10){\vector(1,0){30}} \put(85,10){\circle*{5}} \pause \put(105,10){\makebox[0cm][c]{\small $\ldots$}} \put(85,15){\makebox[0cm][c]{\small $\wedge$}} \put(125,10){\circle*{5}} \put(130,10){\vector(1,0){30}} \put(145,15){\makebox[0cm][c]{\small $T$}} \put(125,15){\makebox[0cm][c]{\small $\wedge$}} \put(165,10){\circle*{5}} \pause \put(5,0){\makebox[0cm][c]{\small $s_0$}} \put(45,0){\makebox[0cm][c]{\small $s_1$}} \put(85,0){\makebox[0cm][c]{\small $s_2$}} \put(125,0){\makebox[0cm][c]{\small $s_{k-1}$}} \put(165,0){\makebox[0cm][c]{\small $s_k$}} \end{picture} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding a Transition System} As formula: \[ S_0(s_0) \land \bigwedge_{i=0}^{k-1} T(s_i,s_{i+1}) \] \vfill Satisfying assignments for this formula are \alert{traces} through the transition system \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Example} \[ T \subseteq \mathds{N}_0 \times \mathds{N}_0 \] \[ T(s,s') \iff s'.x=s.x+1 \] \ldots and let $S_0(s)\iff s.x=0 \vee s.x=1$ \vfill \pause An unwinding for depth 4: % \[\begin{array}{ll} & (s_0.x=0 \vee s_0.x=1)\\ \land & s_1.x=s_0.x+1 \\ \land & s_2.x=s_1.x+1 \\ \land & s_3.x=s_2.x+1 \\ \land & s_4.x=s_3.x+1 \end{array}\] \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Checking Reachability Properties} Suppose we want to check a property of the form $\A\G p$. \vfill \pause We then want at \alert{least one state} $s_i$ to satisfy $\neg p$: \[ S_0(s_0) \land \bigwedge_{i=0}^{k-1} T(s_i,s_{i+1}) \quad\land\quad \bigvee_{i=0}^k \neg p(s_i) \] \vfill Satisfying assignments are \alert{counterexamples} for the $\A\G p$ property \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \subsection{Unwinding Software} \begin{frame} \frametitle{Unwinding Software} We can do exactly that for our transition relation for software. \vfill E.g., for a program with 5 locations, 6 unwindings: \begin{center} \includegraphics[scale=.8]{unrolling-3} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding Software} Problem: obviously, most of the formula is never 'used',\\ as only few sequences of PCs correspond to a path. \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding Software} Example: \begin{center} \begin{tabular}{ccc} \raisebox{.1cm}{\includegraphics{unrolling-0}} &\raisebox{2cm}{\onslide<2>{\includegraphics[scale=.5]{arrow}}} &\onslide<2>{\includegraphics[scale=.8]{unrolling-4}} \\ CFG & & \onslide<2>{unrolling} \end{tabular} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding Software} Optimization:\\ {\color{ta3skyblue}don't generate the parts of the formula that are not 'reachable'} \begin{center} \begin{tabular}{ccc} \raisebox{.1cm}{\includegraphics{unrolling-0}} &\raisebox{2cm}{\onslide<2>{\includegraphics[scale=.5]{arrow}}} &\onslide<2>{\includegraphics[scale=.8]{unrolling-1}} \\ CFG & & \onslide<2>{unrolling} \end{tabular} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding Software} Problem: \begin{center} \begin{tabular}{ccc} \includegraphics{unrolling-full-0} &\raisebox{2cm}{\includegraphics[scale=.5]{arrow}} &\includegraphics[scale=.8]{unrolling-full-1} \\ CFG & & unrolling \end{tabular} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding Software} \begin{itemize} \item Unwinding $T$ with bound $k$ results in a formula of size \[ |T| \cdot k \] \vfill \item If we assume a $k$ that is only linear in $|T|$,\\ we get get a formula with size $O(|T|^2)$ \vfill \item Can we do better? \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unrolling Loops} Idea: do {\color{ta3chameleon}exactly one location} in each timeframe: \begin{center} \begin{tabular}{ccc} \raisebox{.1cm}{\includegraphics{unrolling-0}} &\raisebox{2cm}{\onslide<2>{\includegraphics[scale=.5]{arrow}}} &\onslide<2>{\includegraphics[scale=.8]{unrolling-2}} \\ CFG & & \onslide<2>{unrolling} \end{tabular} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unrolling Loops} \begin{itemize} \item[\mycheck] More effective use of the formula size \vfill \item[\mycheck] Graph has fewer merge nodes,\\ the formula is easier for the solvers \vfill \item[\myfail] Not all paths of length $k$ are encoded\\ $\rightarrow$ the bound needs to be larger \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \lstset{language=C,basicstyle=\rmfamily,escapechar=\$,columns=flexible} \begin{frame} \frametitle{Unrolling Loops} This essentially amounts to unwinding loops: \begin{center} \colorbox{tabutter!50!white}{ \begin{picture}(200,170) \put(0,0){\makebox(200,160)[tl]{\begin{minipage}[t]{\textwidth} \only<1| handout:0>{% \hspace*{0cm} \lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;! }% \only<2| handout:0>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{0cm} \lstinline!\}! }% \only<3| handout:0>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{1.5cm}{\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!\}!\\ \hspace*{0cm} \lstinline!\}! }% \only<4| handout:1>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1.5cm}{\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1.5cm}\lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{2cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!\}!\\ \hspace*{.5cm} \lstinline!\}!\\ \hspace*{0cm} \lstinline!\}! }% \only<5| handout:0>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1.5cm}{\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1.5cm}\lstinline!assume(!\alert{!cond}\lstinline!);!\\ \hspace*{2cm} \\ \hspace*{1cm} \lstinline!\}!\\ \hspace*{.5cm} \lstinline!\}!\\ \hspace*{0cm} \lstinline!\}! }% \end{minipage}}} \end{picture}} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \section{Completeness} \begin{frame} \frametitle{Completeness} BMC, as discussed so far, is incomplete.\\ It only refutes, and does not prove. \vfill How can we fix this? \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{comment} \begin{frame} \frametitle{Completeness: Overview} We will see two techniques for making BMC for software complete: \vfill \begin{enumerate} \item Unwinding assertions \vfill \item $k$-induction \end{enumerate} \end{frame} \end{comment} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \subsection{Unwinding Assertions} \begin{frame} \frametitle{Unwinding Assertions} Let's revisit the loop unwinding idea: \begin{center} \colorbox{tabutter!50!white}{ \begin{picture}(200,170) \put(0,0){\makebox(200,160)[tl]{\begin{minipage}[t]{\textwidth} \only<1| handout:0>{% \hspace*{0cm} \lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;! }% \only<2| handout:0>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{0cm} \lstinline!\}! }% \only<3| handout:0>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{1.5cm}{\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!\}!\\ \hspace*{0cm} \lstinline!\}! }% \only<4| handout:1>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1.5cm}{\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1.5cm}\lstinline!while(!\alert{cond}\lstinline!)!\\ \hspace*{2cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!\}!\\ \hspace*{.5cm} \lstinline!\}!\\ \hspace*{0cm} \lstinline!\}! }% \only<5| handout:0>{% \hspace*{0cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{.5cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{.5cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1cm} {\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1cm} \lstinline!if(!\alert{cond}\lstinline!) \{!\\ \hspace*{1.5cm}{\color{ta3chameleon}Body}\lstinline!;!\\ \hspace*{1.5cm}\lstinline!assert(!\alert{!cond}\lstinline!);!\\ \hspace*{2cm} \\ \hspace*{1cm} \lstinline!\}!\\ \hspace*{.5cm} \lstinline!\}!\\ \hspace*{0cm} \lstinline!\}! }% \end{minipage}}} \end{picture}} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Unwinding Assertions} \begin{itemize} \item We replace the assumption we have used earlier to cut off paths by an assertion \vfill \item[\mycheck] This allows us to \alert{prove that we have done enough unwinding} \vfill \item This is a proof of a high-level worst-case execution time (WCET) \vfill \item Very appropriate for embedded software \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{comment} \subsection{k-induction} \begin{frame} \frametitle{$k$-induction} \end{frame} \end{comment} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{CBMC Toolflow: Summary} \begin{enumerate} \item Parse, build CFG \vfill \item Unwind CFG, form formula \vfill \item Formula is solved by SAT/SMT \end{enumerate} \vfill \begin{center} \scalebox{.5}{\input{cbmc-flow.xfigtex}} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \section{Solving the Decision Problem} \begin{frame} \frametitle{Solving the Decision Problem} Suppose we have used some unwinding, and have built the formula. \vfill For bit-vector arithmetic, the standard way of deciding satisfiability of the formula is \emph{flattening},\\ followed by a call to a propositional SAT solver. \vfill In the SMT context: SMT-$\mathcal{BV}$ \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Bit-vector Flattening} \begin{itemize} \item This is easy for the bit-wise operators. \vfill \item Denote the Boolean variable for bit $i$ of term $t$ by \alert{$\mu(t)_i$}. \vfill \item Example for $a \,|_{[l]}\, b$: % \[ \bigwedge_{i=0}^{l-1} (\mu(t)_i=(a_i\vee b_i)) \] (read $x=y$ over bits as $x \iff y$) \pause \vfill \item We can transform this into CNF using Tseitin's method. \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Flattening Bit-Vector Arithmetic} How to flatten \alert{$a+b$}? \pause \vspace*{1ex} $\longrightarrow$ we can build a \emph{circuit} that adds them! \vfill \begin{columns} \begin{column}{1.5cm} \scalebox{0.75}{ \setlength{\unitlength}{0.00083333in} % {\renewcommand{\dashlinestretch}{30} \begin{picture}(624,1710)(0,-10) \path(162,525)(162,225) \put(140,700){\makebox(0,0)[lb]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(499,1500){\makebox(0,0)[lb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}i}}} \put(262,1500){\makebox(0,0)[lb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}b}}} \put(28,1500){\makebox(0,0)[lb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}a}}} \put(407,0){\makebox(0,0)[lb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}s}}} \put(86,0){\makebox(0,0)[lb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}o}}} \path(87,1425)(87,1125) \path(312,1425)(312,1125) \path(537,1425)(537,1125) \path(462,525)(462,225) \path(12,1125)(612,1125)(612,525)(12,525)(12,1125) \end{picture}}} \end{column} \begin{column}{9cm} \begin{block}{Full Adder} $\begin{array}{r@{\quad}c@{\quad}l@{\quad}c@{\quad}l} s &\equiv& (a + b + i \;) \mathrel{\mathrm{mod}} 2 &\equiv& a \oplus b \oplus i \\[1.5ex] \mathit{o} &\equiv& (a + b + i\;) \mathrel{\mathrm{div}} 2 &\equiv& a \cdot b + a \cdot i + b \cdot i \end{array}$ \end{block} \end{column} \end{columns} \vfill The full adder in CNF: % \[\begin{array}{l} ( a \lor b \lor \neg o) \land ( a \lor \neg b \lor i \lor \neg o) \land ( a \lor \neg b \lor \neg i \lor o) \land\\ (\neg a \lor b \lor i \lor \neg o) \land (\neg a \lor b \lor \neg i \lor o) \land (\neg a \lor \neg b \lor o) \end{array}\] \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Flattening Bit-Vector Arithmetic} Ok, this is good for one bit! How about more? \pause \vspace*{2ex} \begin{block}{8-Bit ripple carry adder (RCA)} \begin{center} \scalebox{0.65}{ \setlength{\unitlength}{0.00083333in} {\renewcommand{\dashlinestretch}{30} \begin{picture}(7640,1785)(0,-10) \path(3214,1425)(3214,1125) \path(6289,525)(6289,225) \path(5914,1425)(5914,1125) \path(6139,1425)(6139,1125) \path(5989,525)(5989,375)(5689,375) (5689,1275)(5464,1275)(5464,1125) \path(5389,525)(5389,225) \path(5014,1425)(5014,1125) \path(5239,1425)(5239,1125) \path(7189,525)(7189,225) \path(6814,1425)(6814,1125) \path(7039,1425)(7039,1125) \path(6889,525)(6889,375)(6589,375) (6589,1275)(6364,1275)(6364,1125) \path(7189,1125)(7189,1275)(7489,1275) \path(589,525)(589,375)(289,375) \path(889,525)(889,225) \path(739,1425)(739,1125) \path(1489,525)(1489,375)(1189,375) (1189,1275)(964,1275)(964,1125) \path(1789,525)(1789,225) \path(1639,1425)(1639,1125) \path(2389,525)(2389,375)(2089,375) (2089,1275)(1864,1275)(1864,1125) \path(2689,525)(2689,225) \path(2539,1425)(2539,1125) \path(3289,525)(3289,375)(2989,375) (2989,1275)(2764,1275)(2764,1125) \path(3589,525)(3589,225) \path(3439,1425)(3439,1125) \path(4189,525)(4189,375)(3889,375) (3889,1275)(3664,1275)(3664,1125) \path(4489,525)(4489,225) \path(4339,1425)(4339,1125) \path(5089,525)(5089,375)(4789,375) (4789,1275)(4564,1275)(4564,1125) \path(439,1125)(1039,1125)(1039,525) (439,525)(439,1125) \path(1339,1125)(1939,1125)(1939,525) (1339,525)(1339,1125) \path(1414,1425)(1414,1125) \path(514,1425)(514,1125) \path(2239,1125)(2839,1125)(2839,525) (2239,525)(2239,1125) \path(3139,1125)(3739,1125)(3739,525) (3139,525)(3139,1125) \path(4114,1425)(4114,1125) \path(4939,1125)(5539,1125)(5539,525) (4939,525)(4939,1125) \path(4039,1125)(4639,1125)(4639,525) (4039,525)(4039,1125) \path(5839,1125)(6439,1125)(6439,525) (5839,525)(5839,1125) \path(6739,1125)(7339,1125)(7339,525) (6739,525)(6739,1125) \put(7564,1200){\makebox(0,0)[lb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$i$}}} \put(739,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(1639,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(2539,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(3439,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(4339,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(5239,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(6139,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(7039,705){\makebox(0,0)[b]{{\SetFigFont{20}{24.0}{\sfdefault}{\mddefault}{\updefault}FA}}} \put(514,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_7$}}} \put(739,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_7$}}} \put(1414,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_6$}}} \put(1639,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_6$}}} \put(2314,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_5$}}} \put(2539,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_5$}}} \put(3214,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_4$}}} \put(3439,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_4$}}} \put(4114,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_3$}}} \put(4339,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_3$}}} \put(5014,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_2$}}} \put(5239,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_2$}}} \put(5914,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_1$}}} \put(6139,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_1$}}} \put(6814,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$a_0$}}} \put(7039,1500){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$b_0$}}} \put(139,331){\makebox(0,0)[rb]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$o$}}} \put(889,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_7$}}} \put(1789,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_6$}}} \put(2689,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_5$}}} \put(3589,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_4$}}} \put(4489,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_3$}}} \put(5389,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_2$}}} \put(6289,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_1$}}} \put(7189,0){\makebox(0,0)[b]{{\SetFigFont{17}{20.4}{\rmdefault}{\mddefault}{\itdefault}$s_0$}}} \path(2314,1425)(2314,1125) \end{picture}}} \end{center} \end{block} \begin{itemize} \item Also called \emph{carry chain adder} \item Adds $l$ variables \item Adds $6\cdot l$ clauses \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \subsection{Incremental Flattening} \begin{frame} \frametitle{Multipliers} \begin{itemize} \item \alert{Multipliers} result in very hard formulas \vfill \item Example: % \[ a\cdot b=c \,\land\, b\cdot a\not =c \,\land\, xy \] CNF: About 11000 variables,\\ \alert{unsolvable} for current SAT solvers \vfill \item Similar problems with division, modulo \vfill \item Q: Why is this hard? \pause \item Q: How do we fix this? \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Incremental Flattening} \begin{center} \begin{picture}(270,150) \put(60,150){\vector(0,-1){10}} \put(60,120){\makebox[0cm][c]{\includegraphics[height=20pt,width=90pt]{gradient_box_yellow}}} \put(60,127){\makebox[0cm][c]{$\varphi_f:=\varphi_\mathit{sk}$, $F:=\emptyset$}} \onslide<2->{ \put(60,120){\vector(0,-1){60}} \put(60,40){\makebox[0cm][c]{\includegraphics[height=20pt,width=90pt]{gradient_box_red}}} \put(60,47){\makebox[0cm][c]{Is $\varphi_f$ SAT?}} } \onslide<3->{ \put(60,40){\vector(0,-1){30}} \put(62,20){No!} \put(60,0){\makebox[0cm][c]{\color{tascarletred}UNSAT}} } \onslide<4->{ \put(105,50){\vector(1,0){45}} \put(115,52){Yes!} \put(150,40){\includegraphics[height=20pt,width=80pt]{gradient_box_green}} \put(190,47){\makebox[0cm][c]{compute $I$}} } \onslide<5->{ \put(190,40){\vector(0,-1){30}} \put(192,20){$I=\emptyset$} \put(190,0){\makebox[0cm][c]{\color{tascarletred}SAT}} } \onslide<6->{ \put(190,60){\vector(0,1){20}} \put(192,65){$I\not=\emptyset$} \put(120,80){\includegraphics[height=40pt,width=140pt]{gradient_box_yellow}} \put(190,108){\makebox[0cm][c]{Pick $F'\subseteq(I\setminus F)$}} \put(190,96){\makebox[0cm][c]{$F:=F\cup F'$}} \put(190,85){\makebox[0cm][c]{$\varphi_f:=\varphi_f \land \textsc{Constraint}(F)$}} \put(120,100){\vector(-1,0){60}} } \end{picture} \end{center} \onslide<1->{$\varphi_\mathit{sk}$: Boolean part of $\varphi$\\ $F$: set of terms that are in the encoding\\} \onslide<4->{$I$: set of terms that are inconsistent with the current assignment} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Incremental Flattening} \begin{itemize} \item Idea: add 'easy' parts of the formula first \vfill \item Only add hard parts when needed \vfill \item $\varphi_f$ only gets stronger -- use an \alert{incremental SAT solver} \end{itemize} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \end{document} cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/do_figures000077500000000000000000000005661333451767700226500ustar00rootroot00000000000000#!/bin/bash FIG="cbmc-flow.fig frontend.fig" for a in ${FIG} ; do fig2dev -L pdftex $a > `echo $a | sed s/.fig/.pdf/` done for a in ${FIG} ; do fig2dev -L pdftex_t -p `echo $a | sed s/.fig/.pdf/` $a > `echo $a | sed s/.fig/.xfigtex/` done MP="bmc-loop.mp unrolling-cfg.mp unrolling.mp sha-example.mp unrolling-full.mp" for a in ${MP} ; do mptopdf --rawmp $a done cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/frontend.fig000066400000000000000000000024171333451767700230770ustar00rootroot00000000000000#FIG 3.2 Produced by xfig version 3.2.5 Landscape Center Inches Letter 100.00 Single -2 1200 2 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 3300 1800 4500 1800 4500 2700 3300 2700 3300 1800 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 5400 1800 6600 1800 6600 2700 5400 2700 5400 1800 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 4500 2250 5400 2250 2 2 0 0 0 0 51 -1 2 0.000 0 0 -1 0 0 5 3375 1875 4575 1875 4575 2775 3375 2775 3375 1875 2 2 0 0 0 0 51 -1 2 0.000 0 0 -1 0 0 5 5475 1875 6675 1875 6675 2775 5475 2775 5475 1875 2 2 0 1 0 7 50 -1 20 0.000 0 0 -1 0 0 5 7200 1800 8400 1800 8400 2700 7200 2700 7200 1800 2 2 0 0 0 0 51 -1 2 0.000 0 0 -1 0 0 5 7275 1875 8475 1875 8475 2775 7275 2775 7275 1875 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6600 2250 7200 2250 2 4 2 2 0 11 52 -1 -1 3.000 0 0 7 0 0 5 8700 3000 3000 3000 3000 1500 8700 1500 8700 3000 4 1 0 49 -1 -1 18 0.0000 6 165 435 6000 2475 tree\001 4 1 0 49 -1 -1 18 0.0000 6 195 795 3900 2475 Source\001 4 1 0 49 -1 -1 18 0.0000 6 195 600 4950 2175 parse\001 4 1 0 49 -1 -1 18 0.0000 6 255 765 3900 2175 C/C++\001 4 1 0 49 -1 -1 18 0.0000 6 195 600 6000 2175 parse\001 4 2 0 49 -1 -1 18 0.0000 6 195 975 8850 3300 frontend\001 4 1 0 49 -1 -1 18 0.0000 6 195 570 7800 2325 CFG\001 cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/gradient_box_green.pdf000066400000000000000000000124051333451767700251070ustar00rootroot00000000000000%PDF-1.3 % 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x+TT(c}\C|@1 endstream endobj 4 0 obj 23 endobj 1 0 obj << /Type /Page /Parent 7 0 R /Resources 3 0 R /Contents 2 0 R /MediaBox [0 0 241 59] >> endobj 3 0 obj << /ProcSet [ /PDF ] /XObject << /Fm1 5 0 R >> >> endobj 5 0 obj << /Length 8 0 R /Type /XObject /Subtype /Form /FormType 1 /BBox [0 0 241 59] /Resources 6 0 R /Filter /FlateDecode >> stream xeP9n@ ){Nå*?@HR)&fgkWLX`̒Zf&QNYx??956G#dbP*մ#M$F{V~9s.8xC*AOŘsx%zݵWI9n#񒚌;9yxY^a(K^ endstream endobj 8 0 obj 191 endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /ColorSpace << /Cs1 9 0 R >> /ExtGState << /Gs2 12 0 R /Gs1 13 0 R >> /XObject << /Im1 10 0 R >> >> endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 256 /Height 256 /ColorSpace 9 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xuo\gHRM=8!cljNb;-l2{=ޑ7 f3s_~:z ό3JflU%[oSڶdJY2sfjwHcjGSjS;Eunv#GRiҞ{F{wojʒ/,;PTvPVrh/?\Qq:tGUuSӝ64uzꌚ3ԙ5gjRg9[3unkϿ`jYIu.𢺋u'']RRuYeW+TWͻJ]=jukԵU-N]zuC ƦMM7%-L[o֤ZnSܮXtNuW]w{ߣ]ro}mjᎇ#KQ.}4iYcSw>|B=zjSOgV<]znsIIw?^yAz%rUWW5׼{Cz-ڷӽwU@J T`iPRP*.W-~~?m+J?mW?m+{-~~l?mů~[ ů~[s:ů~[?m+?m?-}.o?ޯ?m^~W-~~W-~[A#o?oF?=po_c>o?o ?&'}~O?FF?ogdSW3~µ-j?w7_ӂ?w?s|g<㟾[mĿEfOW} o0>o>gVaV+!~f*O~f/K + YϬ|EA_?#UX;3+O? /\;_|1M}_--y_} 8w$vo?)n*ί: 7_;,~gCuW̚~5ǹ?뛮.=*'~gogF9lWğM~?g ~5!98?sſW =_bcׁF>o_GW~~O ů~[vG?mw=-~{W-~{~O?_?^?=ao?o?Wg5o?o?o?o?~O ~O ?co?~?m?m+O-~{W-~{~O ~Ok^ ~'~~'~~'~~'u?m?m?m?m/-~7?_o_?_G+~{u~O ?_?_?!?=+?=+?=>~'~~~[O?_?a?=+?=+?=+?=+?=1 ~wß~'~~'?F~[į~[į~[į~[į~[cn~Cį~[į~[į~[?o??ğ?]?m?m?m/hY endstream endobj 11 0 obj 2612 endobj 12 0 obj << /Type /ExtGState /OPM 1 >> endobj 13 0 obj << /Type /ExtGState /SM 0.02 >> endobj 14 0 obj << /Length 15 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 15 0 obj 706 endobj 9 0 obj [ /ICCBased 14 0 R ] endobj 7 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 16 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 17 0 obj << /CreationDate (D:20070114184550+01'00') /ModDate (D:20070114184550+01'00') /Producer (Mac OS X 10.4.8 Quartz PDFContext) >> endobj xref 0 18 0000000000 00000 n 0000000137 00000 n 0000000022 00000 n 0000000240 00000 n 0000000119 00000 n 0000000305 00000 n 0000000667 00000 n 0000004587 00000 n 0000000648 00000 n 0000004551 00000 n 0000000827 00000 n 0000003607 00000 n 0000003628 00000 n 0000003674 00000 n 0000003722 00000 n 0000004531 00000 n 0000004670 00000 n 0000004720 00000 n trailer << /Size 18 /Root 16 0 R /Info 17 0 R /ID [ ] >> startxref 4863 %%EOF cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/gradient_box_red.pdf000066400000000000000000000123401333451767700245570ustar00rootroot00000000000000%PDF-1.3 % 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x+TT(c}\C|@1 endstream endobj 4 0 obj 23 endobj 1 0 obj << /Type /Page /Parent 7 0 R /Resources 3 0 R /Contents 2 0 R /MediaBox [0 0 241 59] >> endobj 3 0 obj << /ProcSet [ /PDF ] /XObject << /Fm1 5 0 R >> >> endobj 5 0 obj << /Length 8 0 R /Type /XObject /Subtype /Form /FormType 1 /BBox [0 0 241 59] /Resources 6 0 R /Filter /FlateDecode >> stream xUP91 $DIV@hK8Sdde,8`33K(D*dfaڭˊi:$VXbm2БJ1&ѹjVßUX3GkQKpdY@(,լ;WѮ`lObuL?u`wGWL`{ '.)KH endstream endobj 8 0 obj 192 endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /ColorSpace << /Cs1 9 0 R >> /ExtGState << /Gs2 12 0 R /Gs1 13 0 R >> /XObject << /Im1 10 0 R >> >> endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 256 /Height 256 /ColorSpace 9 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xUqBkp Hww'נ AcW1,wy΄e3;3;;S\¯N*RIje*X暕Rk]YgJ~ju+WY} 7lQeSYlmifuly[ܲc:ZmM޶۪~vP;v)5ywVvU}wj=y{5yソgy_p:@uASr:Puaw#1{:8uR?x:$uSԩNKx3ԙgRu6쳧sΔs;<5xpW\.P UÆ~"uKԥ.l嗫+PÇw˕WRW_&תS_n!ۍ7tfu-oUvvu?SuԟܣWw_zꡇR?p#GU=~?m??w?'~[~6bo_~Wӟ|/+O=~w?~[~3-~?]??~{-~[s-?σw?3?]? /?o/fsY/~[௖gv/¿5/+_~[=]5r$so&7g {焫{~?[wj/=5s? v#_{ g)~?{]/ׁ?/K?_pϸ?Bal AU_zz8?Ko|K?Y%4& obUs?|\[-~f&~gPgK}-~f~gPgo~f~gVa*,~3O}׉> _#]y_L2J/,~k{]:z_p?sÿlO_{ş*~?k >_3~/n<O{_![o96_V_~CM??Ԩo&?~o^:?ǻw?}{&/~||a>yO?oG?o_~WU~3 >~K~wſ O>?mg~O)~)o?o?~%G?o_~WĿ(?]1c~[ ~K~%E}~%~?]c~[Ŀ8?]g~O)?-??9o?w~K~_?_3'o?$+~?]/K?-??wş?=~[Ŀ䫯~[/+~[?-??|5o?~{O?oi~%~?]o?mg~O)?-?_~W~%~?]/w7ğ?=/7~K~%~?]3'eǃ?o_~W/+~[ğ?mW?~?/+~[_6ao?wş?=~[/+~[?-??~{O?o_~WĿlD?-??~{gD?-??w_7ß?3'o?w~K~4 _7ß??o_~W/+??/լ6 endstream endobj 11 0 obj 2574 endobj 12 0 obj << /Type /ExtGState /OPM 1 >> endobj 13 0 obj << /Type /ExtGState /SM 0.02 >> endobj 14 0 obj << /Length 15 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 15 0 obj 706 endobj 9 0 obj [ /ICCBased 14 0 R ] endobj 7 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 16 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 17 0 obj << /CreationDate (D:20070114184546+01'00') /ModDate (D:20070114184546+01'00') /Producer (Mac OS X 10.4.8 Quartz PDFContext) >> endobj xref 0 18 0000000000 00000 n 0000000137 00000 n 0000000022 00000 n 0000000240 00000 n 0000000119 00000 n 0000000305 00000 n 0000000668 00000 n 0000004550 00000 n 0000000649 00000 n 0000004514 00000 n 0000000828 00000 n 0000003570 00000 n 0000003591 00000 n 0000003637 00000 n 0000003685 00000 n 0000004494 00000 n 0000004633 00000 n 0000004683 00000 n trailer << /Size 18 /Root 16 0 R /Info 17 0 R /ID [ <37e32cd6a7305413f84125d6ac7c7347> <37e32cd6a7305413f84125d6ac7c7347> ] >> startxref 4826 %%EOF cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/gradient_box_yellow.pdf000066400000000000000000000107751333451767700253320ustar00rootroot00000000000000%PDF-1.3 % 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x+TT(c}\C|@1 endstream endobj 4 0 obj 23 endobj 1 0 obj << /Type /Page /Parent 7 0 R /Resources 3 0 R /Contents 2 0 R /MediaBox [0 0 241 59] >> endobj 3 0 obj << /ProcSet [ /PDF ] /XObject << /Fm1 5 0 R >> >> endobj 5 0 obj << /Length 8 0 R /Type /XObject /Subtype /Form /FormType 1 /BBox [0 0 241 59] /Resources 6 0 R /Filter /FlateDecode >> stream x];n1 D=\!էN+`ar)#m1m8aAa!&XaiR +>wo~;Y} CH-bD3Еׁ > /ExtGState << /Gs2 12 0 R /Gs1 13 0 R >> /XObject << /Im1 10 0 R >> >> endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 256 /Height 256 /ColorSpace 9 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xRTYờs9ZBCwO{ wCw]{dݡvm=COn멢̶-zmPbKE/RjkuQf[Eo׽Sn{u}PaGE}RigE}QeWE_}SmwuPcOu?RkoEQg_Eם(:YwEԝ): ?01?????0q???8??0 ??'?㟄`~O0 㟂`S ~O0"?/0K㟆`~O02㟁`3~0Y? ?g?,㟃`s~0+  ?0?#nhu6ux}~_ߧ]߀?uo00oO*&9;&?=_7?-}z0& - H᯻ mG)wQ H?ះB? 6~C}?? :<_p(  ~+79?PVj PPR;7VjGwo3"_o3"_o?7 / ?~C?0o_:?pKJ-ÿ> endobj 13 0 obj << /Type /ExtGState /SM 0.02 >> endobj 14 0 obj << /Length 15 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 15 0 obj 706 endobj 9 0 obj [ /ICCBased 14 0 R ] endobj 7 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 16 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 17 0 obj << /CreationDate (D:20070114184543+01'00') /ModDate (D:20070114184543+01'00') /Producer (Mac OS X 10.4.8 Quartz PDFContext) >> endobj xref 0 18 0000000000 00000 n 0000000137 00000 n 0000000022 00000 n 0000000240 00000 n 0000000119 00000 n 0000000305 00000 n 0000000671 00000 n 0000003811 00000 n 0000000652 00000 n 0000003775 00000 n 0000000831 00000 n 0000002831 00000 n 0000002852 00000 n 0000002898 00000 n 0000002946 00000 n 0000003755 00000 n 0000003894 00000 n 0000003944 00000 n trailer << /Size 18 /Root 16 0 R /Info 17 0 R /ID [ ] >> startxref 4087 %%EOF cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/header.tex000066400000000000000000000075641333451767700225530ustar00rootroot00000000000000\documentclass{beamer} %\documentclass[handout]{beamer} \pdfcompresslevel9 \usepackage{graphicx} \usepackage{epic} \usepackage{epsfig} \usepackage{eepicemu} \usepackage{color} \usepackage{alltt} \usepackage{cancel} \usepackage{hhline} \usepackage{amssymb} \usepackage{verbatim} \usepackage{boxedminipage} \usepackage{listings} \usepackage{helvet} \usepackage{pgf} \usepackage{tikz} \usepackage{xspace} \usepackage{dsfont} \usepackage[noend]{algorithmic} \usepackage{mathrsfs} \usepackage{pifont} \hypersetup{% pdftitle={\inserttitle},% pdfauthor={\insertauthor},% pdfsubject={},% pdfkeywords={}% } \DeclareGraphicsExtensions{.pdftex,.png,.pdf,.jpg} \DeclareGraphicsRule{.pdftex}{pdf}{*}{} \begin{lrbox}{2233} \begin{picture}(0,0) \put(300,-20){\includegraphics[width=2cm]{cbmc-logo-medium}} \end{picture} \end{lrbox} \institute[]{\includegraphics{cbmc-logo-medium}} \usetheme{boxes} \usefonttheme[stillsansseriftext,stillsansserifsmall]{serif} \setbeamerfont{frametitle}{size=\large,series=\bfseries,shape=\sf} \addfootbox{structure}{\,\sf{\bf \insertshorttitle} -- \href{http://www.cprover.org/}{http://www.cprover.org/}\hfill\insertframenumber\,} \addheadbox{structure}{\usebox{2233}} \renewcommand{\implies}{\Rightarrow} \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% % COLORS % butter (yellowish) \definecolor{tabutter}{rgb}{0.98824, 0.91373, 0.30980} % #fce94f \definecolor{ta2butter}{rgb}{0.92941, 0.83137, 0} % #edd400 \definecolor{ta3butter}{rgb}{0.76863, 0.62745, 0} % #c4a000 % orange \definecolor{taorange}{rgb}{0.98824, 0.68627, 0.24314} % #fcaf3e \definecolor{ta2orange}{rgb}{0.96078, 0.47451, 0} % #f57900 \definecolor{ta3orange}{rgb}{0.80784, 0.36078, 0} % #ce5c00 % chocolate (brownish) \definecolor{tachocolate}{rgb}{0.91373, 0.72549, 0.43137} % #e9b96e \definecolor{ta2chocolate}{rgb}{0.75686, 0.49020, 0.066667} % #c17d11 \definecolor{ta3chocolate}{rgb}{0.56078, 0.34902, 0.0078431} % #8f5902 % chameleon (greenish) \definecolor{tachameleon}{rgb}{0.54118, 0.88627, 0.20392} % #8ae234 \definecolor{ta2chameleon}{rgb}{0.45098, 0.82353, 0.086275} % #73d216 \definecolor{ta3chameleon}{rgb}{0.30588, 0.60392, 0.023529} % #4e9a06 % sky blue \definecolor{taskyblue}{rgb}{0.44706, 0.56078, 0.81176} % #728fcf \definecolor{ta2skyblue}{rgb}{0.20392, 0.39608, 0.64314} % #3465a4 \definecolor{ta3skyblue}{rgb}{0.12549, 0.29020, 0.52941} % #204a87 % plum (violettish) \definecolor{taplum}{rgb}{0.67843, 0.49804, 0.65882} % #ad7fa8 \definecolor{ta2plum}{rgb}{0.45882, 0.31373, 0.48235} % #75507b \definecolor{ta3plum}{rgb}{0.36078, 0.20784, 0.4} % #5c3566 % scarlet red \definecolor{tascarletred}{rgb}{0.93725, 0.16078, 0.16078} % #ef2929 \definecolor{ta2scarletred}{rgb}{0.8, 0, 0} % #cc0000 \definecolor{ta3scarletred}{rgb}{0.64314, 0, 0} % #a40000 % aluminium \definecolor{taaluminium}{rgb}{0.93333, 0.93333, 0.92549} % #eeeeec \definecolor{ta2aluminium}{rgb}{0.82745, 0.84314, 0.81176} % #d3d7cf \definecolor{ta3aluminium}{rgb}{0.72941, 0.74118, 0.71373} % #babdb6 % gray \definecolor{tagray}{rgb}{0.53333, 0.54118, 0.52157} % #888a85 \definecolor{ta2gray}{rgb}{0.33333, 0.34118, 0.32549} % #555753 \definecolor{ta3gray}{rgb}{0.18039, 0.20392, 0.21176} % #2e3436 % gray \definecolor{tagray}{rgb}{0.53333, 0.54118, 0.52157} % #888a85 \usecolortheme[named=ta3skyblue]{structure} \setbeamercolor{block body}{fg=black,bg=ta3skyblue!10} \setbeamercolor{block title}{fg=black,bg=ta3skyblue!30} \mode{\setbeamercolor{block body}{fg=black,bg=white!90!black}} \mode{\setbeamercolor{block title}{fg=black,bg=white!70!black}} \newcommand{\RETURN}{\STATE \textbf{return}~} %\renewcommand{\ENDIF}{} \newcommand{\power}[1]{\mathscr P({#1})} \newcommand{\mycheck}{{\color{ta3chameleon}\ding{52}}} \newcommand{\myfail}{{\color{ta3scarletred}\ding{56}}} cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/sa-sat-progress.pdf000066400000000000000000000041251333451767700243140ustar00rootroot00000000000000%PDF-1.3 %쏢 5 0 obj <> stream x}Vn7 W2.)m KzwAVIc԰I{6i[ߏO|kkhnhMw+{ߙp)GHݯ}{#}\*[:?Azc%]y~J tA \JrǓ'='rq~Dx܈`HIBO,χ%x [?F`:8ȁǒBXm)m,ZXKw=u_.Hk {z93⎅SRN)v*qVv '"B`)lK! ;'Zq6JG0,l!=Sm**RMz+Y &dʒ0=M#Ĭ^0U kA y}VMꙤZ`.*K;q] ŠГ?8 J~xs/<(T~{ 'ʢ,eI 2Y˨p#"3҆*E{UNڒJ,K_ioٛ] {URsSM=aRG.fV6f噮9Tmf\. ,VcȎVMؐjuEQPĕ1<04)98J kbUTsthyU,7VTGq,6eY]ǰ06ӮBC7g^ӰZaifc^+J YAX<\`D[nNşxMpWJ+/10O~Zۺ (fBʚK#m깁1 3.嚯zP]T_s|lTyD,}h|y >fL=py޿A=9B/6+D>if!.80$=f>7V?dNd.}[SPlo_~'Gۿ^9؝WNvTendstream endobj 6 0 obj 991 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 9 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <> endobj 2 0 obj <>endobj xref 0 11 0000000000 65535 f 0000001313 00000 n 0000001527 00000 n 0000001254 00000 n 0000001095 00000 n 0000000015 00000 n 0000001076 00000 n 0000001361 00000 n 0000001461 00000 n 0000001402 00000 n 0000001431 00000 n trailer << /Size 11 /Root 1 0 R /Info 2 0 R /ID [<0C40C1A3673B7C48EE5D817EDE1D88B6><0C40C1A3673B7C48EE5D817EDE1D88B6>] >> startxref 1760 %%EOF cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/sha-example.mp000066400000000000000000000054771333451767700233440ustar00rootroot00000000000000verbatimtex %&latex \documentclass[10pt]{article} \usepackage{color} \begin{document} etex input boxes vardef connect(suffix s, t)= drawarrow s..t cutbefore fullcircle scaled 3pt shifted s cutafter fullcircle scaled 3pt shifted t; drawdot s withpen pencircle scaled 3pt; drawdot t withpen pencircle scaled 3pt; enddef; vardef connectred(suffix s, t)= drawdot s withpen pencircle scaled 5pt withcolor red; drawdot t withpen pencircle scaled 5pt withcolor red; pickup pencircle scaled 1.1; drawarrow s..t cutbefore fullcircle scaled 5pt shifted s cutafter fullcircle scaled 5pt shifted t withcolor red; pickup pencircle scaled .5; enddef; vardef doall= defaultscale:=9pt/fontsize defaultfont; z[0] = (-.2cm,7*ystep); % if z[1] = ( 0cm,6*ystep); % switch z[2] = (.2cm,5*ystep); % case 0 z[3] = (.4cm,4*ystep); % case 1 z[4] = (.6cm,3*ystep); % case 2 z[5] = (.8cm,2*ystep); % case 3 z[6] = (1cm,1*ystep); % default z[7] = (0cm,0*ystep); % end z[12] = z[2]-(.5cm,.5cm); % case 0 z[13] = z[3]-(.5cm,.5cm); % case 1 z[14] = z[4]-(.5cm,.5cm); % case 2 z[15] = z[5]-(.5cm,.5cm); % case 3 dotlabel.rt ("if", z[0]); dotlabel.rt ("switch", z[1]); dotlabel.rt ("case 0", z[2]); dotlabel.rt ("case 1", z[3]); dotlabel.rt ("case 2", z[4]); dotlabel.rt ("case 3", z[5]); dotlabel.rt ("default", z[6]); dotlabel.rt ("", z[7]); dotlabel.rt ("", z[12]); dotlabel.rt ("", z[13]); dotlabel.rt ("", z[14]); dotlabel.rt ("", z[15]); connect(z[0], z[1]); connect(z[1], z[2]); connect(z[2], z[3]); connect(z[3], z[4]); connect(z[4], z[5]); connect(z[5], z[6]); connect(z[2], z[12]); connect(z[3], z[13]); connect(z[4], z[14]); connect(z[5], z[15]); connect(z[12], z[7]); connect(z[13], z[7]); connect(z[14], z[7]); connect(z[15], z[7]); connect(z[6], z[7]); label.rt (btex \color{blue}\small$0\le t \le 79$ etex, z[0]+(.2cm,-ystep/2)); label.rt (btex \color{blue}\small$t/20\not=0$ etex, z[2]+(.2cm,-ystep/2)); label.rt (btex \color{blue}\small$t/20\not=1$ etex, z[3]+(.2cm,-ystep/2)); label.rt (btex \color{blue}\small$t/20\not=2$ etex, z[4]+(.2cm,-ystep/2)); label.rt (btex \color{blue}\small$t/20\not=3$ etex, z[5]+(.2cm,-ystep/2)); % for the bounding box label ("", z[7]-(0cm,.1cm)); enddef; ystep = 1.0cm; beginfig (0) % Control flow graph of SHA example doall; endfig; beginfig (1) % Control flow graph of SHA example doall; connectred(z[0], z[1]); connectred(z[1], z[2]); connectred(z[2], z[3]); connectred(z[3], z[13]); connectred(z[13],z[7]); endfig; beginfig (2) % Control flow graph of SHA example doall; connectred(z[0], z[1]); connectred(z[1], z[2]); connectred(z[2], z[3]); connectred(z[3], z[4]); connectred(z[4], z[5]); connectred(z[5], z[6]); endfig; verbatimtex \end{document} etex end. cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/unrolling-cfg.mp000066400000000000000000000015071333451767700236740ustar00rootroot00000000000000input boxes vardef connect(suffix s, t)= drawarrow s..t cutbefore fullcircle scaled 3pt shifted s cutafter fullcircle scaled 3pt shifted t; drawdot s withpen pencircle scaled 3pt; drawdot t withpen pencircle scaled 3pt; enddef; ystep = 0.9cm; beginfig (0) % Control flow graph defaultscale:=9pt/fontsize defaultfont; z[1] = (1.2cm,3*ystep); z[2] = (0.4cm,2*ystep); z[3] = (2.0cm,2*ystep); z[4] = (1.2cm,1*ystep); label.top ("L1", z[1]+(0,.1cm)); dotlabel.top ("", z[1]); dotlabel.lft ("L2", z[2]); dotlabel.rt ("L3", z[3]); dotlabel.bot ("L4", z[4]); connect(z[1], z[2]); connect(z[1], z[3]); connect(z[2], z[4]); connect(z[3], z[4]); drawarrow z[4]..(3cm,ypart 0.5[z[4],z[1]])..z[1] cutbefore fullcircle scaled 3pt shifted z[4] cutafter fullcircle scaled 3pt shifted z[1]; endfig; end. cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/unrolling-full.mp000066400000000000000000000056131333451767700241010ustar00rootroot00000000000000input boxes vardef connect(suffix s, t)= drawarrow s..t cutbefore fullcircle scaled 3pt shifted s cutafter fullcircle scaled 3pt shifted t; drawdot s withpen pencircle scaled 3pt; drawdot t withpen pencircle scaled 3pt; enddef; ystep = 0.9cm; beginfig (0) % Control flow graph defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 4: z[s] = (1.2cm,s*ystep); endfor; dotlabel.ulft ("L1", z[4]); dotlabel.lft ("L2", z[3]); dotlabel.lft ("L3", z[2]); dotlabel.llft ("L4", z[1]); dotlabel.lft ("L5", z[0]); for s=0 step 1 until 3: connect (z[s+1],z[s]); endfor; drawarrow (z[4] shifted (0,0.3cm))..z[4] cutafter fullcircle scaled 3pt shifted z[4]; drawarrow z[3]..(2.2cm,ypart z[3])..z[3] cutbefore fullcircle scaled 3pt shifted z[3] cutafter fullcircle scaled 3pt shifted z[3]; endfig; beginfig (1) % FSOFT unrolling defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 6: for t=1 step 1 until 5: z[5*s+t]=(t*1cm,s*ystep); draw z[5*s+t] withcolor 0.5white withpen pencircle scaled 3pt; % if ((t=3) and ((s=4) or (s=2) or (s=0))): % label.urt ("L"&decimal t, z[5*s+t]) withcolor 0.5white; % elseif ((s=6) and (t=2)): % label.lft ("L"&decimal t, z[5*s+t]) withcolor 0.5white; % else: label.llft ("L"&decimal t, z[5*s+t]) withcolor 0.5white; % fi; endfor; label.lft ("#"&decimal (6-s), (0, s*ystep)); if (not (s=6)): draw (0,(ystep/2)+(s)*ystep)..(5.5cm,(ystep/2)+(s)*ystep) dashed evenly; fi; endfor % drawarrow (z[5*6+1] shifted (0,0.3cm))..z[5*6+1] cutafter fullcircle scaled 3pt shifted z[5*6+1]; connect (z[5*6+1], z[5*5+2]); label.llft ("L1", z[5*6+1]); label.llft ("L2", z[5*5+2]); connect (z[5*5+2], z[5*4+3]); label.llft ("L3", z[5*4+3]); connect (z[5*4+3], z[5*3+4]); label.llft ("L4", z[5*3+4]); connect (z[5*3+4], z[5*2+5]); label.llft ("L5", z[5*2+5]); connect (z[5*5+2], z[5*4+2]); label.llft ("L2", z[5*4+2]); connect (z[5*4+2], z[5*3+3]); label.llft ("L3", z[5*3+3]); connect (z[5*3+3], z[5*2+4]); label.llft ("L4", z[5*2+4]); connect (z[5*2+4], z[5*1+5]); label.llft ("L5", z[5*1+5]); connect (z[5*4+2], z[5*3+2]); label.llft ("L2", z[5*3+2]); connect (z[5*3+2], z[5*2+3]); label.llft ("L3", z[5*2+3]); connect (z[5*2+3], z[5*1+4]); label.llft ("L4", z[5*1+4]); connect (z[5*1+4], z[5*0+5]); label.llft ("L5", z[5*0+5]); connect (z[5*3+2], z[5*2+2]); label.llft ("L2", z[5*2+2]); connect (z[5*2+2], z[5*1+3]); label.llft ("L3", z[5*1+3]); connect (z[5*1+3], z[5*0+4]); label.llft ("L4", z[5*0+4]); connect (z[5*2+2], z[5*1+2]); label.llft ("L2", z[5*1+2]); connect (z[5*1+2], z[5*0+3]); label.llft ("L3", z[5*0+3]); connect (z[5*1+2], z[5*0+2]); label.llft ("L2", z[5*0+2]); % draw z[5*0+3]..(z[5*0+3] shifted (-0.5cm,-(ystep/3))) dashed withdots scaled 0.5; % draw z[5*0+3]..(z[5*0+3] shifted (0.5cm,-(ystep/3))) dashed withdots scaled 0.5; endfig; end. cbmc-cbmc-5.10/doc/slides/cbmc-latex-beamer/unrolling.mp000066400000000000000000000121201333451767700231300ustar00rootroot00000000000000input boxes vardef connect(suffix s, t)= drawarrow s..t cutbefore fullcircle scaled 3pt shifted s cutafter fullcircle scaled 3pt shifted t; drawdot s withpen pencircle scaled 3pt; drawdot t withpen pencircle scaled 3pt; enddef; vardef connectred(suffix s, t)= drawarrow s..t cutbefore fullcircle scaled 3pt shifted s cutafter fullcircle scaled 3pt shifted t withcolor red; drawdot s withpen pencircle scaled 3pt withcolor red; drawdot t withpen pencircle scaled 3pt withcolor red; enddef; ystep = 0.9cm; beginfig (0) % Control flow graph defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 4: z[s] = (1.2cm,s*ystep); endfor; dotlabel.ulft ("L1", z[4]); dotlabel.lft ("L2", z[3]); dotlabel.lft ("L3", z[2]); dotlabel.llft ("L4", z[1]); dotlabel.lft ("L5", z[0]); for s=0 step 1 until 3: connect (z[s+1],z[s]); endfor; drawarrow (z[4] shifted (0,0.3cm))..z[4] cutafter fullcircle scaled 3pt shifted z[4]; drawarrow z[4]..(0.2cm,ypart 0.5[z[4],z[1]])..z[1] cutbefore fullcircle scaled 3pt shifted z[4] cutafter fullcircle scaled 3pt shifted z[1]; drawarrow z[2]{right}..(2cm,ypart 0.5[z[2],z[3]])..{left}z[3] cutbefore fullcircle scaled 3pt shifted z[2] cutafter fullcircle scaled 3pt shifted z[3]; endfig; beginfig (1) % FSOFT unrolling defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 6: for t=1 step 1 until 5: z[5*s+t]=(t*1cm,s*ystep); draw z[5*s+t] withcolor 0.5white withpen pencircle scaled 3pt; if ((t=3) and ((s=4) or (s=2) or (s=0))): label.urt ("L"&decimal t, z[5*s+t]) withcolor 0.5white; elseif ((s=6) and (t=2)): label.lft ("L"&decimal t, z[5*s+t]) withcolor 0.5white; else: label.llft ("L"&decimal t, z[5*s+t]) withcolor 0.5white; fi; endfor; label.lft ("#"&decimal (6-s), (0, s*ystep)); if (not (s=6)): draw (0,(ystep/2)+(s)*ystep)..(5.5cm,(ystep/2)+(s)*ystep) dashed evenly; fi; endfor drawarrow (z[5*6+1] shifted (0,0.3cm))..z[5*6+1] cutafter fullcircle scaled 3pt shifted z[5*6+1]; connect (z[5*6+1], z[5*5+2]); label.llft ("L1", z[5*6+1]); label.llft ("L2", z[5*5+2]); connect (z[5*6+1], z[5*5+4]); label.llft ("L4", z[5*5+4]); connect (z[5*5+2], z[5*4+3]); label.urt ("L3", z[5*4+3]); connect (z[5*5+4], z[5*4+5]); label.llft ("L5", z[5*4+5]); connect (z[5*4+3], z[5*3+2]); label.llft ("L2", z[5*3+2]); connect (z[5*4+3], z[5*3+4]); label.llft ("L4", z[5*3+4]); connect (z[5*3+2], z[5*2+3]); label.urt ("L3", z[5*2+3]); connect (z[5*3+4], z[5*2+5]); label.llft ("L5", z[5*2+5]); connect (z[5*2+3], z[5*1+2]); label.llft ("L2", z[5*1+2]); connect (z[5*2+3], z[5*1+4]); label.llft ("L4", z[5*1+4]); connect (z[5*1+2], z[5*0+3]); label.urt ("L3", z[5*0+3]); connect (z[5*1+4], z[5*0+5]); label.llft ("L5", z[5*0+5]); draw z[5*0+3]..(z[5*0+3] shifted (-0.5cm,-(ystep/3))) dashed withdots scaled 0.5; draw z[5*0+3]..(z[5*0+3] shifted (0.5cm,-(ystep/3))) dashed withdots scaled 0.5; endfig; beginfig (2) % CBMC unrolling defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 6: z[s]=(1.5cm,s*ystep); label.lft ("#"&decimal (6-s), (0, s*ystep)); if (not (s=6)): draw (0,(ystep/2)+(s)*ystep)..(2.5cm,(ystep/2)+(s)*ystep) dashed evenly; fi; endfor; drawarrow (z[6] shifted (0,0.3cm))..z[6] cutafter fullcircle scaled 3pt shifted z[6]; dotlabel.ulft ("L1", z[6]); dotlabel.lft ("L2", z[5]); dotlabel.lft ("L3", z[4]); dotlabel.lft ("L2", z[3]); dotlabel.lft ("L3", z[2]); dotlabel.llft ("L4", z[1]); dotlabel.lft ("L5", z[0]); drawarrow z[6]..(0.2cm,ypart 0.5[z[6],z[1]])..z[1] cutbefore fullcircle scaled 3pt shifted z[6] cutafter fullcircle scaled 3pt shifted z[1]; for s=0 step 1 until 5: connect (z[s+1], z[s]); endfor; drawarrow z[4]..(2.3cm,ypart 0.5[z[4],z[1]])..z[1] cutbefore fullcircle scaled 3pt shifted z[4] cutafter fullcircle scaled 3pt shifted z[1]; draw z[0]..(z[0] shifted (0,-(ystep/3))) dashed withdots scaled 0.5 withcolor white; endfig; beginfig (3) % Basic unrolling defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 6: for t=1 step 1 until 5: z[5*s+t]=(t*1cm,s*ystep); draw z[5*s+t] withcolor black withpen pencircle scaled 3pt; label.llft ("L"&decimal t, z[5*s+t]) withcolor black; endfor; label.lft ("#"&decimal (6-s), (0, s*ystep)); if (not (s=6)): draw (0,(ystep/2)+(s)*ystep)..(5.5cm,(ystep/2)+(s)*ystep) dashed evenly; fi; endfor endfig; beginfig (4) % Basic unrolling with a path defaultscale:=9pt/fontsize defaultfont; for s=0 step 1 until 6: for t=1 step 1 until 5: z[5*s+t]=(t*1cm,s*ystep); draw z[5*s+t] withcolor black withpen pencircle scaled 3pt; label.llft ("L"&decimal t, z[5*s+t]) withcolor black; endfor; label.lft ("#"&decimal (6-s), (0, s*ystep)); if (not (s=6)): draw (0,(ystep/2)+(s)*ystep)..(5.5cm,(ystep/2)+(s)*ystep) dashed evenly; fi; endfor for s=1 step 1 until 5: connectred (z[5*(s+1)+1], z[5*s+1]); endfor; for s=2 step 1 until 5: connectred (z[5*(s+1)+6-s], z[5*s+7-s]); endfor; endfig; end. cbmc-cbmc-5.10/doc/slides/cprover-overview-latex-beamer/000077500000000000000000000000001333451767700232055ustar00rootroot00000000000000cbmc-cbmc-5.10/doc/slides/cprover-overview-latex-beamer/cprover-overview-slides.tex000066400000000000000000000127631333451767700305450ustar00rootroot00000000000000\input{header} \title{CPROVER Overview} \date{Version 1.0, 2013} \begin{document} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \frame[plain]{\titlepage} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ %\begin{frame} %\frametitle{Outline} %\setcounter{tocdepth}{1} %\tableofcontents %\setcounter{tocdepth}{2} %\end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{High-level View} \begin{center} \begin{tikzpicture}[node distance=2cm] \node[rectangle,fill=tabutter!25!white, align=center] (n0) { Language \\ Front-end }; \node[rectangle,fill=tabutter!25!white] (n1) [below of=n0] { Goto-binary }; \node[rectangle,fill=taplum!50!white] (engine) [right of=n1,xshift=1.5cm,yshift=1cm] { \begin{minipage}{1.8cm} \centering Analysis Engine \end{minipage}}; \node (pass) [right of=n0,xshift=6cm] { \begin{minipage}{3cm} ~\\\mycheck~~Pass \end{minipage} }; \node (fail) [right of=n1,xshift=6cm] { \begin{minipage}{3cm} \myfail~~Fail \\ \small + Counterexample \end{minipage} }; \draw[->,thick] (n0) -- (engine); \draw[->,thick] (n1) -- (engine); \draw[->,thick] (engine) -- (pass); \draw[->,thick] (engine) -- (fail); \end{tikzpicture} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Front-Ends for Asynchronous Languages} \begin{center} \begin{tikzpicture} \node[rectangle,fill=tabutter!25!white] (n0) { ANSI-C }; \node[rectangle,fill=tabutter!25!white] (n1) [below of=n0] { C++ }; \node[rectangle,fill=tabutter!25!white,align=center] (n2) [below of=n1] { Java\\ Bytecode }; \node[rectangle,fill=tabutter!50!white,align=center] (pt1) [right of=n0,xshift=1.2cm,yshift=-0.5cm] { parse-\\tree }; \node[rectangle,fill=tabutter,align=center] (cfg) [right of=n1,xshift=4cm] { Control-Flow\\ Graph \\ \small (goto program) }; \draw[->] (n0) -- (pt1); \draw[->] (n1) -- (pt1); \draw[->] (pt1) -- (cfg); \draw[->] (n2) -- (cfg); \end{tikzpicture} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Analysis Engines for Software} \begin{center} \begin{tikzpicture}[node distance=1.2cm] \node[rectangle,fill=tabutter] (cfg) { \begin{minipage}{3cm} \centering Control-Flow Graph \\ \small (goto program) \end{minipage}}; \node[rectangle,fill=taplum!10!white] (engines) [right of=cfg,xshift=4cm] { \begin{tikzpicture} \node[rectangle,text=white,fill=ta3plum] (engine1) [right of=cfg,xshift=2.5cm] { $k$-induction }; \node[rectangle,text=white,fill=ta3plum] (engine2) [below of=engine1] { BMC }; \node[rectangle,text=white,fill=ta3plum,align=center] (engine3) [below of=engine2] { Abstract \\ Interpretation }; \node[rectangle,text=white,fill=ta3plum] (engine4) [above of=engine1] { Impact }; \node[rectangle,text=white,fill=ta3plum,align=center] (engine5) [above of=engine4] { Predicate \\ Abstraction }; \node (enginetext) [below of=engine3] { \small analysis engine }; \node[rectangle,fill=tachameleon!25!white] (solvers) [right of=engine4,xshift=2cm,yshift=-0.5cm] {\begin{tikzpicture}[node distance=0.75cm] \node[rectangle,fill=tachameleon!50!white] (sat) { SAT }; \node[rectangle,fill=tachameleon!50!white] (smt1) [below of=sat] { SMT1 }; \node[rectangle,fill=tachameleon!50!white] (smt2) [below of=smt1] { SMT2 }; \node (decproc) [below of=smt2] { \tiny decision procedure }; \end{tikzpicture}}; \draw[<->] (engine1) -- (solvers); \draw[<->] (engine2) -- (solvers); \draw[<->] (engine4) -- (solvers); \draw[<->] (engine5) -- (solvers); \end{tikzpicture}}; \draw[->] (cfg) -- (engines); \end{tikzpicture} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \begin{frame} \frametitle{Front-Ends for Synchronous Languages} \begin{center} \begin{tikzpicture} \node[rectangle,fill=taskyblue!25!white] (n3) [below of=n2,yshift=-1cm] { Verilog }; \node[rectangle,fill=taskyblue!25!white] (n4) [below of=n3] { SMV }; \node[rectangle,fill=taskyblue!50!white,align=center] (pt2) [right of=n3,xshift=1.2cm,yshift=-0.5cm] { parse-\\tree }; \node[rectangle,fill=taskyblue,align=center] (tr) [right of=pt2,xshift=1.75cm] { transition \\ system }; \draw[->] (n3) -- (pt2); \draw[->] (n4) -- (pt2); \draw[->] (pt2) -- (tr); \end{tikzpicture} \end{center} \end{frame} % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ % ------------------------------------------------------------------------ \end{document} cbmc-cbmc-5.10/doc/slides/cprover-overview-latex-beamer/header.tex000066400000000000000000000075661333451767700251750ustar00rootroot00000000000000\documentclass{beamer} %\documentclass[handout]{beamer} \pdfcompresslevel9 \usepackage{graphicx} \usepackage{epic} \usepackage{epsfig} \usepackage{eepicemu} \usepackage{color} \usepackage{alltt} \usepackage{cancel} \usepackage{hhline} \usepackage{amssymb} \usepackage{verbatim} \usepackage{boxedminipage} \usepackage{listings} \usepackage{helvet} \usepackage{pgf} \usepackage{tikz} \usepackage{xspace} \usepackage{dsfont} \usepackage[noend]{algorithmic} \usepackage{mathrsfs} \usepackage{pifont} \hypersetup{% pdftitle={\inserttitle},% pdfauthor={\insertauthor},% pdfsubject={},% pdfkeywords={}% } \DeclareGraphicsExtensions{.pdftex,.png,.pdf,.jpg} \DeclareGraphicsRule{.pdftex}{pdf}{*}{} \begin{lrbox}{2233} \begin{picture}(0,0) %\put(300,-20){\includegraphics[width=2cm]{cbmc-logo-medium}} \end{picture} \end{lrbox} %\institute[]{\includegraphics{cbmc-logo-medium}} \usetheme{boxes} \usefonttheme[stillsansseriftext,stillsansserifsmall]{serif} \setbeamerfont{frametitle}{size=\large,series=\bfseries,shape=\sf} \addfootbox{structure}{\,\sf{\bf \insertshorttitle} -- \href{http://www.cprover.org/}{http://www.cprover.org/}\hfill\insertframenumber\,} \addheadbox{structure}{\usebox{2233}} \renewcommand{\implies}{\Rightarrow} \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% % COLORS % butter (yellowish) \definecolor{tabutter}{rgb}{0.98824, 0.91373, 0.30980} % #fce94f \definecolor{ta2butter}{rgb}{0.92941, 0.83137, 0} % #edd400 \definecolor{ta3butter}{rgb}{0.76863, 0.62745, 0} % #c4a000 % orange \definecolor{taorange}{rgb}{0.98824, 0.68627, 0.24314} % #fcaf3e \definecolor{ta2orange}{rgb}{0.96078, 0.47451, 0} % #f57900 \definecolor{ta3orange}{rgb}{0.80784, 0.36078, 0} % #ce5c00 % chocolate (brownish) \definecolor{tachocolate}{rgb}{0.91373, 0.72549, 0.43137} % #e9b96e \definecolor{ta2chocolate}{rgb}{0.75686, 0.49020, 0.066667} % #c17d11 \definecolor{ta3chocolate}{rgb}{0.56078, 0.34902, 0.0078431} % #8f5902 % chameleon (greenish) \definecolor{tachameleon}{rgb}{0.54118, 0.88627, 0.20392} % #8ae234 \definecolor{ta2chameleon}{rgb}{0.45098, 0.82353, 0.086275} % #73d216 \definecolor{ta3chameleon}{rgb}{0.30588, 0.60392, 0.023529} % #4e9a06 % sky blue \definecolor{taskyblue}{rgb}{0.44706, 0.56078, 0.81176} % #728fcf \definecolor{ta2skyblue}{rgb}{0.20392, 0.39608, 0.64314} % #3465a4 \definecolor{ta3skyblue}{rgb}{0.12549, 0.29020, 0.52941} % #204a87 % plum (violettish) \definecolor{taplum}{rgb}{0.67843, 0.49804, 0.65882} % #ad7fa8 \definecolor{ta2plum}{rgb}{0.45882, 0.31373, 0.48235} % #75507b \definecolor{ta3plum}{rgb}{0.36078, 0.20784, 0.4} % #5c3566 % scarlet red \definecolor{tascarletred}{rgb}{0.93725, 0.16078, 0.16078} % #ef2929 \definecolor{ta2scarletred}{rgb}{0.8, 0, 0} % #cc0000 \definecolor{ta3scarletred}{rgb}{0.64314, 0, 0} % #a40000 % aluminium \definecolor{taaluminium}{rgb}{0.93333, 0.93333, 0.92549} % #eeeeec \definecolor{ta2aluminium}{rgb}{0.82745, 0.84314, 0.81176} % #d3d7cf \definecolor{ta3aluminium}{rgb}{0.72941, 0.74118, 0.71373} % #babdb6 % gray \definecolor{tagray}{rgb}{0.53333, 0.54118, 0.52157} % #888a85 \definecolor{ta2gray}{rgb}{0.33333, 0.34118, 0.32549} % #555753 \definecolor{ta3gray}{rgb}{0.18039, 0.20392, 0.21176} % #2e3436 % gray \definecolor{tagray}{rgb}{0.53333, 0.54118, 0.52157} % #888a85 \usecolortheme[named=ta3skyblue]{structure} \setbeamercolor{block body}{fg=black,bg=ta3skyblue!10} \setbeamercolor{block title}{fg=black,bg=ta3skyblue!30} \mode{\setbeamercolor{block body}{fg=black,bg=white!90!black}} \mode{\setbeamercolor{block title}{fg=black,bg=white!70!black}} \newcommand{\RETURN}{\STATE \textbf{return}~} %\renewcommand{\ENDIF}{} \newcommand{\power}[1]{\mathscr P({#1})} \newcommand{\mycheck}{{\color{ta3chameleon}\ding{52}}} \newcommand{\myfail}{{\color{ta3scarletred}\ding{56}}} cbmc-cbmc-5.10/gcloud-travis-cbmc.json.enc000066400000000000000000000044401333451767700204130ustar00rootroot00000000000000Salted__Je&q{v 4ƾn+'L#ym6V)8%r娪W'eq[!Jc1L TD"c:+PŨ i-+VY*OcvlSKw|'nA񡕲P5*2r°*aPLB2?Fir20 ռ^lCo4KX`Yo˒#f'UH;k>MoיtKǢȨ:3*c]RUlmƻ`7-"4:@o_lrpC*"9kmEf虐Xh4d9ky( K(Hs:2&0z5 'v"Z>YJ*z,}٫;vxTڸyǩFS2'ySeJ)8 x3A{~4G@- ~**Mw%=J{OI_`oiM(rTizڿ+xJMqKR٬Hdp6;E%j7ў2bcΌ?PןJXcV~f󻕥eI+t4`#փ`'5-dJz 9`A!g"}=s[Afٕerkmka"M7DG*+?c$w6A' 19~8UgWaC MAL [Vx T喏Yшe~KDyRaspj<H%J453hQ/`B.޲L_ےME?_U߻KRQI]UcpFuψyDt,JڃK)E遾M_F7m}|+؅+1< %KߍX)$$|]3tUM7h?#f$kxQCg#z?8@U4wFBb8IHe(OO$BUZҀOfvtPwi,G;dtI\aeu" 7׽fVv>`nآD8;|т4Zĉ V҉IGRwWvq=Δ{/ }Wlb$#9&{$c *[* &_ Mځy[B[߽i[H6?X4iue_ėjM ?_%= (A.pl,`f|\VVt NxV49 a3qK4gQr(N6F?쓑kԖWZ?B~2Fnhr/K1> qz1v?5U\_w$N|R 'gbsc!lE㏥|fDڲyїͨՙ[~t^RջGe0UgԄZZo r.1Gtv(q ~:RrR$ZПnFzk \>EfwfX\9KUƂ[TD2F"?W)~o'"Ԭf;l*KRk.=ϏF^8 [;/`3q&7'cB\7g$a=r`=vb1 Q/leC" ) cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/Makefile000066400000000000000000000007441333451767700231410ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/janalyzer/janalyzer tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/janalyzer/janalyzer show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.java" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-aliasing1/000077500000000000000000000000001333451767700244615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-aliasing1/aliasing1.class000066400000000000000000000007051333451767700273620ustar00rootroot000000000000004   ()VCodeLineNumberTable my_method my_source()Ljava/lang/Object;my_sink(Ljava/lang/Object;)V SourceFilealiasing1.java  java/lang/Object  aliasing1 *  =KYL+*      Y    cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-aliasing1/aliasing1.java000066400000000000000000000004641333451767700272000ustar00rootroot00000000000000class aliasing1 { static void my_method() { Object my_o1=my_source(); Object my_o2=new Object(); my_sink(my_o2); // no flow, as my_o1 and my_o2 are not aliases my_sink(my_o1); // flow } static Object my_source() { return new Object(); } static void my_sink(Object p) { } }; cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-aliasing1/taint.json000066400000000000000000000004051333451767700264720ustar00rootroot00000000000000[ { "id": "my_source", "kind": "source", "where": "return_value", "taint": "T1", "function": "aliasing1.my_source" }, { "id": "my_sink", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "aliasing1.my_sink", "message": "There is a flow" } ] cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-aliasing1/test.desc000066400000000000000000000003731333451767700263030ustar00rootroot00000000000000CORE aliasing1.class --taint taint.json ^EXIT=0$ ^SIGNAL=0$ ^file aliasing1.java line 10( function .*)?: There is a flow \(taint rule my_sink\)$ -- ^file aliasing1.java line 8( function .*)?: There is a flow \(taint rule my_sink\)$ ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic1/000077500000000000000000000000001333451767700237535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic1/basic1.class000066400000000000000000000007611333451767700261500ustar00rootroot000000000000004    ()VCodeLineNumberTable my_methodmy_f(Ljava/lang/Object;)Vmy_hmy_g()Ljava/lang/Object; SourceFile basic1.java   java/lang/Objectbasic1  *   ?K**K*           Y cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic1/basic1.java000066400000000000000000000004601333451767700257600ustar00rootroot00000000000000class basic1 { static void my_method() { Object o=null; my_f(o); // T1 source my_h(o); // T1,T2 sink o=my_g(); // T2 source my_h(o); // T1,T2 sink } static void my_f(Object p) { } static void my_h(Object p) { } static Object my_g() { return new Object(); } }; cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic1/taint.json000066400000000000000000000007351333451767700257720ustar00rootroot00000000000000[ { "id": "my_f", "kind": "source", "where": "parameter1", "taint": "T1", "function": "basic1.my_f" }, { "id": "my_g", "kind": "source", "where": "return_value", "taint": "T2", "function": "basic1.my_g" }, { "id": "my_h1", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "basic1.my_h", "message": "There is a T1 flow" }, { "id": "my_h2", "kind": "sink", "where": "parameter1", "taint": "T2", "function": "basic1.my_h", "message": "There is a T2 flow" } ] cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic1/test.desc000066400000000000000000000003641333451767700255750ustar00rootroot00000000000000CORE basic1.class --taint taint.json ^EXIT=0$ ^SIGNAL=0$ ^file basic1.java line 8( function .*)?: There is a T1 flow \(taint rule my_h1\)$ ^file basic1.java line 11( function .*)?: There is a T2 flow \(taint rule my_h2\)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic2/000077500000000000000000000000001333451767700237545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic2/basic2.class000066400000000000000000000007651333451767700261560ustar00rootroot000000000000004    ()VCodeLineNumberTable my_methodmy_f(Ljava/lang/Object;)Vmy_hmy_g()Ljava/lang/Object; SourceFile basic2.java   java/lang/Objectbasic2  *   CL*+*+*L*+          Y cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic2/basic2.java000066400000000000000000000004241333451767700257620ustar00rootroot00000000000000class basic2 { void my_method() { Object o=null; my_f(o); // T1 source my_h(o); // T1,T2 sink o=my_g(); // T2 source my_h(o); // T1,T2 sink } void my_f(Object p) { } void my_h(Object p) { } Object my_g() { return new Object(); } }; cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic2/taint.json000066400000000000000000000007351333451767700257730ustar00rootroot00000000000000[ { "id": "my_f", "kind": "source", "where": "parameter1", "taint": "T1", "function": "basic2.my_f" }, { "id": "my_g", "kind": "source", "where": "return_value", "taint": "T2", "function": "basic2.my_g" }, { "id": "my_h1", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "basic2.my_h", "message": "There is a T1 flow" }, { "id": "my_h2", "kind": "sink", "where": "parameter1", "taint": "T2", "function": "basic2.my_h", "message": "There is a T2 flow" } ] cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-basic2/test.desc000066400000000000000000000003641333451767700255760ustar00rootroot00000000000000CORE basic2.class --taint taint.json ^EXIT=0$ ^SIGNAL=0$ ^file basic2.java line 8( function .*)?: There is a T1 flow \(taint rule my_h1\)$ ^file basic2.java line 11( function .*)?: There is a T2 flow \(taint rule my_h2\)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/000077500000000000000000000000001333451767700246325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/interface1.class000066400000000000000000000006501333451767700277030ustar00rootroot000000000000003    ()VCodeLineNumberTable my_methodmy_sink(Ljava/lang/Object;)V SourceFileinterface1.java   some_class   interface1java/lang/Object my_source()Ljava/lang/Object;   *   7YL+M*,     cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/interface1.java000066400000000000000000000004601333451767700275160ustar00rootroot00000000000000interface my_I { public Object my_source(); }; class some_class implements my_I { public Object my_source() { return new Object(); } }; class interface1 { void my_method() { some_class x1=new some_class(); Object o=x1.my_source(); my_sink(o); } void my_sink(Object p) { } }; cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/my_I.class000066400000000000000000000002121333451767700265510ustar00rootroot000000000000003  my_source()Ljava/lang/Object; SourceFileinterface1.javamy_Ijava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/some_class.class000066400000000000000000000004371333451767700300150ustar00rootroot000000000000003  ()VCodeLineNumberTable my_source()Ljava/lang/Object; SourceFileinterface1.java java/lang/Object some_classmy_I *  Y  cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/taint.json000066400000000000000000000004161333451767700266450ustar00rootroot00000000000000[ { "id": "source_rule", "kind": "source", "where": "return_value", "taint": "superT", "function": "my_I.my_source" }, { "id": "sink_rule", "kind": "sink", "where": "parameter1", "taint": "superT", "function": "interface1.my_sink", "message": "There is a flow!" } ] cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interface1/test.desc000066400000000000000000000002541333451767700264520ustar00rootroot00000000000000CORE interface1.class --taint taint.json ^EXIT=0$ ^SIGNAL=0$ ^file interface1.java line 18( function .*)?: There is a flow! \(taint rule sink_rule\)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interproc1/000077500000000000000000000000001333451767700246775ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interproc1/interproc1.class000066400000000000000000000007231333451767700300160ustar00rootroot000000000000004    ()VCodeLineNumberTable my_methodmy_g(Ljava/lang/Object;)Vmy_fmy_h SourceFileinterproc1.java     interproc1java/lang/Object  *   / K**    !*        cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interproc1/interproc1.java000066400000000000000000000003651333451767700276340ustar00rootroot00000000000000class interproc1 { static void my_method() { Object o=null; my_f(o); // T1 source my_g(o); } static void my_g(Object p) { my_h(p); // T1 sink } static void my_f(Object p) { } static void my_h(Object p) { } }; cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interproc1/taint.json000066400000000000000000000003671333451767700267170ustar00rootroot00000000000000[ { "id": "my_f", "kind": "source", "where": "parameter1", "taint": "T1", "function": "interproc1.my_f" }, { "id": "my_h1", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "interproc1.my_h", "message": "There is a T1 flow" } ] cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-interproc1/test.desc000066400000000000000000000002521333451767700265150ustar00rootroot00000000000000CORE interproc1.class --taint taint.json ^EXIT=0$ ^SIGNAL=0$ ^file interproc1.java line 13( function .*)?: There is a T1 flow \(taint rule my_h1\)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-map1/000077500000000000000000000000001333451767700234475ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-map1/map1.class000066400000000000000000000013111333451767700253300ustar00rootroot000000000000004)        ()VCodeLineNumberTable my_method my_source()Ljava/lang/Object;my_sink(Ljava/lang/Object;)V SourceFile map1.java java/util/HashMap ! "#$ %& '( java/lang/Objectmap1java/lang/IntegervalueOf(I)Ljava/lang/Integer; java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;get&(Ljava/lang/Object;)Ljava/lang/Object;   *  T(YKL*+W*M,  # '   Y cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-map1/map1.java000066400000000000000000000005321333451767700251500ustar00rootroot00000000000000class map1 { static void my_method() { java.util.Map my_map= new java.util.HashMap(); Object my_o1=my_source(); my_map.put(0, my_o1); Object my_o2=my_map.get(0); my_sink(my_o2); } static Object my_source() { return new Object(); } static void my_sink(Object p) { } }; cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-map1/taint.json000066400000000000000000000003731333451767700254640ustar00rootroot00000000000000[ { "id": "my_source", "kind": "source", "where": "return_value", "taint": "T1", "function": "map1.my_source" }, { "id": "my_sink", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "map1.my_sink", "message": "There is a flow" } ] cbmc-cbmc-5.10/jbmc/regression/janalyzer-taint/taint-map1/test.desc000066400000000000000000000002411333451767700252630ustar00rootroot00000000000000KNOWNBUG map1.class --taint taint.json ^EXIT=0$ ^SIGNAL=0$ ^file map1.java line 12( function .*)?: There is a flow \(taint rule my_sink\)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/000077500000000000000000000000001333451767700216235ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/CMakeLists.txt000066400000000000000000000000571333451767700243650ustar00rootroot00000000000000add_test_pl_tests( "$" ) cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/Makefile000066400000000000000000000015101333451767700232600ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.java" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log %.class: %.java ../../src/org.cprover.jar javac -g -cp ../../src/org.cprover.jar:. $< nondet_java_files := $(shell find . -name "Nondet*.java") nondet_class_files := $(patsubst %.java, %.class, $(nondet_java_files)) .PHONY: nondet-class-files nondet-class-files: $(nondet_class_files) .PHONY: clean-nondet-class-files clean-nondet-class-files: -rm $(nondet_class_files) cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/000077500000000000000000000000001333451767700267605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/A$1.class000066400000000000000000000012371333451767700303170ustar00rootroot000000000000004,      !"#%$assertionsDisabledZthis$0LA;(LA;)VCodeLineNumberTablerun()V StackMapTable SourceFileA.javaEnclosingMethod &   '( java/lang/AssertionErrorA) *+A$1 InnerClassesjava/lang/ThreadmexIjava/lang/ClassdesiredAssertionStatus()Z   " *+* b2*,*<,* Y 114  @$  cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/A$2.class000066400000000000000000000012241333451767700303140ustar00rootroot000000000000004,      !"#%$assertionsDisabledZthis$0LA;(LA;)VCodeLineNumberTablerun()V StackMapTable SourceFileA.javaEnclosingMethod &   '( java/lang/AssertionErrorA) *+A$2 InnerClassesjava/lang/Threadme2xIjava/lang/ClassdesiredAssertionStatus()Z   " *+*V&*,*<, Y !%"%4 @$  cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/A.class000066400000000000000000000007431333451767700301730ustar00rootroot000000000000004!      InnerClassesxI()VCodeLineNumberTablememe2 SourceFileA.java  A$1  A$2Ajava/lang/Object(LA;)Vjava/lang/Threadstart!   & ** 8Y*L+*   8Y*L+*  $ %& cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/A.java000066400000000000000000000011061333451767700300010ustar00rootroot00000000000000import java.lang.Thread; import org.cprover.CProver; public class A { int x = 0; // expected verfication success public void me() { Thread t = new Thread() { public void run() { x = 44; int local_x = x; assert(local_x == 44 || x == 10); } }; t.start(); x = 10; } // expected verfication failure public void me2() { Thread t = new Thread() { public void run() { x = 44; int local_x = x; assert(local_x == 44); } }; t.start(); x = 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/test.desc000066400000000000000000000003251333451767700305770ustar00rootroot00000000000000CORE A.class --function 'A.me:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/anonymous-java.lang.thread/test2.desc000066400000000000000000000003111333451767700306540ustar00rootroot00000000000000CORE A.class --function 'A.me2:()V' --lazy-methods --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^SIGNAL=0$ ^VERIFICATION FAILED$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/explicit-thread-blocks/000077500000000000000000000000001333451767700261645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/explicit-thread-blocks/A.class000066400000000000000000000021751333451767700274000ustar00rootroot000000000000004.     !" # $%&xI$assertionsDisabledZ()VCodeLineNumberTableme StackMapTableme2me3me4me5 SourceFileA.java  ' () *) java/lang/AssertionErrorA+ ,-java/lang/Objectorg/cprover/CProver startThread(I)V endThreadjava/lang/ClassdesiredAssertionStatus()Z!   *h3M M Y  22a,M M Y ++a,W= M Y!" #$%+&+b* <W= YM+, - .#/)0#EM޸޸M  Y"56 789:!;D<D<   @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/explicit-thread-blocks/A.java000066400000000000000000000022721333451767700272120ustar00rootroot00000000000000import java.lang.Thread; import org.cprover.CProver; public class A { static int x = 0; // verification success public void me() { x = 5; CProver.startThread(333); x = 10; CProver.endThread(333); assert(x == 5 || x == 10); } // verification failed public void me2() { x = 5; CProver.startThread(333); x = 10; CProver.endThread(333); assert(x == 10); } // Known-bug, thread id mismatch, this should be detected by the conversation // process. It is currently not and thus will result in an assertion violation // during symbolic execution. public void me3() { x = 5; CProver.startThread(22333); x = 10; CProver.endThread(333); assert(x == 10); } // Known-bug, see: https://github.com/diffblue/cbmc/issues/1630 public void me4() { int x2 = 10; CProver.startThread(22333); x = x2; assert(x == 10); CProver.endThread(333); } // Known-bug, symex cannot handle nested thread-blocks public void me5() { CProver.startThread(333); x = 5; CProver.startThread(222); x = 8; CProver.endThread(222); CProver.endThread(333); assert(x == 5 || x == 0 || x == 8); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/explicit-thread-blocks/test.desc000066400000000000000000000001601333451767700300000ustar00rootroot00000000000000CORE A.class --function 'A.me:()V' --lazy-methods --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/explicit-thread-blocks/test2.desc000066400000000000000000000001441333451767700300640ustar00rootroot00000000000000CORE A.class --function 'A.me2:()V' --lazy-methods --java-threading ^SIGNAL=0$ ^VERIFICATION FAILED cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/000077500000000000000000000000001333451767700253275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/A.class000066400000000000000000000026051333451767700265410ustar00rootroot000000000000004H * +, -. * +/ +0 1 2 34 *5 6 78 * 79 :;<gI$assertionsDisabledZ()VCodeLineNumberTableme StackMapTableme_bugme2me3me4me5me6check SourceFileA.java = >? java/lang/AssertionError @A BA  & Bjava/lang/Thread C DCAE FGjava/lang/Objectorg/cprover/CProvergetCurrentThreadID()I startThread(I)V endThread(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z!  *C< Y    V"M< YM!!Y(M YM !!"'#!"Z&M< YM*+ ,-%.#5M* M34 56$B* Y L Y+M,;< =>?%5* YL+DE FG&E YKLM'4 @()cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/A.java000066400000000000000000000040571333451767700263600ustar00rootroot00000000000000import java.lang.Thread; import org.cprover.CProver; public class A { public static int g; // expected verification success public void me() { int g = CProver.getCurrentThreadID(); assert(g == 0); } // expected verification success // -- // KNOWNBUG // --- // For some reason symex assigns 'g' to zero, even though // the only viable assignment should be one. // This issue seems to only occur when a variable is // assigned inside the local scope of a thread-block. // // If instead, we call a function from inside the thread-block and // then assign 'g' to 1 then as expected the only viable // assignment to 'g' is 1 (see 'me4') // // Seems related to: https://github.com/diffblue/cbmc/issues/1630/ public void me_bug() { CProver.startThread(333); int g = 1; assert(g == 1); CProver.endThread(333); } // expected verification success // -- // KNOWNBUG: see me_bug() public void me2() { CProver.startThread(333); g = CProver.getCurrentThreadID(); assert(g == 1); CProver.endThread(333); } // expected verification success // -- // KNOWNBUG: see me_bug() public void me3() { CProver.startThread(333); int i = CProver.getCurrentThreadID(); assert(g == 1); CProver.endThread(333); } // expected verification success. public void me4() { CProver.startThread(333); check(); CProver.endThread(333); } // expected verification success. public void me5() { me(); B b = new B(); Thread tmp = new Thread(b); tmp.start(); } // expected verification success. public void me6() { me(); C c = new C(); c.start(); } public void check() { g = CProver.getCurrentThreadID(); assert(g == 1); } } class B implements Runnable { public static int g; @Override public void run() { g = CProver.getCurrentThreadID(); assert(g == 1); } } class C extends Thread { public static int g; @Override public void run() { g = CProver.getCurrentThreadID(); assert(g == 1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/B.class000066400000000000000000000011451333451767700265400ustar00rootroot000000000000004)       !"gI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTable SourceFileA.java # $% java/lang/AssertionErrorB& '(java/lang/Objectjava/lang/Runnableorg/cprover/CProvergetCurrentThreadID()Ijava/lang/ClassdesiredAssertionStatus()Z     *PE YVWX4P @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/C.class000066400000000000000000000011131333451767700265340ustar00rootroot000000000000004'       gI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTable SourceFileA.java ! "# java/lang/AssertionErrorC$ %&java/lang/Threadorg/cprover/CProvergetCurrentThreadID()Ijava/lang/ClassdesiredAssertionStatus()Z    *\E Ybcd4\ @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test.desc000066400000000000000000000003241333451767700271450ustar00rootroot00000000000000CORE A.class --function 'A.me:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test2.desc000066400000000000000000000004031333451767700272250ustar00rootroot00000000000000KNOWNBUG A.class --function 'A.me2:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL -- -- Same bug as the one highlighted in 'test_bug.desc' cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test3.desc000066400000000000000000000004031333451767700272260ustar00rootroot00000000000000KNOWNBUG A.class --function 'A.me3:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL -- -- Same bug as the one highlighted in 'test_bug.desc' cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test4.desc000066400000000000000000000003251333451767700272320ustar00rootroot00000000000000CORE A.class --function 'A.me4:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test5.desc000066400000000000000000000003251333451767700272330ustar00rootroot00000000000000CORE A.class --function 'A.me5:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test6.desc000066400000000000000000000003251333451767700272340ustar00rootroot00000000000000CORE A.class --function 'A.me6:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/get-current-thread/test_bug.desc000066400000000000000000000011721333451767700300040ustar00rootroot00000000000000KNOWNBUG A.class --function 'A.me_bug:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL -- -- For some reason symex assigns 'g' to zero, even though the only viable assignment should be one. This issue seems to only occur when a variable is assigned inside the local scope of a thread-block. If instead, we call a function from inside the thread-block and then assign 'g' to 1 then as expected the only viable assignment to 'g' is 1 (see test4.desc) Seems related to: https://github.com/diffblue/cbmc/issues/1630/ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/000077500000000000000000000000001333451767700252675ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/A.class000066400000000000000000000011311333451767700264720ustar00rootroot000000000000004%         !()VCodeLineNumberTableme3me4me2me SourceFileA.java Cjava/lang/Thread " # $B Ajava/lang/Object(Ljava/lang/Runnable;)VstartsetX! *BYLY+M,+    :Y LY+M,- Y L+  - YL+ #$ %cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/A.java000066400000000000000000000023251333451767700263140ustar00rootroot00000000000000// JBMC, concurrency tests that make use of // the java.lang.Runnable model import java.lang.Thread; import org.cprover.CProver; public class A { // calling start from outside. // expected verfication success. public void me3() { C c = new C(); Thread tmp = new Thread(c); tmp.start(); c.setX(); } // calling start from outside, no race-condition on B.x // expected verfication success. public void me4() { B b = new B(); Thread tmp = new Thread(b); tmp.start(); } // expected verfication failed public void me2() { B b = new B(); b.me(); } // expected verfication success. public void me() { C c = new C(); c.me(); } } class B implements Runnable { int x = 0; @Override public void run() { x = 44; int local_x = x; assert(local_x == 44); } public void me() { Thread tmp = new Thread(this); tmp.start(); x = 10; } } class C implements Runnable { int x = 0; @Override public void run() { x = 44; int local_x = x; assert(local_x == 44 || x == 10); } public void me() { Thread tmp = new Thread(this); tmp.start(); setX(); } public void setX() { x = 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/B.class000066400000000000000000000013221333451767700264750ustar00rootroot000000000000004,      !" #$%&xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTableme SourceFileA.java   java/lang/AssertionErrorjava/lang/Thread ' (B) *+java/lang/Objectjava/lang/Runnable(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z   & ** (*P *,*<, Y/0 128Y*L+* 6 7 894 ( @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/C.class000066400000000000000000000014331333451767700265010ustar00rootroot000000000000004/    ! " # $% &'()xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTablemesetX SourceFileA.java   java/lang/AssertionErrorjava/lang/Thread * + C, -.java/lang/Objectjava/lang/Runnable(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z  & ** =?Y)*,*<,* YDE F(G(6Y*L+* K L MN#*  RS4 = @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/test.desc000066400000000000000000000003241333451767700271050ustar00rootroot00000000000000CORE A.class --function 'A.me:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/test2.desc000066400000000000000000000003101333451767700271620ustar00rootroot00000000000000CORE A.class --function 'A.me2:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^SIGNAL=0$ ^VERIFICATION FAILED cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/test3.desc000066400000000000000000000003251333451767700271710ustar00rootroot00000000000000CORE A.class --function 'A.me4:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-runnable/test4.desc000066400000000000000000000003251333451767700271720ustar00rootroot00000000000000CORE A.class --function 'A.me3:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/000077500000000000000000000000001333451767700247305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/A.class000066400000000000000000000011311333451767700261330ustar00rootroot000000000000004%         !()VCodeLineNumberTableme4me3me2me SourceFileA.java Bjava/lang/Thread " #C $ Ajava/lang/Object(Ljava/lang/Runnable;)VstartsetX! *:YLY+M, BYLY+M,+ - YL+  !- YL+ &' (cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/A.java000066400000000000000000000023111333451767700257500ustar00rootroot00000000000000// JBMC, concurrency tests that make use of // the java.lang.Thread model import java.lang.Thread; import org.cprover.CProver; public class A { // calling start from outside, no race-condition on B.x // expected verfication success. public void me4() { B b = new B(); Thread tmp = new Thread(b); tmp.start(); } // calling start from outside. // expected verfication success. public void me3() { C c = new C(); Thread tmp = new Thread(c); tmp.start(); c.setX(); } // expected verfication failed public void me2() { B b = new B(); b.me(); } // expected verfication success. public void me() { C c = new C(); c.me(); } } class B extends Thread { int x = 0; @Override public void run() { x = 44; int local_x = x; assert(local_x == 44); } public void me() { Thread tmp = new Thread(this); tmp.start(); x = 10; } } class C extends Thread { int x = 0; @Override public void run() { x = 44; int local_x = x; assert(local_x == 44 || x == 10); } public void me() { Thread tmp = new Thread(this); tmp.start(); setX(); } public void setX() { x = 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/B.class000066400000000000000000000012421333451767700261370ustar00rootroot000000000000004(       !"xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTableme SourceFileA.java  java/lang/AssertionErrorjava/lang/Thread # $B% &'(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z   & ** +-P *,*<, Y23 458Y*L+* 9 : ;<4 + @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/C.class000066400000000000000000000013531333451767700261430ustar00rootroot000000000000004+      ! "# $%xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTablemesetX SourceFileA.java  java/lang/AssertionErrorjava/lang/Thread & ' C( )*(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z  & ** @BY)*,*<,* YGH I(J(6Y*L+* N O PQ#*  UV4 @ @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/test.desc000066400000000000000000000003251333451767700265470ustar00rootroot00000000000000CORE A.class --function 'A.me:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/test2.desc000066400000000000000000000003111333451767700266240ustar00rootroot00000000000000CORE A.class --function 'A.me2:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^SIGNAL=0$ ^VERIFICATION FAILED$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/test3.desc000066400000000000000000000003261333451767700266330ustar00rootroot00000000000000CORE A.class --function 'A.me4:()V' --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading --lazy-methods ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/java-lang-thread/test4.desc000066400000000000000000000003261333451767700266340ustar00rootroot00000000000000CORE A.class --function 'A.me3:()V' --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading --lazy-methods ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/000077500000000000000000000000001333451767700247145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/A.class000066400000000000000000000010041333451767700261160ustar00rootroot000000000000004#         ()VCodeLineNumberTablememe2me3 StackMapTable SourceFileA.java B CD ! "Ajava/lang/ObjectstartsetX! * - YK*  - YK* Y<Y M, ,  !# cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/A.java000066400000000000000000000033541333451767700257440ustar00rootroot00000000000000import java.lang.Thread; import org.cprover.CProver; public class A { // expected verification success public static void me() { B b = new B(); b.me(); } // expected verification failure public static void me2() { C c = new C(); c.me(); } // Create 2 Threads, no shared variables // expected verification success // // FIXME: attempting to create more threads will // currently result in an exponential blow-up // in the number of clauses. public void me3() { for(int i = 0; i<2; i++) { D d = new D(); d.start(); d.setX(); } } } class D extends Thread { int x = 0; @Override public void run() { x = 44; int local_x = x; assert(local_x == 44 || local_x == 10); } public void setX() { x = 10; } } class B implements Runnable { // FIXME: this assertion does not always hold as per the java spec (because x // is not volatile), but cbmc currently doesn't reason about java volatile // variables int x = 0; @Override public void run() { x += 1; int local_x = x; assert(local_x == 1 || local_x == 2 || local_x == 10 || local_x == 11 || local_x == 12); } // verification success public void me() { Thread t1 = new Thread(this); t1.start(); Thread t2 = new Thread(this); t2.start(); x = 10; } } class C implements Runnable { int x = 0; @Override public void run() { x += 1; int local_x = x; assert(local_x == 1 || local_x == 2); } // verification fails because the assertion does not account for the writes of // this thread public void me() { Thread t1 = new Thread(this); t1.start(); Thread t2 = new Thread(this); t2.start(); x = 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/B.class000066400000000000000000000014011333451767700261200ustar00rootroot000000000000004,      !" #$%&xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTableme SourceFileA.java   java/lang/AssertionErrorjava/lang/Thread ' (B) *+java/lang/Objectjava/lang/Runnable(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z   & ** 7<j:*Y`*<'"   Y@ AB9D9M!Y*L+Y*M,* I J KLM N4 7 @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/C.class000066400000000000000000000013571333451767700261330ustar00rootroot000000000000004,      !" #$%&xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTableme SourceFileA.java   java/lang/AssertionErrorjava/lang/Thread ' (C) *+java/lang/Objectjava/lang/Runnable(Ljava/lang/Runnable;)Vstartjava/lang/ClassdesiredAssertionStatus()Z   & ** QSX(*Y`*< YX YZ'['M!Y*L+Y*M,* a b cde f4 Q @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/D.class000066400000000000000000000011371333451767700261300ustar00rootroot000000000000004"     xI$assertionsDisabledZ()VCodeLineNumberTablerun StackMapTablesetX SourceFileA.java  java/lang/AssertionErrorD !java/lang/Threadjava/lang/ClassdesiredAssertionStatus()Z    & ** &(V&*,*<, Y-. /%0%#*  344& @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/test.desc000066400000000000000000000003161333451767700265330ustar00rootroot00000000000000CORE A.class --function A.me --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/test2.desc000066400000000000000000000003031333451767700266110ustar00rootroot00000000000000CORE A.class --function A.me2 --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^SIGNAL=0$ ^VERIFICATION FAILED$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/several-threads/test3.desc000066400000000000000000000003331333451767700266150ustar00rootroot00000000000000CORE A.class --function A.me3 --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading --unwind 3 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-illegal-state/000077500000000000000000000000001333451767700303425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-illegal-state/Sync.class000066400000000000000000000012011333451767700322770ustar00rootroot000000000000004$    $assertionsDisabledZ()VCodeLineNumberTablef StackMapTable  SourceFile Sync.java &java/lang/IllegalMonitorStateException java/lang/AssertionErrorSync! "#java/lang/Objectjava/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   *  !*YL+çM+,L Y   B  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-illegal-state/Sync.j000066400000000000000000000006521333451767700314340ustar00rootroot00000000000000.class public Sync .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f()V Start: aload_0 monitorexit End: new java/lang/AssertionError dup invokespecial java/lang/AssertionError/()V athrow return Handle: return .catch java/lang/IllegalMonitorStateException from Start to End using Handle .end method cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-illegal-state/test.desc000066400000000000000000000007611333451767700321650ustar00rootroot00000000000000KNOWNBUG Sync.class --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring -- Note: requires jasmin to compile the bytecode instructions This checks that an extra monitorexit will always trigger an IllegalMonitorException. This is currently not working as explicit throws have been removed from the underlying model due to performance considerations. cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-null-throw/000077500000000000000000000000001333451767700277265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-null-throw/Sync.class000066400000000000000000000012721333451767700316730ustar00rootroot000000000000004&     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable! " SourceFile Sync.java java/lang/AssertionErrorjava/lang/NullPointerExceptionSync# $%java/lang/Object[Ljava/lang/String;java/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   *  $L+YM,çN,- YM  ! !" #   B  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-null-throw/Sync.java000066400000000000000000000003251333451767700315050ustar00rootroot00000000000000public class Sync { public static void main(String[] args) { final Object o=null; try { synchronized (o) {} assert false; } catch (NullPointerException e) { return; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-null-throw/test.desc000066400000000000000000000006131333451767700315450ustar00rootroot00000000000000KNOWNBUG Sync.class --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring -- This checks that the synchronized keyword on a null object will always throw. This is currently not working as explicit throws have been removed from the underlying model due to performance considerations. cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-throw/000077500000000000000000000000001333451767700267565ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-throw/Sync.class000066400000000000000000000017011333451767700307200ustar00rootroot0000000000000045 !" ! # $% &' ! $() !* +,-fieldI$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable"-*) SourceFile Sync.java Sync . /0 java/lang/AssertionError 12java/lang/RuntimeExceptionjava/lang/Throwable3 42java/lang/Objectorg/cprover/CProvergetMonitorCount(Ljava/lang/Object;)I nondetBoolean()Zjava/lang/ClassdesiredAssertionStatus!* YL++YM+ Y Y +Y`,çN,-M+Y`M+ Y+ YADDGDIL IZ B  '-5?ILMWZ[q ' NBM4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-throw/Sync.java000066400000000000000000000012441333451767700305360ustar00rootroot00000000000000import org.cprover.CProver; public class Sync { int field; public static void main(String[] args) { Sync o = new Sync(); try { o.field=0; synchronized (o) { // Make sure the monitor is taken. assert(CProver.getMonitorCount(o) == 1); if (CProver.nondetBoolean()) throw new RuntimeException(); o.field++; } } catch(RuntimeException e) { o.field++; } catch(Throwable e) {} // Make sure we did not execute in an unexpected way. if (o.field != 1) assert false; // Make sure the monitor is free. assert(CProver.getMonitorCount(o) == 0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks-throw/test.desc000066400000000000000000000006341333451767700306000ustar00rootroot00000000000000KNOWNBUG Sync.class --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods --java-threading ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring -- Checks all possible paths to ensure monitorexit is executed even after a throw. This is currently not working as explicit throws have been removed from the underlying model due to performance considerations. cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/000077500000000000000000000000001333451767700256155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/A.class000066400000000000000000000023331333451767700270250ustar00rootroot000000000000004; %&' () %* %+ % , - ./ 01$assertionsDisabledZ()VCodeLineNumberTableme0 StackMapTable/&2'aStatic* Exceptionsme1+me2 SourceFileA.java java/lang/Objectjava/lang/NullPointerException java/lang/AssertionErrorjava/io/IOExceptionB 34 5 67A8 9:java/lang/ThrowablesharedIstartlockLjava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z!**YL+YM,çN,-M Y   ( )%B |YK*YL»YM+,L  g1 Y L+ + + +  Y)* +,0-0 !9 Y L+ YM+ + +  Y,çN,-0336345789.:8;. D"4 @#$cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/A.java000066400000000000000000000022611333451767700266410ustar00rootroot00000000000000public class A { public void me0() { final Object o = new Object(); try { synchronized (o) {} } catch (NullPointerException e) { assert false; return; } } // expected verification success public static void aStatic() throws java.io.IOException { Object _lock = new Object(); try { synchronized (_lock) { if(true) throw new java.io.IOException(); } } catch (java.io.IOException e) { return; } assert false; // unreachable } // expected verification success // -- // base-case, no synchronization public void me1() { B t = new B(); t.shared = 5; t.start(); assert(t.shared == 5 || t.shared == 6); } // expected verification success // -- // locking mechanism public void me2() { B t = new B(); synchronized(t.lock) { t.shared = 5; t.start(); assert(t.shared == 5); } } } class B extends Thread { public Object lock = new Object(); public int shared = 0; @Override public void run() { set(); } public void set() { synchronized(lock) { shared++; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/B.class000066400000000000000000000010351333451767700270240ustar00rootroot000000000000004!     lockLjava/lang/Object;sharedI()VCodeLineNumberTablerunset StackMapTable  SourceFileA.java java/lang/Object Bjava/lang/Threadjava/lang/Throwable    5**Y*>@A!* FGk*YL*Y`+çM+,JLMNcbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test.desc000066400000000000000000000003151333451767700274330ustar00rootroot00000000000000CORE A.class --function 'A.me0:()V' --lazy-methods ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- Tests that synchronization blocks do not cause issues when the java core models library is not loaded cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test1.desc000066400000000000000000000003341333451767700275150ustar00rootroot00000000000000CORE A.class --function 'A.me0:()V' --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --show-goto-functions --java-threading ATOMIC_BEGIN ATOMIC_END -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test2.desc000066400000000000000000000003151333451767700275150ustar00rootroot00000000000000CORE A.class --function 'A.me0:()V' --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test3.desc000066400000000000000000000003341333451767700275170ustar00rootroot00000000000000CORE A.class --function 'A.me0:()V' --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test4.desc000066400000000000000000000003711333451767700275210ustar00rootroot00000000000000CORE A.class --function 'A.aStatic' --lazy-methods ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- Tests that throwing an exception from a synchronization blocks does not cause reachability issues when the java-threading flag is not specified. cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test_sync.desc000066400000000000000000000003341333451767700304700ustar00rootroot00000000000000CORE A.class --function 'A.me2:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-blocks/test_sync_baseline.desc000066400000000000000000000003341333451767700323320ustar00rootroot00000000000000CORE A.class --function 'A.me1:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-method-illegal-state/000077500000000000000000000000001333451767700303455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-method-illegal-state/Sync.class000066400000000000000000000017751333451767700323220ustar00rootroot0000000000000046 "# " $ % &' () *+ " " ,-.fieldI$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable/#'fg SourceFile Sync.java Sync   java/lang/RuntimeException0 12 java/lang/AssertionError3 45java/lang/Object[Ljava/lang/String;org/cprover/CProvergetMonitorCount(Ljava/lang/Object;)Ijava/lang/ClassdesiredAssertionStatus()Z!* AYL+++M+Y`+ + Y *  #2@  !N!* Y *Y` !" #!U(*Y`* Y Y ' )* + 4   @ !cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-method-illegal-state/Sync.java000066400000000000000000000017161333451767700321310ustar00rootroot00000000000000import java.lang.RuntimeException; import org.cprover.CProver; public class Sync { public int field; public static void main(String[] args) { final Sync o = new Sync(); o.field = 0; // test regular synchronized method (monitorexit on return) o.f(); // test synchronized method with throw (monitorexit on catch) try { o.g(); } catch (RuntimeException e) { o.field++; } // Make sure both functions were executed and the second threw // The object should remain unlocked if ((o.field !=3) || (CProver.getMonitorCount(o) !=0)) assert(false); } public synchronized void f() { // Check that we acquired the lock if (CProver.getMonitorCount(this) !=1) assert(false); field++; } public synchronized void g() { field++; // Check that we acquired the lock if (CProver.getMonitorCount(this) !=1) assert(false); throw new RuntimeException(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-method-illegal-state/test.desc000066400000000000000000000004771333451767700321740ustar00rootroot00000000000000CORE Sync.class --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --lazy-methods --java-threading ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring -- Checks all possible paths to ensure a synchronized method does not end in an illegal monitor state. cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/000077500000000000000000000000001333451767700260035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/A.class000066400000000000000000000020201333451767700272040ustar00rootroot0000000000000047 % &' % ( ) *+ %, % ( )- ./0gI$assertionsDisabledZ()VCodeLineNumberTableme1me2 StackMapTable'me301me4, SourceFileA.java  B 2 3 java/lang/AssertionErrorCA4 56java/lang/Objectjava/lang/Throwablesharedstartjava/lang/ClassdesiredAssertionStatus()Z!*!! g1YL++++ Y  006YL+YM+++ Y ,çN,- -0030 + 5!+D 5 Y L YM +   Y ,çN,- ,//2/)* ,-.*/40*!D"4 @#$cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/A.java000066400000000000000000000021631333451767700270300ustar00rootroot00000000000000public class A { static int g; public synchronized void me1() { g = 0; } // expected verification success // -- // base-case, no synchronization public void me2() { B t = new B(); t.shared = 5; t.start(); assert(t.shared == 5 || t.shared == 6); } // expected verification success // -- // locking mechanism public void me3() { B t = new B(); synchronized(t) { t.shared = 5; t.start(); assert(t.shared == 5); } } // expected verification success // -- // KNOWNBUG: synchronization of static synchronized // methods is not yet supported public void me4() { C t = new C(); synchronized(C.class) { C.shared = 5; t.start(); assert(C.shared == 5); } } } class B extends Thread { public int shared = 0; @Override public void run() { set(); } public synchronized void set() { shared++; } } class C extends Thread { public static int shared = 0; @Override public void run() { C.static_set(); } public static synchronized void static_set() { C.shared++; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/B.class000066400000000000000000000005221333451767700272120ustar00rootroot000000000000004   sharedI()VCodeLineNumberTablerunset SourceFileA.java   Bjava/lang/Thread   & ** 35  !* :;!  ' *Y` > ?cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/C.class000066400000000000000000000006031333451767700272130ustar00rootroot000000000000004   sharedI()VCodeLineNumberTablerun static_set SourceFileA.java  Cjava/lang/Thread    * B   IJ)  % ` NO   Dcbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/test1.desc000066400000000000000000000003341333451767700277030ustar00rootroot00000000000000CORE A.class --function 'A.me1:()V' --java-threading --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --show-goto-functions --lazy-methods ATOMIC_BEGIN ATOMIC_END -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/test2.desc000066400000000000000000000004521333451767700277050ustar00rootroot00000000000000CORE A.class --function 'A.me1:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --show-goto-functions ATOMIC_BEGIN ATOMIC_END -- -- Making sure that monitorEnter and monitorExit are not removed by lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/test3.desc000066400000000000000000000003331333451767700277040ustar00rootroot00000000000000CORE A.class --function 'A.me1:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/test_sync.desc000066400000000000000000000003341333451767700306560ustar00rootroot00000000000000CORE A.class --function 'A.me3:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/test_sync_baseline.desc000066400000000000000000000003341333451767700325200ustar00rootroot00000000000000CORE A.class --function 'A.me2:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc-concurrency/synchronized-methods/test_sync_static.desc000066400000000000000000000004451333451767700322300ustar00rootroot00000000000000KNOWNBUG A.class --function 'A.me4:()V' --java-threading --lazy-methods --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- -- Synchronization of static synchronized methods is not yet supported. cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/000077500000000000000000000000001333451767700204075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/CMakeLists.txt000066400000000000000000000000571333451767700231510ustar00rootroot00000000000000add_test_pl_tests( "$" ) cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/Makefile000066400000000000000000000015101333451767700220440ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.java" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log %.class: %.java ../../src/org.cprover.jar javac -g -cp ../../src/org.cprover.jar:. $< nondet_java_files := $(shell find . -name "Nondet*.java") nondet_class_files := $(patsubst %.java, %.class, $(nondet_java_files)) .PHONY: nondet-class-files nondet-class-files: $(nondet_class_files) .PHONY: clean-nondet-class-files clean-nondet-class-files: -rm $(nondet_class_files) cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/000077500000000000000000000000001333451767700222065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractImpl.class000066400000000000000000000007221333451767700256230ustar00rootroot000000000000004  tLjava/lang/Object; SignatureTV;()VCodeLineNumberTableget()Ljava/lang/Object;()TV;QLjava/lang/Object;LAbstractInt; SourceFileAbstractTest.java  AbstractImpljava/lang/Object AbstractInt    *  * cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractInt.class000066400000000000000000000003601333451767700254520ustar00rootroot000000000000004   get()Ljava/lang/Object; Signature()TV;<Ljava/lang/Object; SourceFileAbstractTest.java AbstractIntjava/lang/Object cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractTest$ClassA.class000066400000000000000000000005351333451767700267760ustar00rootroot000000000000004  idIthis$0LAbstractTest;(LAbstractTest;)VCodeLineNumberTable SourceFileAbstractTest.java  AbstractTest$ClassAClassA InnerClassesjava/lang/Object()V AbstractTest   " *+*    cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractTest$ClassB.class000066400000000000000000000006401333451767700267740ustar00rootroot000000000000004   idIthis$0LAbstractTest;(LAbstractTest;)VCodeLineNumberTablegetId()I SourceFileAbstractTest.java   AbstractTest$ClassBClassB InnerClassesjava/lang/Object()V AbstractTest    " *+*   *  cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractTest$Dummy.class000066400000000000000000000005321333451767700267200ustar00rootroot000000000000004  bZthis$0LAbstractTest;(LAbstractTest;)VCodeLineNumberTable SourceFileAbstractTest.java  AbstractTest$DummyDummy InnerClassesjava/lang/Object()V AbstractTest   " *+*    cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractTest.class000066400000000000000000000012051333451767700256360ustar00rootroot000000000000004(     ClassB InnerClasses!ClassA"Dummy()VCodeLineNumberTablegetFromAbstract(LAbstractInt;)I Signature<(LAbstractInt;)I SourceFileAbstractTest.java  AbstractImpl# $%AbstractTest$ClassB &' AbstractTestjava/lang/ObjectAbstractTest$ClassAAbstractTest$Dummy AbstractIntget()Ljava/lang/Object;getId()I!*?YM+N-6   cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/AbstractTest.java000066400000000000000000000010371333451767700254550ustar00rootroot00000000000000interface AbstractInt { V get(); } class AbstractImpl implements AbstractInt { V t; public V get() { return t; } } public class AbstractTest { class Dummy { private boolean b; } class ClassA { private int id; } class ClassB { private int id; int getId() { return id; } } public int getFromAbstract(AbstractInt arg) { AbstractImpl dummy = new AbstractImpl<>(); ClassB b = arg.get(); int i = b.getId(); return i; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-cover/generics/test.desc000066400000000000000000000004251333451767700240260ustar00rootroot00000000000000CORE AbstractTest.class --cover location --function AbstractTest.getFromAbstract ^EXIT=0$ ^SIGNAL=0$ file AbstractTest.java line 18 .* SATISFIED file AbstractTest.java line 19 .* SATISFIED file AbstractTest.java line 20 .* SATISFIED file AbstractTest.java line 21 .* SATISFIED cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/000077500000000000000000000000001333451767700210705ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/CMakeLists.txt000066400000000000000000000004051333451767700236270ustar00rootroot00000000000000add_test_pl_tests( "$" ) add_test_pl_profile( "jbmc-generics-symex-driven-lazy-loading" "$ --symex-driven-lazy-loading" "-C;-X;symex-driven-lazy-loading-expected-failure;-s;symex-driven-loading" "CORE" ) cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/Makefile000066400000000000000000000022301333451767700225250ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.java" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log %.class: %.java ../../src/org.cprover.jar javac -g -cp ../../src/org.cprover.jar:. $< nondet_java_files := $(shell find . -name "Nondet*.java") nondet_class_files := $(patsubst %.java, %.class, $(nondet_java_files)) .PHONY: nondet-class-files nondet-class-files: $(nondet_class_files) .PHONY: clean-nondet-class-files clean-nondet-class-files: -rm $(nondet_class_files) cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/000077500000000000000000000000001333451767700235775ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/BWrapper.class000066400000000000000000000004121333451767700263450ustar00rootroot000000000000004 bZ()VCodeLineNumberTableLocalVariableTablethis LBWrapper; SourceFileTestClass.java BWrapperjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/Gen.class000066400000000000000000000006261333451767700253430ustar00rootroot000000000000004 tLjava/lang/Object; SignatureTT;()VCodeLineNumberTableLocalVariableTablethisLGen;LocalVariableTypeTable LGen;(Ljava/lang/Object; SourceFileTestClass.java  Genjava/lang/Object   A*     cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/IWrapper.class000066400000000000000000000004121333451767700263540ustar00rootroot000000000000004 iI()VCodeLineNumberTableLocalVariableTablethis LIWrapper; SourceFileTestClass.java IWrapperjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/TestClass.class000066400000000000000000000023121333451767700265310ustar00rootroot0000000000000047 &' & () & * +, -./$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LTestClass; testFunctionaLGen;bcLocalVariableTypeTableLGen;LGen; StackMapTable'testFunctionWithInput(LGen;LGen;LGen;)V Signature*(LGen;LGen;LGen;)V SourceFileTestClass.java Gen java/lang/AssertionError 01 23 TestClass4 56java/lang/Objectequals(Ljava/lang/Object;)ZtLjava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z  /*  IYK*L+* Y+M,+ Y,* Y 2H A ?*A* L*J+F,B*;+4,-*L+* Y,K*, Y!#68 K" LLLLL6!"#4   @$%cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/TestClass.java000066400000000000000000000010741333451767700263510ustar00rootroot00000000000000class Gen { public T t; } class IWrapper { public int i; } class BWrapper { public boolean b; } class TestClass { static void testFunction() { Gen a = new Gen<>(); Gen b = a; assert(b == a); Gen c; c = b; assert(c == b); assert(c.equals(a)); } static void testFunctionWithInput(Gen a, Gen b, Gen c) { if(a != null && b != null && c != null && a.t != null && b.t != null && c.t != null) { b = a; assert(b == a); a = c; assert(a == c); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/test.desc000066400000000000000000000003121333451767700254120ustar00rootroot00000000000000CORE TestClass.class --function TestClass.testFunction --classpath `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` EXIT=0 SIGNAL=0 VERIFICATION SUCCESSFUL cbmc-cbmc-5.10/jbmc/regression/jbmc-generics/type_erasure/test_function_input.desc000066400000000000000000000003531333451767700305430ustar00rootroot00000000000000CORE TestClass.class --function TestClass.testFunctionWithInput EXIT=0 SIGNAL=0 VERIFICATION SUCCESSFUL -- -- Adding the core models causes a exception in convert_struct relating to the `monitorCount` component. See diffblue/cbmc#2307 cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/000077500000000000000000000000001333451767700215625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/CMakeLists.txt000066400000000000000000000000571333451767700243240ustar00rootroot00000000000000add_test_pl_tests( "$" ) cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/Makefile000066400000000000000000000015101333451767700232170ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.java" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log %.class: %.java ../../src/org.cprover.jar javac -g -cp ../../src/org.cprover.jar:. $< nondet_java_files := $(shell find . -name "Nondet*.java") nondet_class_files := $(patsubst %.java, %.class, $(nondet_java_files)) .PHONY: nondet-class-files nondet-class-files: $(nondet_class_files) .PHONY: clean-nondet-class-files clean-nondet-class-files: -rm $(nondet_class_files) cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance01/000077500000000000000000000000001333451767700242145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance01/A.class000066400000000000000000000003531333451767700254240ustar00rootroot000000000000004   ()VCodeLineNumberTabletoInt()I SourceFile test.java Ajava/lang/Object * 09  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance01/B.class000066400000000000000000000002441333451767700254240ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java BA *  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance01/test.class000066400000000000000000000010541333451767700262220ustar00rootroot000000000000004%      $assertionsDisabledZ()VCodeLineNumberTablecheck StackMapTable SourceFile test.java B !java/lang/AssertionErrortest" #$java/lang/ObjecttoInt()Ijava/lang/ClassdesiredAssertionStatus()Z    * O!YL+09 Y  4   @cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance01/test.desc000066400000000000000000000000721333451767700260320ustar00rootroot00000000000000CORE test.class --function test.check ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance01/test.java000066400000000000000000000002501333451767700260330ustar00rootroot00000000000000class A { public int toInt() { return 12345; } } class B extends A { } class test { void check() { B b=new B(); assert(b.toInt()==12345); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance02/000077500000000000000000000000001333451767700242155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance02/A.class000066400000000000000000000003531333451767700254250ustar00rootroot000000000000004   ()VCodeLineNumberTabletoInt()I SourceFile test.java Ajava/lang/Object * 09  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance02/B.class000066400000000000000000000007761333451767700254370ustar00rootroot000000000000004!     $assertionsDisabledZ()VCodeLineNumberTable secondary StackMapTable SourceFile test.java java/lang/AssertionErrorB  AtoInt()Ijava/lang/ClassdesiredAssertionStatus()Z    *   >*09 Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance02/test.class000066400000000000000000000004331333451767700262230ustar00rootroot000000000000004   ()VCodeLineNumberTablecheck SourceFile test.java B testjava/lang/Object secondary  *   - YL+    cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance02/test.desc000066400000000000000000000000721333451767700260330ustar00rootroot00000000000000CORE test.class --function test.check ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance02/test.java000066400000000000000000000003361333451767700260410ustar00rootroot00000000000000class A { protected int toInt() { return 12345; } } class B extends A { public void secondary() { assert(toInt()==12345); } } class test { void check() { B b=new B(); b.secondary(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/000077500000000000000000000000001333451767700242165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/A.class000066400000000000000000000002441333451767700254250ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java AZ *  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/B.class000066400000000000000000000002441333451767700254260ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java BA *  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/Z.class000066400000000000000000000003531333451767700254570ustar00rootroot000000000000004   ()VCodeLineNumberTabletoInt()I SourceFile test.java Zjava/lang/Object * 09  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/test.class000066400000000000000000000010541333451767700262240ustar00rootroot000000000000004%      $assertionsDisabledZ()VCodeLineNumberTablecheck StackMapTable SourceFile test.java B !java/lang/AssertionErrortest" #$java/lang/ObjecttoInt()Ijava/lang/ClassdesiredAssertionStatus()Z    *O!YL+09 Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/test.desc000066400000000000000000000000721333451767700260340ustar00rootroot00000000000000CORE test.class --function test.check ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance03/test.java000066400000000000000000000003001333451767700260310ustar00rootroot00000000000000class Z { public int toInt() { return 12345; } } class A extends Z { } class B extends A { } class test { void check() { B b=new B(); assert(b.toInt()==12345); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/000077500000000000000000000000001333451767700242175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/A.class000066400000000000000000000003531333451767700254270ustar00rootroot000000000000004   ()VCodeLineNumberTabletoInt()I SourceFile test.java Ajava/lang/Object * 09  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/B.class000066400000000000000000000003341333451767700254270ustar00rootroot000000000000004   ()VCodeLineNumberTabletoInt()I SourceFile test.java BA *  '   cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/Z.class000066400000000000000000000002441333451767700254570ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java ZB * cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/test.class000066400000000000000000000010501333451767700262210ustar00rootroot000000000000004$      $assertionsDisabledZ()VCodeLineNumberTablecheck StackMapTable  SourceFile test.java   java/lang/AssertionErrortest! "#java/lang/ObjecttoInt()Ijava/lang/ClassdesiredAssertionStatus()Z    *O!YL+' Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/test.desc000066400000000000000000000000721333451767700260350ustar00rootroot00000000000000CORE test.class --function test.check ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance04/test.java000066400000000000000000000003541333451767700260430ustar00rootroot00000000000000class A { public int toInt() { return 12345; } } class B extends A { public int toInt() { return 9999; } } class Z extends B { } class test { void check() { Z z=new Z(); assert(z.toInt()==9999); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance05/000077500000000000000000000000001333451767700242205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance05/A.class000066400000000000000000000001541333451767700254270ustar00rootroot000000000000004 toInt()I SourceFile test.javaAjava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance05/B.class000066400000000000000000000003641333451767700254330ustar00rootroot000000000000004  ()VCodeLineNumberTabletoInt()I SourceFile test.java Bjava/lang/ObjectA * 09   cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance05/test.class000066400000000000000000000010541333451767700262260ustar00rootroot000000000000004%      $assertionsDisabledZ()VCodeLineNumberTablecheck StackMapTable SourceFile test.java B !java/lang/AssertionErrortest" #$java/lang/ObjecttoInt()Ijava/lang/ClassdesiredAssertionStatus()Z    *O!YL+09 Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance05/test.desc000066400000000000000000000000721333451767700260360ustar00rootroot00000000000000CORE test.class --function test.check ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance05/test.java000066400000000000000000000003051333451767700260400ustar00rootroot00000000000000interface A { public int toInt(); } class B implements A { public int toInt() { return 12345; } } class test { void check() { B b=new B(); assert(b.toInt()==12345); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/000077500000000000000000000000001333451767700242215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/A.java000066400000000000000000000001051333451767700252400ustar00rootroot00000000000000package temp; class A { int toint() { return 123456; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/B.java000066400000000000000000000001351333451767700252440ustar00rootroot00000000000000package temp; public class B extends A { public int check() { return toint(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/temp/000077500000000000000000000000001333451767700251665ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/temp/A.class000066400000000000000000000003611333451767700263750ustar00rootroot000000000000004  @()VCodeLineNumberTabletoint()I SourceFileA.java temp/Ajava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/temp/B.class000066400000000000000000000003661333451767700264030ustar00rootroot000000000000004  ()VCodeLineNumberTablecheck()I SourceFileB.java   temp/Btemp/Atoint!* *  cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/test.class000066400000000000000000000010551333451767700262300ustar00rootroot000000000000004%    @   $assertionsDisabledZ()VCodeLineNumberTablecheck StackMapTable SourceFile test.java temp/B !java/lang/AssertionErrortest" #$java/lang/Object()Ijava/lang/ClassdesiredAssertionStatus()Z!  *N YL+ Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/test.desc000066400000000000000000000000721333451767700260370ustar00rootroot00000000000000CORE test.class --function test.check ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-inheritance/inheritance06/test.java000066400000000000000000000002071333451767700260420ustar00rootroot00000000000000import temp.B; public class test { public void check() { B myObject = new B(); assert(myObject.check()==123456); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/000077500000000000000000000000001333451767700207625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/CMakeLists.txt000066400000000000000000000004041333451767700235200ustar00rootroot00000000000000add_test_pl_tests( "$" ) add_test_pl_profile( "jbmc-strings-symex-driven-lazy-loading" "$ --symex-driven-lazy-loading" "-C;-X;symex-driven-lazy-loading-expected-failure;-s;symex-driven-loading" "CORE" ) cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/CharacterGetNumericValue/000077500000000000000000000000001333451767700256365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/CharacterGetNumericValue/test.class000066400000000000000000000011671333451767700276510ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile test.java   java/lang/AssertionErrortest! "#java/lang/Objectjava/lang/CharactergetNumericValue(C)Ijava/lang/ClassdesiredAssertionStatus()Z!   *  m8a<*+ "Y Y  7    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/CharacterGetNumericValue/test.desc000066400000000000000000000002721333451767700274560ustar00rootroot00000000000000CORE test.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ assertion at file test.java line 8 .* SUCCESS$ assertion at file test.java line 10 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/CharacterGetNumericValue/test.java000066400000000000000000000003711333451767700274610ustar00rootroot00000000000000public class test { public static void main(String[] args) { char c = 'a'; if(args.length>1) assert Character.getNumericValue(c) == 10; else assert Character.getNumericValue(c) != 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Makefile000066400000000000000000000024771333451767700224340ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading testfuture: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc -CF @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -CF -s symex-driven-loading testall: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc -CFTK @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -CFTK -s symex-driven-loading tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.c" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log tests-symex-driven-loading.log cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/000077500000000000000000000000001333451767700264645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/Test.class000066400000000000000000000004351333451767700304340ustar00rootroot000000000000004   ()VCodeLineNumberTabletestme4(Ljava/lang/StringBuilder;Ljava/lang/StringBuffer;)V SourceFile Test.java Testjava/lang/Object!*    cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/Test.java000066400000000000000000000001471333451767700302500ustar00rootroot00000000000000public class Test { public static void testme(StringBuilder builder, StringBuffer buffer) { } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/000077500000000000000000000000001333451767700274055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang/000077500000000000000000000000001333451767700303265ustar00rootroot00000000000000AbstractStringBuilder.class000066400000000000000000000004001333451767700355310ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang4    ()VCodeLineNumberTable SourceFileAbstractStringBuilder.java java/lang/AbstractStringBuilderjava/lang/Objectjava/lang/CharSequence!*  AbstractStringBuilder.java000066400000000000000000000001241333451767700353500ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/langpackage java.lang; public class AbstractStringBuilder implements CharSequence { } CharSequence.class000066400000000000000000000001631333451767700336440ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang4 SourceFileCharSequence.javajava/lang/CharSequencejava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang/CharSequence.java000066400000000000000000000000601333451767700335330ustar00rootroot00000000000000package java.lang; interface CharSequence { } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang/String.class000066400000000000000000000003421333451767700326220ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile String.java java/lang/Stringjava/lang/Objectjava/lang/CharSequence!*  cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang/String.java000066400000000000000000000001051333451767700324330ustar00rootroot00000000000000package java.lang; public class String implements CharSequence { } StringBuffer.class000066400000000000000000000003371333451767700337010ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang4    ()VCodeLineNumberTable SourceFileStringBuffer.java java/lang/StringBufferjava/lang/AbstractStringBuilder!* cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang/StringBuffer.java000066400000000000000000000001211333451767700335630ustar00rootroot00000000000000package java.lang; public class StringBuffer extends AbstractStringBuilder { } StringBuilder.class000066400000000000000000000003411333451767700340510ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/lang4    ()VCodeLineNumberTable SourceFileStringBuilder.java java/lang/StringBuilderjava/lang/AbstractStringBuilder!* StringBuilder.java000066400000000000000000000001221333451767700336620ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/java/langpackage java.lang; public class StringBuilder extends AbstractStringBuilder { } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/NondetStringBuilderAndBuffer/test.desc000066400000000000000000000005251333451767700303050ustar00rootroot00000000000000CORE Test.class --no-refine-strings --function Test.testme ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- type mismatch -- Before cbmc#2472 this would assume that StringBuilder's direct parent was java.lang.Object, causing a type mismatch when --no-refine-strings was in use (which at the time would assume that parent-child relationship) cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches01/000077500000000000000000000000001333451767700235025ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches01/RegexMatches01.class000066400000000000000000000023701333451767700272530ustar00rootroot000000000000004L !" #$% #& '( )* '+ ,- ./ 012 !3 456$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable789 SourceFileRegexMatches01.java W.*\d[0-35-9]-\d\d-\d\d7 :;oXXXX's Birthday is 05-12-75 YYYY's Birthday is 11-04-68 ZZZZ's Birthday is 04-28-73 WWWW's Birthday is 12-17-77 <=9 >?@ AB CDE FG WWWW's Birthday is 12-17-778 HIjava/lang/AssertionErrorRegexMatches01J K?java/lang/Objectjava/util/regex/Patternjava/lang/Stringjava/util/regex/Matchercompile-(Ljava/lang/String;)Ljava/util/regex/Pattern;matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;find()Zjava/lang/SystemoutLjava/io/PrintStream;group()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus!* BLM+,N-.- -:  Yѱ*    &>A.4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches01/RegexMatches01.java000066400000000000000000000012241333451767700270640ustar00rootroot00000000000000import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches01 { public static void main(String[] args) { Pattern expression = Pattern.compile("W.*\\d[0-35-9]-\\d\\d-\\d\\d"); String string1 = "XXXX's Birthday is 05-12-75\n" + "YYYY's Birthday is 11-04-68\n" + "ZZZZ's Birthday is 04-28-73\n" + "WWWW's Birthday is 12-17-77"; Matcher matcher = expression.matcher(string1); while (matcher.find()) { System.out.println(matcher.group()); String tmp=matcher.group(); assert tmp.equals("WWWW's Birthday is 12-17-77"); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches01/test.desc000066400000000000000000000002151333451767700253170ustar00rootroot00000000000000FUTURE RegexMatches01.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches02/000077500000000000000000000000001333451767700235035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches02/RegexMatches02.class000066400000000000000000000023711333451767700272560ustar00rootroot000000000000004L !" #$% #& '( )* '+ ,- ./ 012 !3 456$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable789 SourceFileRegexMatches02.java W.*\d[0-35-9]-\d\d-\d\d7 :;oXXXX's Birthday is 05-12-75 YYYY's Birthday is 11-04-68 ZZZZ's Birthday is 04-28-73 WWWW's Birthday is 12-17-77 <=9 >?@ AB CDE FG WWWWW's Birthday is 12-17-778 HIjava/lang/AssertionErrorRegexMatches02J K?java/lang/Objectjava/util/regex/Patternjava/lang/Stringjava/util/regex/Matchercompile-(Ljava/lang/String;)Ljava/util/regex/Pattern;matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;find()Zjava/lang/SystemoutLjava/io/PrintStream;group()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus!* BLM+,N-.- -:  Yѱ*    &>A.4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches02/RegexMatches02.java000066400000000000000000000012251333451767700270670ustar00rootroot00000000000000import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches02 { public static void main(String[] args) { Pattern expression = Pattern.compile("W.*\\d[0-35-9]-\\d\\d-\\d\\d"); String string1 = "XXXX's Birthday is 05-12-75\n" + "YYYY's Birthday is 11-04-68\n" + "ZZZZ's Birthday is 04-28-73\n" + "WWWW's Birthday is 12-17-77"; Matcher matcher = expression.matcher(string1); while (matcher.find()) { System.out.println(matcher.group()); String tmp=matcher.group(); assert tmp.equals("WWWWW's Birthday is 12-17-77"); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexMatches02/test.desc000066400000000000000000000002121333451767700253150ustar00rootroot00000000000000FUTURE RegexMatches02.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution01/000077500000000000000000000000001333451767700246325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution01/RegexSubstitution01.class000066400000000000000000000037231333451767700315360ustar00rootroot000000000000004w 56789 :; %<= :>? 5@A BCDE FGHIJKLMN :OPQ FRS :T UV FWXYZ[\ ]^$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable_` SourceFileRegexSubstitution01.java )* DiffBlue ***Automatic Test Case Generation\*^_ ab '( DiffBlue ^^^ cdjava/lang/AssertionError Automatic Automatede fg,"Automatic" substituted for "Automated": %s java/lang/Objecth ijAutomated Test Case Generation#Every word replaced by "word": %s \w+wordOriginal String 2: %s \A automated kb9automatedautomatedautomatedAutomated Test Case GenerationString split at commas: lm \s* nop qr sm$automatedautomatedautomatedAutomatedTestCase GenerationRegexSubstitution01t uvjava/lang/String[Ljava/lang/String; replaceAll8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream; replaceFirstprint(Ljava/lang/String;)Vsplit'(Ljava/lang/String;)[Ljava/lang/String;java/util/ArraystoString'([Ljava/lang/Object;)Ljava/lang/String;printlnjava/lang/ClassdesiredAssertionStatus()Z!%'()*+*, -.+"LM+L+ Y ,  MY,SW, WY+SWY,SW, W>,M, Y ,N- -2! Y -2" Y -2# Y -2$ Y ,b  &/@GW[_pw~ !"#$%!&/&00R112*+4%&,/ @34cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution01/RegexSubstitution01.java000066400000000000000000000025311333451767700313460ustar00rootroot00000000000000import java.util.Arrays; public class RegexSubstitution01 { public static void main(String[] args) { String firstString = "Diffblue ***"; String secondString = "Automatic Test Case Generation"; firstString = firstString.replaceAll("\\*", "^"); assert firstString.equals("Diffblue ^^^"); secondString = secondString.replaceAll("Automatic", "Automated"); System.out.printf( "\"Automatic\" substituted for \"Automated\": %s\n", secondString); secondString.equals("Automated Test Case Generation"); System.out.printf("Every word replaced by \"word\": %s\n\n", firstString.replaceAll("\\w+", "word")); System.out.printf("Original String 2: %s\n", secondString); secondString.equals("Automated Test Case Generation"); for (int i = 0; i < 3; i++) secondString = secondString.replaceFirst("\\A", "automated"); assert secondString.equals("automatedautomatedautomatedAutomated Test Case Generation"); System.out.print("String split at commas: "); String[] results = secondString.split(" \\s*"); System.out.println(Arrays.toString(results)); assert results[0].equals("automatedautomatedautomatedAutomated"); assert results[1].equals("Test"); assert results[2].equals("Case"); assert results[3].equals("Generation"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution01/test.desc000066400000000000000000000002051333451767700264460ustar00rootroot00000000000000FUTURE RegexSubstitution01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution02/000077500000000000000000000000001333451767700246335ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution02/RegexSubstitution02.class000066400000000000000000000033131333451767700315330ustar00rootroot000000000000004m 01234 5678 9:;< =>? 5@ABCDEF 5GH =IJ 5K LM =N OPQ 0R ST$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableUV SourceFileRegexSubstitution02.java $% DiffBlue ***Automatic Test Case Generation\*^U WX Automatic AutomatedY Z[,"Automatic" substituted for "Automated": %s java/lang/Object\ ]^Automated Test Case Generation _`#Every word replaced by "word": %s \w+wordOriginal String 2: %s \A automated aXString split at commas: bc \s* def gh ic "#%automatedautomatedautomatedaAutomatedjava/lang/AssertionErrorRegexSubstitution02j kljava/lang/String[Ljava/lang/String; replaceAll8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;java/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;equals(Ljava/lang/Object;)Z replaceFirstprint(Ljava/lang/String;)Vsplit'(Ljava/lang/String;)[Ljava/lang/String;java/util/ArraystoString'([Ljava/lang/Object;)Ljava/lang/String;printlnjava/lang/ClassdesiredAssertionStatus()Z! "#$%&*' ()&$LM+L,M   Y,S W, W  Y+S W  Y,S W, W>,M ,N --2 Y'N  )0@DHY`gpv~*b++1,-%&4 !'* @./cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution02/RegexSubstitution02.java000066400000000000000000000021121333451767700313430ustar00rootroot00000000000000import java.util.Arrays; public class RegexSubstitution02 { public static void main(String[] args) { String firstString = "Diffblue ***"; String secondString = "Automatic Test Case Generation"; firstString = firstString.replaceAll("\\*", "^"); secondString = secondString.replaceAll("Automatic", "Automated"); System.out.printf( "\"Automatic\" substituted for \"Automated\": %s\n", secondString); secondString.equals("Automated Test Case Generation"); System.out.printf("Every word replaced by \"word\": %s\n\n", firstString.replaceAll("\\w+", "word")); System.out.printf("Original String 2: %s\n", secondString); secondString.equals("Automated Test Case Generation"); for (int i = 0; i < 3; i++) secondString = secondString.replaceFirst("\\A", "automated"); System.out.print("String split at commas: "); String[] results = secondString.split(" \\s*"); System.out.println(Arrays.toString(results)); assert results[0].equals("automatedautomatedautomatedaAutomated"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution02/test.desc000066400000000000000000000002021333451767700264440ustar00rootroot00000000000000FUTURE RegexSubstitution02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution03/000077500000000000000000000000001333451767700246345ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution03/RegexSubstitution03.class000066400000000000000000000032241333451767700315360ustar00rootroot000000000000004k /0123 45 67 489 /:; <=>? @ABCDEFGH 4IJ @KL 4M NO @PQ RS$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableT SourceFileRegexSubstitution03.java $% DiffBlue ***Automatic Test Case Generation\*^T UV "# DiffBlue ^^^ WXjava/lang/AssertionError Automatic AutomatedY Z[,"Automatic" substituted for "Automated": %s java/lang/Object\ ]^Automated Test Case Generation#Every word replaced by "word": %s \w+wordOriginal String 2: %s \A automated _VString split at commas: `a \s* bcd ef gaRegexSubstitution03h ijjava/lang/String replaceAll8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream; replaceFirstprint(Ljava/lang/String;)Vsplit'(Ljava/lang/String;)[Ljava/lang/String;java/util/ArraystoString'([Ljava/lang/Object;)Ljava/lang/String;printlnjava/lang/ClassdesiredAssertionStatus()Z! "#$%&*' ()&LM+L+ Y ,  MY,SW, WY+SWY,SW, W>,M,N-'N  &/@GW[_pw~ *&++R,%&4 !'* @-.cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution03/RegexSubstitution03.java000066400000000000000000000020631333451767700313520ustar00rootroot00000000000000import java.util.Arrays; public class RegexSubstitution03 { public static void main(String[] args) { String firstString = "Diffblue ***"; String secondString = "Automatic Test Case Generation"; firstString = firstString.replaceAll("\\*", "^"); assert firstString.equals("Diffblue ^^^"); secondString = secondString.replaceAll("Automatic", "Automated"); System.out.printf( "\"Automatic\" substituted for \"Automated\": %s\n", secondString); secondString.equals("Automated Test Case Generation"); System.out.printf("Every word replaced by \"word\": %s\n\n", firstString.replaceAll("\\w+", "word")); System.out.printf("Original String 2: %s\n", secondString); secondString.equals("Automated Test Case Generation"); for (int i = 0; i < 3; i++) secondString = secondString.replaceFirst("\\A", "automated"); System.out.print("String split at commas: "); String[] results = secondString.split(" \\s*"); System.out.println(Arrays.toString(results)); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/RegexSubstitution03/test.desc000066400000000000000000000002051333451767700264500ustar00rootroot00000000000000FUTURE RegexSubstitution03.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StartsWith/000077500000000000000000000000001333451767700230765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StartsWith/Test.class000066400000000000000000000026431333451767700250510ustar00rootroot000000000000004< ! "# $% "& ' () !*+,-. /01$assertionsDisabledZ()VCodeLineNumberTablereferenceStartsWith((Ljava/lang/String;Ljava/lang/String;I)Z StackMapTablecheckcheckDet()Z checkNonDet(Ljava/lang/String;)Z SourceFile Test.java 2 345 67 89  java/lang/AssertionErrorfoofoobarTest: ;java/lang/Objectjava/lang/Stringlength()Iorg/cprover/CProverStringcharAt(Ljava/lang/String;I)C startsWith(Ljava/lang/String;I)Zjava/lang/ClassdesiredAssertionStatus! * |6*+d>+*`+"  & ,. 4  A*+*+>*+6 Y Y -"?# " ;  ; Y  ; Y  ; Y  ; Y  ; Y  ; Y Y>'( )*&+8,A-S.\/n0w12345  i/***< Y Y:;? BE-F 4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StartsWith/Test.java000066400000000000000000000036221333451767700246630ustar00rootroot00000000000000// Must be compiled with CProverString: // javac Test.java ../cprover/CProverString.java public class Test { // Reference implementation public static boolean referenceStartsWith(String s, String prefix, int offset) { if (offset < 0 || offset > s.length() - prefix.length()) { return false; } for (int i = 0; i < prefix.length(); i++) { if (org.cprover.CProverString.charAt(s, offset + i) != org.cprover.CProverString.charAt(prefix, i)) { return false; } } return true; } public static boolean check(String s, String t, int offset) { // Filter out null strings if(s == null || t == null) { return false; } // Act final boolean result = s.startsWith(t, offset); // Assert final boolean referenceResult = referenceStartsWith(s, t, offset); assert(result == referenceResult); // Check reachability assert(result == false); return result; } public static boolean checkDet() { boolean result = false; result = "foo".startsWith("foo", 0); assert(result); result = "foo".startsWith("f", -1); assert(!result); result = "foo".startsWith("oo", 1); assert(result); result = "foo".startsWith("f", 1); assert(!result); result = "foo".startsWith("bar", 0); assert(!result); result = "foo".startsWith("oo", 2); assert(!result); assert(false); return result; } public static boolean checkNonDet(String s) { // Filter if (s == null) { return false; } // Act final boolean result = s.startsWith(s, 1); // Assert assert(!result); // Check reachability assert(false); return result; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StartsWith/test.desc000066400000000000000000000003101333451767700247070ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 10 --unwind 10 --function Test.check ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 31 .*: SUCCESS assertion at file Test.java line 34 .*: FAILURE -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StartsWith/test_det.desc000066400000000000000000000006741333451767700255600ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 100 --unwind 10 --function Test.checkDet ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 41 .*: SUCCESS assertion at file Test.java line 43 .*: SUCCESS assertion at file Test.java line 45 .*: SUCCESS assertion at file Test.java line 47 .*: SUCCESS assertion at file Test.java line 49 .*: SUCCESS assertion at file Test.java line 51 .*: SUCCESS assertion at file Test.java line 52 .*: FAILURE -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StartsWith/test_nondet.desc000066400000000000000000000007261333451767700262710ustar00rootroot00000000000000KNOWNBUG Test.class --max-nondet-string-length 100 --unwind 10 --function Test.checkNonDet ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 66 .*: SUCCESS assertion at file Test.java line 69 .*: FAILURE -- -- The nondet test currently breaks the invariant at string_refinement.cpp:2162 ("Indices not equal..."), which checks that a given string is not used with multiple distinct indices. As the test checks s.substring(s, 1), two distinct indices are indeed used. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods01/000077500000000000000000000000001333451767700244745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods01/StaticCharMethods01.class000066400000000000000000000020531333451767700312350ustar00rootroot000000000000004@   !"  # $ % & ' ( ) * +, -./$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStaticCharMethods01.java  0 12java/lang/AssertionError 32 42 52 62 72 82 92 :; <;StaticCharMethods01= >?java/lang/Objectjava/lang/Character isDefined(C)ZisDigitisJavaIdentifierStartisJavaIdentifierPartisLetterisLetterOrDigit isLowerCase isUpperCase toUpperCase(C)C toLowerCasejava/lang/ClassdesiredAssertionStatus()Z!* < Y Y Y Y Y Y Y Y  Y. -B X m  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods01/StaticCharMethods01.java000066400000000000000000000010501333451767700310450ustar00rootroot00000000000000public class StaticCharMethods01 { public static void main(String[] args) { char c = 0; assert Character.isDefined(c)==true; assert Character.isDigit(c)==false; assert Character.isJavaIdentifierStart(c)==false; assert Character.isJavaIdentifierPart(c)==true; assert Character.isLetter(c)==false; assert Character.isLetterOrDigit(c)==false; assert Character.isLowerCase(c)==false; assert Character.isUpperCase(c)==false; assert Character.toUpperCase(c)==Character.toLowerCase(c); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods01/test.desc000066400000000000000000000002031333451767700263060ustar00rootroot00000000000000CORE StaticCharMethods01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods02/000077500000000000000000000000001333451767700244755ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods02/StaticCharMethods02.class000066400000000000000000000012041333451767700312340ustar00rootroot000000000000004'      $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStaticCharMethods02.java  !" #"java/lang/AssertionErrorStaticCharMethods02$ %&java/lang/Objectjava/lang/Character toUpperCase(C)C toLowerCasejava/lang/ClassdesiredAssertionStatus()Z!   * H< Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods02/StaticCharMethods02.java000066400000000000000000000002541333451767700310540ustar00rootroot00000000000000public class StaticCharMethods02 { public static void main(String[] args) { char c = 0; assert Character.toUpperCase(c)!=Character.toLowerCase(c); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods02/test.desc000066400000000000000000000002521333451767700263130ustar00rootroot00000000000000CORE StaticCharMethods02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods03/000077500000000000000000000000001333451767700244765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods03/StaticCharMethods03.class000066400000000000000000000011461333451767700312430ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStaticCharMethods03.java   java/lang/AssertionErrorStaticCharMethods03! "#java/lang/Objectjava/lang/Character isDefined(C)Zjava/lang/ClassdesiredAssertionStatus()Z!   *  D< Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods03/StaticCharMethods03.java000066400000000000000000000002271333451767700310560ustar00rootroot00000000000000public class StaticCharMethods03 { public static void main(String[] args) { char c = 0; assert Character.isDefined(c)==false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods03/test.desc000066400000000000000000000002521333451767700263140ustar00rootroot00000000000000CORE StaticCharMethods03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods04/000077500000000000000000000000001333451767700244775ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods04/StaticCharMethods04.class000066400000000000000000000011461333451767700312450ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStaticCharMethods04.java   java/lang/AssertionErrorStaticCharMethods04! "#java/lang/Objectjava/lang/CharacterisLetter(C)Zjava/lang/ClassdesiredAssertionStatus()Z!   *  E< Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods04/StaticCharMethods04.java000066400000000000000000000002251333451767700310560ustar00rootroot00000000000000public class StaticCharMethods04 { public static void main(String[] args) { char c = 0; assert Character.isLetter(c)==true; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods04/test.desc000066400000000000000000000002521333451767700263150ustar00rootroot00000000000000CORE StaticCharMethods04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods05/000077500000000000000000000000001333451767700245005ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods05/StaticCharMethods05.class000066400000000000000000000027621333451767700312540ustar00rootroot000000000000004a &' () * + ,- & (./ 0123 45 46 078 9 :;< 4= >?@ AB$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable' SourceFileStaticCharMethods05.java java/util/ScannerC DE F GH java/lang/AssertionError IJEnter a digit:K LMConvert digit to character: %s java/lang/ObjectN OP QR STEnter a character: UVW XYConvert character to digit: %s Z[\ Q]StaticCharMethods05^ _`java/lang/SysteminLjava/io/InputStream;(Ljava/io/InputStream;)VnextInt()IoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vjava/lang/CharacterforDigit(II)CvalueOf(C)Ljava/lang/Character;printf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;next()Ljava/lang/String;java/lang/StringcharAt(I)Cdigit(CI)Ijava/lang/Integer(I)Ljava/lang/Integer;java/lang/ClassdesiredAssertionStatus()Z! *  *YL+=+p> Y]  +6   YSW6=t6Y  +6  YSWJ   .HPVdkow !&"C*#4! @$%cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods05/StaticCharMethods05.java000066400000000000000000000017051333451767700310640ustar00rootroot00000000000000import java.util.Scanner; public class StaticCharMethods05 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int radix = scanner.nextInt(); int choice = scanner.nextInt() % 3; assert choice>=0 && choice<3; switch (choice) { case 1: // convert digit to character System.out.println("Enter a digit:"); int digit = scanner.nextInt(); System.out.printf("Convert digit to character: %s\n", Character.forDigit(digit, radix)); char tmp=Character.forDigit(digit, radix); assert tmp=='t'; break; case 2: // convert character to digit System.out.println("Enter a character:"); char character = scanner.next().charAt(0); System.out.printf("Convert character to digit: %s\n", Character.digit(character, radix)); break; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods05/test.desc000066400000000000000000000003261333451767700263200ustar00rootroot00000000000000CORE StaticCharMethods05.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 12 .* FAILURE$ ^\[.*assertion\.2\] .* line 22 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods06/000077500000000000000000000000001333451767700245015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods06/StaticCharMethods06.class000066400000000000000000000016251333451767700312530ustar00rootroot0000000000000049     ! "#$ %& ' ()*$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable+ SourceFileStaticCharMethods06.java + ,- ./0 12c1 and c2 are equal 3 45c1 and c2 are not equal java/lang/AssertionErrorStaticCharMethods066 78java/lang/Objectjava/lang/CharactervalueOf(C)Ljava/lang/Character;equals(Ljava/lang/Object;)Zjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vjava/lang/ClassdesiredAssertionStatus()Z! * x6ALAM+, Y   '5 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods06/StaticCharMethods06.java000066400000000000000000000005571333451767700310720ustar00rootroot00000000000000public class StaticCharMethods06 { public static void main(String[] args) { Character c1 = 'A'; Character c2 = 'A'; if (c1.equals(c2)) { System.out.println("c1 and c2 are equal\n"); assert true; } else { System.out.println("c1 and c2 are not equal\n"); assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StaticCharMethods06/test.desc000066400000000000000000000002051333451767700263150ustar00rootroot00000000000000FUTURE StaticCharMethods06.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringArray/000077500000000000000000000000001333451767700232275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringArray/Test.class000066400000000000000000000016351333451767700252020ustar00rootroot0000000000000046  !" #$ %  & '( )*+$assertionsDisabledZ()VCodeLineNumberTablecheck'([Ljava/lang/String;)Ljava/lang/String; StackMapTable, SourceFile Test.java  null array too short null string, -. java/lang/AssertionErrorjava/lang/StringBuilder /0 12Test3 45java/lang/Objectjava/lang/Stringequals(Ljava/lang/Object;)Zappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z! * ^***2*2L*2M+,>+ Y Y Y + , 2     !'9K4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringArray/Test.java000066400000000000000000000010101333451767700250010ustar00rootroot00000000000000public class Test { public static String check(String[] array) { // Filter if(array == null) return "null array"; if(array.length < 2) return "too short"; if(array[0] == null) return "null string"; // Arrange String s0 = array[0]; String s1 = array[1]; // Act boolean b = s0.equals(s1); // Assert assert(s0 != null); assert(!b); // Return return s0 + s1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringArray/test.desc000066400000000000000000000002601333451767700250440ustar00rootroot00000000000000CORE Test.class --function Test.check --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 20.* SUCCESS$ ^\[.*assertion\.2\].* line 21.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend01/000077500000000000000000000000001333451767700250305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend01/StringBuilderAppend01.class000066400000000000000000000035041333451767700321270ustar00rootroot000000000000004f !345T @ @@vȴ67 8 3 9: ; < = > ? @ A B C D E FG HIJ 3K LMN$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableONPQ6 SourceFileStringBuilderAppend01.java $%diffbluetestjava/lang/StringBuilder last buffer $R ST%n SU SV SW SX SY SZ S[ S\ S] S^ _` "#Tdiffblue%ntest%nverification%nver%ntrue%nZ%n7%n10000000000%n2.5%n33.333%nlast bufferP abjava/lang/AssertionErrorStringBuilderAppend01c dejava/lang/Object[Ljava/lang/String;java/lang/String[C(Ljava/lang/String;)Vappend-(Ljava/lang/Object;)Ljava/lang/StringBuilder;-(Ljava/lang/String;)Ljava/lang/StringBuilder;([C)Ljava/lang/StringBuilder;([CII)Ljava/lang/StringBuilder;(Z)Ljava/lang/StringBuilder;(C)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;(F)Ljava/lang/StringBuilder;(D)Ljava/lang/StringBuilder;3(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!!"#$%&*' ()&LM YvUYeUYrUYiUYfUYiUYcUYaUYtUY iUY oUY nUN6Z6678 9 Y : Y :  + ,--   W : Y'#MP T X ] a fqz !"#$%&()**$ +,-.//-0%&4 '* @12cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend01/StringBuilderAppend01.java000066400000000000000000000024651333451767700317500ustar00rootroot00000000000000public class StringBuilderAppend01 { public static void main(String[] args) { Object objectRef = "diffblue"; String string = "test"; char[] charArray = {'v', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n'}; boolean booleanValue = true; char characterValue = 'Z'; int integerValue = 7; long longValue = 10000000000L; float floatValue = 2.5f; double doubleValue = 33.333; StringBuilder lastBuffer = new StringBuilder("last buffer"); StringBuilder buffer = new StringBuilder(); buffer.append(objectRef) .append("%n") .append(string) .append("%n") .append(charArray) .append("%n") .append(charArray, 0, 3) .append("%n") .append(booleanValue) .append("%n") .append(characterValue) .append("%n") .append(integerValue) .append("%n") .append(longValue) .append("%n") .append(floatValue) .append("%n") .append(doubleValue) .append("%n") .append(lastBuffer); String tmp=buffer.toString(); assert tmp.equals("diffblue%ntest%nverification%nver%ntrue%nZ%n7%n10000000000%n2.5%n33.333%nlast buffer"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend01/test.desc000066400000000000000000000002071333451767700266460ustar00rootroot00000000000000FUTURE StringBuilderAppend01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend02/000077500000000000000000000000001333451767700250315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend02/StringBuilderAppend02.class000066400000000000000000000035051333451767700321320ustar00rootroot000000000000004f !345T @ @@vȴ67 8 3 9: ; < = > ? @ A B C D E FG HIJ 3K LMN$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableONPQ6 SourceFileStringBuilderAppend02.java $%diffbluetestjava/lang/StringBuilder last buffer $R ST%n SU SV SW SX SY SZ S[ S\ S] S^ _` "#Udiffblue%ntest%nverification%nver%ntrue%n%Z%n7%n10000000000%n2.5%n33.333%nlast bufferP abjava/lang/AssertionErrorStringBuilderAppend02c dejava/lang/Object[Ljava/lang/String;java/lang/String[C(Ljava/lang/String;)Vappend-(Ljava/lang/Object;)Ljava/lang/StringBuilder;-(Ljava/lang/String;)Ljava/lang/StringBuilder;([C)Ljava/lang/StringBuilder;([CII)Ljava/lang/StringBuilder;(Z)Ljava/lang/StringBuilder;(C)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;(F)Ljava/lang/StringBuilder;(D)Ljava/lang/StringBuilder;3(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!!"#$%&*' ()&LM YvUYeUYrUYiUYfUYiUYcUYaUYtUY iUY oUY nUN6Z6678 9 Y : Y :  + ,--   W : Y'#MP T X ] a fqz !"#$%&()**$ +,-.//-0%&4 '* @12cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend02/StringBuilderAppend02.java000066400000000000000000000024661333451767700317530ustar00rootroot00000000000000public class StringBuilderAppend02 { public static void main(String[] args) { Object objectRef = "diffblue"; String string = "test"; char[] charArray = {'v', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n'}; boolean booleanValue = true; char characterValue = 'Z'; int integerValue = 7; long longValue = 10000000000L; float floatValue = 2.5f; double doubleValue = 33.333; StringBuilder lastBuffer = new StringBuilder("last buffer"); StringBuilder buffer = new StringBuilder(); buffer.append(objectRef) .append("%n") .append(string) .append("%n") .append(charArray) .append("%n") .append(charArray, 0, 3) .append("%n") .append(booleanValue) .append("%n") .append(characterValue) .append("%n") .append(integerValue) .append("%n") .append(longValue) .append("%n") .append(floatValue) .append("%n") .append(doubleValue) .append("%n") .append(lastBuffer); String tmp=buffer.toString(); assert tmp.equals("diffblue%ntest%nverification%nver%ntrue%n%Z%n7%n10000000000%n2.5%n33.333%nlast buffer"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderAppend02/test.desc000066400000000000000000000002041333451767700266440ustar00rootroot00000000000000FUTURE StringBuilderAppend02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen01/000077500000000000000000000000001333451767700247635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen01/StringBuilderCapLen01.class000066400000000000000000000021041333451767700320100ustar00rootroot000000000000004@  ! " # $ %&'  ( ) * +,- ./0$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable  SourceFileStringBuilderCapLen01.java java/lang/StringBuilder4Diffblue is leader in automatic test case generation 1  234 56java/lang/AssertionError 78 98 :; <;DiffblueStringBuilderCapLen01= >?java/lang/Object(Ljava/lang/String;)VtoString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Zlength()IcapacityensureCapacity(I)V setLengthjava/lang/ClassdesiredAssertionStatus()Z!* YL+ Y + 4 Y + D Y +K +  Y + +  Y + Y *  $; R X pv $4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen01/StringBuilderCapLen01.java000066400000000000000000000010401333451767700316220ustar00rootroot00000000000000public class StringBuilderCapLen01 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue is leader in automatic test case generation"); assert buffer.toString().equals("Diffblue is leader in automatic test case generation"); assert buffer.length()==52; assert buffer.capacity()==68; buffer.ensureCapacity(75); assert buffer.capacity()==138; buffer.setLength(8); assert buffer.length()==8; assert buffer.toString().equals("Diffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen01/test.desc000066400000000000000000000002071333451767700266010ustar00rootroot00000000000000FUTURE StringBuilderCapLen01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen02/000077500000000000000000000000001333451767700247645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen02/StringBuilderCapLen02.class000066400000000000000000000015471333451767700320240ustar00rootroot0000000000000042     ! "#$ % &'($assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderCapLen02.java java/lang/StringBuilder4Diffblue is leader in automatic test case generation )  *+5Diffblue is leader in automatic test case generation, -.java/lang/AssertionErrorStringBuilderCapLen02/ 01java/lang/Object(Ljava/lang/String;)VtoString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * S%YL+ Y  $$4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen02/StringBuilderCapLen02.java000066400000000000000000000004431333451767700316320ustar00rootroot00000000000000public class StringBuilderCapLen02 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue is leader in automatic test case generation"); assert buffer.toString().equals("Diffblue is leader in automatic test case generation"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen02/test.desc000066400000000000000000000002041333451767700265770ustar00rootroot00000000000000FUTURE StringBuilderCapLen02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen03/000077500000000000000000000000001333451767700247655ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen03/StringBuilderCapLen03.class000066400000000000000000000013251333451767700320200ustar00rootroot000000000000004*      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderCapLen03.java java/lang/StringBuilder4Diffblue is leader in automatic test case generation $ %&java/lang/AssertionErrorStringBuilderCapLen03' ()java/lang/Object(Ljava/lang/String;)Vlength()Ijava/lang/ClassdesiredAssertionStatus()Z!  * P"YL+3 Y !!4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen03/StringBuilderCapLen03.java000066400000000000000000000003451333451767700316350ustar00rootroot00000000000000public class StringBuilderCapLen03 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue is leader in automatic test case generation"); assert buffer.length()==51; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen03/test.desc000066400000000000000000000002041333451767700266000ustar00rootroot00000000000000FUTURE StringBuilderCapLen03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen04/000077500000000000000000000000001333451767700247665ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen04/StringBuilderCapLen04.class000066400000000000000000000013271333451767700320240ustar00rootroot000000000000004*      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderCapLen04.java java/lang/StringBuilder4Diffblue is leader in automatic test case generation $ %&java/lang/AssertionErrorStringBuilderCapLen04' ()java/lang/Object(Ljava/lang/String;)Vcapacity()Ijava/lang/ClassdesiredAssertionStatus()Z!  * P"YL+E Y !!4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen04/StringBuilderCapLen04.java000066400000000000000000000003471333451767700316410ustar00rootroot00000000000000public class StringBuilderCapLen04 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue is leader in automatic test case generation"); assert buffer.capacity()==69; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderCapLen04/test.desc000066400000000000000000000002041333451767700266010ustar00rootroot00000000000000FUTURE StringBuilderCapLen04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars01/000077500000000000000000000000001333451767700246615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars01/StringBuilderChars01.class000066400000000000000000000026051333451767700316120ustar00rootroot000000000000004X %&' ( ) * +,- % . / 0 12 34 56 789 :;<$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable&=> SourceFileStringBuilderChars01.java java/lang/StringBuilderDiffBlue Limited ?  @AB CDjava/lang/AssertionError EF GH IJK LMN OP QRHiffBlTe Limited STdetimiL eTlBffiHStringBuilderChars01U VWjava/lang/Object[Ljava/lang/String;[C(Ljava/lang/String;)VtoString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)ZcharAt(I)Clength()IgetChars(II[CI)Vjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprint(C)V setCharAt(IC)Vreverse()Ljava/lang/StringBuilder;java/lang/ClassdesiredAssertionStatus()Z!* r޻YL+ Y + + Y + M++ , >,:66346 + Y +H+T+ Y +W+ Y F $? F Q Slt6$ !!- !("4 @#$cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars01/StringBuilderChars01.java000066400000000000000000000013641333451767700314270ustar00rootroot00000000000000public class StringBuilderChars01 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue Limited"); assert buffer.toString().equals("Diffblue Limited"); assert buffer.charAt(0)!=buffer.charAt(4); char[] charArray = new char[buffer.length()]; buffer.getChars(0, buffer.length(), charArray, 0); int i=0; for (char character : charArray) { System.out.print(character); assert character==buffer.charAt(i); ++i; } buffer.setCharAt(0, 'H'); buffer.setCharAt(6, 'T'); assert buffer.toString().equals("HiffBlTe Limited"); buffer.reverse(); assert buffer.toString().equals("detimiL eTlBffiH"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars01/test.desc000066400000000000000000000002231333451767700264750ustar00rootroot00000000000000FUTURE StringBuilderChars01.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars02/000077500000000000000000000000001333451767700246625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars02/StringBuilderChars02.class000066400000000000000000000014351333451767700316140ustar00rootroot0000000000000042     ! "#$ % &'($assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderChars02.java java/lang/StringBuilderDiffBlue Limited )  *+DiffBlue Limitted, -.java/lang/AssertionErrorStringBuilderChars02/ 01java/lang/Object(Ljava/lang/String;)VtoString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * S%YL+ Y  $$4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars02/StringBuilderChars02.java000066400000000000000000000003321333451767700314230ustar00rootroot00000000000000public class StringBuilderChars02 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue Limited"); assert buffer.toString().equals("Diffblue Limitted"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars02/test.desc000066400000000000000000000002201333451767700264730ustar00rootroot00000000000000FUTURE StringBuilderChars02.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars03/000077500000000000000000000000001333451767700246635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars03/StringBuilderChars03.class000066400000000000000000000012641333451767700316160ustar00rootroot000000000000004*      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderChars03.java java/lang/StringBuilderDiffBlue Limited $ %&java/lang/AssertionErrorStringBuilderChars03' ()java/lang/Object(Ljava/lang/String;)VcharAt(I)Cjava/lang/ClassdesiredAssertionStatus()Z!  * T&YL++ Y %%4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars03/StringBuilderChars03.java000066400000000000000000000003171333451767700314300ustar00rootroot00000000000000public class StringBuilderChars03 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue Limited"); assert buffer.charAt(0)==buffer.charAt(4); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars03/test.desc000066400000000000000000000002201333451767700264740ustar00rootroot00000000000000FUTURE StringBuilderChars03.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars04/000077500000000000000000000000001333451767700246645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars04/StringBuilderChars04.class000066400000000000000000000017721333451767700316240ustar00rootroot000000000000004B  ! " # $ %& '( ) *+ , -./$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable0 1 SourceFileStringBuilderChars04.java java/lang/StringBuilderDiffBlue Limited 2 34 567 89: ;<  =>java/lang/AssertionErrorStringBuilderChars04? @Ajava/lang/Object[Ljava/lang/String;[C(Ljava/lang/String;)Vlength()IgetChars(II[CI)Vjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprint(C)VcharAt(I)Cjava/lang/ClassdesiredAssertionStatus()Z! * aYL+M++,>,:66346 + Y ̱*    7 ?WZ `-)-4   @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars04/StringBuilderChars04.java000066400000000000000000000006641333451767700314370ustar00rootroot00000000000000public class StringBuilderChars04 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue Limited"); char[] charArray = new char[buffer.length()]; buffer.getChars(0, buffer.length(), charArray, 0); int i=0; for (char character : charArray) { System.out.print(character); assert character!=buffer.charAt(i); ++i; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars04/test.desc000066400000000000000000000002201333451767700264750ustar00rootroot00000000000000FUTURE StringBuilderChars04.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars05/000077500000000000000000000000001333451767700246655ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars05/StringBuilderChars05.class000066400000000000000000000015221333451767700316170ustar00rootroot0000000000000046    ! "# $%& ' ()*$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderChars05.java java/lang/StringBuilderDiffBlue Limited + ,-  ./HiffBllTe Limited0 12java/lang/AssertionErrorStringBuilderChars053 45java/lang/Object(Ljava/lang/String;)V setCharAt(IC)VtoString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * j4YL+H+T+ Y  3 34  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars05/StringBuilderChars05.java000066400000000000000000000004321333451767700314320ustar00rootroot00000000000000public class StringBuilderChars05 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue Limited"); buffer.setCharAt(0, 'H'); buffer.setCharAt(6, 'T'); assert buffer.toString().equals("HiffBllTe Limited"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars05/test.desc000066400000000000000000000002201333451767700264760ustar00rootroot00000000000000FUTURE StringBuilderChars05.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars06/000077500000000000000000000000001333451767700246665ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars06/StringBuilderChars06.class000066400000000000000000000015301333451767700316200ustar00rootroot0000000000000046    ! "# $%& ' ()*$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringBuilderChars06.java java/lang/StringBuilderDiffBlue Limited + ,-  ./detimiL eTlBffiiH0 12java/lang/AssertionErrorStringBuilderChars063 45java/lang/Object(Ljava/lang/String;)Vreverse()Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * \*YL+W+ Y  ))4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars06/StringBuilderChars06.java000066400000000000000000000003621333451767700314360ustar00rootroot00000000000000public class StringBuilderChars06 { public static void main(String[] args) { StringBuilder buffer = new StringBuilder("Diffblue Limited"); buffer.reverse(); assert buffer.toString().equals("detimiL eTlBffiiH"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderChars06/test.desc000066400000000000000000000002201333451767700264770ustar00rootroot00000000000000FUTURE StringBuilderChars06.class --max-nondet-string-length 1000 --unwind 100 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors01/000077500000000000000000000000001333451767700263315ustar00rootroot00000000000000StringBuilderConstructors01.class000066400000000000000000000014351333451767700346530ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors014.     !" # $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile StringBuilderConstructors01.java java/lang/StringBuilder 'diffblue (  )*java/lang/AssertionErrorStringBuilderConstructors01+ ,-java/lang/Object(I)V(Ljava/lang/String;)Vlength()Ijava/lang/ClassdesiredAssertionStatus()Z! * \YLY MYN+ Y , Y - Y  1 F [ 14  @StringBuilderConstructors01.java000066400000000000000000000005541333451767700344700ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors01public class StringBuilderConstructors01 { public static void main(String[] args) { StringBuilder buffer1 = new StringBuilder(); StringBuilder buffer2 = new StringBuilder(10); StringBuilder buffer3 = new StringBuilder("diffblue"); assert buffer1.length()==0; assert buffer2.length()==0; assert buffer3.length()>0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors01/test.desc000066400000000000000000000002171333451767700301500ustar00rootroot00000000000000KNOWNBUG StringBuilderConstructors01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors02/000077500000000000000000000000001333451767700263325ustar00rootroot00000000000000StringBuilderConstructors02.class000066400000000000000000000013071333451767700346530ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors024*      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile StringBuilderConstructors02.java java/lang/StringBuilderdiffblue $ %&java/lang/AssertionErrorStringBuilderConstructors02' ()java/lang/Object(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * P"YL+ Y !!4  @StringBuilderConstructors02.java000066400000000000000000000003071333451767700344660ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors02public class StringBuilderConstructors02 { public static void main(String[] args) { StringBuilder buffer3 = new StringBuilder("diffblue"); assert buffer3.equals("diffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderConstructors02/test.desc000066400000000000000000000002141333451767700301460ustar00rootroot00000000000000KNOWNBUG StringBuilderConstructors02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsert/000077500000000000000000000000001333451767700247245ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsert/Test.class000066400000000000000000000021541333451767700266740ustar00rootroot000000000000004<  !" #$ % &' ()* +, -./$assertionsDisabledZ()VCodeLineNumberTablecheck(I)V StackMapTable SourceFile Test.java java/lang/StringBuilderbar 0foo1 23  45foobar6 78java/lang/AssertionErrorbarfooTest9 :;java/lang/Object(Ljava/lang/String;)Vorg/cprover/CProverStringinsertG(Ljava/lang/StringBuilder;ILjava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!*ZIYM,M, Y , Y JYM,M, Y , Y JYM, M, Y , Y B  0JOYb| #&),/0114 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsert/Test.java000066400000000000000000000021741333451767700265120ustar00rootroot00000000000000 public class Test { public void check (int i) { if(i == 0) { // Arrange StringBuilder s = new StringBuilder("bar"); // Act s = org.cprover.CProverString.insert(s, 0, "foo"); // Should succeed assert s.toString().equals("foobar"); // Should fail assert !s.toString().equals("foobar"); } if(i == 1) { // Arrange StringBuilder s = new StringBuilder("bar"); // Act s = org.cprover.CProverString.insert(s, -10, "foo"); // Should succeed assert s.toString().equals("foobar"); // Should fail assert !s.toString().equals("foobar"); } if(i == 2) { // Arrange StringBuilder s = new StringBuilder("bar"); // Act s = org.cprover.CProverString.insert(s, 10, "foo"); // Should succeed assert s.toString().equals("barfoo"); // Should fail assert !s.toString().equals("barfoo"); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsert/test.desc000066400000000000000000000005361333451767700265470ustar00rootroot00000000000000CORE Test.class --function Test.check ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 13 .*: SUCCESS assertion at file Test.java line 16 .*: FAILURE assertion at file Test.java line 27 .*: SUCCESS assertion at file Test.java line 30 .*: FAILURE assertion at file Test.java line 41 .*: SUCCESS assertion at file Test.java line 44 .*: FAILURE -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete01/000077500000000000000000000000001333451767700262105ustar00rootroot00000000000000StringBuilderInsertDelete01.class000066400000000000000000000036041333451767700344110ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete014g !345@ @@vȴ6 3 78 9 : ; < = > ? @ A B CD EFG 3 H IJK LMN$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableONPQ6 SourceFile StringBuilderInsertDelete01.java $%diffbluetestjava/lang/StringBuilder RS- RT RU RV RW RX RY RZ R[ R\ ]^ "#;33.333-2.5-10000000-7-K-true-ifi-verification-test-diffblueP _`java/lang/AssertionError ab cY633-2.510000000-7-K-true-ifi-verification-test-diffblueStringBuilderInsertDelete01d efjava/lang/Object[Ljava/lang/String;java/lang/String[Cinsert.(ILjava/lang/Object;)Ljava/lang/StringBuilder;.(ILjava/lang/String;)Ljava/lang/StringBuilder;(I[C)Ljava/lang/StringBuilder; (I[CII)Ljava/lang/StringBuilder;(IZ)Ljava/lang/StringBuilder;(IC)Ljava/lang/StringBuilder;(II)Ljava/lang/StringBuilder;(IJ)Ljava/lang/StringBuilder;(IF)Ljava/lang/StringBuilder;(ID)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Z deleteCharAt(I)Ljava/lang/StringBuilder;deletejava/lang/ClassdesiredAssertionStatus()Z!!"#$%&*' ()&2LM YvUYeUYrUYiUYfUYiUYcUYaUYtUY iUY oUY nUN6K6678 9 Y :  +  ,  - -        W :   Y  W W :   Y'$MP T X ] a foy~ !"#%&( )+,1-*" +,-./-/0%&4 '* @12StringBuilderInsertDelete01.java000066400000000000000000000025751333451767700342330ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete01public class StringBuilderInsertDelete01 { public static void main(String[] args) { Object objectRef = "diffblue"; String string = "test"; char[] charArray = {'v', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n'}; boolean booleanValue = true; char characterValue = 'K'; int integerValue = 7; long longValue = 10000000; float floatValue = 2.5f; double doubleValue = 33.333; StringBuilder buffer = new StringBuilder(); buffer.insert(0, objectRef) .insert(0, "-") .insert(0, string) .insert(0, "-") .insert(0, charArray) .insert(0, "-") .insert(0, charArray, 3, 3) .insert(0, "-") .insert(0, booleanValue) .insert(0, "-") .insert(0, characterValue) .insert(0, "-") .insert(0, integerValue) .insert(0, "-") .insert(0, longValue) .insert(0, "-") .insert(0, floatValue) .insert(0, "-") .insert(0, doubleValue); String tmp=buffer.toString(); assert tmp.equals("33.333-2.5-10000000-7-K-true-ifi-verification-test-diffblue"); buffer.deleteCharAt(10); buffer.delete(2, 6); tmp=buffer.toString(); assert tmp.equals("33-2.510000000-7-K-true-ifi-verification-test-diffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete01/test.desc000066400000000000000000000002151333451767700300250ustar00rootroot00000000000000FUTURE StringBuilderInsertDelete01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete02/000077500000000000000000000000001333451767700262115ustar00rootroot00000000000000StringBuilderInsertDelete02.class000066400000000000000000000032751333451767700344170ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete024^ 012@ @@vȴ3 0 45 6 7 8 9 : ; < = > ? @A BCD 0E FGH$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableIHJK3 SourceFile StringBuilderInsertDelete02.java !"diffbluetestjava/lang/StringBuilder LM- LN LO LP LQ LR LS LT LU LV WX  <33.333-2.5-10000000-7-K-true-ifi-verification-test--diffblueJ YZjava/lang/AssertionErrorStringBuilderInsertDelete02[ \]java/lang/Object[Ljava/lang/String;java/lang/String[Cinsert.(ILjava/lang/Object;)Ljava/lang/StringBuilder;.(ILjava/lang/String;)Ljava/lang/StringBuilder;(I[C)Ljava/lang/StringBuilder; (I[CII)Ljava/lang/StringBuilder;(IZ)Ljava/lang/StringBuilder;(IC)Ljava/lang/StringBuilder;(II)Ljava/lang/StringBuilder;(IJ)Ljava/lang/StringBuilder;(IF)Ljava/lang/StringBuilder;(ID)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! !"#*$ %&#LM YvUYeUYrUYiUYfUYiUYcUYaUYtUY iUY oUY nUN6K6678 9 Y :  +  ,  - -        W :   Y$ MP T X ] a foy~ !"#%&''! ()*+,*-"#4$' @./StringBuilderInsertDelete02.java000066400000000000000000000023221333451767700342230ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete02public class StringBuilderInsertDelete02 { public static void main(String[] args) { Object objectRef = "diffblue"; String string = "test"; char[] charArray = {'v', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n'}; boolean booleanValue = true; char characterValue = 'K'; int integerValue = 7; long longValue = 10000000; float floatValue = 2.5f; double doubleValue = 33.333; StringBuilder buffer = new StringBuilder(); buffer.insert(0, objectRef) .insert(0, "-") .insert(0, string) .insert(0, "-") .insert(0, charArray) .insert(0, "-") .insert(0, charArray, 3, 3) .insert(0, "-") .insert(0, booleanValue) .insert(0, "-") .insert(0, characterValue) .insert(0, "-") .insert(0, integerValue) .insert(0, "-") .insert(0, longValue) .insert(0, "-") .insert(0, floatValue) .insert(0, "-") .insert(0, doubleValue); String tmp=buffer.toString(); assert tmp.equals("33.333-2.5-10000000-7-K-true-ifi-verification-test--diffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete02/test.desc000066400000000000000000000002121333451767700300230ustar00rootroot00000000000000FUTURE StringBuilderInsertDelete02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete03/000077500000000000000000000000001333451767700262125ustar00rootroot00000000000000StringBuilderInsertDelete03.class000066400000000000000000000034331333451767700344150ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete034e 234@ @@vȴ5 2 67 8 9 : ; < = > ? @ A B C DE FGH 2I JKL$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableMLNO5 SourceFile StringBuilderInsertDelete03.java #$diffbluetestjava/lang/StringBuilder PQ- PR PS PT PU PV PW PX PY PZ [\ ]W ^_ !"633-2.510000000-7-K-true-iai-verification-test-diffblueN `ajava/lang/AssertionErrorStringBuilderInsertDelete03b cdjava/lang/Object[Ljava/lang/String;java/lang/String[Cinsert.(ILjava/lang/Object;)Ljava/lang/StringBuilder;.(ILjava/lang/String;)Ljava/lang/StringBuilder;(I[C)Ljava/lang/StringBuilder; (I[CII)Ljava/lang/StringBuilder;(IZ)Ljava/lang/StringBuilder;(IC)Ljava/lang/StringBuilder;(II)Ljava/lang/StringBuilder;(IJ)Ljava/lang/StringBuilder;(IF)Ljava/lang/StringBuilder;(ID)Ljava/lang/StringBuilder; deleteCharAt(I)Ljava/lang/StringBuilder;deletetoString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! !"#$%*& '(%LM YvUYeUYrUYiUYfUYiUYcUYaUYtUY iUY oUY nUN6K6678 9 Y :  +  ,  - -        W  W W :   Y&"MP T X ] a foy~ !"#%&()*)! *+,-.,/$%4&) @01StringBuilderInsertDelete03.java000066400000000000000000000024071333451767700342310ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete03public class StringBuilderInsertDelete03 { public static void main(String[] args) { Object objectRef = "diffblue"; String string = "test"; char[] charArray = {'v', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n'}; boolean booleanValue = true; char characterValue = 'K'; int integerValue = 7; long longValue = 10000000; float floatValue = 2.5f; double doubleValue = 33.333; StringBuilder buffer = new StringBuilder(); buffer.insert(0, objectRef) .insert(0, "-") .insert(0, string) .insert(0, "-") .insert(0, charArray) .insert(0, "-") .insert(0, charArray, 3, 3) .insert(0, "-") .insert(0, booleanValue) .insert(0, "-") .insert(0, characterValue) .insert(0, "-") .insert(0, integerValue) .insert(0, "-") .insert(0, longValue) .insert(0, "-") .insert(0, floatValue) .insert(0, "-") .insert(0, doubleValue); buffer.deleteCharAt(10); buffer.delete(2, 6); String tmp=buffer.toString(); assert tmp.equals("33-2.510000000-7-K-true-iai-verification-test-diffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderInsertDelete03/test.desc000066400000000000000000000002121333451767700300240ustar00rootroot00000000000000FUTURE StringBuilderInsertDelete03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderSetCharAt/000077500000000000000000000000001333451767700252765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderSetCharAt/Test.class000066400000000000000000000027701333451767700272520ustar00rootroot000000000000004? "#$ % & ' ()* +, (-. "/ 012$assertionsDisabledZ()VCodeLineNumberTabledet()Ljava/lang/String;nonDet((Ljava/lang/String;CI)Ljava/lang/String; StackMapTable#withDependency(Z)Ljava/lang/String; SourceFile Test.java java/lang/StringBuilderabcdefghijklmnopqrstuvwxyz 3 45 67 89 Out of bounds abc! :;java/lang/AssertionErrorTest< =>java/lang/Object(Ljava/lang/String;)V setCharAt(IC)VtoStringjava/lang/Stringlength()I startsWith(Ljava/lang/String;)Zjava/lang/ClassdesiredAssertionStatus()Z!*YL+!+!+!+ !+ !+!+!+!+:+:+:+ :+ :+ :+:+:+J  ( 0 8 @ H OV^fnv~)Y+:`++`x! ! !!!!:: : : :::R !$+5> G!P"Y#b$k%s&{'()*+,- !UYM,!,! 1, % Y , Y ,2 346769P; 64  @ !cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderSetCharAt/Test.java000066400000000000000000000036521333451767700270660ustar00rootroot00000000000000public class Test { public String det() { StringBuilder builder = new StringBuilder("abcdefghijklmnopqrstuvwxyz"); builder.setCharAt(3, '!'); builder.setCharAt(5, '!'); builder.setCharAt(7, '!'); builder.setCharAt(9, '!'); builder.setCharAt(13, '!'); builder.setCharAt(15, '!'); builder.setCharAt(17, '!'); builder.setCharAt(19, '!'); builder.setCharAt(4, ':'); builder.setCharAt(5, ':'); builder.setCharAt(6, ':'); builder.setCharAt(9, ':'); builder.setCharAt(10, ':'); builder.setCharAt(11, ':'); builder.setCharAt(16, ':'); builder.setCharAt(18, ':'); return builder.toString(); } public String nonDet(String s, char c, int i) { StringBuilder builder = new StringBuilder(s); if(i + 5 >= s.length() || 19 >= s.length() || i < 0) return "Out of bounds"; builder.setCharAt(i, c); builder.setCharAt(i+5, 'x'); builder.setCharAt(7, '!'); builder.setCharAt(9, '!'); builder.setCharAt(13, '!'); builder.setCharAt(15, '!'); builder.setCharAt(17, '!'); builder.setCharAt(19, '!'); builder.setCharAt(4, ':'); builder.setCharAt(5, ':'); builder.setCharAt(6, c); builder.setCharAt(9, ':'); builder.setCharAt(10, ':'); builder.setCharAt(11, ':'); builder.setCharAt(16, ':'); builder.setCharAt(18, ':'); return builder.toString(); } public String withDependency(boolean b) { StringBuilder builder = new StringBuilder("abcdefghijklmnopqrstuvwxyz"); builder.setCharAt(3, '!'); builder.setCharAt(5, '!'); if(b) { assert builder.toString().startsWith("abc!"); } else { assert !builder.toString().startsWith("abc!"); } return builder.toString(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderSetCharAt/test_dependency.desc000066400000000000000000000004271333451767700313160ustar00rootroot00000000000000CORE Test.class --function Test.withDependency --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 55 .*: SUCCESS assertion at file Test.java line 57 .*: FAILURE -- -- Check that when a dependency is present, the correct constraints are added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderSetCharAt/test_det.desc000066400000000000000000000004141333451767700277500ustar00rootroot00000000000000CORE Test.class --function Test.det --verbosity 10 --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 21 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringBuilderSetCharAt/test_nondet.desc000066400000000000000000000004561333451767700304710ustar00rootroot00000000000000CORE Test.class --function Test.nonDet --verbosity 10 --cover location --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 45 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare01/000077500000000000000000000000001333451767700237005ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare01/StringCompare01.class000066400000000000000000000024551333451767700276530ustar00rootroot000000000000004A !"# $%&' ( )* ! + , - ./ 012$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable3" SourceFileStringCompare01.java java/lang/Stringtest 4goodbyeAutomatic Test Generationautomatic test generation 56 java/lang/AssertionError 78 9: ;< ;=StringCompare01> ?@java/lang/Object[Ljava/lang/String;(Ljava/lang/String;)Vequals(Ljava/lang/Object;)ZequalsIgnoreCase(Ljava/lang/String;)Z compareTo(Ljava/lang/String;)I regionMatches(ILjava/lang/String;II)Z(ZILjava/lang/String;II)Zjava/lang/ClassdesiredAssertionStatus()Z!* YLMN:+ Y + Y -  Y +,  Y ,+  Y ++ Y -  Y -  Y - Y - Y f    .47ENQ_w!$%'*+-.&     4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare01/StringCompare01.java000066400000000000000000000020721333451767700274620ustar00rootroot00000000000000public class StringCompare01 { public static void main(String[] args) { String s1 = new String("test"); String s2 = "goodbye"; String s3 = "Automatic Test Generation"; String s4 = "automatic test generation"; if (s1.equals("test")) // true assert true; else assert false; if (s1 != "test") // true; they are not the same object assert true; else assert false; if (s3.equalsIgnoreCase(s4)) // true assert true; else assert false; assert s1.compareTo(s2)==13; //true assert s2.compareTo(s1)==-13; //true assert s1.compareTo(s1)==0; //true assert s3.compareTo(s4)==-32; //true assert s4.compareTo(s3)==32; //true // test regionMatches (case sensitive) if (!s3.regionMatches(0, s4, 0, 5)) //true assert true; else assert false; // test regionMatches (ignore case) if (s3.regionMatches(true, 0, s4, 0, 5)) //true assert true; else assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare01/test.desc000066400000000000000000000002721333451767700255200ustar00rootroot00000000000000FUTURE StringCompare01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring -- Fails because string.regionMatches is not implemented cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare02/000077500000000000000000000000001333451767700237015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare02/StringCompare02.class000066400000000000000000000013211333451767700276440ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFileStringCompare02.java Automatic Test Generationautomatic test generation# $% java/lang/AssertionErrorStringCompare02& '(java/lang/Objectjava/lang/String regionMatches(ILjava/lang/String;II)Zjava/lang/ClassdesiredAssertionStatus()Z!   * a#LM+, Y   "   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare02/StringCompare02.java000066400000000000000000000005121333451767700274610ustar00rootroot00000000000000public class StringCompare02 { public static void main(String[] args) { String s3 = "Automatic Test Generation"; String s4 = "automatic test generation"; // test regionMatches (case sensitive) if (s3.regionMatches(0, s4, 0, 5)) //false assert true; else assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare02/test.desc000066400000000000000000000002471333451767700255230ustar00rootroot00000000000000CORE StringCompare02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 12 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare03/000077500000000000000000000000001333451767700237025ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare03/StringCompare03.class000066400000000000000000000013231333451767700276500ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFileStringCompare03.java Automatic Test Generationautomatic test generation# $% java/lang/AssertionErrorStringCompare03& '(java/lang/Objectjava/lang/String regionMatches(ZILjava/lang/String;II)Zjava/lang/ClassdesiredAssertionStatus()Z!   * b$LM+, Y   #   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare03/StringCompare03.java000066400000000000000000000005161333451767700274670ustar00rootroot00000000000000public class StringCompare03 { public static void main(String[] args) { String s3 = "Automatic Test Generation"; String s4 = "automatic test generation"; // test regionMatches (ignore case) if (!s3.regionMatches(true, 0, s4, 0, 5)) //false assert true; else assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare03/test.desc000066400000000000000000000002471333451767700255240ustar00rootroot00000000000000CORE StringCompare03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 12 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare04/000077500000000000000000000000001333451767700237035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare04/StringCompare04.class000066400000000000000000000012771333451767700276620ustar00rootroot000000000000004,     ! " #$%$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringCompare04.java java/lang/Stringtest &goodbye  '(java/lang/AssertionErrorStringCompare04) *+java/lang/Object(Ljava/lang/String;)V compareTo(Ljava/lang/String;)Ijava/lang/ClassdesiredAssertionStatus()Z!  * [&YLM,+ Y   % %4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare04/StringCompare04.java000066400000000000000000000003031333451767700274630ustar00rootroot00000000000000public class StringCompare04 { public static void main(String[] args) { String s1 = new String("test"); String s2 = "goodbye"; assert s2.compareTo(s1)==13; //false } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare04/test.desc000066400000000000000000000002461333451767700255240ustar00rootroot00000000000000CORE StringCompare04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare05/000077500000000000000000000000001333451767700237045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare05/StringCompare05.class000066400000000000000000000012021333451767700276500ustar00rootroot000000000000004&      !$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringCompare05.java java/lang/Stringtest " java/lang/AssertionErrorStringCompare05# $%java/lang/Object(Ljava/lang/String;)Vjava/lang/ClassdesiredAssertionStatus()Z!   * Y"YL+ Y  !   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare05/StringCompare05.java000066400000000000000000000003631333451767700274730ustar00rootroot00000000000000public class StringCompare05 { public static void main(String[] args) { String s1 = new String("test"); if (s1 == "test") // false; they are not the same object assert true; else assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringCompare05/test.desc000066400000000000000000000002461333451767700255250ustar00rootroot00000000000000CORE StringCompare05.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\] .* line 9 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcat/000077500000000000000000000000001333451767700233605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcat/Test.class000066400000000000000000000121761333451767700253350ustar00rootroot000000000000004f >?@ > AB CDEFGHIJKLMN OP >Q > R C ST UVW XYZ$assertionsDisabledZ()VCodeLineNumberTable stringDet()Ljava/lang/String; StackMapTable[ stringNonDet&(Ljava/lang/String;)Ljava/lang/String; bufferDetQ charBufferDetcharBufferDetLoop(I)Ljava/lang/String;charBufferDetLoop2(II)Ljava/lang/String;bufferNonDetLoop'(ILjava/lang/String;)Ljava/lang/String;bufferNonDetLoop2bufferNonDetLoop3((IILjava/lang/String;)Ljava/lang/String;bufferNonDetLoop4bufferNonDetLoop5;(IILjava/lang/String;[Ljava/lang/String;)Ljava/lang/String; SourceFile Test.java "#ajava/lang/StringBuilder \]b ^'cdefghijklm !java/lang/AssertionErrorjava/lang/StringBuffer \_ \`[ abTestc dejava/lang/Objectjava/lang/Stringappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString,(Ljava/lang/String;)Ljava/lang/StringBuffer;(C)Ljava/lang/StringBuffer;length()Ijava/lang/ClassdesiredAssertionStatus()Z! ! "#$*%&'$aLY+LY+LY+ LY+ LY+ LY+ LY+ LY+LY+LY+LY+LY+L Y+%>+?S g { ()*+$^+MY,MY,MY, MY, MY, MY,+MY, MY,MY,MY,MY,MY,+M Y,%>*>Rfy !"#%&(),'$rػYL+W+W+W+ W+ W+W+W+W+ W+ W+W+W+W+ W+ W+W+W+W+ W+ W+W+W+W+ W+ W+W+W Y+%z*+,-.$/+12293@4G5N7U8\9c:j;q=x>?@ACDEFGIJKL(-.'$rػYL+aW+bW+cW+dW+eW+aW+bW+cW+dW+eW+aW+bW+cW+dW+eW+aW+bW+cW+dW+eW+aW+bW+cW+dW+eW+aW+bW Y+%zPQRST$U+W2X9Y@ZG[N]U^\_c`jaqcxdefgijklmoprs(-/0$ YM,+W>d,-W,+W, W,|W, W,cWd> , W, W,|W, W Y,%Rwxyz{ |'{-}4~;BIPT[elsz(-&"12$-<YN-+W6d--W-+W- W-|W- W-cWd6 - W- W-|W- W-+W6--W-+W- W6J-|W- W-dWd6 - W- W-|W- W-+W6d--W-+W- W Y-%+ %,29@GNUZblsz")7(+-' 34$ , ,YN-+W6d--W-+W- W-|W- W-,W,d6 - W- W-|W- W Y-%R&18>ELSZ`hpz(-)"54$7 ,YN-+W6d--W-+W- W-|W6>- W-,W,d6 - W- W-|W- W Y-%Z *17>ELU\bjr|( -67$~;Y:-W6-W Y% !'5( - 87$LY:6d-W6-W Y%& "+28F( - 9:$ Y:+Wh66d-W+W W|W6C W-W-d6 W W|W W+W6d-W+W W6c|W2: WWd6   W W|Wp  W+W6d-W+W W Y%0    *2 8@HPYahpx !#$%&'()*+!,).0/8#>2F3R4Z3`5h6p8~9(;-/) ;#$4%( @<=cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcat/Test.java000066400000000000000000000163071333451767700251510ustar00rootroot00000000000000public class Test { public String stringDet() { String s = "a"; s += "b"; s += "c"; s += "d"; s += "e"; s += "f"; s += "g"; s += "h"; s += "i"; s += "j"; s += "k"; s += "l"; s += "m"; assert(false); return s; } public String stringNonDet(String arg) { String s = arg; s += "b"; s += "c"; s += "d"; s += "e"; s += "f"; s += arg; s += "h"; s += "i"; s += "j"; s += "k"; s += "l"; s += arg; assert(false); return s; } public String bufferDet() { StringBuffer s = new StringBuffer(); s.append("a"); s.append("b"); s.append("c"); s.append("d"); s.append("e"); s.append("a"); s.append("b"); s.append("c"); s.append("d"); s.append("e"); s.append("a"); s.append("b"); s.append("c"); s.append("d"); s.append("e"); s.append("a"); s.append("b"); s.append("c"); s.append("d"); s.append("e"); s.append("a"); s.append("b"); s.append("c"); s.append("d"); s.append("e"); s.append("a"); s.append("b"); assert(false); return s.toString(); } public String charBufferDet() { StringBuffer s = new StringBuffer(); s.append('a'); s.append('b'); s.append('c'); s.append('d'); s.append('e'); s.append('a'); s.append('b'); s.append('c'); s.append('d'); s.append('e'); s.append('a'); s.append('b'); s.append('c'); s.append('d'); s.append('e'); s.append('a'); s.append('b'); s.append('c'); s.append('d'); s.append('e'); s.append('a'); s.append('b'); s.append('c'); s.append('d'); s.append('e'); s.append('a'); s.append('b'); assert(false); return s.toString(); } public String charBufferDetLoop(int width) { if(width <= 5) return ""; StringBuffer sb = new StringBuffer(); sb.append('+'); for(int i=1; i < width-1; ++i) sb.append('-'); sb.append('+'); sb.append('\n'); sb.append('|'); sb.append(' '); sb.append('c'); int padding = width - 2; while(padding-- > 0) sb.append(' '); sb.append(' '); sb.append('|'); sb.append('\n'); assert(false); return sb.toString(); } public String charBufferDetLoop2(int width, int height) { if(width <= 0 || height <= 0) return ""; StringBuffer sb = new StringBuffer(); sb.append('+'); for(int i=1; i < width-1; ++i) sb.append('-'); sb.append('+'); sb.append('\n'); sb.append('|'); sb.append(' '); sb.append('c'); int padding = width - 2; while(padding-- > 0) sb.append(' '); sb.append(' '); sb.append('|'); sb.append('\n'); sb.append('+'); for(int i=1; i 0) sb.append(' '); sb.append(' '); sb.append('|'); sb.append('\n'); } sb.append('+'); for(int i=1; i= width || s.length() == 0) return ""; StringBuffer sb = new StringBuffer(); sb.append('+'); for(int i=1; i < width-1; ++i) sb.append('-'); sb.append('+'); sb.append('\n'); sb.append('|'); sb.append(' '); sb.append(s); int padding = width - s.length(); while(padding-- > 0) sb.append(' '); sb.append(' '); sb.append('|'); sb.append('\n'); assert(false); return sb.toString(); } public String bufferNonDetLoop2(int width, String c) { if(width < 5 || c.length() > width) return ""; StringBuffer sb = new StringBuffer(); sb.append('+'); for(int i=1; i 0) sb.append(' '); sb.append(' '); sb.append('|'); } sb.append('\n'); assert(false); return sb.toString(); } public String bufferNonDetLoop3(int cols, int columnWidth, String c) { StringBuffer sb = new StringBuffer(); sb.append('-'); for(int i = 0; i < cols; ++i) sb.append(c); assert(false); return sb.toString(); } public String bufferNonDetLoop4(int cols, int columnWidth, String c) { StringBuffer sb = new StringBuffer(); for(int i=1; i < columnWidth-1; ++i) sb.append('-'); for(int i = 0; i < cols; ++i) { sb.append(c); } assert(false); return sb.toString(); } public String bufferNonDetLoop5(int cols, int columnWidth, String c, String data[]) { if(cols<1) return ""; StringBuffer sb = new StringBuffer(); sb.append('+'); int totalWidth = columnWidth * cols; for(int i=1; i 0) sb.append(' '); sb.append(' '); sb.append('|'); } sb.append('\n'); sb.append('+'); for(int i=1; i 0) sb.append(' '); sb.append(' '); sb.append('|'); if(i % cols == 0) sb.append('\n'); } sb.append('+'); for(int i=1; i()VCodeLineNumberTable testSuccess)(Ljava/lang/String;Ljava/lang/String;II)V StackMapTable$7testFail(I)V SourceFile Test.java java/lang/StringBuilder 89 :; <=7 >? @A :B  CDjava/lang/AssertionErrorfoobar foobbarbarTestE FGjava/lang/Objectjava/lang/String(Ljava/lang/String;)Vorg/cprover/CProverStringappendN(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;toString()Ljava/lang/String;length()IcharAt(Ljava/lang/String;I)C(C)Ljava/lang/StringBuilder;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z * r+,Y+:,:Y+:>6,,W  Y 2   !+/1DPVq'!UY M,W,W, W, W,W , Y "  !%"/#:&T'T 4  @!"cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcat_StringII/Test.java000066400000000000000000000022751333451767700267200ustar00rootroot00000000000000// This test uses CProverString so should be compiled with // javac Test.java ../cprover/CProverString.java import org.cprover.CProverString; class Test { public void testSuccess(String s, String t, int start, int end) { // Filter if (s == null || t == null) return; // Act StringBuilder sb = new StringBuilder(s); String result = CProverString.append(sb, t, start, end).toString(); // Arrange StringBuilder reference = new StringBuilder(s); if(start < 0) start = 0; for (int i = start; i < end && i < t.length(); i++) reference.append(org.cprover.CProverString.charAt(t, i)); // Assert assert result.equals(reference.toString()); } public void testFail(int i) { // Arrange StringBuilder sb = new StringBuilder("foo"); // Act CProverString.append(sb, "bar", 0, 1); CProverString.append(sb, "bar", 0, 4); CProverString.append(sb, "foo", -1, 0); CProverString.append(sb, "foo", -10, -1); CProverString.append(sb, "bar", -10, 25); // Assert assert !sb.toString().equals("foobbarbar"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcat_StringII/test.desc000066400000000000000000000002751333451767700267530ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 4 --verbosity 10 --unwind 5 --function Test.testSuccess ^EXIT=0$ ^SIGNAL=0$ assertion at file Test.java line 23 .*: SUCCESS -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcat_StringII/test_fail.desc000066400000000000000000000002641333451767700277440ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 10000 --verbosity 10 --function Test.testFail ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 38 .*: FAILURE -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation01/000077500000000000000000000000001333451767700250775ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation01/StringConcatenation01.class000066400000000000000000000015401333451767700322430ustar00rootroot000000000000004/     !"# $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable' SourceFileStringConcatenation01.java Happy at DiffBlue ' ()java/lang/AssertionError *+Happy at DiffBlueStringConcatenation01, -.java/lang/Objectjava/lang/Stringequals(Ljava/lang/Object;)Zconcat&(Ljava/lang/String;)Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z!  * kLM+ Y, Y+,N-  Y+N- Y&  4 : QSj4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation01/StringConcatenation01.java000066400000000000000000000005451333451767700320630ustar00rootroot00000000000000public class StringConcatenation01 { public static void main(String[] args) { String s1 = "Happy at"; String s2 = " Diffblue"; assert s1.equals("Happy at"); assert s2.equals(" Diffblue"); String tmp=s1.concat(s2); assert tmp.equals("Happy at Diffblue"); tmp=s1; assert tmp.equals("Happy at"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation01/test.desc000066400000000000000000000002051333451767700267130ustar00rootroot00000000000000CORE StringConcatenation01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation02/000077500000000000000000000000001333451767700251005ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation02/StringConcatenation02.class000066400000000000000000000013171333451767700322470ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFileStringConcatenation02.java Happy at DiffBlue  Happy at % &'java/lang/AssertionErrorStringConcatenation02( )*java/lang/Objectjava/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * o5LM+ Y, Y4  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation02/StringConcatenation02.java000066400000000000000000000003421333451767700320600ustar00rootroot00000000000000public class StringConcatenation02 { public static void main(String[] args) { String s1 = "Happy at"; String s2 = " Diffblue"; assert s1.equals("Happy at "); assert s2.equals(" Diffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation02/test.desc000066400000000000000000000002541333451767700267200ustar00rootroot00000000000000CORE StringConcatenation02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation03/000077500000000000000000000000001333451767700251015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation03/StringConcatenation03.class000066400000000000000000000021131333451767700322440ustar00rootroot000000000000004?  !"#$ %& '( )* %+, -. /0$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable1 SourceFileStringConcatenation03.java Happy at DiffBlue2 34Result of s1.concat(s2) = %s java/lang/Object1 567 89 Happy at DiffBllue :;java/lang/AssertionErrors1 after concatenation = %s StringConcatenation03< =>java/lang/Stringjava/lang/SystemoutLjava/io/PrintStream;concat&(Ljava/lang/String;)Ljava/lang/String;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* cLMY+,SW+,N - Y +NY+SW - Y .   ! 8 :Kb8)4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation03/StringConcatenation03.java000066400000000000000000000006561333451767700320720ustar00rootroot00000000000000public class StringConcatenation03 { public static void main(String[] args) { String s1 = "Happy at"; String s2 = " Diffblue"; System.out.printf( "Result of s1.concat(s2) = %s\n", s1.concat(s2)); String tmp=s1.concat(s2); assert tmp.equals("Happy at DiffBllue"); tmp=s1; System.out.printf("s1 after concatenation = %s\n", s1); assert tmp.equals("Happy at"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation03/test.desc000066400000000000000000000002551333451767700267220ustar00rootroot00000000000000CORE StringConcatenation03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\] .* line 11 .* FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation04/000077500000000000000000000000001333451767700251025ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation04/StringConcatenation04.class000066400000000000000000000016031333451767700322510ustar00rootroot0000000000000047   !" #$ %&' ( )*$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable+ SourceFileStringConcatenation04.java Happy at, -.s1 after concatenation = %s java/lang/Object/ 01  Happy at+ 23java/lang/AssertionErrorStringConcatenation044 56java/lang/Stringjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * g.L+MY+SW, Y -  -4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation04/StringConcatenation04.java000066400000000000000000000003621333451767700320660ustar00rootroot00000000000000public class StringConcatenation04 { public static void main(String[] args) { String s1 = "Happy at"; String tmp=s1; System.out.printf("s1 after concatenation = %s\n", s1); assert tmp.equals("Happy at"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConcatenation04/test.desc000066400000000000000000000002541333451767700267220ustar00rootroot00000000000000CORE StringConcatenation04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 8 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors01/000077500000000000000000000000001333451767700250225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors01/StringConstructors01.class000066400000000000000000000017601333451767700321150ustar00rootroot000000000000004; !"# $ ! % & '( )* !+,- ./0$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable12" SourceFileStringConstructors01.java java/lang/Stringtest 3 4 5  67java/lang/AssertionErrordiffblueblueStringConstructors018 9:java/lang/Object[Ljava/lang/String;[C(Ljava/lang/String;)V([C)V([CII)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* (YdUYiUYfUYfUYbUYlUYuUYeULYMYNY,:Y+:Y+:- Y  Y  Y  Y . /9A K U a x!x4 @ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors01/StringConstructors01.java000066400000000000000000000007651333451767700317350ustar00rootroot00000000000000public class StringConstructors01 { public static void main(String[] args) { char[] charArray = {'d', 'i', 'f', 'f', 'b', 'l', 'u', 'e'}; String s = new String("test"); String s1 = new String(); String s2 = new String(s); String s3 = new String(charArray); String s4 = new String(charArray, 4, 4); assert s1.equals(""); assert s2.equals("test"); assert s3.equals("diffblue"); assert s4.equals("blue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors01/test.desc000066400000000000000000000002061333451767700266370ustar00rootroot00000000000000FUTURE StringConstructors01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors02/000077500000000000000000000000001333451767700250235ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors02/StringConstructors02.class000066400000000000000000000012141333451767700321110ustar00rootroot000000000000004(      !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringConstructors02.java java/lang/String  #$java/lang/AssertionErrorStringConstructors02% &'java/lang/Objectequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * N YL+ Y4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors02/StringConstructors02.java000066400000000000000000000002431333451767700317260ustar00rootroot00000000000000public class StringConstructors02 { public static void main(String[] args) { String s1 = new String(); assert s1.equals(" "); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors02/test.desc000066400000000000000000000002031333451767700266350ustar00rootroot00000000000000FUTURE StringConstructors02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors03/000077500000000000000000000000001333451767700250245ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors03/StringConstructors03.class000066400000000000000000000013111333451767700321110ustar00rootroot000000000000004,     ! " #$%$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileStringConstructors03.java java/lang/Stringtest & tesst '(java/lang/AssertionErrorStringConstructors03) *+java/lang/Object(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * `+YLY+M, Y  * *4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors03/StringConstructors03.java000066400000000000000000000003151333451767700317300ustar00rootroot00000000000000public class StringConstructors03 { public static void main(String[] args) { String s = new String("test"); String s2 = new String(s); assert s2.equals("tesst"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors03/test.desc000066400000000000000000000002031333451767700266360ustar00rootroot00000000000000FUTURE StringConstructors03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors04/000077500000000000000000000000001333451767700250255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors04/StringConstructors04.class000066400000000000000000000013401333451767700321150ustar00rootroot000000000000004,     ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFileStringConstructors04.java java/lang/String & bllue '(java/lang/AssertionErrorStringConstructors04) *+java/lang/Object[C([CII)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * RYdUYiUYfUYfUYbUYlUYuUYeULY+M, Y/:Q Q4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors04/StringConstructors04.java000066400000000000000000000003711333451767700317340ustar00rootroot00000000000000public class StringConstructors04 { public static void main(String[] args) { char[] charArray = {'d', 'i', 'f', 'f', 'b', 'l', 'u', 'e'}; String s4 = new String(charArray, 4, 4); assert s4.equals("bllue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors04/test.desc000066400000000000000000000002031333451767700266370ustar00rootroot00000000000000FUTURE StringConstructors04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors05/000077500000000000000000000000001333451767700250265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors05/StringConstructors05.class000066400000000000000000000013401333451767700321170ustar00rootroot000000000000004,     ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFileStringConstructors05.java java/lang/String &  diffkblue '(java/lang/AssertionErrorStringConstructors05) *+java/lang/Object[C([C)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * PYdUYiUYfUYfUYbUYlUYuUYeULY+M, Y/8O O4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors05/StringConstructors05.java000066400000000000000000000003671333451767700317430ustar00rootroot00000000000000public class StringConstructors05 { public static void main(String[] args) { char[] charArray = {'d', 'i', 'f', 'f', 'b', 'l', 'u', 'e'}; String s3 = new String(charArray); assert s3.equals("diffkblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringConstructors05/test.desc000066400000000000000000000002031333451767700266400ustar00rootroot00000000000000FUTURE StringConstructors05.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains01/000077500000000000000000000000001333451767700240705ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains01/test.class000066400000000000000000000011521333451767700260750ustar00rootroot000000000000004'      $assertionsDisabledZ()VCodeLineNumberTablemain(Ljava/lang/String;)V StackMapTable! SourceFile test.java abc ! "#java/lang/AssertionErrortest$ %&java/lang/Objectjava/lang/Stringcontains(Ljava/lang/CharSequence;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * HL+* Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains01/test.desc000066400000000000000000000001351333451767700257060ustar00rootroot00000000000000FUTURE test.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains01/test.java000066400000000000000000000002031333451767700257050ustar00rootroot00000000000000public class test { public static void main(String s) { String ab = "abc"; assert(ab.contains(s)); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains02/000077500000000000000000000000001333451767700240715ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains02/test.class000066400000000000000000000011361333451767700261000ustar00rootroot000000000000004&     $assertionsDisabledZ()VCodeLineNumberTablemain(Ljava/lang/String;)V StackMapTable SourceFile test.java Hello !"java/lang/AssertionErrortest# $%java/lang/Objectjava/lang/Stringcontains(Ljava/lang/CharSequence;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * =* Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains02/test.desc000066400000000000000000000001351333451767700257070ustar00rootroot00000000000000FUTURE test.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains02/test.java000066400000000000000000000001551333451767700257140ustar00rootroot00000000000000public class test { public static void main(String s) { assert(s.contains("Hello")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains03/000077500000000000000000000000001333451767700240725ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains03/Test.class000066400000000000000000000014131333451767700260370ustar00rootroot0000000000000043  $ ! "# $% &' ()*$assertionsDisabledZ()VCodeLineNumberTablecheck&(Ljava/lang/String;)Ljava/lang/String; StackMapTable SourceFile Test.java  Null string+ ,- Too shortfoobar ./ Contained java/lang/AssertionError UnreachableTest0 12java/lang/Objectjava/lang/Stringlength()Icontains(Ljava/lang/CharSequence;)Zjava/lang/ClassdesiredAssertionStatus()Z! * y2***< Y  &  !/   4   @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains03/Test.java000066400000000000000000000007101333451767700256520ustar00rootroot00000000000000public class Test { public static String check(String s) { // Filter if (s == null) { return "Null string"; } if (s.length() < 16_000_000) { return "Too short"; } // Act boolean b1 = s.contains("foobar"); // Filter output if (b1) { return "Contained"; } // Assert assert(false); return "Unreachable"; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringContains03/test.desc000066400000000000000000000003731333451767700257140ustar00rootroot00000000000000CORE Test.class --function Test.check ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ file Test.java line 20 .*: FAILURE$ -- -- --max-nondet-string-length is not used on purpose, because this tests the behaviour of string refinement on very large strings. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringDependencies/000077500000000000000000000000001333451767700245375ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringDependencies/Test.class000066400000000000000000000014171333451767700265100ustar00rootroot0000000000000040   ! "# $ %&'$assertionsDisabledZ()VCodeLineNumberTabletest(Ljava/lang/String;)V StackMapTable$( SourceFile Test.java _bar( )*_foo bar +,java/lang/AssertionErrorTest- ./java/lang/Objectjava/lang/Stringconcat&(Ljava/lang/String;)Ljava/lang/String;endsWith(Ljava/lang/String;)Zjava/lang/ClassdesiredAssertionStatus()Z  *C++M+N+:+:+:, Y &  #+B<4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringDependencies/Test.java000066400000000000000000000007731333451767700263300ustar00rootroot00000000000000class Test { void test(String s) { // Filter if(s == null) return; // Act // this matters for the final test String t = s.concat("_foo"); // these should be ignored by the solver as they // do not matter for the final test String u = s.concat("_bar"); String v = s.concat("_baz"); String w = s.concat("_fiz"); String x = s.concat("_buz"); // Assert assert t.endsWith("foo"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringDependencies/test.desc000066400000000000000000000006041333451767700263560ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 100 --verbosity 10 --function Test.test ^EXIT=0$ ^SIGNAL=0$ assertion at file Test.java line 20 .*: SUCCESS string_refinement::check_axioms: 3 universal axioms -- -- We check there are exactly 3 universal formulas considered by the solver (2 for `t = s.concat("_foo")` and 1 for `t.endsWith("foo")`). The other concatenations should be ignored. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringEquals/000077500000000000000000000000001333451767700234035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringEquals/Test.class000066400000000000000000000026431333451767700253560ustar00rootroot000000000000004= "#$ % & '( ") * +, -. /01$assertionsDisabledZ()VCodeLineNumberTablecheck(ILjava/lang/String;)V StackMapTable)$referenceImplementation'(Ljava/lang/String;Ljava/lang/Object;)Z verifyNonNullverify SourceFile Test.java  Hello Worldjava/lang/Integer 2  34java/lang/AssertionErrorjava/lang/String 567 89 Test: ;<java/lang/Object(I)Vequals(Ljava/lang/Object;)Zlength()Iorg/cprover/CProverStringcharAt(Ljava/lang/String;I)Cjava/lang/ClassdesiredAssertionStatus()Z! * MYN,Y+yYf-]YJ-AY.+-&Y+- Y>  ' , C H _d{' <+ + M* , >* * , *  %2 4:#  f+*+*+=*+ > Y() ,-0)3  R!*+=*+ > Y89 <?4  @ !cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringEquals/Test.java000066400000000000000000000032551333451767700251720ustar00rootroot00000000000000// Uses CProverString, must be compiled with ../cprover/CProverString.java import org.cprover.*; public class Test { public static void check(int i, String s) { String t = "Hello World"; Integer x = new Integer(2); if (i==0) assert("Hello World".equals(t)); else if (i==1) assert(! "Hello World".equals(s)); else if (i==2) assert(! "Hello World".equals(x)); else if (i==3) assert("Hello World".equals(x)); else if (i==4) assert(! s.equals(x)); else if (i==5) assert(s.equals(x)); } public static boolean referenceImplementation(String s, Object o) { if (! (o instanceof String)) return false; String s2 = (String) o; if (s.length() != s2.length()) return false; for (int i = 0; i < s.length(); i++) { if (CProverString.charAt(s, i) != CProverString.charAt(s2, i)) return false; } return true; } public static boolean verifyNonNull(String s, Object o) { // Filter if (s == null || o == null) return false; // Act boolean result = s.equals(o); boolean referenceResult = referenceImplementation(s, o); // Assert assert result == referenceResult; // Return return result; } public static boolean verify(String s, Object o) { // Act boolean result = s.equals(o); boolean referenceResult = referenceImplementation(s, o); // Assert assert result == referenceResult; // Return return result; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringEquals/test.desc000066400000000000000000000005651333451767700252300ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 40 --function Test.check ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 9 .* SUCCESS assertion at file Test.java line 11 .* FAILURE assertion at file Test.java line 13 .* SUCCESS assertion at file Test.java line 15 .* FAILURE assertion at file Test.java line 17 .* SUCCESS assertion at file Test.java line 19 .* FAILURE -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringEquals/test_verify.desc000066400000000000000000000003411333451767700266040ustar00rootroot00000000000000KNOWNBUG Test.class --max-nondet-string-length 5 --unwind 10 --function Test.verify --throw-runtime-exceptions ^EXIT=0$ ^SIGNAL=0$ assertion at file Test.java line 60 .* SUCCESS -- -- null case not handled currently TG-2179 cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringEquals/test_verify_non_null.desc000066400000000000000000000002331333451767700305100ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 20 --unwind 30 --function Test.verifyNonNull ^EXIT=0$ ^SIGNAL=0$ assertion at file Test.java line 48 .* SUCCESS cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods01/000077500000000000000000000000001333451767700247055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods01/StringIndexMethods01.class000066400000000000000000000022351333451767700316610ustar00rootroot000000000000004? !" # $%& ! $' $( $)* $+ $,- $. $/01 234$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable5 SourceFileStringIndexMethods01.java %automatictestcasegenerationatdiffblue 5 67java/lang/AssertionError 68 97 98diffblue 6: 6; generation 9: 9; automaticStringIndexMethods01< =>java/lang/Objectjava/lang/StringindexOf(I)I(II)I lastIndexOf(Ljava/lang/String;)I(Ljava/lang/String;I)Ijava/lang/ClassdesiredAssertionStatus()Z!* 1L+c Y+a Y+$ Y+c Y+a  Y+$ Y+  Y+   Y+  Y+  Y+  Y+ Y:5 M f 0 4 @ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods01/StringIndexMethods01.java000066400000000000000000000012771333451767700315020ustar00rootroot00000000000000public class StringIndexMethods01 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; assert letters.indexOf('c')==8; assert letters.indexOf('a', 1)==5; assert letters.indexOf('$')==-1; assert letters.lastIndexOf('c')==13; assert letters.lastIndexOf('a', 25)==22; assert letters.lastIndexOf('$')==-1; assert letters.indexOf("diffblue")==29; assert letters.indexOf("diffblue", 7)==29; assert letters.indexOf("generation")==17; assert letters.lastIndexOf("diffblue")==29; assert letters.lastIndexOf("diffblue", 25)==-1; assert letters.lastIndexOf("automatic")==0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods01/test.desc000066400000000000000000000002101333451767700265150ustar00rootroot00000000000000THOROUGH StringIndexMethods01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods02/000077500000000000000000000000001333451767700247065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods02/StringIndexMethods02.class000066400000000000000000000012321333451767700316570ustar00rootroot000000000000004'      $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable! SourceFileStringIndexMethods02.java %automatictestcasegenerationatdiffblue ! "#java/lang/AssertionErrorStringIndexMethods02$ %&java/lang/Objectjava/lang/StringindexOf(II)Ijava/lang/ClassdesiredAssertionStatus()Z!   * LL+a Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods02/StringIndexMethods02.java000066400000000000000000000003031333451767700314710ustar00rootroot00000000000000public class StringIndexMethods02 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; assert letters.indexOf('a', 1)==6; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods02/test.desc000066400000000000000000000002531333451767700265250ustar00rootroot00000000000000CORE StringIndexMethods02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods03/000077500000000000000000000000001333451767700247075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods03/StringIndexMethods03.class000066400000000000000000000012331333451767700316620ustar00rootroot000000000000004'      $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable! SourceFileStringIndexMethods03.java %automatictestcasegenerationatdiffblue ! "#java/lang/AssertionErrorStringIndexMethods03$ %&java/lang/Objectjava/lang/String lastIndexOf(I)Ijava/lang/ClassdesiredAssertionStatus()Z!   * JL+$ Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods03/StringIndexMethods03.java000066400000000000000000000003041333451767700314740ustar00rootroot00000000000000public class StringIndexMethods03 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; assert letters.lastIndexOf('$')==1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods03/test.desc000066400000000000000000000002531333451767700265260ustar00rootroot00000000000000CORE StringIndexMethods03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods04/000077500000000000000000000000001333451767700247105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods04/StringIndexMethods04.class000066400000000000000000000014531333451767700316700ustar00rootroot000000000000004,    !" #$%$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable&mainBug SourceFileStringIndexMethods04.java  onatdiffblue diffblue& '(java/lang/AssertionError%automatictestcasegenerationatdiffblueStringIndexMethods04) *+java/lang/Objectjava/lang/StringindexOf(Ljava/lang/String;)Ijava/lang/ClassdesiredAssertionStatus()Z!  * JL+ Y KL+ Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods04/StringIndexMethods04.java000066400000000000000000000005231333451767700315010ustar00rootroot00000000000000public class StringIndexMethods04 { public static void main(String[] args) { String letters = "onatdiffblue"; assert letters.indexOf("diffblue")==2; } public static void mainBug(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; assert letters.indexOf("diffblue")==28; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods04/test.desc000066400000000000000000000002531333451767700265270ustar00rootroot00000000000000CORE StringIndexMethods04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods04/test_bug.desc000066400000000000000000000005741333451767700273720ustar00rootroot00000000000000KNOWNBUG StringIndexMethods04.class --max-nondet-string-length 1000 --function StringIndexMethods04.mainBug ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring -- This test can randomly fail because the solver does not come up with the right model on the first iteration and the constraint instatiation adds too many things. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods05/000077500000000000000000000000001333451767700247115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods05/StringIndexMethods05.class000066400000000000000000000012751333451767700316740ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFileStringIndexMethods05.java %automatictestcasegenerationatdiffblue diffblue# $%java/lang/AssertionErrorStringIndexMethods05& '(java/lang/Objectjava/lang/String lastIndexOf(Ljava/lang/String;I)Ijava/lang/ClassdesiredAssertionStatus()Z!   * LL+ Y4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods05/StringIndexMethods05.java000066400000000000000000000003171333451767700315040ustar00rootroot00000000000000public class StringIndexMethods05 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; assert letters.lastIndexOf("diffblue", 25)==1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexMethods05/test.desc000066400000000000000000000002551333451767700265320ustar00rootroot00000000000000FUTURE StringIndexMethods05.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexOf/000077500000000000000000000000001333451767700235055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexOf/Test.class000066400000000000000000000023141333451767700254530ustar00rootroot0000000000000041      !"# $%&$assertionsDisabledZ()VCodeLineNumberTablecheck(Ljava/lang/String;CI)Z StackMapTablecheck2()Z SourceFile Test.java ' () *+java/lang/AssertionError, -.helloTest/ 0java/lang/Objectjava/lang/StringindexOf(II)Ilength()Iorg/cprover/CProverStringcharAt(Ljava/lang/String;I)Cjava/lang/ClassdesiredAssertionStatus!  *,+6+ Y 6616+!+ YܧY Y+ Y6!+ Y>  #),2?W`u    o< Yh< Ye< Ye< Yx< Yh< Y Y:" #$%%8&A'T(^)q*z+,-./  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexOf/Test.java000066400000000000000000000030271333451767700252710ustar00rootroot00000000000000// This test uses CProverString so should be compiled with // javac Test.java ../cprover/CProverString.java public class Test { public boolean check(String input_String, char input_char, int input_int) { // Verify indexOf is conform to its specification int i = input_String.indexOf(input_char, input_int); assert i < input_String.length(); int lower_bound; if (input_int < 0) lower_bound = 0; else lower_bound = input_int; if (i == -1) { for (int j = lower_bound; j < input_String.length(); j++) assert org.cprover.CProverString.charAt(input_String, j) != input_char; } else { assert i >= lower_bound; assert org.cprover.CProverString.charAt(input_String, i) == input_char; for (int j = lower_bound; j < i; j++) assert org.cprover.CProverString.charAt(input_String, j) != input_char; } return true; } public boolean check2() { // Verification should fail, this is to check the solver does // not get a contradiction int i = "hello".indexOf('o', 1); assert i == 4; i = "hello".indexOf('h', 1); assert i == -1; i = "hello".indexOf('e', 4); assert i == -1; i = "hello".indexOf('e', 8); assert i == -1; i = "hello".indexOf('x', 0); assert i == -1; i = "hello".indexOf('h', -1000); assert i == 0; assert false; return true; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexOf/test.desc000066400000000000000000000002321333451767700253210ustar00rootroot00000000000000CORE Test.class --function Test.check --unwind 4 --max-nondet-string-length 3 --java-assume-inputs-non-null ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexOf/test2.desc000066400000000000000000000007461333451767700254150ustar00rootroot00000000000000CORE Test.class --function Test.check2 --unwind 10 --max-nondet-string-length 10 --java-assume-inputs-non-null ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 35 .* SUCCESS assertion at file Test.java line 37 .* SUCCESS assertion at file Test.java line 39 .* SUCCESS assertion at file Test.java line 41 .* SUCCESS assertion at file Test.java line 43 .* SUCCESS assertion at file Test.java line 45 .* SUCCESS assertion at file Test.java line 46 .* FAILURE ^VERIFICATION FAILED$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringIndexOf/test_thorough.desc000066400000000000000000000002431333451767700272420ustar00rootroot00000000000000THOROUGH Test.class --function Test.check --unwind 10 --max-nondet-string-length 10 --java-assume-inputs-non-null ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringLastIndexOf/000077500000000000000000000000001333451767700243315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringLastIndexOf/Test.class000066400000000000000000000017711333451767700263050ustar00rootroot000000000000004<   ! "# $% &' ( ) *+ ,-. fromIndexI$assertionsDisabledZ()VCodeLineNumberTablecheck((Ljava/lang/String;Ljava/lang/String;I)V StackMapTable SourceFile Test.java / 01 23 java/lang/AssertionErrorfoo4 56  07 08Test9 :;java/lang/Objectjava/lang/String lastIndexOf(Ljava/lang/String;)Ilength()Iorg/cprover/CProverStringcharAt(Ljava/lang/String;I)C(II)I(Ljava/lang/String;I)Ijava/lang/ClassdesiredAssertionStatus()Z! *+,++,6,+ Y|qfY:,3+, * 6,* Y"  Y:   1 9R^mt184  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringLastIndexOf/Test.java000066400000000000000000000020521333451767700261120ustar00rootroot00000000000000public class Test { int fromIndex; public void check(String input_String1, String input_String2, int i) { if(input_String1 != null && input_String2 != null) { if (i == 0) { // The last occurrence of the empty string "" is considered to // occur at the index value this.length() int lio = input_String1.lastIndexOf(input_String2); if (input_String2.length() == 0) assert lio == input_String1.length(); } else if (i == 1) { // Contradiction with the previous condition (should fail). assert "foo".lastIndexOf("") != 3; } else if (i == 2 && input_String2.length() > 0) { int lio = input_String1.lastIndexOf(org.cprover.CProverString.charAt(input_String2, 0), fromIndex); if (input_String2.length() == 0) assert lio == fromIndex; } else if (i == 3) { assert "foo".lastIndexOf("", 2) != 2; } } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringLastIndexOf/test.desc000066400000000000000000000004321333451767700261470ustar00rootroot00000000000000CORE Test.class --function Test.check --max-nondet-string-length 100 ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 11 .* SUCCESS$ assertion at file Test.java line 14 .* FAILURE$ assertion at file Test.java line 18 .* SUCCESS$ assertion at file Test.java line 20 .* FAILURE$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous01/000077500000000000000000000000001333451767700251155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous01/StringMiscellaneous01.class000066400000000000000000000025461333451767700323060ustar00rootroot000000000000004R #$%& ' ()* # +,-. (/ 01 23 (4 25 267 89$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable:;< SourceFileStringMiscellaneous01.java Automatic Test GenerationnoitareneG tseT citamotuAAutom ; =>java/lang/AssertionError? @A%c java/lang/Object BCD EFG HI JK LM NStringMiscellaneous01O PQ[Ljava/lang/String;java/lang/String[Clength()Ijava/lang/SystemoutLjava/io/PrintStream;charAt(I)Cjava/lang/CharactervalueOf(C)Ljava/lang/Character;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;getChars(II[CI)Vprint(C)Vprintlnjava/lang/ClassdesiredAssertionStatus()Z! * y LMN:+ Y6+d6B   Y+ SW+ , Y+6:66446  -  Y˲ R  % ( 5Nkn t}D% :. 4 @!"cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous01/StringMiscellaneous01.java000066400000000000000000000014051333451767700321130ustar00rootroot00000000000000public class StringMiscellaneous01 { public static void main(String[] args) { String s1 = "Automatic Test Generation"; String s2 = "noitareneG tseT citamotuA"; String s3 = "Autom"; char[] charArray = new char[5]; assert s1.length()==25; int i=0; for (int count = s1.length() - 1; count >= 0; count--) { System.out.printf("%c ", s1.charAt(count)); assert s1.charAt(count) == s2.charAt(i); ++i; } // copy characters from string into charArray s1.getChars(0, 5, charArray, 0); i=0; for (char character : charArray) { System.out.print(character); assert s3.charAt(i) == character; ++i; } System.out.println(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous01/test.desc000066400000000000000000000002231333451767700267310ustar00rootroot00000000000000FUTURE StringMiscellaneous01.class --max-nondet-string-length 1000 --unwind 30 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous02/000077500000000000000000000000001333451767700251165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous02/StringMiscellaneous02.class000066400000000000000000000012121333451767700322750ustar00rootroot000000000000004'      $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable! SourceFileStringMiscellaneous02.java Automatic Test Generation ! "#java/lang/AssertionErrorStringMiscellaneous02$ %&java/lang/Objectjava/lang/Stringlength()Ijava/lang/ClassdesiredAssertionStatus()Z!   * IL+ Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous02/StringMiscellaneous02.java000066400000000000000000000002501333451767700321120ustar00rootroot00000000000000public class StringMiscellaneous02 { public static void main(String[] args) { String s1 = "Automatic Test Generation"; assert s1.length()==24; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous02/test.desc000066400000000000000000000002701333451767700267340ustar00rootroot00000000000000CORE StringMiscellaneous02.class --max-nondet-string-length 1000 --unwind 30 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 6 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous03/000077500000000000000000000000001333451767700251175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous03/StringMiscellaneous03.class000066400000000000000000000014651333451767700323110ustar00rootroot0000000000000041   !" # $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable'() SourceFileStringMiscellaneous03.java Automatic Test GenerationnoitareneG tseT citamotuA( *+ ,-java/lang/AssertionErrorStringMiscellaneous03. /0java/lang/Object[Ljava/lang/String;java/lang/String[Clength()IcharAt(I)Cjava/lang/ClassdesiredAssertionStatus()Z!  * ALMN6+d6)+, Yر&    7 : @!4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous03/StringMiscellaneous03.java000066400000000000000000000005731333451767700321240ustar00rootroot00000000000000public class StringMiscellaneous03 { public static void main(String[] args) { String s1 = "Automatic Test Generation"; String s2 = "noitareneG tseT citamotuA"; char[] charArray = new char[5]; int i=0; for (int count = s1.length() - 1; count >= 0; count--) { assert s1.charAt(count) != s2.charAt(i); ++i; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous03/test.desc000066400000000000000000000002711333451767700267360ustar00rootroot00000000000000CORE StringMiscellaneous03.class --max-nondet-string-length 1000 --unwind 30 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 11 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous04/000077500000000000000000000000001333451767700251205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous04/StringMiscellaneous04.class000066400000000000000000000036621333451767700323140ustar00rootroot000000000000004j . /0 12 . 34567 /8 9:;< /= >?@ /AB /CD /EF GH >I >JK LM$assertionsDisabledZ()VCodeLineNumberTable toCharArray(Ljava/lang/String;)[C StackMapTableNmain([Ljava/lang/String;)VOP SourceFileStringMiscellaneous04.java  O QR java/lang/AssertionErrorS TUdiffblueTESTGENERATION automated VWX YZ Replace 'f' with 'F' in s1: %s java/lang/Object [\] ^_diFFblue `aDIFFBLUE batestgeneration ca automated #$s1 as a character array = de f StringMiscellaneous04g hi[Cjava/lang/String[Ljava/lang/String;length()Iorg/cprover/CProverStringcharAt(Ljava/lang/String;I)Cequals(Ljava/lang/Object;)Zjava/lang/SystemoutLjava/io/PrintStream;replace(CC)Ljava/lang/String;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream; toUpperCase()Ljava/lang/String; toLowerCasetrimprint(Ljava/lang/String;)Vprintlnjava/lang/ClassdesiredAssertionStatus()Z!  !*" #$!=*< Y*M> ,*U," - 5 ; %& '(! 7LM N+ Y, Y- Y   Y+fFSW+fF: Y+: Y,: Y-: Y+: 6:66  - 46   Y Ҳ "j  7N^bfp!"$%()+, .'/*,0263%V )))9) *))))&&'*))))&+ !4"% @,-cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringMiscellaneous04/StringMiscellaneous04.java000066400000000000000000000026601333451767700321250ustar00rootroot00000000000000public class StringMiscellaneous04 { // This is a model of the String.toCharArray method public static char[] toCharArray(String s) { int length=s.length(); assert(length<10); char arr[]=new char[s.length()]; // We limit arbitrarly the loop unfolding to 10 for(int i=0; i()VCodeLineNumberTabletestmeF(Ljava/lang/StringBuilder;Ljava/lang/StringBuffer;Ljava/lang/String;)V StackMapTable SourceFile Test.java  56 78 9: ;< => ? java/lang/StringBuilderjava/lang/AssertionErrorjava/lang/StringBufferjava/lang/String java/lang/Ajava/lang/IntegerTest@ ABjava/lang/Objecta Ljava/lang/A;iLjava/lang/Integer;xIyFdDbjava/lang/ClassdesiredAssertionStatus()Z!* +,*+,*+,,* +  * Y + Y , Y , Y * Y + Y Y& Lav" a  4  @!"cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/Test.java000066400000000000000000000020131333451767700271350ustar00rootroot00000000000000public class Test { public static void testme(StringBuilder builder, StringBuffer buffer, String str) { // In this test the versions of String, StringBuilder and // StringBuffer.class supplied have fields beyond the expected situation // of either no fields at all (without --refine-strings) or only 'length' // and 'data' (with --refine-strings). We check they have been nondet- // initialized as expected by making sure we can reach the final // 'assert false'. if(str != null && builder != null && buffer != null && str.a != null && builder.i != null && buffer.i != null && str.a.x >= 5 && str.a.y <= -10.0f && builder.d >= 100.0 && buffer.b == true) { assert builder instanceof StringBuilder; assert buffer instanceof StringBuffer; assert str instanceof String; assert str.a instanceof A; assert builder.i instanceof Integer; assert buffer.i instanceof Integer; assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/000077500000000000000000000000001333451767700263005ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/000077500000000000000000000000001333451767700272215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/A.class000066400000000000000000000003321333451767700304260ustar00rootroot000000000000004 xIyF()VCodeLineNumberTable SourceFileA.java   java/lang/Ajava/lang/Object!  *   cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/A.java000066400000000000000000000001131333451767700302370ustar00rootroot00000000000000package java.lang; public class A { public int x; public float y; } AbstractStringBuilder.class000066400000000000000000000004421333451767700344320ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang4  iLjava/lang/Integer;()VCodeLineNumberTable SourceFileAbstractStringBuilder.java java/lang/AbstractStringBuilderjava/lang/Objectjava/lang/CharSequence! *   AbstractStringBuilder.java000066400000000000000000000001511333451767700342430ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/langpackage java.lang; public class AbstractStringBuilder implements CharSequence { public Integer i; } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/CharSequence.class000066400000000000000000000001631333451767700326160ustar00rootroot000000000000004 SourceFileCharSequence.javajava/lang/CharSequencejava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/CharSequence.java000066400000000000000000000000601333451767700324260ustar00rootroot00000000000000package java.lang; interface CharSequence { } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/String.class000066400000000000000000000003761333451767700315240ustar00rootroot000000000000004  a Ljava/lang/A;()VCodeLineNumberTable SourceFile String.java java/lang/Stringjava/lang/Objectjava/lang/CharSequence! *   cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/String.java000066400000000000000000000001241333451767700313270ustar00rootroot00000000000000package java.lang; public class String implements CharSequence { public A a; } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/StringBuffer.class000066400000000000000000000003571333451767700326550ustar00rootroot000000000000004   bZ()VCodeLineNumberTable SourceFileStringBuffer.java java/lang/StringBufferjava/lang/AbstractStringBuilder!*   cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/StringBuffer.java000066400000000000000000000001461333451767700324650ustar00rootroot00000000000000package java.lang; public class StringBuffer extends AbstractStringBuilder { public boolean b; } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/StringBuilder.class000066400000000000000000000003611333451767700330250ustar00rootroot000000000000004   dD()VCodeLineNumberTable SourceFileStringBuilder.java java/lang/StringBuilderjava/lang/AbstractStringBuilder!*   cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/java/lang/StringBuilder.java000066400000000000000000000001461333451767700326420ustar00rootroot00000000000000package java.lang; public class StringBuilder extends AbstractStringBuilder { public double d; } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringModelsWithFields/test.desc000066400000000000000000000006261333451767700272020ustar00rootroot00000000000000CORE Test.class --function Test.testme ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 23 .* SUCCESS assertion at file Test.java line 24 .* SUCCESS assertion at file Test.java line 25 .* SUCCESS assertion at file Test.java line 27 .* SUCCESS assertion at file Test.java line 28 .* SUCCESS assertion at file Test.java line 29 .* SUCCESS assertion at file Test.java line 31 .* FAILURE -- type mismatch cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd01/000077500000000000000000000000001333451767700240365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd01/StringStartEnd01.class000066400000000000000000000020721333451767700301420ustar00rootroot000000000000004:  !"#$%& ' () * +, -. /01$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable2 SourceFileStringStartEnd01.java java/lang/Stringtestedtestingpassedpassingte 34 java/lang/AssertionErrorste 35ed 64StringStartEnd017 89java/lang/Object[Ljava/lang/String; startsWith(Ljava/lang/String;)Z(Ljava/lang/String;I)ZendsWithjava/lang/ClassdesiredAssertionStatus()Z!* sYSYSYSYSL=+N-66-2:  Y =+N-66-2:    Y =+N-66-2:  Y R1 ; >D WYoz}4 $  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd01/StringStartEnd01.java000066400000000000000000000010771333451767700277620ustar00rootroot00000000000000public class StringStartEnd01 { public static void main(String[] args) { String[] strings = {"tested", "testing", "passed", "passing"}; int i=0; for (String string : strings) { if (string.startsWith("te")) ++i; } assert i==2; i=0; for (String string : strings) { if (string.startsWith("ste", 2)) ++i; } assert i==1; i=0; for (String string : strings) { if (string.endsWith("ed")) ++i; } assert i==2; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd01/test.desc000066400000000000000000000002201333451767700256470ustar00rootroot00000000000000THOROUGH StringStartEnd01.class --max-nondet-string-length 1000 --unwind 30 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd02/000077500000000000000000000000001333451767700240375ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd02/StringStartEnd02.class000066400000000000000000000014521333451767700301450ustar00rootroot0000000000000040  !" # $% & '()$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable* SourceFileStringStartEnd02.java java/lang/Stringtestedtestingpassedpassingte +, java/lang/AssertionErrorStringStartEnd02- ./java/lang/Object[Ljava/lang/String; startsWith(Ljava/lang/String;)Zjava/lang/ClassdesiredAssertionStatus()Z! * XYSYSYSYSL=+N-66-2:  Y "1 ; >D W$4   @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd02/StringStartEnd02.java000066400000000000000000000004511333451767700277570ustar00rootroot00000000000000public class StringStartEnd02 { public static void main(String[] args) { String[] strings = {"tested", "testing", "passed", "passing"}; int i=0; for (String string : strings) { if (string.startsWith("te")) ++i; } assert i==1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd02/test.desc000066400000000000000000000002641333451767700256600ustar00rootroot00000000000000CORE StringStartEnd02.class --unwind 30 --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 13 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd03/000077500000000000000000000000001333451767700240405ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd03/StringStartEnd03.class000066400000000000000000000014501333451767700301450ustar00rootroot0000000000000040  !" # $% & '()$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable* SourceFileStringStartEnd03.java java/lang/Stringtestedtestingpassedpassinged +, java/lang/AssertionErrorStringStartEnd03- ./java/lang/Object[Ljava/lang/String;endsWith(Ljava/lang/String;)Zjava/lang/ClassdesiredAssertionStatus()Z! * XYSYSYSYSL=+N-66-2:  Y "1 ; >D W$4   @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd03/StringStartEnd03.java000066400000000000000000000004471333451767700277660ustar00rootroot00000000000000public class StringStartEnd03 { public static void main(String[] args) { String[] strings = {"tested", "testing", "passed", "passing"}; int i=0; for (String string : strings) { if (string.endsWith("ed")) ++i; } assert i==3; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringStartEnd03/test.desc000066400000000000000000000002701333451767700256560ustar00rootroot00000000000000THOROUGH StringStartEnd03.class --max-nondet-string-length 1000 --unwind 15 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 13 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringSubstring/000077500000000000000000000000001333451767700241315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringSubstring/Test.class000066400000000000000000000026011333451767700260760ustar00rootroot000000000000004I % &'( % ) &* + , - ./ %01234 567$assertionsDisabledZ()VCodeLineNumberTable testSuccess(Ljava/lang/String;II)V StackMapTable0(testFail(I)V8 SourceFile Test.java 9 :;java/lang/StringBuilder <= >? @A  BC DEjava/lang/AssertionErrorjava/lang/StringfoofTestF GHjava/lang/Object[Ljava/lang/String;org/cprover/CProverString substring((Ljava/lang/String;II)Ljava/lang/String;length()IcharAt(Ljava/lang/String;I)Cappend(C)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z *\++:Y:=6++W Y .  .:@[  : M,S,S,S,S,S,2 Y ,2 Y ,2 Y ,2 Y ,2 Y F# .!:$>%W&\'u(z)*+,-. W!"4 @#$cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringSubstring/Test.java000066400000000000000000000026001333451767700257110ustar00rootroot00000000000000// This test uses CProverString so should be compiled with // javac Test.java ../cprover/CProverString.java class Test { public void testSuccess(String s, int start, int end) { // Filter if (s == null) return; // Act String sub = org.cprover.CProverString.substring(s, start, end); // Arrange StringBuilder reference = new StringBuilder(); if(start < 0) start = 0; for (int i = start; i < end && i < s.length(); i++) reference.append(org.cprover.CProverString.charAt(s, i)); // Assert assert sub.equals(reference.toString()); } public void testFail(int i) { // Arrange String[] s = new String[5]; // Act s[0] = org.cprover.CProverString.substring("foo", 0, 1); s[1] = org.cprover.CProverString.substring("foo", 0, 4); s[2] = org.cprover.CProverString.substring("foo", -1, 0); s[3] = org.cprover.CProverString.substring("foo", -10, -1); s[4] = org.cprover.CProverString.substring("foo", -10, 25); // Assert if(i == 0) assert !s[0].equals("f"); if(i == 1) assert !s[1].equals("foo"); if(i == 2) assert !s[2].equals(""); if(i == 3) assert !s[3].equals(""); if(i == 4) assert !s[4].equals("foo"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringSubstring/test.desc000066400000000000000000000002311333451767700257440ustar00rootroot00000000000000CORE Test.class --unwind 10 --max-nondet-string-length 6 --function Test.testSuccess ^EXIT=0$ ^SIGNAL=0$ assertion at file Test.java line 21.*: SUCCESS cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringSubstring/test_fail.desc000066400000000000000000000005271333451767700267470ustar00rootroot00000000000000CORE Test.class --unwind 10 --max-nondet-string-length 6 --function Test.testFail ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 37 .*: FAILURE assertion at file Test.java line 39 .*: FAILURE assertion at file Test.java line 41 .*: FAILURE assertion at file Test.java line 43 .*: FAILURE assertion at file Test.java line 45 .*: FAILURE cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToLowerCase/000077500000000000000000000000001333451767700243405ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToLowerCase/Test.class000066400000000000000000000032611333451767700263100ustar00rootroot000000000000004S ,- ,. /0 12345 6 /789 /:;< /=> ?@A ,B CDE$assertionsDisabledZ()VCodeLineNumberTabledet()Ljava/lang/String;nonDet&(Ljava/lang/String;)Ljava/lang/String; StackMapTablewithDependency'(Ljava/lang/String;Z)Ljava/lang/String;F SourceFile Test.java java/lang/StringBuilder4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZF G" HI4abcdeghijklmnopfrstuqwxyzABCDvFGHIJKLMENOPQRSTUVWXYZ4abcdeghijlmnopqrstvwxyzABCDEFGHIJuKLMNOPQRSfkTUVWXYZ4acdefghijklmnopqrsuvwxyzABCDEFbGHIJKLMNOPtQRSTUVWXYZ4abcdfghijklmnopqrstuvwxyzABCDEFGHIJeKLMNOPQRSTUVWXYZ J" KL Short stringA MNString not starting with A: ONString not ending with A ajava/lang/AssertionErrorTestP QRjava/lang/Objectjava/lang/String toLowerCaseappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toStringlength()I startsWith(Ljava/lang/String;)ZendsWithjava/lang/ClassdesiredAssertionStatus()Z!* !"o?YL+W+W+W+ W+ W+  &0 : #$]+  +YM,+W,+W,W,+W,W,+W,+W,  6    )29?FOX% &'f+ +  +Y++ N+-"Y- Y- & " #$%(2+6,M.d0%   0()4 % @*+cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToLowerCase/Test.java000066400000000000000000000031151333451767700261220ustar00rootroot00000000000000public class Test { public String det() { StringBuilder builder = new StringBuilder(); builder.append("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toLowerCase()); builder.append("abcdeghijklmnopfrstuqwxyzABCDvFGHIJKLMENOPQRSTUVWXYZ".toLowerCase()); builder.append("abcdeghijlmnopqrstvwxyzABCDEFGHIJuKLMNOPQRSfkTUVWXYZ".toLowerCase()); builder.append("acdefghijklmnopqrsuvwxyzABCDEFbGHIJKLMNOPtQRSTUVWXYZ".toLowerCase()); builder.append("abcdfghijklmnopqrstuvwxyzABCDEFGHIJeKLMNOPQRSTUVWXYZ".toLowerCase()); return builder.toString(); } public String nonDet(String s) { if(s.length() < 20) return "Short string"; if(!s.startsWith("A")) return "String not starting with A"; StringBuilder builder = new StringBuilder(); builder.append(s.toLowerCase()); builder.append(s.toLowerCase()); builder.append(":"); builder.append(s); builder.append(":"); builder.append(s.toLowerCase()); builder.append(s.toLowerCase()); return builder.toString(); } public String withDependency(String s, boolean b) { // Filter if(s == null || s.length() < 20) return "Short string"; if(!s.endsWith("A")) return "String not ending with A"; // Act String result = s + s.toLowerCase(); // Assert if(b) { assert(result.endsWith("a")); } else { assert(!result.endsWith("a")); } return result; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToLowerCase/test_dependency.desc000066400000000000000000000004361333451767700303600ustar00rootroot00000000000000CORE Test.class --function Test.withDependency --verbosity 10 --max-nondet-string-length 10000 ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 44 .*: SUCCESS assertion at file Test.java line 46 .*: FAILURE -- -- Check that when there are dependencies, axioms are adde correctly. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToLowerCase/test_det.desc000066400000000000000000000004131333451767700270110ustar00rootroot00000000000000CORE Test.class --function Test.det --verbosity 10 --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 9 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToLowerCase/test_nondet.desc000066400000000000000000000004571333451767700275340ustar00rootroot00000000000000CORE Test.class --function Test.nonDet --verbosity 10 --cover location --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 27 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToUpperCase/000077500000000000000000000000001333451767700243435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToUpperCase/Test.class000066400000000000000000000033111333451767700263070ustar00rootroot000000000000004V -. -/ 01 23 04567 8 09:; 0<=> 0?@ ABC -D EFG$assertionsDisabledZ()VCodeLineNumberTabledet()Ljava/lang/String;nonDet&(Ljava/lang/String;)Ljava/lang/String; StackMapTablewithDependency'(Ljava/lang/String;Z)Ljava/lang/String;H SourceFile Test.java java/lang/StringBuilder4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZH I# JK4abcdeghijklmnopfrstuqwxyzABCDvFGHIJKLMENOPQRSTUVWXYZ L#4abcdeghijlmnopqrstvwxyzABCDEFGHIJuKLMNOPQRSfkTUVWXYZ4acdefghijklmnopqrsuvwxyzABCDEFbGHIJKLMNOPtQRSTUVWXYZ4abcdfghijklmnopqrstuvwxyzABCDEFGHIJeKLMNOPQRSTUVWXYZ M# NO Short stringa PQString not starting with a: RQString not ending with a Ajava/lang/AssertionErrorTestS TUjava/lang/Objectjava/lang/String toLowerCaseappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; toUpperCasetoStringlength()I startsWith(Ljava/lang/String;)ZendsWithjava/lang/ClassdesiredAssertionStatus()Z! *!"# o?YL+W+W+ W+ W+ W+ !&0 : $% ]+ +YM,+W,+W,W,+W,W,+W,+W, !6    )29?FOX& '( f+ + +Y++ N+-"Y- Y-!& " #$%(2+6,M.d0&   0)* 4!& @+,cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToUpperCase/Test.java000066400000000000000000000031151333451767700261250ustar00rootroot00000000000000public class Test { public String det() { StringBuilder builder = new StringBuilder(); builder.append("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toLowerCase()); builder.append("abcdeghijklmnopfrstuqwxyzABCDvFGHIJKLMENOPQRSTUVWXYZ".toUpperCase()); builder.append("abcdeghijlmnopqrstvwxyzABCDEFGHIJuKLMNOPQRSfkTUVWXYZ".toUpperCase()); builder.append("acdefghijklmnopqrsuvwxyzABCDEFbGHIJKLMNOPtQRSTUVWXYZ".toUpperCase()); builder.append("abcdfghijklmnopqrstuvwxyzABCDEFGHIJeKLMNOPQRSTUVWXYZ".toUpperCase()); return builder.toString(); } public String nonDet(String s) { if(s.length() < 20) return "Short string"; if(!s.startsWith("a")) return "String not starting with a"; StringBuilder builder = new StringBuilder(); builder.append(s.toUpperCase()); builder.append(s.toUpperCase()); builder.append(":"); builder.append(s); builder.append(":"); builder.append(s.toUpperCase()); builder.append(s.toUpperCase()); return builder.toString(); } public String withDependency(String s, boolean b) { // Filter if(s == null || s.length() < 20) return "Short string"; if(!s.endsWith("a")) return "String not ending with a"; // Act String result = s + s.toUpperCase(); // Assert if(b) { assert(result.endsWith("A")); } else { assert(!result.endsWith("A")); } return result; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToUpperCase/test_dependency.desc000066400000000000000000000004361333451767700303630ustar00rootroot00000000000000CORE Test.class --function Test.withDependency --verbosity 10 --max-nondet-string-length 10000 ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 44 .*: SUCCESS assertion at file Test.java line 46 .*: FAILURE -- -- Check that when there are dependencies, axioms are added correctly. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToUpperCase/test_det.desc000066400000000000000000000004131333451767700270140ustar00rootroot00000000000000CORE Test.class --function Test.det --verbosity 10 --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 9 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringToUpperCase/test_nondet.desc000066400000000000000000000004571333451767700275370ustar00rootroot00000000000000CORE Test.class --function Test.nonDet --verbosity 10 --cover location --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 27 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf01/000077500000000000000000000000001333451767700236535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf01/StringValueOf01.class000066400000000000000000000030351333451767700275740ustar00rootroot000000000000004] 0T @ @@vȴ1 23 45 267 0 289 2:; 2<= 2>? 2@A 2BC 2DE 2FG HIJ$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableKLJM SourceFileStringValueOf01.java "#testM NO !diffblue PQjava/lang/AssertionError NRfbl NSfalse NTT NU7 NV 10000000000 NW2.5 NX33.333 NYStringValueOf01Z [\java/lang/Object[Ljava/lang/String;[Cjava/lang/StringvalueOf([C)Ljava/lang/String;equals(Ljava/lang/Object;)Z([CII)Ljava/lang/String;(Z)Ljava/lang/String;(C)Ljava/lang/String;(I)Ljava/lang/String;(J)Ljava/lang/String;(F)Ljava/lang/String;(D)Ljava/lang/String;&(Ljava/lang/Object;)Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z! !"#$*% &'$  `YdUYiUYfUYfUYbUYlUYuUYeUL=T>6789: +:   Y +:   Y :   Y :   Y :   Y :   Y :   Y :   Y  :   Y %n/148 = A F JPhp  !!#($@&G'_((# h )*+,-#$4 %( @./cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf01/StringValueOf01.java000066400000000000000000000022471333451767700274140ustar00rootroot00000000000000public class StringValueOf01 { public static void main(String[] args) { char[] charArray = {'d', 'i', 'f', 'f', 'b', 'l', 'u', 'e'}; boolean booleanValue = false; char characterValue = 'T'; int integerValue = 7; long longValue = 10000000000L; // L suffix indicates long float floatValue = 2.5f; // f indicates that 2.5 is a float double doubleValue = 33.333; // no suffix, double is default Object objectRef = "test"; // assign string to an Object reference String tmp=String.valueOf(charArray); assert tmp.equals("diffblue"); tmp=String.valueOf(charArray, 3, 3); assert tmp.equals("fbl"); tmp=String.valueOf(booleanValue); assert tmp.equals("false"); tmp=String.valueOf(characterValue); assert tmp.equals("T"); tmp=String.valueOf(integerValue); assert tmp.equals("7"); tmp=String.valueOf(longValue); assert tmp.equals("10000000000"); tmp=String.valueOf(floatValue); assert tmp.equals("2.5"); tmp=String.valueOf(doubleValue); assert tmp.equals("33.333"); tmp=String.valueOf(objectRef); assert tmp.equals("test"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf01/test.desc000066400000000000000000000002011333451767700254630ustar00rootroot00000000000000FUTURE StringValueOf01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf02/000077500000000000000000000000001333451767700236545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf02/StringValueOf02.class000066400000000000000000000013551333451767700276010ustar00rootroot000000000000004-      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable$% SourceFileStringValueOf02.java % &'  difffblue ()java/lang/AssertionErrorStringValueOf02* +,java/lang/Object[Cjava/lang/StringvalueOf([C)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * LYdUYiUYfUYfUYbUYlUYuUYeUL+M, Y/4K K4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf02/StringValueOf02.java000066400000000000000000000003521333451767700274110ustar00rootroot00000000000000public class StringValueOf02 { public static void main(String[] args) { char[] charArray = {'d', 'i', 'f', 'f', 'b', 'l', 'u', 'e'}; String tmp=String.valueOf(charArray); assert tmp.equals("difffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf02/test.desc000066400000000000000000000002461333451767700254750ustar00rootroot00000000000000CORE StringValueOf02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf03/000077500000000000000000000000001333451767700236555ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf03/StringValueOf03.class000066400000000000000000000013541333451767700276020ustar00rootroot000000000000004-      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable$% SourceFileStringValueOf03.java % &' fbbl ()java/lang/AssertionErrorStringValueOf03* +,java/lang/Object[Cjava/lang/StringvalueOf([CII)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * NYdUYiUYfUYfUYbUYlUYuUYeUL+M, Y/6M M4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf03/StringValueOf03.java000066400000000000000000000003531333451767700274140ustar00rootroot00000000000000public class StringValueOf03 { public static void main(String[] args) { char[] charArray = {'d', 'i', 'f', 'f', 'b', 'l', 'u', 'e'}; String tmp=String.valueOf(charArray, 3, 3); assert tmp.equals("fbbl"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf03/test.desc000066400000000000000000000002461333451767700254760ustar00rootroot00000000000000CORE StringValueOf03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf04/000077500000000000000000000000001333451767700236565ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf04/StringValueOf04.class000066400000000000000000000012601333451767700276000ustar00rootroot000000000000004+      !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFileStringValueOf04.java # $% true &'java/lang/AssertionErrorStringValueOf04( )*java/lang/Objectjava/lang/StringvalueOf(Z)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * R<M, Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf04/StringValueOf04.java000066400000000000000000000003111333451767700274100ustar00rootroot00000000000000public class StringValueOf04 { public static void main(String[] args) { boolean booleanValue = false; String tmp=String.valueOf(booleanValue); assert tmp.equals("true"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf04/test.desc000066400000000000000000000002461333451767700254770ustar00rootroot00000000000000CORE StringValueOf04.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf05/000077500000000000000000000000001333451767700236575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf05/StringValueOf05.class000066400000000000000000000012561333451767700276070ustar00rootroot000000000000004+      !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFileStringValueOf05.java # $% A &'java/lang/AssertionErrorStringValueOf05( )*java/lang/Objectjava/lang/StringvalueOf(C)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * S T<M, Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf05/StringValueOf05.java000066400000000000000000000003051333451767700274150ustar00rootroot00000000000000public class StringValueOf05 { public static void main(String[] args) { char characterValue = 'T'; String tmp=String.valueOf(characterValue); assert tmp.equals("A"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf05/test.desc000066400000000000000000000002461333451767700255000ustar00rootroot00000000000000CORE StringValueOf05.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf06/000077500000000000000000000000001333451767700236605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf06/StringValueOf06.class000066400000000000000000000012571333451767700276120ustar00rootroot000000000000004+      !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFileStringValueOf06.java # $% 77 &'java/lang/AssertionErrorStringValueOf06( )*java/lang/Objectjava/lang/StringvalueOf(I)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * S <M, Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf06/StringValueOf06.java000066400000000000000000000002771333451767700274270ustar00rootroot00000000000000public class StringValueOf06 { public static void main(String[] args) { int integerValue = 7; String tmp=String.valueOf(integerValue); assert tmp.equals("77"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf06/test.desc000066400000000000000000000002461333451767700255010ustar00rootroot00000000000000CORE StringValueOf06.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf07/000077500000000000000000000000001333451767700236615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf07/StringValueOf07.class000066400000000000000000000016241333451767700276120ustar00rootroot000000000000004; T  ! "# $% &' "() * +,$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable- SourceFileStringValueOf07.java . /0 long = %s java/lang/Object- 123 45  100000000000 67java/lang/AssertionErrorStringValueOf078 9:java/lang/Stringjava/lang/SystemoutLjava/io/PrintStream;valueOf(J)Ljava/lang/String;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* l5@YSWN - Y 4  44  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf07/StringValueOf07.java000066400000000000000000000004221333451767700274210ustar00rootroot00000000000000public class StringValueOf07 { public static void main(String[] args) { long longValue = 10000000000L; System.out.printf("long = %s\n", String.valueOf(longValue)); String tmp=String.valueOf(longValue); assert tmp.equals("100000000000"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf07/test.desc000066400000000000000000000002461333451767700255020ustar00rootroot00000000000000CORE StringValueOf07.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 8 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf08/000077500000000000000000000000001333451767700236625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf08/StringValueOf08.class000066400000000000000000000012661333451767700276160ustar00rootroot000000000000004, @     !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable$ SourceFileStringValueOf08.java $ %& 2.50 '(java/lang/AssertionErrorStringValueOf08) *+java/lang/Objectjava/lang/StringvalueOf(F)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * S D#M, Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf08/StringValueOf08.java000066400000000000000000000003021333451767700274200ustar00rootroot00000000000000public class StringValueOf08 { public static void main(String[] args) { float floatValue = 2.5f; String tmp=String.valueOf(floatValue); assert tmp.equals("2.50"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf08/test.desc000066400000000000000000000002451333451767700255020ustar00rootroot00000000000000CORE StringValueOf08.class --max-nondet-string-length 100 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf09/000077500000000000000000000000001333451767700236635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf09/StringValueOf09.class000066400000000000000000000012761333451767700276210ustar00rootroot000000000000004- @@vȴ    ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFileStringValueOf09.java % &' 33.3333 ()java/lang/AssertionErrorStringValueOf09* +,java/lang/Objectjava/lang/StringvalueOf(D)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * T!H'N- Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf09/StringValueOf09.java000066400000000000000000000003521333451767700274270ustar00rootroot00000000000000public class StringValueOf09 { public static void main(String[] args) { double doubleValue = 33.333; // no suffix, double is default String tmp=String.valueOf(doubleValue); assert tmp.equals("33.3333"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf09/test.desc000066400000000000000000000002461333451767700255040ustar00rootroot00000000000000CORE StringValueOf09.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf10/000077500000000000000000000000001333451767700236535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf10/StringValueOf10.class000066400000000000000000000013221333451767700275710ustar00rootroot000000000000004.     ! " #$%$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable%& SourceFileStringValueOf10.java test& '( tesst )*java/lang/AssertionErrorStringValueOf10+ ,-java/lang/Objectjava/lang/StringvalueOf&(Ljava/lang/Object;)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * U L+M, Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf10/StringValueOf10.java000066400000000000000000000003541333451767700274110ustar00rootroot00000000000000public class StringValueOf10 { public static void main(String[] args) { Object objectRef = "test"; // assign string to an Object reference String tmp=String.valueOf(objectRef); assert tmp.equals("tesst"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOf10/test.desc000066400000000000000000000001761333451767700254760ustar00rootroot00000000000000FUTURE StringValueOf10.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOfInt/000077500000000000000000000000001333451767700241655ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOfInt/Test.class000066400000000000000000000031461333451767700261370ustar00rootroot000000000000004C *B@ +,BABBBCBDBE- * ./ 0 12 +34 *5 678$assertionsDisabledZ()VCodeLineNumberTablecheckDet()Ljava/lang/String; checkNonDet(I)Ljava/lang/String;checkWithDependency(Z)V StackMapTable9 SourceFile Test.java 9 :"java/lang/StringBuilder ;< = 12 >?java/lang/AssertionErrorTest@ ABjava/lang/Objectjava/lang/StringvalueOfappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString startsWith(Ljava/lang/String;)Zjava/lang/ClassdesiredAssertionStatus()Z!*  KKKKKK K K KKK K KKKKK K KKK*Z   $ * 0 6<BHNTZ`flrx~ !"UL`L`L`L`L`LdLdLdLdLdL Y +L Y +L Y +L Y +`L Y +L Y +`L Y +L Y +tL Y +L Y +t`L Y +L Y +tdL+b !"#"$)%0&7'>(E)L*`+v,-./012 3&4:5S6 #$p9 L++"Y+ Y;< =!@8B% !&'4% @()cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOfInt/Test.java000066400000000000000000000037171333451767700257570ustar00rootroot00000000000000public class Test { public static String checkDet() { String tmp = String.valueOf(1000000); tmp = String.valueOf(1000001); tmp = String.valueOf(1000002); tmp = String.valueOf(1000003); tmp = String.valueOf(1000004); tmp = String.valueOf(1000005); tmp = String.valueOf(-1000001); tmp = String.valueOf(-1000002); tmp = String.valueOf(-1000003); tmp = String.valueOf(1000004); tmp = String.valueOf(1000005); tmp = String.valueOf(-1000001); tmp = String.valueOf(-1000002); tmp = String.valueOf(1000003); tmp = String.valueOf(1000004); tmp = String.valueOf(1000005); tmp = String.valueOf(1000001); tmp = String.valueOf(-1000002); tmp = String.valueOf(-1000003); tmp = String.valueOf(1000004); tmp = String.valueOf(1000005); return tmp; } public static String checkNonDet(int i) { String tmp = String.valueOf(1000000); tmp = String.valueOf(i + 1); tmp = String.valueOf(i + 2); tmp = String.valueOf(i + 3); tmp = String.valueOf(i + 4); tmp = String.valueOf(i + 5); tmp = String.valueOf(i - 1); tmp = String.valueOf(i - 2); tmp = String.valueOf(i - 3); tmp = String.valueOf(i - 4); tmp = String.valueOf(i - 5); tmp += " "; tmp += String.valueOf(i); tmp += " "; tmp += String.valueOf(i + 2); tmp += " "; tmp += String.valueOf(i + 3); tmp += " "; tmp += String.valueOf(-i); tmp += " "; tmp += String.valueOf(-i + 1); tmp += " "; tmp += String.valueOf(-i - 2); return tmp; } public static void checkWithDependency(boolean b) { String s = String.valueOf(12); if (b) { assert(s.startsWith("12")); } else { assert(!s.startsWith("12")); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOfInt/test_dependency.desc000066400000000000000000000004101333451767700301750ustar00rootroot00000000000000CORE Test.class --function Test.checkWithDependency --depth 10000 ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 61 .*: SUCCESS assertion at file Test.java line 64 .*: FAILURE -- -- Check that when a dependency is present, the correct constraints are added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOfInt/test_det.desc000066400000000000000000000004201333451767700266340ustar00rootroot00000000000000CORE Test.class --function Test.checkDet --verbosity 10 --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 25 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/StringValueOfInt/test_nondet.desc000066400000000000000000000004231333451767700273520ustar00rootroot00000000000000CORE Test.class --function Test.checkNonDet --verbosity 10 --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* file Test.java line 53 .*: SATISFIED -- adding lemma .*nondet_infinite_array -- Check that using the string dependence informations, no lemma involving arrays is added cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString01/000077500000000000000000000000001333451767700230435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString01/SubString01.class000066400000000000000000000016001333451767700261500ustar00rootroot0000000000000044    !"#  $%& '()$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable* SourceFileSubString01.java %automatictestcasegenerationatdiffblue+ ,- erationatdiffblue* ./java/lang/AssertionError ,0test SubString011 23java/lang/Objectjava/lang/Stringorg/cprover/CProverString substring'(Ljava/lang/String;I)Ljava/lang/String;equals(Ljava/lang/Object;)Z((Ljava/lang/String;II)Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z! * BL+M, Y+  M,  Y ! * A  !4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString01/SubString01.java000066400000000000000000000005601333451767700257700ustar00rootroot00000000000000public class SubString01 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; String tmp=org.cprover.CProverString.substring(letters, 20); assert tmp.equals("erationatdiffblue"); tmp=org.cprover.CProverString.substring(letters, 9, 13); assert tmp.equals("test"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString01/test.desc000066400000000000000000000001731333451767700246630ustar00rootroot00000000000000CORE SubString01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString02/000077500000000000000000000000001333451767700230445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString02/SubString02.class000066400000000000000000000013501333451767700261540ustar00rootroot000000000000004-     ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFileSubString02.java %automatictestcasegenerationatdiffblue% &' erationatdifffblue ()java/lang/AssertionError SubString02* +,java/lang/Objectjava/lang/String substring(I)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * W"L+M, Y ! !4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString02/SubString02.java000066400000000000000000000003501333451767700257670ustar00rootroot00000000000000public class SubString02 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; String tmp=letters.substring(20); assert tmp.equals("erationatdifffblue"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString02/test.desc000066400000000000000000000002421333451767700246610ustar00rootroot00000000000000CORE SubString02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString03/000077500000000000000000000000001333451767700230455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString03/SubString03.class000066400000000000000000000013361333451767700261620ustar00rootroot000000000000004-     ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFileSubString03.java %automatictestcasegenerationatdiffblue% &' teest ()java/lang/AssertionError SubString03* +,java/lang/Objectjava/lang/String substring(II)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * Y$L+  M, Y # #4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString03/SubString03.java000066400000000000000000000003361333451767700257750ustar00rootroot00000000000000public class SubString03 { public static void main(String[] args) { String letters = "automatictestcasegenerationatdiffblue"; String tmp=letters.substring(9, 13); assert tmp.equals("teest"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/SubString03/test.desc000066400000000000000000000002421333451767700246620ustar00rootroot00000000000000CORE SubString03.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\] .* line 7 .* FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest01/000077500000000000000000000000001333451767700230435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest01/TokenTest01.class000066400000000000000000000026011333451767700261520ustar00rootroot000000000000004O #$% &' ()*+ ,- ./ 01 # .23 &45678 9:$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable;< SourceFileTokenTest01.java automatic test case generation ; =>? @A'Number of elements: %d The tokens are: java/lang/ObjectB CDE FG java/lang/AssertionError HI automatic JKtestcase generation TokenTest01L MNjava/lang/String[Ljava/lang/String;split'(Ljava/lang/String;)[Ljava/lang/String;java/lang/SystemoutLjava/io/PrintStream;java/lang/IntegervalueOf(I)Ljava/lang/Integer;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;println(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* hL+MY,S W , Y >,:662:  lb Y  OE Y  2( Y   Y qB    3 5NVr;3 1 4  @!"cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest01/TokenTest01.java000066400000000000000000000012461333451767700257720ustar00rootroot00000000000000import java.util.StringTokenizer; public class TokenTest01 { public static void main(String[] args) { String sentence = "automatic test case generation"; String[] tokens = sentence.split(" "); System.out.printf("Number of elements: %d\nThe tokens are:\n", tokens.length); assert tokens.length==4; int i=0; for (String token : tokens) { System.out.println(token); if (i==0) assert token.equals("automatic"); else if (i==1) assert token.equals("test"); else if (i==2) assert token.equals("case"); else if (i==3) assert token.equals("generation"); ++i; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest01/test.desc000066400000000000000000000002111333451767700246540ustar00rootroot00000000000000FUTURE TokenTest01.class --max-nondet-string-length 1000 --unwind 30 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest02/000077500000000000000000000000001333451767700230445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest02/TokenTest02.class000066400000000000000000000015461333451767700261630ustar00rootroot0000000000000041   ! "# $ %&'$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable() SourceFileTokenTest02.java automatic test case generation ) *+  genneration ,-java/lang/AssertionError TokenTest02. /0java/lang/Object[Ljava/lang/String;java/lang/Stringsplit'(Ljava/lang/String;)[Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * LL+M>,:6602: Y ϱ" % BE K/*4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest02/TokenTest02.java000066400000000000000000000005431333451767700257730ustar00rootroot00000000000000import java.util.StringTokenizer; public class TokenTest02 { public static void main(String[] args) { String sentence = "automatic test case generation"; String[] tokens = sentence.split(" "); int i=0; for (String token : tokens) { if (i==3) assert token.equals("genneration"); ++i; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/TokenTest02/test.desc000066400000000000000000000002061333451767700246610ustar00rootroot00000000000000FUTURE TokenTest02.class --max-nondet-string-length 1000 --unwind 15 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate01/000077500000000000000000000000001333451767700226545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate01/Validate01.class000066400000000000000000000026071333451767700256020ustar00rootroot000000000000004\ *+,-./01 23 45 * 26 27 89: ;< 2= 2> 2?@ 2ABCD EFG$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableHI SourceFileValidate01.java XXXYYYZZZ IIII AAAA 5689Oxford OxfordshireOX37AF+4477777J KL java/lang/AssertionError ML NLO PQInvalid addressR ST UL VL WLInvalid zip code XLInvalid phone numberValid input. Thank you. Validate01Y Z[java/lang/Object[Ljava/lang/String;java/lang/StringValidateInput01validateFirstName(Ljava/lang/String;)ZvalidateLastNamevalidateAddressjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V validateCity validateState validateZip validatePhonejava/lang/ClassdesiredAssertionStatus()Z! *! "# NLMN::::+  Y ,  w Y -] O Y  9 Y  !^     .5CJU]ks$(.%&&&&&&&' 4 !$ @()cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate01/Validate01.java000066400000000000000000000017641333451767700254210ustar00rootroot00000000000000public class Validate01 { public static void main(String[] args) { String firstName = "XXX"; String lastName = "YYY"; String address = "ZZZ IIII AAAA 5689"; String city = "Oxford"; String state = "Oxfordshire"; String zip = "OX37AF"; String phone = "+4477777"; if (!ValidateInput01.validateFirstName(firstName)) assert false; else if (!ValidateInput01.validateLastName(lastName)) assert false; else if (!ValidateInput01.validateAddress(address)) System.out.println("Invalid address"); else if (!ValidateInput01.validateCity(city)) assert false; else if (!ValidateInput01.validateState(state)) assert false; else if (!ValidateInput01.validateZip(zip)) System.out.println("Invalid zip code"); else if (!ValidateInput01.validatePhone(phone)) System.out.println("Invalid phone number"); else System.out.println("Valid input. Thank you."); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate01/ValidateInput01.class000066400000000000000000000015601333451767700266170ustar00rootroot000000000000004&   !"#()VCodeLineNumberTablevalidateFirstName(Ljava/lang/String;)ZvalidateLastNamevalidateAddress validateCity validateState validateZip validatePhone SourceFileValidateInput01.java [A-Z][a-zA-Z]*$ %[a-zA-z]+(['-][a-zA-Z]+)*&\d+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+) ([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)\d{5}[1-9]\d{2}-[1-9]\d{2}-\d{4}ValidateInput01java/lang/Objectjava/lang/Stringmatches!   *  *  *  *  *  *  *  *$cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate01/ValidateInput01.java000066400000000000000000000016231333451767700264330ustar00rootroot00000000000000public class ValidateInput01 { public static boolean validateFirstName(String firstName) { return firstName.matches("[A-Z][a-zA-Z]*"); } public static boolean validateLastName(String lastName) { return lastName.matches("[a-zA-z]+(['-][a-zA-Z]+)*"); } public static boolean validateAddress(String address) { return address.matches( "\\d+\\s+([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)"); } public static boolean validateCity(String city) { return city.matches("([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)"); } public static boolean validateState(String state) { return state.matches("([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)") ; } public static boolean validateZip(String zip) { return zip.matches("\\d{5}"); } public static boolean validatePhone(String phone) { return phone.matches("[1-9]\\d{2}-[1-9]\\d{2}-\\d{4}"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate01/test.desc000066400000000000000000000001741333451767700244750ustar00rootroot00000000000000FUTURE Validate01.class --max-nondet-string-length 1000 ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate02/000077500000000000000000000000001333451767700226555ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate02/Validate02.class000066400000000000000000000022431333451767700256000ustar00rootroot000000000000004O %&'()* +, -. % +/ 012 34 +56 +789: ;<=$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable>? SourceFileValidate02.java ZZZ IIII AAAA 5689Oxford OxfordshireOX37AF+4477777@ AB java/lang/AssertionError CBD EF Invalid cityG HI JB Invalid state KBInvalid zip codeValid input. Thank you. Validate02L MNjava/lang/Object[Ljava/lang/String;java/lang/StringValidateInput02validateAddress(Ljava/lang/String;)Z validateCityjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V validateState validateZipjava/lang/ClassdesiredAssertionStatus()Z!* fLMN::+J Y ,   0-   >    & -8?JR]e& !!!!!"4 @#$cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate02/Validate02.java000066400000000000000000000012621333451767700254140ustar00rootroot00000000000000public class Validate02 { public static void main(String[] args) { String address = "ZZZ IIII AAAA 5689"; String city = "Oxford"; String state = "Oxfordshire"; String zip = "OX37AF"; String phone = "+4477777"; if (!ValidateInput02.validateAddress(address)) assert false; else if (!ValidateInput02.validateCity(city)) System.out.println("Invalid city"); else if (!ValidateInput02.validateState(state)) System.out.println("Invalid state"); else if (!ValidateInput02.validateZip(zip)) System.out.println("Invalid zip code"); else System.out.println("Valid input. Thank you."); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate02/ValidateInput02.class000066400000000000000000000015601333451767700266210ustar00rootroot000000000000004&   !"#()VCodeLineNumberTablevalidateFirstName(Ljava/lang/String;)ZvalidateLastNamevalidateAddress validateCity validateState validateZip validatePhone SourceFileValidateInput02.java [A-Z][a-zA-Z]*$ %[a-zA-z]+(['-][a-zA-Z]+)*&\d+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+) ([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)\d{5}[1-9]\d{2}-[1-9]\d{2}-\d{4}ValidateInput02java/lang/Objectjava/lang/Stringmatches!   *  *  *  *  *  *  *  *$cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate02/ValidateInput02.java000066400000000000000000000016231333451767700264350ustar00rootroot00000000000000public class ValidateInput02 { public static boolean validateFirstName(String firstName) { return firstName.matches("[A-Z][a-zA-Z]*"); } public static boolean validateLastName(String lastName) { return lastName.matches("[a-zA-z]+(['-][a-zA-Z]+)*"); } public static boolean validateAddress(String address) { return address.matches( "\\d+\\s+([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)"); } public static boolean validateCity(String city) { return city.matches("([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)"); } public static boolean validateState(String state) { return state.matches("([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)") ; } public static boolean validateZip(String zip) { return zip.matches("\\d{5}"); } public static boolean validatePhone(String phone) { return phone.matches("[1-9]\\d{2}-[1-9]\\d{2}-\\d{4}"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/Validate02/test.desc000066400000000000000000000001711333451767700244730ustar00rootroot00000000000000FUTURE Validate02.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/VerifStringLastIndexOf/000077500000000000000000000000001333451767700253255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/VerifStringLastIndexOf/Test.class000066400000000000000000000015661333451767700273030ustar00rootroot0000000000000042     ! " #$ % &'($assertionsDisabledZ()VCodeLineNumberTablemath_min(II)I StackMapTablereferenceLastIndexOf(Ljava/lang/String;CI)Icheck SourceFile Test.java ) *+  ,-  . java/lang/AssertionErrorTest/ 01java/lang/Objectjava/lang/Stringlength()IcharAt(I)C lastIndexOfjava/lang/ClassdesiredAssertionStatus()Z!  *2  _'*+d6+  %  Z)*+6+6 Y  &&4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/VerifStringLastIndexOf/Test.java000066400000000000000000000012171333451767700271100ustar00rootroot00000000000000public class Test { // This compares the model of indexOf to an implementation // using loops public int math_min(int i, int j) { if (i < j) return i; else return j; } public int referenceLastIndexOf(String s, char ch, int fromIndex) { for (int i = math_min(fromIndex, s.length() - 1); i >= 0; i--) { if (s.charAt(i) == ch) { return i; } } return -1; } public int check(String s, char ch, int fromIndex) { int reference = referenceLastIndexOf(s, ch, fromIndex); int jbmc_result = s.lastIndexOf(ch, fromIndex); assert(reference == jbmc_result); return jbmc_result; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/VerifStringLastIndexOf/test.desc000066400000000000000000000003471333451767700271500ustar00rootroot00000000000000THOROUGH Test.class --function Test.check --max-nondet-string-length 50 --unwind 50 --java-assume-inputs-non-null ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 32 .* SUCCESS$ assertion at file Test.java line 34 .* FAILURE$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-095/000077500000000000000000000000001333451767700235765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-095/test.class000066400000000000000000000014661333451767700256130ustar00rootroot0000000000000046    ! "# $%& ' ()*$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable+ SourceFile test.java java/lang/StringBuilder , -. /0 fg+ 12java/lang/AssertionErrortest3 45java/lang/Objectjava/lang/String(Ljava/lang/String;)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * h/Y*2L+W+M, Y  .  .4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-095/test.desc000066400000000000000000000002101333451767700254060ustar00rootroot00000000000000FUTURE test.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ \[.*assertion\.1\] .* line 8 .* FAILURE ^VERIFICATION FAILED$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-095/test.java000066400000000000000000000003231333451767700254160ustar00rootroot00000000000000public class test { public static void main(String[] args) { StringBuilder sb = new StringBuilder(args[0]); sb.append("Z"); String s = sb.toString(); assert(s.equals("fg")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119-2/000077500000000000000000000000001333451767700237325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119-2/StringValueOfLong.class000066400000000000000000000012551333451767700303340ustar00rootroot000000000000004, T     !"#$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable$ SourceFileStringValueOfLong.java $ %&  10000000000 '(java/lang/AssertionErrorStringValueOfLong) *+java/lang/Objectjava/lang/StringvalueOf(J)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!  * T!?M, Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119-2/StringValueOfLong.java000066400000000000000000000003471333451767700301510ustar00rootroot00000000000000public class StringValueOfLong { public static void main() { long longValue = 10000000000L; // L suffix indicates long String tmp=String.valueOf(longValue); assert tmp.equals("10000000000"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119-2/test.desc000066400000000000000000000002201333451767700255430ustar00rootroot00000000000000CORE StringValueOfLong.class --max-nondet-string-length 1000 --function StringValueOfLong.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119/000077500000000000000000000000001333451767700235735ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119/StringValueOfBool.class000066400000000000000000000012341333451767700301660ustar00rootroot000000000000004*       !$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable" SourceFileStringValueOfBool.java " #$ false %&java/lang/AssertionErrorStringValueOfBool' ()java/lang/Objectjava/lang/StringvalueOf(Z)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!   * R;L+ Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119/StringValueOfBool.java000066400000000000000000000003111333451767700277750ustar00rootroot00000000000000public class StringValueOfBool { public static void main() { boolean booleanValue = false; String tmp=String.valueOf(booleanValue); assert tmp.equals("false"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/bug-test-gen-119/test.desc000066400000000000000000000002201333451767700254040ustar00rootroot00000000000000CORE StringValueOfBool.class --max-nondet-string-length 1000 --function StringValueOfBool.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/char_escape/000077500000000000000000000000001333451767700232175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/char_escape/Test.class000066400000000000000000000012401333451767700251620ustar00rootroot000000000000004(     ()VCodeLineNumberTabletest (CCCCCCCC)Z StackMapTable SourceFile Test.java java/lang/StringBuilder !" #$ "'\% &'Testjava/lang/Object(Ljava/lang/String;)Vappend(C)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Z!   *   gY:WWWWWWWW:  ' / 7 ? G TVce Vcbmc-cbmc-5.10/jbmc/regression/jbmc-strings/char_escape/Test.java000066400000000000000000000010451333451767700250010ustar00rootroot00000000000000public class Test { public static boolean test(char c1, char c2, char c3, char c4, char c5, char c6, char c7, char c8) { StringBuilder sb = new StringBuilder(""); sb.append(c1); sb.append(c2); sb.append(c3); sb.append(c4); sb.append(c5); sb.append(c6); sb.append(c7); sb.append(c8); if (sb.toString().equals("\b\t\n\f\r\"\'\\")) return true; if (!sb.toString().equals("\b\t\n\f\r\"\'\\")) return false; return true; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/char_escape/test.desc000066400000000000000000000002221333451767700250320ustar00rootroot00000000000000CORE Test.class --function Test.test --cover location --trace --json-ui ^EXIT=0$ ^SIGNAL=0$ 20 of 22 covered \(90.9%\)|30 of 44 covered \(68.2%\) cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/cprover/000077500000000000000000000000001333451767700224425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/cprover/CProverString.class000066400000000000000000000100711333451767700262370ustar00rootroot000000000000004 #Q RS RT RU RV RW RX RYZ R[ "\ R] ^_ ^` ^a ^b ^c ^d ^e ^f ^g ^h ij iT ik il im i] in io ip iq irst()VCodeLineNumberTablecharAt(Ljava/lang/String;I)C StackMapTable codePointAt(Ljava/lang/String;I)IcodePointBeforecodePointCount(Ljava/lang/String;II)IoffsetByCodePoints subSequence.(Ljava/lang/String;II)Ljava/lang/CharSequence; substring'(Ljava/lang/String;I)Ljava/lang/String;((Ljava/lang/String;II)Ljava/lang/String;appendN(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;delete6(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder; deleteCharAt5(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;insertG(Ljava/lang/StringBuilder;ILjava/lang/String;)Ljava/lang/StringBuilder;6(Ljava/lang/StringBuilder;IZ)Ljava/lang/StringBuilder;6(Ljava/lang/StringBuilder;IC)Ljava/lang/StringBuilder;6(Ljava/lang/StringBuilder;IJ)Ljava/lang/StringBuilder;6(Ljava/lang/StringBuilder;IF)Ljava/lang/StringBuilder;6(Ljava/lang/StringBuilder;ID)Ljava/lang/StringBuilder; setLength(Ljava/lang/StringBuffer;I)V(Ljava/lang/StringBuffer;I)C setCharAt(Ljava/lang/StringBuffer;IC)V4(Ljava/lang/StringBuffer;II)Ljava/lang/StringBuffer;3(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;.(Ljava/lang/StringBuffer;II)Ljava/lang/String;E(Ljava/lang/StringBuffer;ILjava/lang/String;)Ljava/lang/StringBuffer;4(Ljava/lang/StringBuffer;IZ)Ljava/lang/StringBuffer;4(Ljava/lang/StringBuffer;IC)Ljava/lang/StringBuffer;4(Ljava/lang/StringBuffer;IJ)Ljava/lang/StringBuffer; SourceFileCProverString.java $%u vw (x +y -y .z 0z 1{ 3| 35 3}~ 6 8 : < < < < < < < C F 8 : < < < < <org/cprover/CProverStringjava/lang/Objectjava/lang/Stringlength()I(I)C(I)I(II)I(II)Ljava/lang/CharSequence;(I)Ljava/lang/String;(II)Ljava/lang/String;java/lang/StringBuilder5(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;(II)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;.(ILjava/lang/String;)Ljava/lang/StringBuilder;(IZ)Ljava/lang/StringBuilder;(IC)Ljava/lang/StringBuilder;(IJ)Ljava/lang/StringBuilder;(IF)Ljava/lang/StringBuilder;(ID)Ljava/lang/StringBuilder;java/lang/StringBuffer(I)V(IC)V(II)Ljava/lang/StringBuffer;(I)Ljava/lang/StringBuffer;-(ILjava/lang/String;)Ljava/lang/StringBuffer;(IZ)Ljava/lang/StringBuffer;(IC)Ljava/lang/StringBuffer;(IJ)Ljava/lang/StringBuffer;1"#$%&*' ()&>* *' * +,&*' -,&*' ./&*' 0/&*' 12&*' 34&I** * '#$%&(* 35&i. * ***d  * ',- ./0$1'2*  67& *+ '7 89&*'; :;&*'? <=&*,'D <>&*'I <?&*'N <9&*'S <@&* 'X <A&*$'] <B&*('b CD&"*' fg (E&*'j FG&#*' no 8H&*'s :I&*'w 3J&*'{ <K&*,' <L&*' <M&*' <H&* ' <N&* !'OPcbmc-cbmc-5.10/jbmc/regression/jbmc-strings/cprover/CProverString.java000066400000000000000000000100441333451767700260530ustar00rootroot00000000000000package org.cprover; public final class CProverString { public static char charAt(String s, int i) { if (0 <= i && i < s.length()) return s.charAt(i); else return '\u0000'; } public static int codePointAt(String s, int index) { return s.codePointAt(index); } public static int codePointBefore(String s, int index) { return s.codePointBefore(index); } public static int codePointCount( String s, int beginIndex, int endIndex) { return s.codePointCount(beginIndex, endIndex); } public static int offsetByCodePoints( String s, int index, int codePointOffset) { return s.offsetByCodePoints(index, codePointOffset); } public static CharSequence subSequence( String s, int beginIndex, int endIndex) { return s.subSequence(beginIndex, endIndex); } public static String substring(String s, int i) { if (i <= 0) return s; else if (i >= s.length()) return ""; else return s.substring(i); } public static String substring(String s, int i, int j) { if (i < 0) return substring(s, 0, j); if (j >= s.length()) return substring(s, 0, s.length() - 1); if (i >= j) return ""; return s.substring(i, j); } public static StringBuilder append( StringBuilder sb, CharSequence cs, int i, int j) { return sb.append(cs, i, j); } public static StringBuilder delete(StringBuilder sb, int start, int end) { return sb.delete(start, end); } public static StringBuilder deleteCharAt(StringBuilder sb, int index) { return sb.deleteCharAt(index); } public static StringBuilder insert( StringBuilder sb, int offset, String str) { return sb.insert(offset, str); } public static StringBuilder insert( StringBuilder sb, int offset, boolean b) { return sb.insert(offset, b); } public static StringBuilder insert( StringBuilder sb, int offset, char c) { return sb.insert(offset, c); } public static StringBuilder insert( StringBuilder sb, int offset, int i) { return sb.insert(offset, i); } public static StringBuilder insert( StringBuilder sb, int offset, long l) { return sb.insert(offset, l); } public static StringBuilder insert( StringBuilder sb, int offset, float f) { return sb.insert(offset, f); } public static StringBuilder insert( StringBuilder sb, int offset, double d) { return sb.insert(offset, d); } public static void setLength(StringBuffer sb, int newLength) { sb.setLength(newLength); } public static char charAt(StringBuffer sb, int index) { return sb.charAt(index); } public static void setCharAt(StringBuffer sb, int index, char c) { sb.setCharAt(index, c); } public static StringBuffer delete( StringBuffer sb, int start, int end) { return sb.delete(start, end); } public static StringBuffer deleteCharAt(StringBuffer sb, int index) { return sb.deleteCharAt(index); } public static String substring(StringBuffer sb, int start, int end) { return sb.substring(start, end); } public static StringBuffer insert( StringBuffer sb, int offset, String str) { return sb.insert(offset, str); } public static StringBuffer insert( StringBuffer sb, int offset, boolean b) { return sb.insert(offset, b); } public static StringBuffer insert( StringBuffer sb, int offset, char c) { return sb.insert(offset, c); } public static StringBuffer insert( StringBuffer sb, int offset, int i) { return sb.insert(offset, i); } public static StringBuffer insert( StringBuffer sb, int offset, long l) { return sb.insert(offset, l); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/instanceof/000077500000000000000000000000001333451767700231135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/instanceof/Test.class000066400000000000000000000011321333451767700250560ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablecheck&(Ljava/lang/String;)Ljava/lang/String; StackMapTable SourceFile Test.java null java/lang/Stringjava/lang/AssertionErrornon-nullTest! "#java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * M** Y4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/instanceof/Test.java000066400000000000000000000002721333451767700246760ustar00rootroot00000000000000public class Test { public static String check(String s) { if (s == null) return "null"; assert(s instanceof String); return "non-null"; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/instanceof/test.desc000066400000000000000000000002461333451767700247340ustar00rootroot00000000000000CORE Test.class --max-nondet-string-length 1000 --function Test.check ^EXIT=0$ ^SIGNAL=0$ assertion at file Test.java line 6 .* SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_char/000077500000000000000000000000001333451767700242275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_char/test.desc000066400000000000000000000003351333451767700260470ustar00rootroot00000000000000CORE test_append_char.class --max-nondet-string-length 1000 --function test_append_char.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*assertion\.1\].* line 16.* SUCCESS$ ^\[.*assertion\.2\].* line 18.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_char/test_append_char.class000066400000000000000000000020271333451767700305620ustar00rootroot000000000000004A   ! " #$ %& '( )*+ , -./$assertionsDisabledZ()VCodeLineNumberTablemain(Z)V StackMapTable0 1 SourceFiletest_append_char.java java/lang/StringBuilder 23 456 789 :; diffblue1 <=java/lang/AssertionErrortest_append_char> ?@java/lang/Object[Cjava/lang/Stringappend([C)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * YdUYiUYfUYfULYbUYlUYuUYeUMYN-+,W-:- # Y  Y . 08 > B HPTll4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_char/test_append_char.java000066400000000000000000000006541333451767700304020ustar00rootroot00000000000000public class test_append_char { public static void main(boolean b) { char[] diff = {'d', 'i', 'f', 'f'}; char[] blue = {'b', 'l', 'u', 'e'}; StringBuilder buffer = new StringBuilder(); buffer.append(diff) .append(blue); String tmp=buffer.toString(); System.out.println(tmp); if(b) assert(tmp.equals("diffblue")); else assert(!tmp.equals("diffblue")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_int/000077500000000000000000000000001333451767700241045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_int/test.desc000066400000000000000000000002761333451767700257300ustar00rootroot00000000000000KNOWNBUG test_append_int.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 9.* FAILURE$ -- -- Requires private library, should be moved to test-gen suite cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_int/test_append_int.class000066400000000000000000000015121333451767700303120ustar00rootroot0000000000000047    ! " #$ %&' ( )*+$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable, SourceFiletest_append_int.java java/lang/StringBuilderd -. -/ 01 d4, 23java/lang/AssertionErrortest_append_int4 56java/lang/Objectjava/lang/Stringappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * o2YK*W*W*L+ Y  1  14  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_int/test_append_int.java000066400000000000000000000004101333451767700301220ustar00rootroot00000000000000public class test_append_int { public static void main(/*String[] args*/) { StringBuilder diffblue = new StringBuilder(); diffblue.append("d"); diffblue.append(4); String s = diffblue.toString(); assert(!s.equals("d4")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_object/000077500000000000000000000000001333451767700245605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_object/test.desc000066400000000000000000000002031333451767700263720ustar00rootroot00000000000000KNOWNBUG test_append_object.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 15.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_object/test_append_object.class000066400000000000000000000017401333451767700314450ustar00rootroot000000000000004C  !"#  $ % &' () *+ ,-. / 012$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable2#3 SourceFiletest_append_object.java diffbluejava/lang/StringBuilder 45 678 9:; <= diffblue3 >?java/lang/AssertionErrortest_append_object@ ABjava/lang/Objectjava/lang/Stringappend-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* <KLYM,*+W,N- - Y&    $;;4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_append_object/test_append_object.java000066400000000000000000000005501333451767700312570ustar00rootroot00000000000000public class test_append_object { public static void main(/*String[] args*/) { Object diff = "diff"; Object blue = "blue"; StringBuilder buffer = new StringBuilder(); buffer.append(diff) .append(blue); String tmp=buffer.toString(); System.out.println(tmp); assert(!tmp.equals("diffblue")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_char_array_init/000077500000000000000000000000001333451767700251215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_char_array_init/test.desc000066400000000000000000000004641333451767700267440ustar00rootroot00000000000000CORE test_init.class --max-nondet-string-length 1000 --function test_init.main ^EXIT=10$ ^SIGNAL=0$ assertion.* file test_init.java line 31 .* SUCCESS$ assertion.* file test_init.java line 33 .* SUCCESS$ assertion.* file test_init.java line 35 .* FAILURE$ assertion.* file test_init.java line 37 .* FAILURE$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_char_array_init/test_init.class000066400000000000000000000025651333451767700301620ustar00rootroot000000000000004L & '( &)* + , - . /0 12 345 367 89:$assertionsDisabledZ()VCodeLineNumberTablestringOfCharArray([C)Ljava/lang/String; StackMapTable)([CII)Ljava/lang/String;main(I)V;< SourceFiletest_init.java  java/lang/AssertionErrorjava/lang/StringBuilder = >? @A B CD Hello< EFel GH test_initI JKjava/lang/Object[Cjava/lang/String(Ljava/lang/String;)Vappend(C)Ljava/lang/StringBuilder;toString()Ljava/lang/String;org/cprover/CProverString substring((Ljava/lang/String;II)Ljava/lang/String; startsWith(Ljava/lang/String;)Zequals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* @* YYL=* +*4W+  - 5 ;    $ * `    L+HU+eU+lU+lU+oU+ M+ Nc, ZYG->Y+, "Y- YB #*.E J!a"f#}%&E!""#4 @$%cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_char_array_init/test_init.java000066400000000000000000000021141333451767700277640ustar00rootroot00000000000000public class test_init { // These are models for the constructors of strings from char arrays public static String stringOfCharArray(char arr[]) { // We give an arbitrary limit on the size of arrays assert(arr.length<11); StringBuilder sb=new StringBuilder(""); for(int i=0; i()VCodeLineNumberTablemain StackMapTable SourceFiletest_char_at.java java/lang/Stringabc # $%java/lang/AssertionError test_char_at& '(java/lang/Object(Ljava/lang/String;)VcharAt(I)Cjava/lang/ClassdesiredAssertionStatus()Z!  * Q#YK*c Y ""4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_char_at/test_char_at.java000066400000000000000000000002011333451767700266600ustar00rootroot00000000000000public class test_char_at { public static void main() { String s = new String("abc"); assert(s.charAt(2)!='c'); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_compare/000077500000000000000000000000001333451767700234115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_compare/test.desc000066400000000000000000000002251333451767700252270ustar00rootroot00000000000000CORE test_compare.class --max-nondet-string-length 1000 --function test_compare.main ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 7.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_compare/test_compare.class000066400000000000000000000011571333451767700271310ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable" SourceFiletest_compare.java abaa " #$java/lang/AssertionError test_compare% &'java/lang/Objectjava/lang/String compareTo(Ljava/lang/String;)Ijava/lang/ClassdesiredAssertionStatus()Z!   * SKL*+ Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_compare/test_compare.java000066400000000000000000000002321333451767700267360ustar00rootroot00000000000000public class test_compare { public static void main() { String s1 = "ab"; String s2 = "aa"; assert(s1.compareTo(s2) != 1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_concat/000077500000000000000000000000001333451767700232325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_concat/test.desc000066400000000000000000000002731333451767700250530ustar00rootroot00000000000000CORE test_concat.class --max-nondet-string-length 1000 --function test_concat.main ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion.1\].* line 10.* SUCCESS$ ^\[.*assertion.2\].* line 11.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_concat/test_concat.class000066400000000000000000000015171333451767700265730ustar00rootroot0000000000000045    ! "# $% & '()$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFiletest_concat.java java/lang/Stringpi * +,ppo -./ 01 java/lang/AssertionError test_concat2 34java/lang/Object(Ljava/lang/String;)Vlength()Iconcat&(Ljava/lang/String;)Ljava/lang/String;org/cprover/CProverStringcharAt(Ljava/lang/String;I)Cjava/lang/ClassdesiredAssertionStatus()Z! * QYK*<YM*,N-6 p Y p Y "  & ; P ;4   @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_concat/test_concat.java000066400000000000000000000004521333451767700264040ustar00rootroot00000000000000public class test_concat { public static void main() { String s = new String("pi"); int i = s.length(); String t = new String("ppo"); String u = s.concat(t); char c = org.cprover.CProverString.charAt(u, i); assert(c == 'p'); assert(c != 'p'); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_delete/000077500000000000000000000000001333451767700232255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_delete/test.desc000066400000000000000000000002231333451767700250410ustar00rootroot00000000000000CORE test_delete.class --max-nondet-string-length 1000 --function test_delete.main ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 8.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_delete/test_delete.class000066400000000000000000000015301333451767700265540ustar00rootroot0000000000000048   ! " #$ %&' ( )*+$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable, SourceFiletest_delete.java java/lang/StringBuilderAbc -. /0 12 Ac, 34java/lang/AssertionError test_delete5 67java/lang/Objectjava/lang/String(Ljava/lang/String;)Vorg/cprover/CProverStringdelete6(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * g.YK*W*L+ Y  -  -4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_delete/test_delete.java000066400000000000000000000003471333451767700263750ustar00rootroot00000000000000public class test_delete { public static void main() { StringBuilder s = new StringBuilder("Abc"); org.cprover.CProverString.delete(s,1,2); String str = s.toString(); assert(!str.equals("Ac")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_easychair/000077500000000000000000000000001333451767700237335ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_easychair/easychair.class000066400000000000000000000022131333451767700267300ustar00rootroot000000000000004K $% & ' ( )* +, - ./0 12 34 $5 678$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable%9 SourceFileeasychair.java java/lang/String : ;< => ?@ EasyChair ABhttp:// CD ?Ewww.live.com FG google.com java/lang/AssertionError easychairH IJjava/lang/Object[Ljava/lang/String;(Ljava/lang/String;)Vlength()I lastIndexOf(I)I substring(I)Ljava/lang/String;contains(Ljava/lang/CharSequence;)Z startsWith(Ljava/lang/String;)Z(II)Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z!* *Y*2L+(v+/=+`N-+ +  d :  :  Y> ! &.8BT^j~!!& '  !4 @"#cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_easychair/easychair.java000066400000000000000000000023331333451767700265470ustar00rootroot00000000000000public class easychair { public static void main(String[] argv) { if(argv.length > 1) { String str = new String(argv[1]); if(str.length() < 40) { // containing "/" and containing "EasyChair" int lastSlash = str.lastIndexOf('/'); if(lastSlash < 0) return ; String rest = str.substring(lastSlash + 1); // warning: removed this because contains is not efficient at the moment if(! rest.contains("EasyChair")) return ; // (2) Check that str starts with "http://" if(! str.startsWith("http://")) return ; // (3) Take the string between "http://" and the last "/". // if it starts with "www." strip the "www." off String t = str.substring("http://".length(),lastSlash - "http://".length()); if(t.startsWith("www.")) t = t.substring("www.".length()); //(4) Check that after stripping we have either "live.com" // or "google.com" if(!t.equals("live.com") && !t.equals("google.com")) return ; // s survived all checks assert(false); //return true; } } } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_easychair/test.desc000066400000000000000000000001721333451767700255520ustar00rootroot00000000000000THOROUGH easychair.class --max-nondet-string-length 1000 ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 30.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_empty/000077500000000000000000000000001333451767700231215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_empty/test.desc000066400000000000000000000002211333451767700247330ustar00rootroot00000000000000CORE test_empty.class --max-nondet-string-length 1000 --function test_empty.main ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 6.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_empty/test_empty.class000066400000000000000000000010731333451767700263460ustar00rootroot000000000000004%     $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable  SourceFiletest_empty.java   !"java/lang/AssertionError test_empty# $"java/lang/Objectjava/lang/StringisEmpty()Zjava/lang/ClassdesiredAssertionStatus!   *  GK* Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_empty/test_empty.java000066400000000000000000000001741333451767700261630ustar00rootroot00000000000000public class test_empty { public static void main() { String empty = ""; assert(!empty.isEmpty()); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_char/000077500000000000000000000000001333451767700242645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_char/test.desc000066400000000000000000000002351333451767700261030ustar00rootroot00000000000000CORE test_insert_char.class --max-nondet-string-length 1000 --function test_insert_char.main ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 8.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_char/test_insert_char.class000066400000000000000000000015431333451767700306560ustar00rootroot0000000000000048   ! " #$ %&' ( )*+$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable, SourceFiletest_insert_char.java java/lang/StringBuilderac -. /0 12 abc, 34java/lang/AssertionErrortest_insert_char5 67java/lang/Objectjava/lang/String(Ljava/lang/String;)Vorg/cprover/CProverStringinsert6(Ljava/lang/StringBuilder;IC)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * h/YK*bW*L+ Y  .  .4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_char/test_insert_char.java000066400000000000000000000003571333451767700304740ustar00rootroot00000000000000public class test_insert_char { public static void main() { StringBuilder sb = new StringBuilder("ac"); org.cprover.CProverString.insert(sb, 1, 'b'); String s = sb.toString(); assert(!s.equals("abc")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_int/000077500000000000000000000000001333451767700241415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_int/test.desc000066400000000000000000000002331333451767700257560ustar00rootroot00000000000000CORE test_insert_int.class --max-nondet-string-length 1000 --function test_insert_int.main ^EXIT=10$ ^SIGNAL=0$ ^\[.*assertion\.1\].* line 8.* FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_int/test_insert_int.class000066400000000000000000000015421333451767700304070ustar00rootroot0000000000000048   ! " #$ %&' ( )*+$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable, SourceFiletest_insert_int.java java/lang/StringBuilderac -. /0 12 a42c, 34java/lang/AssertionErrortest_insert_int5 67java/lang/Objectjava/lang/String(Ljava/lang/String;)Vorg/cprover/CProverStringinsert6(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;toString()Ljava/lang/String;equals(Ljava/lang/Object;)Zjava/lang/ClassdesiredAssertionStatus()Z! * h/YK**W*L+ Y  .  .4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/java_insert_int/test_insert_int.java000066400000000000000000000003561333451767700302250ustar00rootroot00000000000000public class test_insert_int { public static void main() { StringBuilder sb = new StringBuilder("ac"); org.cprover.CProverString.insert(sb, 1, 42); String s = sb.toString(); assert(!s.equals("a42c")); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/literal-length/000077500000000000000000000000001333451767700236755ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/literal-length/Test.class000066400000000000000000000011571333451767700256470ustar00rootroot000000000000004'      $assertionsDisabledZ()VCodeLineNumberTablecheck(I)I StackMapTable! SourceFile Test.java  ! "#java/lang/AssertionErrorTest$ %&java/lang/Objectjava/lang/Stringlength()Ijava/lang/ClassdesiredAssertionStatus()Z!   * x=L.+&Y+ Y+"8   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/literal-length/Test.java000066400000000000000000000003621333451767700254600ustar00rootroot00000000000000public class Test { public static int check(int i) { String s = "\u0000"; if (i == 0) assert(s.length() == 1); else if (i == 1) assert(s.length() != 1); return s.length(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/literal-length/test.desc000066400000000000000000000002301333451767700255070ustar00rootroot00000000000000CORE Test.class --function Test.check assertion at file Test.java line 6 .* SUCCESS assertion at file Test.java line 8 .* FAILURE ^EXIT=10$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/long_string/000077500000000000000000000000001333451767700233075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/long_string/Test.class000066400000000000000000000022411333451767700252540ustar00rootroot000000000000006: $ % &- '( )* $+ ,-.$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLTest;check'(Ljava/lang/String;Ljava/lang/String;)VsLjava/lang/String;tu StackMapTable/ checkAbort SourceFile Test.java  01 234 56 java/lang/AssertionErrorTest7 89java/lang/Objectjava/lang/Stringconcat&(Ljava/lang/String;)Ljava/lang/String;length()Iorg/cprover/CProverStringcharAt(Ljava/lang/String;I)Cjava/lang/ClassdesiredAssertionStatus()Z! /*  @*+*+M,,a,b Y .   $%01? @@1  R*+*+M* + *+,b Y .  #!$"(6)7*B+C.Q/ RRC  !4  @"#cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/long_string/Test.java000066400000000000000000000024061333451767700250730ustar00rootroot00000000000000import org.cprover.CProverString; public class Test { public static void check(String s, String t) { // Filter if(s == null || t == null) return; // Act String u = s.concat(t); // Filter out if(u.length() < 3_000_000) return; if(CProverString.charAt(u, 500_000) != 'a') return; if(CProverString.charAt(u, 2_000_000) != 'b') return; // Assert assert(false); } public static void checkAbort(String s, String t) { // Filter if(s == null || t == null) return; // Act String u = s.concat(t); // Filter out // 67_108_864 corresponds to the maximum length for which the solver // will concretize the string. if(s.length() <= 67_108_864 && t.length() <= 67_108_864) return; // Check at least one of them is short-ish, so we don't end up trying // to concretise a very long but *just* allowable string and memout the // test infrastructure: if(s.length() > 1024 && t.length() > 1024) return; if(CProverString.charAt(u, 2_000_000) != 'b') return; // Assert assert(false); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/long_string/test.desc000066400000000000000000000005311333451767700251250ustar00rootroot00000000000000CORE Test.class --function Test.check --max-nondet-string-length 2000000 ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 21 .* FAILURE -- -- This checks that the solver manage to violate assertions even when this requires some very long strings, as long as they don't exceed the arbitrary limit that is set by the solver (64M characters). cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/long_string/test_abort.desc000066400000000000000000000004021333451767700263110ustar00rootroot00000000000000CORE Test.class --function Test.checkAbort --trace ^EXIT=10$ ^SIGNAL=0$ dynamic_object[0-9]*=\(assignment removed\) -- -- This tests that the object does not appear in the trace, because concretizing a string of the required length may take too much memory. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/000077500000000000000000000000001333451767700255545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/IntegerTests.class000066400000000000000000000015021333451767700312210ustar00rootroot0000000000000043     ! "#$  % &'(()VCodeLineNumberTable testMyGenSet((Ljava/lang/Integer;)Ljava/lang/Boolean; StackMapTable testMySet$ SourceFileIntegerTests.java MyGenSet )*[Ljava/lang/Integer;+ ,- ./0 ,1MySet ) .2 IntegerTestsjava/lang/Objectarray[Ljava/lang/Object;java/lang/IntegervalueOf(I)Ljava/lang/Integer;contains(Ljava/lang/Object;)Zjava/lang/Boolean(Z)Ljava/lang/Boolean;(Ljava/lang/Integer;)Z! * e.*YL+eS+*) " b+* Y L+ eS+*   & cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/IntegerTests.java000066400000000000000000000016621333451767700310440ustar00rootroot00000000000000public class IntegerTests { public static Boolean testMyGenSet(Integer key) { if (key == null) return null; MyGenSet ms = new MyGenSet<>(); ms.array[0] = 101; if (ms.contains(key)) return true; return false; } public static Boolean testMySet(Integer key) { if (key == null) return null; MySet ms = new MySet(); ms.array[0] = 101; if (ms.contains(key)) return true; return false; } } class MyGenSet { E[] array; @SuppressWarnings("unchecked") MyGenSet() { array = (E[]) new Object[1]; } boolean contains(E o) { if (o.equals(array[0])) return true; return false; } } class MySet { Integer[] array; MySet() { array = new Integer[1]; } boolean contains(Integer o) { if (o.equals(array[0])) return true; return false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/MyGenSet.class000066400000000000000000000007651333451767700303060ustar00rootroot000000000000004   array[Ljava/lang/Object; Signature[TE;()VCodeLineNumberTablecontains(Ljava/lang/Object;)Z StackMapTable(TE;)Z(Ljava/lang/Object; SourceFileIntegerTests.java java/lang/Object  MyGenSetequals     0** :+*2   cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/MySet.class000066400000000000000000000006761333451767700276550ustar00rootroot000000000000004   array[Ljava/lang/Integer;()VCodeLineNumberTablecontains(Ljava/lang/Integer;)Z StackMapTable SourceFileIntegerTests.java java/lang/Integer  MySetjava/lang/Objectequals(Ljava/lang/Object;)Z   - ** $% &  :+*2 ( )*cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/test.desc000066400000000000000000000025451333451767700274010ustar00rootroot00000000000000CORE IntegerTests.class --max-nondet-string-length 100 --function IntegerTests.testMySet --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* line 12 function java::IntegerTests.testMySet.* bytecode-index 1 .* SATISFIED coverage.* line 12 function java::IntegerTests.testMySet.* bytecode-index 3 .* SATISFIED coverage.* line 13 function java::IntegerTests.testMySet.* bytecode-index 4 .* SATISFIED coverage.* line 13 function java::IntegerTests.testMySet.* bytecode-index 6 .* SATISFIED coverage.* line 13 function java::IntegerTests.testMySet.* bytecode-index 7 .* SATISFIED coverage.* line 14 function java::IntegerTests.testMySet.* bytecode-index 12 .* SATISFIED coverage.* line 14 function java::IntegerTests.testMySet.* bytecode-index 13 .* SATISFIED coverage.* line 15 function java::IntegerTests.testMySet.* bytecode-index 16 .* SATISFIED coverage.* line 15 function java::IntegerTests.testMySet.* bytecode-index 17 .* SATISFIED coverage.* line 16 function java::IntegerTests.testMySet.* bytecode-index 21 .* SATISFIED coverage.* line 15 function java::IntegerTests.testMySet.* bytecode-index 19 .* SATISFIED coverage.* line 15 function java::IntegerTests.testMySet.* bytecode-index 20 .* SATISFIED coverage.* line 16 function java::IntegerTests.testMySet.* bytecode-index 22 .* SATISFIED coverage.* line 16 function java::IntegerTests.testMySet.* bytecode-index 23 .* SATISFIED cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length-generic-array/test_gen.desc000066400000000000000000000027401333451767700302270ustar00rootroot00000000000000CORE IntegerTests.class --max-nondet-string-length 100 --function IntegerTests.testMyGenSet --cover location ^EXIT=0$ ^SIGNAL=0$ coverage.* line 4 function java::IntegerTests.testMyGenSet.* bytecode-index 1 .* SATISFIED coverage.* line 4 function java::IntegerTests.testMyGenSet.* bytecode-index 3 .* SATISFIED coverage.* line 5 function java::IntegerTests.testMyGenSet.* bytecode-index 4 .* SATISFIED coverage.* line 5 function java::IntegerTests.testMyGenSet.* bytecode-index 6 .* SATISFIED coverage.* line 5 function java::IntegerTests.testMyGenSet.* bytecode-index 7 .* SATISFIED coverage.* line 6 function java::IntegerTests.testMyGenSet.* bytecode-index 10 .* SATISFIED coverage.* line 6 function java::IntegerTests.testMyGenSet.* bytecode-index 13 .* SATISFIED coverage.* line 6 function java::IntegerTests.testMyGenSet.* bytecode-index 14 .* SATISFIED coverage.* line 7 function java::IntegerTests.testMyGenSet.* bytecode-index 17 .* SATISFIED coverage.* line 7 function java::IntegerTests.testMyGenSet.* bytecode-index 18 .* SATISFIED coverage.* line 8 function java::IntegerTests.testMyGenSet.* bytecode-index 22 .* SATISFIED coverage.* line 7 function java::IntegerTests.testMyGenSet.* bytecode-index 20 .* SATISFIED coverage.* line 7 function java::IntegerTests.testMyGenSet.* bytecode-index 21 .* SATISFIED coverage.* line 8 function java::IntegerTests.testMyGenSet.* bytecode-index 23 .* SATISFIED coverage.* line 8 function java::IntegerTests.testMyGenSet.* bytecode-index 24 .* SATISFIED cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/000077500000000000000000000000001333451767700230265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/Test.class000066400000000000000000000020501333451767700247710ustar00rootroot0000000000000047   !B@"  # $% & '( )*+$assertionsDisabledZ()VCodeLineNumberTablecheckMaxInputLength'(Ljava/lang/String;Ljava/lang/String;)V StackMapTablecheckMaxLength,main([Ljava/lang/String;)V SourceFile Test.java  , -.java/lang/AssertionError /01 23  Test4 56java/lang/Objectjava/lang/Stringlength()Iconcat&(Ljava/lang/String;)Ljava/lang/String;org/cprover/CProverStringcharAt(Ljava/lang/String;I)Cjava/lang/ClassdesiredAssertionStatus()Z! *U&*+*+` Y % {:*+*+`*+M,? Y 9 K**2*2 *2*2 "#$4  @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/Test.java000066400000000000000000000016661333451767700246210ustar00rootroot00000000000000public class Test { static void checkMaxInputLength(String arg1, String arg2) { // Filter if (arg1 == null || arg2 == null) return; // The validity of this depends on string-max-input-length assert arg1.length() + arg2.length() < 1_000_000; } static void checkMaxLength(String arg1, String arg2) { // Filter if (arg1 == null || arg2 == null) return; if(arg1.length() + arg2.length() < 4_001) return; // Act String s = arg1.concat(arg2); // When string-max-length is smaller than 4_000 this will // always be the case assert org.cprover.CProverString.charAt(s, 4_000) == '?'; } static void main(String argv[]) { // Filter if (argv.length < 2) return; // Act checkMaxInputLength(argv[0], argv[1]); checkMaxLength(argv[0], argv[1]); } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/test1.desc000066400000000000000000000003211333451767700247220ustar00rootroot00000000000000CORE Test.class --verbosity 10 --max-nondet-string-length 499999 --function Test.checkMaxInputLength ^EXIT=0$ ^SIGNAL=0$ assertion.* line 9 function java::Test.checkMaxInputLength.* bytecode-index 17: SUCCESS cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/test2.desc000066400000000000000000000003221333451767700247240ustar00rootroot00000000000000CORE Test.class --verbosity 10 --max-nondet-string-length 500000 --function Test.checkMaxInputLength ^EXIT=10$ ^SIGNAL=0$ assertion.* line 9 function java::Test.checkMaxInputLength.* bytecode-index 17: FAILURE cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/test3.desc000066400000000000000000000003071333451767700247300ustar00rootroot00000000000000CORE Test.class --verbosity 10 --max-nondet-string-length 4001 --function Test.checkMaxLength ^EXIT=10$ ^SIGNAL=0$ assertion.* line 25 function java::Test.checkMaxLength.* bytecode-index 27: FAILURE cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/max-length/test4.desc000066400000000000000000000005741333451767700247370ustar00rootroot00000000000000CORE Test.class --verbosity 10 --max-nondet-string-length 4000 --function Test.checkMaxLength ^SIGNAL=0$ -- ^EXIT=0$ assertion.* line 25 function java::Test.checkMaxLength.* bytecode-index 26: SUCCESS -- The solver may give an ERROR because the value of max-nondet-string-length is too small to give an answer about the assertion. So we just check that the answer is not success. cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/stub-string-length/000077500000000000000000000000001333451767700245225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/stub-string-length/Opaque.java000066400000000000000000000001141333451767700266130ustar00rootroot00000000000000 public class Opaque { public static String getstr() { return null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/stub-string-length/Test.class000066400000000000000000000011571333451767700264740ustar00rootroot000000000000004*       $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable! SourceFile Test.java " #$ ! %&java/lang/AssertionErrorTest' ()java/lang/Objectjava/lang/StringOpaquegetstr()Ljava/lang/String;length()Ijava/lang/ClassdesiredAssertionStatus()Z!   *  R K** Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/stub-string-length/Test.java000066400000000000000000000002161333451767700263030ustar00rootroot00000000000000 public class Test { public static void main() { String s = Opaque.getstr(); if(s != null) assert s.length() <= 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc-strings/stub-string-length/test.desc000066400000000000000000000001531333451767700263400ustar00rootroot00000000000000CORE Test.class --function Test.main --max-nondet-string-length 10 VERIFICATION SUCCESSFUL EXIT=0 SIGNAL=0 cbmc-cbmc-5.10/jbmc/regression/jbmc/000077500000000000000000000000001333451767700172735ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException1/000077500000000000000000000000001333451767700233245ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException1/ArithmeticExceptionTest.class000066400000000000000000000014621333451767700311660ustar00rootroot000000000000004*  !" # $%&$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLArithmeticExceptionTest;main([Ljava/lang/String;)ViIexcLjava/lang/ArithmeticException;args[Ljava/lang/String; StackMapTable  SourceFileArithmeticExceptionTest.java java/lang/ArithmeticException java/lang/AssertionErrorArithmeticExceptionTest' ()java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*   < l=L Y      J  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException1/ArithmeticExceptionTest.java000066400000000000000000000003571333451767700310040ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(String args[]) { try { int i=0; int j=10/i; } catch(ArithmeticException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException1/test.desc000066400000000000000000000003141333451767700251410ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArithmeticExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException2/000077500000000000000000000000001333451767700233255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException2/ArithmeticExceptionTest.class000066400000000000000000000012061333451767700311630ustar00rootroot000000000000004#     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileArithmeticExceptionTest.java java/lang/ArithmeticException java/lang/AssertionErrorArithmeticExceptionTest !"java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * c @B!m7L Y    N4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException2/ArithmeticExceptionTest.java000066400000000000000000000004231333451767700307770ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(String args[]) { try { long denom=0; long num=10; long j=num/denom; } catch(ArithmeticException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException2/test.desc000066400000000000000000000003141333451767700251420ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArithmeticExceptionTest.java line 9 function.*: FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException3/000077500000000000000000000000001333451767700233265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException3/ArithmeticExceptionTest.class000066400000000000000000000011651333451767700311700ustar00rootroot000000000000004!    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileArithmeticExceptionTest.java java/lang/ArithmeticException java/lang/AssertionErrorArithmeticExceptionTest  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  [< p=L Y    J  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException3/ArithmeticExceptionTest.java000066400000000000000000000003571333451767700310060ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(String args[]) { try { int i=0; int j=10%i; } catch(ArithmeticException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException3/test.desc000066400000000000000000000003141333451767700251430ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArithmeticExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException4/000077500000000000000000000000001333451767700233275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException4/ArithmeticExceptionTest.class000066400000000000000000000012061333451767700311650ustar00rootroot000000000000004#     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileArithmeticExceptionTest.java java/lang/ArithmeticException java/lang/AssertionErrorArithmeticExceptionTest !"java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * c @B!q7L Y    N4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException4/ArithmeticExceptionTest.java000066400000000000000000000004221333451767700310000ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(String args[]) { try { long denom=0; long num=10; long result=num%denom; } catch(ArithmeticException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException4/test.desc000066400000000000000000000003141333451767700251440ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArithmeticExceptionTest.java line 9 function.*: FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException5/000077500000000000000000000000001333451767700233305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException5/ArithmeticExceptionTest.class000066400000000000000000000011771333451767700311750ustar00rootroot000000000000004# @$   $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileArithmeticExceptionTest.java java/lang/ArithmeticException java/lang/AssertionErrorArithmeticExceptionTest !"java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * \H'oJL Y    K4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException5/ArithmeticExceptionTest.java000066400000000000000000000003651333451767700310070ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(String args[]) { try { double i=0; double j=10/i; } catch(ArithmeticException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException5/test.desc000066400000000000000000000002011333451767700251400ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException6/000077500000000000000000000000001333451767700233315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException6/ArithmeticExceptionTest.class000066400000000000000000000011351333451767700311700ustar00rootroot000000000000004!    $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFileArithmeticExceptionTest.java java/lang/ArithmeticException java/lang/AssertionErrorArithmeticExceptionTest  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  U l<L Y  H  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException6/ArithmeticExceptionTest.java000066400000000000000000000003321333451767700310020ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(int denom) { try { int j=10/denom; } catch(ArithmeticException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException6/test.desc000066400000000000000000000003641333451767700251530ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions --function ArithmeticExceptionTest.main ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArithmeticExceptionTest.java line 7 function.*: FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/000077500000000000000000000000001333451767700233325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/ArithmeticExceptionTest.class000066400000000000000000000011531333451767700311710ustar00rootroot000000000000004!    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileArithmeticExceptionTest.java java/lang/Exception java/lang/AssertionErrorArithmeticExceptionTest  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  [< l=L Y    J  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/ArithmeticExceptionTest.java000066400000000000000000000003451333451767700310070ustar00rootroot00000000000000public class ArithmeticExceptionTest { public static void main(String args[]) { try { int i=0; int j=10/i; } catch(Exception exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/java/000077500000000000000000000000001333451767700242535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/java/lang/000077500000000000000000000000001333451767700251745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/java/lang/ArithmeticException.class000066400000000000000000000003501333451767700321710ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileArithmeticException.java java/lang/ArithmeticExceptionjava/lang/RuntimeException!* cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/java/lang/ArithmeticException.java000066400000000000000000000001221333451767700320020ustar00rootroot00000000000000package java.lang; public class ArithmeticException extends RuntimeException { } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/java/lang/RuntimeException.class000066400000000000000000000003331333451767700315240ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileRuntimeException.java java/lang/RuntimeExceptionjava/lang/Exception!* cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/java/lang/RuntimeException.java000066400000000000000000000001101333451767700313310ustar00rootroot00000000000000package java.lang; public class RuntimeException extends Exception { } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArithmeticException7/test.desc000066400000000000000000000003141333451767700251470ustar00rootroot00000000000000CORE ArithmeticExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArithmeticExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException1/000077500000000000000000000000001333451767700254315ustar00rootroot00000000000000ArrayIndexOutOfBoundsExceptionTest.class000066400000000000000000000015531333451767700353220ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException14*  !" # $%&$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis$LArrayIndexOutOfBoundsExceptionTest;main([Ljava/lang/String;)Va[Iexc*Ljava/lang/ArrayIndexOutOfBoundsException;args[Ljava/lang/String; StackMapTable  SourceFile'ArrayIndexOutOfBoundsExceptionTest.java (java/lang/ArrayIndexOutOfBoundsException java/lang/AssertionError"ArrayIndexOutOfBoundsExceptionTest' ()java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*    L+OL Y      K  4 @ArrayIndexOutOfBoundsExceptionTest.java000066400000000000000000000003721333451767700351340ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException1public class ArrayIndexOutOfBoundsExceptionTest { public static void main(String args[]) { try { int[] a=new int[4]; a[4]=0; } catch (ArrayIndexOutOfBoundsException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException1/test.desc000066400000000000000000000003431333451767700272500ustar00rootroot00000000000000CORE ArrayIndexOutOfBoundsExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArrayIndexOutOfBoundsExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException2/000077500000000000000000000000001333451767700254325ustar00rootroot00000000000000ArrayIndexOutOfBoundsExceptionTest.class000066400000000000000000000015531333451767700353230ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException24*  !" # $%&$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis$LArrayIndexOutOfBoundsExceptionTest;main([Ljava/lang/String;)Va[Iexc*Ljava/lang/ArrayIndexOutOfBoundsException;args[Ljava/lang/String; StackMapTable  SourceFile'ArrayIndexOutOfBoundsExceptionTest.java (java/lang/ArrayIndexOutOfBoundsException java/lang/AssertionError"ArrayIndexOutOfBoundsExceptionTest' ()java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*    L+.=L Y      K  4 @ArrayIndexOutOfBoundsExceptionTest.java000066400000000000000000000003761333451767700351410ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException2public class ArrayIndexOutOfBoundsExceptionTest { public static void main(String args[]) { try { int[] a=new int[4]; int i=a[5]; } catch (ArrayIndexOutOfBoundsException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException2/test.desc000066400000000000000000000003431333451767700272510ustar00rootroot00000000000000CORE ArrayIndexOutOfBoundsExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArrayIndexOutOfBoundsExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/000077500000000000000000000000001333451767700254335ustar00rootroot00000000000000ArrayIndexOutOfBoundsExceptionTest.class000066400000000000000000000012021333451767700353130ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException34!    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile'ArrayIndexOutOfBoundsExceptionTest.java java/lang/Exception java/lang/AssertionError"ArrayIndexOutOfBoundsExceptionTest  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  \ L+OL Y    K  4 @ArrayIndexOutOfBoundsExceptionTest.java000066400000000000000000000003451333451767700351360ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3public class ArrayIndexOutOfBoundsExceptionTest { public static void main(String args[]) { try { int[] a=new int[4]; a[4]=0; } catch (Exception exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/000077500000000000000000000000001333451767700263545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/lang/000077500000000000000000000000001333451767700272755ustar00rootroot00000000000000ArrayIndexOutOfBoundsException.class000066400000000000000000000004071333451767700363230ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/lang4    ()VCodeLineNumberTable SourceFile#ArrayIndexOutOfBoundsException.java (java/lang/ArrayIndexOutOfBoundsException#java/lang/IndexOutOfBoundsException!* ArrayIndexOutOfBoundsException.java000066400000000000000000000001461333451767700361370ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/langpackage java.lang; public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException { } IndexOutOfBoundsException.class000066400000000000000000000003641333451767700353260ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/lang4    ()VCodeLineNumberTable SourceFileIndexOutOfBoundsException.java #java/lang/IndexOutOfBoundsExceptionjava/lang/RuntimeException!* IndexOutOfBoundsException.java000066400000000000000000000001301333451767700351310ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/langpackage java.lang; public class IndexOutOfBoundsException extends RuntimeException { } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/lang/RuntimeException.class000066400000000000000000000003331333451767700336250ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileRuntimeException.java java/lang/RuntimeExceptionjava/lang/Exception!* cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/java/lang/RuntimeException.java000066400000000000000000000001101333451767700334320ustar00rootroot00000000000000package java.lang; public class RuntimeException extends Exception { } cbmc-cbmc-5.10/jbmc/regression/jbmc/ArrayIndexOutOfBoundsException3/test.desc000066400000000000000000000003431333451767700272520ustar00rootroot00000000000000CORE ArrayIndexOutOfBoundsExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ArrayIndexOutOfBoundsExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/CMakeLists.txt000066400000000000000000000003741333451767700220370ustar00rootroot00000000000000add_test_pl_tests( "$" ) add_test_pl_profile( "jbmc-symex-driven-lazy-loading" "$ --symex-driven-lazy-loading" "-C;-X;symex-driven-lazy-loading-expected-failure;-s;symex-driven-loading" "CORE" ) cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException1/000077500000000000000000000000001333451767700231135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException1/A.class000066400000000000000000000004111333451767700243160ustar00rootroot000000000000004 iI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileClassCastExceptionTest.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException1/B.class000066400000000000000000000004111333451767700243170ustar00rootroot000000000000004 jI()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileClassCastExceptionTest.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException1/ClassCastExceptionTest.class000066400000000000000000000016031333451767700305410ustar00rootroot0000000000000041 "# $%& '( ") *+,$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLClassCastExceptionTest;main([Ljava/lang/String;)VxLjava/lang/Object;excLjava/lang/ClassCastException;args[Ljava/lang/String; StackMapTable& SourceFileClassCastExceptionTest.java java/lang/Integer -java/lang/Stringjava/lang/ClassCastException java/lang/AssertionErrorClassCastExceptionTest. /0java/lang/Object(I)Vjava/lang/ClassdesiredAssertionStatus()Z!  /*  !YL+ML Y     !Q4  @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException1/ClassCastExceptionTest.java000066400000000000000000000003741333451767700303610ustar00rootroot00000000000000public class ClassCastExceptionTest { public static void main(String args[]) { try { Object x = new Integer(0); String y = (String)x; } catch (ClassCastException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException1/test.desc000066400000000000000000000003131333451767700247270ustar00rootroot00000000000000CORE ClassCastExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ClassCastExceptionTest.java line 8 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/000077500000000000000000000000001333451767700231145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/A.class000066400000000000000000000003051333451767700243210ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileClassCastExceptionTest.java Ajava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/B.class000066400000000000000000000002661333451767700243300ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileClassCastExceptionTest.java BA * cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/C.class000066400000000000000000000002661333451767700243310ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileClassCastExceptionTest.java CB * cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/ClassCastExceptionTest.class000066400000000000000000000012131333451767700305370ustar00rootroot000000000000004&     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileClassCastExceptionTest.java CBjava/lang/ClassCastException java/lang/AssertionErrorClassCastExceptionTest# $%java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  * a YL+ML Y    P4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/ClassCastExceptionTest.java000066400000000000000000000004361333451767700303610ustar00rootroot00000000000000class A {} class B extends A {} class C extends B {} public class ClassCastExceptionTest { public static void main(String args[]) { try { A c = new C(); B b = (B)c; } catch (ClassCastException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException2/test.desc000066400000000000000000000002011333451767700247240ustar00rootroot00000000000000CORE ClassCastExceptionTest.class --throw-runtime-exceptions ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/000077500000000000000000000000001333451767700231155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/A.class000066400000000000000000000003051333451767700243220ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileClassCastExceptionTest.java Ajava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/B.class000066400000000000000000000003051333451767700243230ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileClassCastExceptionTest.java Bjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/ClassCastExceptionTest.class000066400000000000000000000012021333451767700305360ustar00rootroot000000000000004&     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileClassCastExceptionTest.java ABjava/lang/Exception java/lang/AssertionErrorClassCastExceptionTest# $%java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  * a YL+ML Y    P4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/ClassCastExceptionTest.java000066400000000000000000000003651333451767700303630ustar00rootroot00000000000000class A {} class B {} public class ClassCastExceptionTest { public static void main(String args[]) { try { Object a = new A(); B b = (B)a; } catch (Exception exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/java/000077500000000000000000000000001333451767700240365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/java/lang/000077500000000000000000000000001333451767700247575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/java/lang/ClassCastException.class000066400000000000000000000003461333451767700315500ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileClassCastException.java java/lang/ClassCastExceptionjava/lang/RuntimeException!* cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/java/lang/ClassCastException.java000066400000000000000000000001211333451767700313530ustar00rootroot00000000000000package java.lang; public class ClassCastException extends RuntimeException { } cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/java/lang/RuntimeException.class000066400000000000000000000003331333451767700313070ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileRuntimeException.java java/lang/RuntimeExceptionjava/lang/Exception!* cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/java/lang/RuntimeException.java000066400000000000000000000001101333451767700311140ustar00rootroot00000000000000package java.lang; public class RuntimeException extends Exception { } cbmc-cbmc-5.10/jbmc/regression/jbmc/ClassCastException3/test.desc000066400000000000000000000003141333451767700247320ustar00rootroot00000000000000CORE ClassCastExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file ClassCastExceptionTest.java line 12 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/Class_method1/000077500000000000000000000000001333451767700217615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/Class_method1/Class_method1.class000066400000000000000000000012011333451767700254700ustar00rootroot000000000000004$      $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTablef(Ljava/lang/Class;Z)Z SourceFileClass_method1.java java/lang/String java/lang/AssertionError Class_method1! "#java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * = Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/Class_method1/Class_method1.java000066400000000000000000000002701333451767700253110ustar00rootroot00000000000000public class Class_method1 { public static void main(String[] args) { assert(f(String.class, true)); } public static boolean f(Class c, boolean b) { return b; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/000077500000000000000000000000001333451767700216055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/A1.class000066400000000000000000000003451333451767700230770ustar00rootroot000000000000002   some_memberI()VCodeLineNumberTable SourceFileInheritance1.java  A1java/lang/Object  " **   cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/A2.class000066400000000000000000000003351333451767700230770ustar00rootroot000000000000002  some_other_memberI()VCodeLineNumberTable SourceFileInheritance1.java  A2A1  " **    cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/A3.class000066400000000000000000000003361333451767700231010ustar00rootroot000000000000002  yet_another_memberI()VCodeLineNumberTable SourceFileInheritance1.java  A3A2  " **   cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/Inheritance1.class000066400000000000000000000013131333451767700251440ustar00rootroot000000000000002,        ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileInheritance1.java A3  %&java/lang/AssertionError '& (& Inheritance1) *+java/lang/Object some_memberIsome_other_memberyet_another_memberjava/lang/ClassdesiredAssertionStatus()Z  * KYL+ Y+ Y+  Y4J 5  @cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/Inheritance1.java000066400000000000000000000006551333451767700247700ustar00rootroot00000000000000class A1 { int some_member; A1() { some_member=1; } }; class A2 extends A1 { int some_other_member; A2() { some_other_member=2; } }; class A3 extends A2 { int yet_another_member; A3() { yet_another_member=3; } }; class Inheritance1 { public static void main(String[] args) { A3 a3=new A3(); assert a3.some_member==1; assert a3.some_other_member==2; assert a3.yet_another_member==3; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/Inheritance1/test.desc000066400000000000000000000001351333451767700234230ustar00rootroot00000000000000CORE Inheritance1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/JumpSimplification/000077500000000000000000000000001333451767700231015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/JumpSimplification/Test.class000066400000000000000000000004531333451767700250510ustar00rootroot000000000000004  ()VCodeLineNumberTablefoo(I)I StackMapTable SourceFile Test.java Testjava/lang/Object!* J= `     cbmc-cbmc-5.10/jbmc/regression/jbmc/JumpSimplification/Test.java000066400000000000000000000002611333451767700246620ustar00rootroot00000000000000public class Test { public int foo(int i) { int x = 0; if (i > 0) { x++; } else { x--; } return x + 1000; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/JumpSimplification/test.desc000066400000000000000000000003751333451767700247250ustar00rootroot00000000000000CORE Test.class --show-goto-functions --function Test.foo activate-multi-line-match EXIT=0 SIGNAL=0 IF \w* <= 0 THEN GOTO 1\n\s*//.*\n\s*//.*\n\s*\w*:: -- IF !\(\w* <= 0\) THEN GOTO 1\n\s*//.*\n.*GOTO 2\n\s*//.*\n\s*//.*\n\s*1: \w*:: ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable1/000077500000000000000000000000001333451767700220275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable1/CtorLocalVar.class000066400000000000000000000006001333451767700254050ustar00rootroot000000000000003   ()VCodeLocalVariableTablethisLCtorLocalVar;s2Ljava/lang/String;test()LCtorLocalVar;  java/lang/Stringfoo  CtorLocalVarjava/lang/Object(Ljava/lang/String;)V!  7*YL   &Y  cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable1/CtorLocalVar.java000066400000000000000000000002711333451767700252250ustar00rootroot00000000000000public class CtorLocalVar { public CtorLocalVar() { String s2 = new String("foo"); assert(true); } public CtorLocalVar test() { return new CtorLocalVar(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable1/test.desc000066400000000000000000000001711333451767700236450ustar00rootroot00000000000000CORE CtorLocalVar.class --function CtorLocalVar.test ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable2/000077500000000000000000000000001333451767700220305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable2/LocalVarTable2.class000066400000000000000000000016701333451767700256200ustar00rootroot0000000000000047   !" #$ %&' %( )*()VCodeLineNumberTableLocalVariableTablethisLLocalVarTable2;f()Ljava/lang/Object;iI StackMapTable+main([Ljava/lang/String;)Vargs[Ljava/lang/String; SourceFileLocalVarTable2.java , -. Count %d java/lang/Object/ 012 34Finally executed 56 LocalVarTable2java/lang/Throwablejava/lang/SystemoutLjava/io/PrintStream;java/lang/IntegervalueOf(I)Ljava/lang/Integer;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;println(Ljava/lang/String;)V!   /*   ?; YSWYK*L+"*4"*    Q  3 W  cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable2/LocalVarTable2.java000066400000000000000000000005721333451767700254340ustar00rootroot00000000000000// Must compile this with -g (produces LocalVarTable) to exhibit bug. public class LocalVarTable2 { public static Object f() { for(int i = 0; i < 10; ++i) { System.out.printf("Count %d\n", i); } try { return new Object(); } finally { System.out.println("Finally executed\n"); } } public static void main(String[] args) { f(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable2/test.desc000066400000000000000000000001421333451767700236440ustar00rootroot00000000000000CORE LocalVarTable2.class --show-goto-functions ^EXIT=0$ ^SIGNAL=0$ -- return_value.*\(void \*\)i cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable3/000077500000000000000000000000001333451767700220315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable3/live_range_with_holes.class000066400000000000000000000014361333451767700274240ustar00rootroot000000000000004%     !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLlive_range_with_holes;main(I)VxIyarg StackMapTable SourceFilelive_range_with_holes.java  java/lang/AssertionErrorlive_range_with_holes" #$java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*    F)"<=<=<= Y .   #%'*,.EH %'F,.   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable3/live_range_with_holes.java000066400000000000000000000005231333451767700272340ustar00rootroot00000000000000 public class live_range_with_holes { public static void main(int arg) { int x; int y; switch(arg) { case 1: x = 1; y = 1; break; case 2: x = 2; y = 2; break; default: x = 0; y = 0; break; } assert(x >= 0 && x <= 2); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable3/test.desc000066400000000000000000000001701333451767700236460ustar00rootroot00000000000000CORE live_range_with_holes.class --function live_range_with_holes.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable4/000077500000000000000000000000001333451767700220325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable4/live_range_exception.class000066400000000000000000000014141333451767700272520ustar00rootroot000000000000004(   ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLlive_range_exception;mainxIyeLjava/lang/Exception; StackMapTable SourceFilelive_range_exception.java java/lang/Exception java/lang/AssertionErrorlive_range_exception% &'java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*    $;<M;< Y"     #4   G  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable4/live_range_exception.java000066400000000000000000000003441333451767700270670ustar00rootroot00000000000000 public class live_range_exception { public static void main() { int x; int y; try { x = 0; y = 0; } catch(Exception e) { x = 1; y = 1; } assert(x==0 || x==1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable4/test.desc000066400000000000000000000001661333451767700236540ustar00rootroot00000000000000CORE live_range_exception.class --function live_range_exception.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable5/000077500000000000000000000000001333451767700220335ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable5/test.class000066400000000000000000000005111333451767700240360ustar00rootroot000000000000004  ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile test.java testjava/lang/Object!* b# < = YN"   "    cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable5/test.desc000066400000000000000000000002361333451767700236530ustar00rootroot00000000000000CORE test.class --show-goto-functions --function test.main dead anonlocal::1i dead anonlocal::2i dead anonlocal::3a dead new_tmp[0-9]+ ^EXIT=0$ ^SIGNAL=0$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/LocalVarTable5/test.java000066400000000000000000000006441333451767700236610ustar00rootroot00000000000000 public class test { public static void main(int unknown) { int i; int j; if(unknown==1) { // Check that anonymous locals // get assigned scopes: i = 0; i++; } else if(unknown==2) { j = 0; j++; } else { // Check that temporaries (here // a new_tmp variable) are treated // likewise test t = new test(); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/Makefile000066400000000000000000000022671333451767700207420ustar00rootroot00000000000000default: tests.log include ../../src/config.inc test: @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading tests.log: ../$(CPROVER_DIR)/regression/test.pl @../$(CPROVER_DIR)/regression/test.pl -p -c ../../../src/jbmc/jbmc @../$(CPROVER_DIR)/regression/test.pl -p -c "../../../src/jbmc/jbmc --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading show: @for dir in *; do \ if [ -d "$$dir" ]; then \ vim -o "$$dir/*.java" "$$dir/*.out"; \ fi; \ done; clean: find -name '*.out' -execdir $(RM) '{}' \; find -name '*.gb' -execdir $(RM) '{}' \; $(RM) tests.log tests-symex-driven-loading.log %.class: %.java ../../src/org.cprover.jar javac -g -cp ../../src/org.cprover.jar:. $< nondet_java_files := $(shell find . -name "Nondet*.java") nondet_class_files := $(patsubst %.java, %.class, $(nondet_java_files)) .PHONY: nondet-class-files nondet-class-files: $(nondet_class_files) .PHONY: clean-nondet-class-files clean-nondet-class-files: -rm $(nondet_class_files) cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException1/000077500000000000000000000000001333451767700246275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException1/NegativeArraySizeExceptionTest.class000066400000000000000000000014741333451767700337770ustar00rootroot000000000000004(   ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNegativeArraySizeExceptionTest;main([Ljava/lang/String;)Vexc&Ljava/lang/NegativeArraySizeException;args[Ljava/lang/String; StackMapTable SourceFile#NegativeArraySizeExceptionTest.java $java/lang/NegativeArraySizeException java/lang/AssertionErrorNegativeArraySizeExceptionTest% &'java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*   p LL Y G  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException1/NegativeArraySizeExceptionTest.java000066400000000000000000000003411333451767700336030ustar00rootroot00000000000000public class NegativeArraySizeExceptionTest { public static void main(String args[]) { try { int a[]=new int[-1]; } catch (NegativeArraySizeException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException1/test.desc000066400000000000000000000003331333451767700264450ustar00rootroot00000000000000CORE NegativeArraySizeExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file NegativeArraySizeExceptionTest.java line 7 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/000077500000000000000000000000001333451767700246305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/NegativeArraySizeExceptionTest.class000066400000000000000000000011621333451767700337720ustar00rootroot000000000000004!    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile#NegativeArraySizeExceptionTest.java java/lang/Exception java/lang/AssertionErrorNegativeArraySizeExceptionTest  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  T LL Y G  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/NegativeArraySizeExceptionTest.java000066400000000000000000000003201333451767700336010ustar00rootroot00000000000000public class NegativeArraySizeExceptionTest { public static void main(String args[]) { try { int a[]=new int[-1]; } catch (Exception exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/java/000077500000000000000000000000001333451767700255515ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/java/lang/000077500000000000000000000000001333451767700264725ustar00rootroot00000000000000NegativeArraySizeException.class000066400000000000000000000003661333451767700347220ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/java/lang4    ()VCodeLineNumberTable SourceFileNegativeArraySizeException.java $java/lang/NegativeArraySizeExceptionjava/lang/RuntimeException!* NegativeArraySizeException.java000066400000000000000000000001311333451767700345240ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/java/langpackage java.lang; public class NegativeArraySizeException extends RuntimeException { } cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/java/lang/RuntimeException.class000066400000000000000000000003331333451767700330220ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileRuntimeException.java java/lang/RuntimeExceptionjava/lang/Exception!* cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/java/lang/RuntimeException.java000066400000000000000000000001101333451767700326270ustar00rootroot00000000000000package java.lang; public class RuntimeException extends Exception { } cbmc-cbmc-5.10/jbmc/regression/jbmc/NegativeArraySizeException2/test.desc000066400000000000000000000003331333451767700264460ustar00rootroot00000000000000CORE NegativeArraySizeExceptionTest.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file NegativeArraySizeExceptionTest.java line 7 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray/000077500000000000000000000000001333451767700215215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray/NondetArray.class000066400000000000000000000013221333451767700247740ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetArray;mainobj[Ljava/lang/Object; StackMapTable SourceFileNondetArray.java # $% java/lang/AssertionError NondetArray& '(java/lang/Objectorg/cprover/CProvernondetWithoutNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  dL+ Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray/NondetArray.java000066400000000000000000000002211333451767700246050ustar00rootroot00000000000000import org.cprover.CProver; class NondetArray { void main() { Object[] obj = CProver.nondetWithoutNull(); assert obj != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray/test.desc000066400000000000000000000001671333451767700233440ustar00rootroot00000000000000CORE NondetArray.class --function NondetArray.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray2/000077500000000000000000000000001333451767700216035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray2/NondetArray2.class000066400000000000000000000016471333451767700251520ustar00rootroot0000000000000045 ! "# $% &' !( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetArray2;mainiLjava/lang/Integer;ints[Ljava/lang/Integer;numI StackMapTable(, SourceFileNondetArray2.java - ./, 01 java/lang/AssertionError NondetArray22 34java/lang/Objectjava/lang/Integerorg/cprover/CProvernondetWithoutNull()Ljava/lang/Object;intValue()Ijava/lang/ClassdesiredAssertionStatus()Z    /* HL=+N-66-2: h= Y&   $ ' / 5G*HA ?"4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray2/NondetArray2.java000066400000000000000000000004071333451767700247570ustar00rootroot00000000000000import org.cprover.CProver; class NondetArray2 { void main() { Integer[] ints = CProver.nondetWithoutNull(); int num = 0; for (Integer i : ints) { if(i == null) continue; num *= i.intValue(); } assert num == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray2/test.desc000066400000000000000000000003071333451767700234220ustar00rootroot00000000000000CORE NondetArray2.class --function NondetArray2.main --unwind 5 ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- Disabled pending fixing warnings for array-of with zero length: ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray3/000077500000000000000000000000001333451767700216045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray3/NondetArray3.class000066400000000000000000000017031333451767700251450ustar00rootroot0000000000000045 ! "# $% ! &'( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetArray3;mainiLjava/lang/Integer;ints[Ljava/lang/Integer;numI StackMapTable(, SourceFileNondetArray3.java - ./ java/lang/AssertionError, 01 NondetArray32 34java/lang/Objectjava/lang/Integerorg/cprover/CProvernondetWithoutNull()Ljava/lang/Object;intValue()Ijava/lang/ClassdesiredAssertionStatus()Z    /* ZL+ Y=+N-66-2: h= Y*   1 6 9A GY*1ZS?( 4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray3/NondetArray3.java000066400000000000000000000004401333451767700247560ustar00rootroot00000000000000import org.cprover.CProver; class NondetArray3 { void main() { Integer[] ints = CProver.nondetWithoutNull(); assert ints != null; int num = 0; for (Integer i : ints) { if(i == null) continue; num *= i.intValue(); } assert num == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray3/test.desc000066400000000000000000000003071333451767700234230ustar00rootroot00000000000000CORE NondetArray3.class --function NondetArray3.main --unwind 5 ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- Disabled pending fixing warnings for array-of with zero length: ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray4/000077500000000000000000000000001333451767700216055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray4/NondetArray4.class000066400000000000000000000014461333451767700251530ustar00rootroot000000000000004.  ! "# $ %&'$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetArray4;mainaIbcints[Ljava/lang/Integer; StackMapTable$ SourceFileNondetArray4.java ( )* java/lang/AssertionError NondetArray4+ ,-java/lang/Objectorg/cprover/CProvernondetWithoutNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  "<=>: Y   ! 4" ! 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray4/NondetArray4.java000066400000000000000000000003031333451767700247560ustar00rootroot00000000000000import org.cprover.CProver; class NondetArray4 { void main() { int a = 1; int b = 2; int c = 3; Integer[] ints = CProver.nondetWithoutNull(); assert ints != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetArray4/test.desc000066400000000000000000000001711333451767700234230ustar00rootroot00000000000000CORE NondetArray4.class --function NondetArray4.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume1/000077500000000000000000000000001333451767700217615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume1/NondetAssume1.class000066400000000000000000000013221333451767700254740ustar00rootroot000000000000004,      !"#$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetAssume1;mainxI StackMapTable SourceFileNondetAssume1.java $ %& '( java/lang/AssertionError NondetAssume1) *+java/lang/Objectorg/cprover/CProver nondetInt()Iassume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z    /*  t%< Y $ %!  @ 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume1/NondetAssume1.java000066400000000000000000000002331333451767700253100ustar00rootroot00000000000000import org.cprover.CProver; class NondetAssume1 { void main() { int x = CProver.nondetInt(); CProver.assume(x == 1); assert x == 1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume1/test.desc000066400000000000000000000001731333451767700236010ustar00rootroot00000000000000CORE NondetAssume1.class --function NondetAssume1.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/000077500000000000000000000000001333451767700217625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/A.class000066400000000000000000000004001333451767700231630ustar00rootroot000000000000004 xI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileNondetAssume2.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/B.class000066400000000000000000000004021333451767700231660ustar00rootroot000000000000004 aLA;()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileNondetAssume2.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/C.class000066400000000000000000000004021333451767700231670ustar00rootroot000000000000004 bLB;()VCodeLineNumberTableLocalVariableTablethisLC; SourceFileNondetAssume2.java Cjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/NondetAssume2.class000066400000000000000000000013671333451767700255070ustar00rootroot000000000000004/    !" # $%&$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetAssume2;maincLC; StackMapTable SourceFileNondetAssume2.java ' ()C *+ java/lang/AssertionError NondetAssume2, -.java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;assume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z    /*  w&L++ Y %& @4   @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/NondetAssume2.java000066400000000000000000000003341333451767700253140ustar00rootroot00000000000000import org.cprover.CProver; class A { int x; } class B { A a; } class C { B b; } class NondetAssume2 { void main() { C c = CProver.nondetWithNull(); CProver.assume(c != null); assert c != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetAssume2/test.desc000066400000000000000000000001731333451767700236020ustar00rootroot00000000000000CORE NondetAssume2.class --function NondetAssume2.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetBoolean/000077500000000000000000000000001333451767700220225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetBoolean/NondetBoolean.class000066400000000000000000000012231333451767700255760ustar00rootroot000000000000004&      $assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetBoolean;mainx StackMapTable SourceFileNondetBoolean.java ! "# java/lang/AssertionError NondetBoolean$ %#java/lang/Objectorg/cprover/CProver nondetBoolean()Zjava/lang/ClassdesiredAssertionStatus    /*   U; Y     4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetBoolean/NondetBoolean.java000066400000000000000000000002221333451767700254100ustar00rootroot00000000000000import org.cprover.CProver; class NondetBoolean { static void main() { boolean x = CProver.nondetBoolean(); assert x == false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetBoolean/test.desc000066400000000000000000000001701333451767700236370ustar00rootroot00000000000000CORE NondetBoolean.class --function NondetBoolean.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetByte/000077500000000000000000000000001333451767700213465ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetByte/NondetByte.class000066400000000000000000000012211333451767700244440ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetByte;mainxB StackMapTable SourceFileNondetByte.java " #$ java/lang/AssertionError NondetByte% &'java/lang/Objectorg/cprover/CProver nondetByte()Bjava/lang/ClassdesiredAssertionStatus()Z    /*   U; Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetByte/NondetByte.java000066400000000000000000000002051333451767700242610ustar00rootroot00000000000000import org.cprover.CProver; class NondetByte { static void main() { byte x = CProver.nondetByte(); assert x == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetByte/test.desc000066400000000000000000000001621333451767700231640ustar00rootroot00000000000000CORE NondetByte.class --function NondetByte.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCastToObject/000077500000000000000000000000001333451767700227675ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCastToObject/NondetCastToObject.class000066400000000000000000000014131333451767700275110ustar00rootroot000000000000004-     ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetCastToObject;mainoLjava/lang/Object; StackMapTable$ SourceFileNondetCastToObject.java % &' () java/lang/AssertionErrorNondetCastToObject* +,java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;assume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z    /*  t#L++ Y " #  @ 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCastToObject/NondetCastToObject.java000066400000000000000000000002561333451767700273310ustar00rootroot00000000000000import org.cprover.CProver; class NondetCastToObject { void main() { Object o = CProver.nondetWithNull(); CProver.assume(o != null); assert o != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCastToObject/test.desc000066400000000000000000000002051333451767700246030ustar00rootroot00000000000000CORE NondetCastToObject.class --function NondetCastToObject.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetChar/000077500000000000000000000000001333451767700213205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetChar/NondetChar.class000066400000000000000000000012211333451767700243700ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetChar;mainxC StackMapTable SourceFileNondetChar.java " #$ java/lang/AssertionError NondetChar% &'java/lang/Objectorg/cprover/CProver nondetChar()Cjava/lang/ClassdesiredAssertionStatus()Z    /*   U; Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetChar/NondetChar.java000066400000000000000000000002101333451767700242010ustar00rootroot00000000000000import org.cprover.CProver; class NondetChar { static void main() { char x = CProver.nondetChar(); assert x == '\0'; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetChar/test.desc000066400000000000000000000001621333451767700231360ustar00rootroot00000000000000CORE NondetChar.class --function NondetChar.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCharSequence/000077500000000000000000000000001333451767700230115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCharSequence/NondetCharSequence.class000066400000000000000000000014001333451767700275510ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetCharSequence;mainxLjava/lang/CharSequence; StackMapTable SourceFileNondetCharSequence.java % &'java/lang/CharSequence java/lang/AssertionErrorNondetCharSequence( )*java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  a!K** Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCharSequence/NondetCharSequence.java000066400000000000000000000002711333451767700273720ustar00rootroot00000000000000import org.cprover.CProver; class NondetCharSequence { static void main() { CharSequence x = CProver.nondetWithNull(); assert x == null || x instanceof CharSequence; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetCharSequence/test.desc000066400000000000000000000002051333451767700246250ustar00rootroot00000000000000CORE NondetCharSequence.class --function NondetCharSequence.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDirectFromMethod/000077500000000000000000000000001333451767700236425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDirectFromMethod/A.class000066400000000000000000000004111333451767700250450ustar00rootroot000000000000004 aI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileNondetDirectFromMethod.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDirectFromMethod/NondetDirectFromMethod.class000066400000000000000000000014501333451767700312400ustar00rootroot000000000000004,     ! " #$%$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetDirectFromMethod;methodReturningA()LA;main StackMapTable SourceFileNondetDirectFromMethod.java & '(A java/lang/AssertionErrorNondetDirectFromMethod) *+java/lang/Objectorg/cprover/CProvernondetWithoutNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /* 1  M* Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDirectFromMethod/NondetDirectFromMethod.java000066400000000000000000000003311333451767700310510ustar00rootroot00000000000000import org.cprover.CProver; class A { int a; } class NondetDirectFromMethod { A methodReturningA() { return CProver.nondetWithoutNull(); } void main() { assert methodReturningA() != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDirectFromMethod/test.desc000066400000000000000000000002151333451767700254570ustar00rootroot00000000000000CORE NondetDirectFromMethod.class --function NondetDirectFromMethod.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDouble/000077500000000000000000000000001333451767700216555ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDouble/NondetDouble.class000066400000000000000000000012331333451767700252650ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetDouble;mainxD StackMapTable SourceFileNondetDouble.java " #$ java/lang/AssertionError NondetDouble% &'java/lang/Objectorg/cprover/CProver nondetDouble()Djava/lang/ClassdesiredAssertionStatus()Z    /*   WG& Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDouble/NondetDouble.java000066400000000000000000000002131333451767700250760ustar00rootroot00000000000000import org.cprover.CProver; class NondetDouble { static void main() { double x = CProver.nondetDouble(); assert x == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetDouble/test.desc000066400000000000000000000001661333451767700234770ustar00rootroot00000000000000CORE NondetDouble.class --function NondetDouble.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetFloat/000077500000000000000000000000001333451767700215105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetFloat/NondetFloat.class000066400000000000000000000012271333451767700247560ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetFloat;mainxF StackMapTable SourceFileNondetFloat.java " #$ java/lang/AssertionError NondetFloat% &'java/lang/Objectorg/cprover/CProver nondetFloat()Fjava/lang/ClassdesiredAssertionStatus()Z    /*   WC" Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetFloat/NondetFloat.java000066400000000000000000000002101333451767700245610ustar00rootroot00000000000000import org.cprover.CProver; class NondetFloat { static void main() { float x = CProver.nondetFloat(); assert x == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetFloat/test.desc000066400000000000000000000001641333451767700233300ustar00rootroot00000000000000CORE NondetFloat.class --function NondetFloat.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/000077500000000000000000000000001333451767700230165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/A.class000066400000000000000000000004371333451767700242310ustar00rootroot000000000000004  ints[I()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileNondetGenericArray.java  Ajava/lang/Object  ; **    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/B.class000066400000000000000000000004071333451767700242270ustar00rootroot000000000000004 aLA;()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileNondetGenericArray.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/C.class000066400000000000000000000004071333451767700242300ustar00rootroot000000000000004 bLB;()VCodeLineNumberTableLocalVariableTablethisLC; SourceFileNondetGenericArray.java Cjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/NondetGenericArray.class000066400000000000000000000016711333451767700275750ustar00rootroot000000000000004?  !" # $ %& '( )* + ,-.$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetGenericArray;maincLC; StackMapTable" SourceFileNondetGenericArray.java / 01C 23 456 789 :; java/lang/AssertionErrorNondetGenericArray< =>java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;assume(Z)VbLB;BaLA;Aints[Ijava/lang/ClassdesiredAssertionStatus()Z /* }K***** Y * Y ""4Ia| v @ @@@4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/NondetGenericArray.java000066400000000000000000000006201333451767700274020ustar00rootroot00000000000000import org.cprover.CProver; class A { int[] ints = new int[10]; } class B { A a; } class C { B b; } class NondetGenericArray { static void main() { C c = CProver.nondetWithNull(); CProver.assume(c != null); CProver.assume(c.b != null); CProver.assume(c.b.a != null); CProver.assume(c.b.a.ints != null); assert c.b.a != null; assert c.b.a.ints != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericArray/test.desc000066400000000000000000000003101333451767700246270ustar00rootroot00000000000000CORE NondetGenericArray.class --function NondetGenericArray.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- Disabled pending fixing warnings for array-of with zero length: ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/000077500000000000000000000000001333451767700237075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/A.class000066400000000000000000000003711333451767700251170ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileNondetGenericRecursive.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/B.class000066400000000000000000000004131333451767700251150ustar00rootroot000000000000004 aLA;()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileNondetGenericRecursive.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/C.class000066400000000000000000000004131333451767700251160ustar00rootroot000000000000004 bLB;()VCodeLineNumberTableLocalVariableTablethisLC; SourceFileNondetGenericRecursive.java Cjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/NondetGenericRecursive.class000066400000000000000000000013331333451767700313520ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetGenericRecursive;maincLC; StackMapTable SourceFileNondetGenericRecursive.java % &'C java/lang/AssertionErrorNondetGenericRecursive( )*java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  ZK* Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/NondetGenericRecursive.java000066400000000000000000000003121333451767700311620ustar00rootroot00000000000000import org.cprover.CProver; class A { } class B { A a; } class C { B b; } class NondetGenericRecursive { static void main() { C c = CProver.nondetWithNull(); assert c == null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive/test.desc000066400000000000000000000002121333451767700255210ustar00rootroot00000000000000CORE NondetGenericRecursive.class --function NondetGenericRecursive.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/000077500000000000000000000000001333451767700237715ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/A.class000066400000000000000000000003721333451767700252020ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileNondetGenericRecursive2.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/B.class000066400000000000000000000004141333451767700252000ustar00rootroot000000000000004 aLA;()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileNondetGenericRecursive2.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/C.class000066400000000000000000000004141333451767700252010ustar00rootroot000000000000004 bLB;()VCodeLineNumberTableLocalVariableTablethisLC; SourceFileNondetGenericRecursive2.java Cjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/NondetGenericRecursive2.class000066400000000000000000000015571333451767700315260ustar00rootroot0000000000000049   ! " # $% &' ( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetGenericRecursive2;maincLC; StackMapTable! SourceFileNondetGenericRecursive2.java , -.C /0 123 45 java/lang/AssertionErrorNondetGenericRecursive26 78java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;assume(Z)VbLB;BaLA;java/lang/ClassdesiredAssertionStatus()Z  /* MK**** Y "4L F@ @@4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/NondetGenericRecursive2.java000066400000000000000000000004621333451767700313340ustar00rootroot00000000000000import org.cprover.CProver; class A { } class B { A a; } class C { B b; } class NondetGenericRecursive2 { static void main() { C c = CProver.nondetWithNull(); CProver.assume(c != null); CProver.assume(c.b != null); CProver.assume(c.b.a != null); assert c.b.a != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericRecursive2/test.desc000066400000000000000000000002171333451767700256100ustar00rootroot00000000000000CORE NondetGenericRecursive2.class --function NondetGenericRecursive2.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithNull/000077500000000000000000000000001333451767700235065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithNull/B.class000066400000000000000000000004101333451767700247110ustar00rootroot000000000000004 aI()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileNondetGenericWithNull.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithNull/NondetGenericWithNull.class000066400000000000000000000014041333451767700307470ustar00rootroot000000000000004/    !  "# $%&$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetGenericWithNull;mainbLB; StackMapTable SourceFileNondetGenericWithNull.java ' ()B java/lang/AssertionError *+NondetGenericWithNull, -.java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;aIjava/lang/ClassdesiredAssertionStatus()Z    /* t/K* Y* Y   .  ( 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithNull/NondetGenericWithNull.java000066400000000000000000000002751333451767700305700ustar00rootroot00000000000000import org.cprover.CProver; class B { int a; } class NondetGenericWithNull { static void main() { B b = CProver.nondetWithNull(); assert b != null; assert b.a != 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithNull/test.desc000066400000000000000000000002101333451767700253160ustar00rootroot00000000000000CORE NondetGenericWithNull.class --function NondetGenericWithNull.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithoutNull/000077500000000000000000000000001333451767700242365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithoutNull/B.class000066400000000000000000000004131333451767700254440ustar00rootroot000000000000004 aI()VCodeLineNumberTableLocalVariableTablethisLB; SourceFileNondetGenericWithoutNull.java Bjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithoutNull/NondetGenericWithoutNull.class000066400000000000000000000013441333451767700322320ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetGenericWithoutNull;mainbLB; StackMapTable SourceFileNondetGenericWithoutNull.java % &'B java/lang/AssertionErrorNondetGenericWithoutNull( )*java/lang/Objectorg/cprover/CProvernondetWithoutNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  ZK* Y     4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithoutNull/NondetGenericWithoutNull.java000066400000000000000000000002561333451767700320470ustar00rootroot00000000000000import org.cprover.CProver; class B { int a; } class NondetGenericWithoutNull { static void main() { B b = CProver.nondetWithoutNull(); assert b != null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetGenericWithoutNull/test.desc000066400000000000000000000002211333451767700260500ustar00rootroot00000000000000CORE NondetGenericWithoutNull.class --function NondetGenericWithoutNull.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit/000077500000000000000000000000001333451767700213465ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit/Test.class000066400000000000000000000016001333451767700233110ustar00rootroot0000000000000040   ! "# $% & '()sizeIdata1[Idata2$assertionsDisabledZ()VCodeLineNumberTablecproverNondetInitialize StackMapTablecheck(I)I SourceFile Test.java    * +, java/lang/AssertionErrorTest- ./java/lang/Objectorg/cprover/CProverassume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z  *P)* ****`  ( $@w*** Y*)*d=* Y*.* Y*.&  *3;RYp  '4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit/Test.java000066400000000000000000000013201333451767700231240ustar00rootroot00000000000000import org.cprover.CProver; class Test { int size; int[] data1; int[] data2; void cproverNondetInitialize() { // This specifies invariants about object of this class. // This avoids finding spurious bugs. CProver.assume(data1 != null && data2 != null && size == data1.length + data2.length); } int check(int x) { int i; if(x >= size || x < 0) return -1; assert(data1 != null || data2 == null); if (x >= data1.length) { i = x - data1.length; assert(i < data2.length); return data2[i]; } else { assert(x < data1.length); return data1[x]; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit/test.desc000066400000000000000000000001271333451767700231650ustar00rootroot00000000000000CORE Test.class --function Test.check ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit/test_lazy.desc000066400000000000000000000003651333451767700242300ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --function Test.check --lazy-methods ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit2/000077500000000000000000000000001333451767700214305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit2/Test.class000066400000000000000000000007041333451767700233770ustar00rootroot000000000000004   arr[I()VCodeLineNumberTablecproverNondetInitialize StackMapTablemain (LTest;)V SourceFile Test.java   Testjava/lang/Objectorg/cprover/CProverassume(Z)V   *   L!***dO  @   cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit2/Test.java000066400000000000000000000004431333451767700232130ustar00rootroot00000000000000import org.cprover.CProver; class Test { int[] arr; void cproverNondetInitialize() { CProver.assume(arr != null && arr.length == 1); // The following access should now be legal: arr[0] = 100; } public static void main(Test nondetInput) { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit2/test.desc000066400000000000000000000001231333451767700232430ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit3/000077500000000000000000000000001333451767700214315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit3/Subclass.class000066400000000000000000000002561333451767700242420ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile Test.java SubclassTest * cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit3/Test.class000066400000000000000000000013411333451767700233760ustar00rootroot000000000000004,      ! "#$arr[I$assertionsDisabledZ()VCodeLineNumberTablecproverNondetInitialize StackMapTablemain (LSubclass;)V SourceFile Test.java  % &' (java/lang/AssertionErrorTest) *+java/lang/Objectorg/cprover/CProverassume(Z)VSubclassjava/lang/ClassdesiredAssertionStatus()Z    *L!***dO @ E** Y4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit3/Test.java000066400000000000000000000011201333451767700232050ustar00rootroot00000000000000import org.cprover.CProver; class Test { int[] arr; void cproverNondetInitialize() { CProver.assume(arr != null && arr.length == 1); // The following access should now be legal: arr[0] = 100; } public static void main(Subclass nondetInput) { // The condition enforced by cproverNondetInitialize should hold // even though the parameter is a subtype of Test, not directly an // instance of Test itself. if(nondetInput != null) assert nondetInput.arr.length == 1; } } class Subclass extends Test { } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInit3/test.desc000066400000000000000000000001231333451767700232440ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInt/000077500000000000000000000000001333451767700211755ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInt/NondetInt.class000066400000000000000000000012151333451767700241250ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetInt;mainxI StackMapTable SourceFileNondetInt.java " #$ java/lang/AssertionError NondetInt% &'java/lang/Objectorg/cprover/CProver nondetInt()Ijava/lang/ClassdesiredAssertionStatus()Z    /*   U; Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInt/NondetInt.java000066400000000000000000000002021333451767700237340ustar00rootroot00000000000000import org.cprover.CProver; class NondetInt { static void main() { int x = CProver.nondetInt(); assert x == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetInt/test.desc000066400000000000000000000001601333451767700230110ustar00rootroot00000000000000CORE NondetInt.class --function NondetInt.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetLong/000077500000000000000000000000001333451767700213425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetLong/NondetLong.class000066400000000000000000000012231333451767700244360ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetLong;mainxJ StackMapTable SourceFileNondetLong.java " #$ java/lang/AssertionError NondetLong% &'java/lang/Objectorg/cprover/CProver nondetLong()Jjava/lang/ClassdesiredAssertionStatus()Z    /*   W? Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetLong/NondetLong.java000066400000000000000000000002051333451767700242510ustar00rootroot00000000000000import org.cprover.CProver; class NondetLong { static void main() { long x = CProver.nondetLong(); assert x == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetLong/test.desc000066400000000000000000000001621333451767700231600ustar00rootroot00000000000000CORE NondetLong.class --function NondetLong.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetShort/000077500000000000000000000000001333451767700215425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetShort/NondetShort.class000066400000000000000000000012251333451767700250400ustar00rootroot000000000000004(      !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LNondetShort;mainxS StackMapTable SourceFileNondetShort.java " #$ java/lang/AssertionError NondetShort% &'java/lang/Objectorg/cprover/CProver nondetShort()Sjava/lang/ClassdesiredAssertionStatus()Z    /*   U; Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetShort/NondetShort.java000066400000000000000000000002101333451767700246450ustar00rootroot00000000000000import org.cprover.CProver; class NondetShort { static void main() { short x = CProver.nondetShort(); assert x == 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetShort/test.desc000066400000000000000000000001641333451767700233620ustar00rootroot00000000000000CORE NondetShort.class --function NondetShort.main ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetString/000077500000000000000000000000001333451767700217115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetString/NondetString.class000066400000000000000000000013421333451767700253560ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetString;mainxLjava/lang/String; StackMapTable SourceFileNondetString.java % &'java/lang/String java/lang/AssertionError NondetString( )*java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  a!K** Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetString/NondetString.java000066400000000000000000000002471333451767700251750ustar00rootroot00000000000000import org.cprover.CProver; class NondetString { static void main() { String x = CProver.nondetWithNull(); assert x == null || x instanceof String; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetString/test.desc000066400000000000000000000001711333451767700235270ustar00rootroot00000000000000CORE NondetString.class --function NondetString.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuffer/000077500000000000000000000000001333451767700230435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuffer/NondetStringBuffer.class000066400000000000000000000014001333451767700276350ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetStringBuffer;mainxLjava/lang/StringBuffer; StackMapTable SourceFileNondetStringBuffer.java % &'java/lang/StringBuffer java/lang/AssertionErrorNondetStringBuffer( )*java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  a!K** Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuffer/NondetStringBuffer.java000066400000000000000000000002711333451767700274560ustar00rootroot00000000000000import org.cprover.CProver; class NondetStringBuffer { static void main() { StringBuffer x = CProver.nondetWithNull(); assert x == null || x instanceof StringBuffer; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuffer/test.desc000066400000000000000000000002051333451767700246570ustar00rootroot00000000000000CORE NondetStringBuffer.class --function NondetStringBuffer.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuilder/000077500000000000000000000000001333451767700232205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuilder/NondetStringBuilder.class000066400000000000000000000014051333451767700301740ustar00rootroot000000000000004+    ! "#$$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLNondetStringBuilder;mainxLjava/lang/StringBuilder; StackMapTable SourceFileNondetStringBuilder.java % &'java/lang/StringBuilder java/lang/AssertionErrorNondetStringBuilder( )*java/lang/Objectorg/cprover/CProvernondetWithNull()Ljava/lang/Object;java/lang/ClassdesiredAssertionStatus()Z    /*  a!K** Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuilder/NondetStringBuilder.java000066400000000000000000000002741333451767700300130ustar00rootroot00000000000000import org.cprover.CProver; class NondetStringBuilder { static void main() { StringBuilder x = CProver.nondetWithNull(); assert x == null || x instanceof StringBuilder; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NondetStringBuilder/test.desc000066400000000000000000000002071333451767700250360ustar00rootroot00000000000000CORE NondetStringBuilder.class --function NondetStringBuilder.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer1/000077500000000000000000000000001333451767700216275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer1/A.class000066400000000000000000000003351333451767700230370ustar00rootroot000000000000004 iIbLB;()VCodeLineNumberTable SourceFileNullPointer1.java  Ajava/lang/Object   *   cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer1/B.class000066400000000000000000000003131333451767700230340ustar00rootroot000000000000004   jI()VCodeLineNumberTable SourceFileNullPointer1.java Bjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer1/NullPointer1.class000066400000000000000000000005441333451767700252150ustar00rootroot000000000000004    ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFileNullPointer1.java  A   NullPointer1java/lang/ObjectbLB;BjI!  *   7YL+M,>  cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer1/NullPointer1.java000066400000000000000000000003241333451767700250250ustar00rootroot00000000000000class B { int j; } class A { int i; B b; } public class NullPointer1 { public static void main(String[] args) { A a = new A(); B b = a.b; int j = b.j; // NULL pointer dereference } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer1/test.desc000066400000000000000000000003271333451767700234500ustar00rootroot00000000000000CORE NullPointer1.class --stop-on-fail ^EXIT=10$ ^SIGNAL=0$ ^ file NullPointer1.java line 16 function java::NullPointer1.main:\(\[Ljava/lang/String;\)V bytecode-index 9$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer2/000077500000000000000000000000001333451767700216305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer2/NullPointer2.class000066400000000000000000000005451333451767700252200ustar00rootroot000000000000004   my_fieldLjava/lang/Object;()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFileNullPointer2.java    NullPointer2java/lang/ObjecthashCode()I!  *   $<   cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer2/NullPointer2.java000066400000000000000000000002641333451767700250320ustar00rootroot00000000000000public class NullPointer2 { static Object my_field; public static void main(String[] args) { int z; z=my_field.hashCode(); // NULL pointer dereference } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer2/test.desc000066400000000000000000000003041333451767700234440ustar00rootroot00000000000000CORE NullPointer2.class --stop-on-fail ^EXIT=10$ ^SIGNAL=0$ ^ file NullPointer2.java line 9 function java::NullPointer2.main:\(\[Ljava/lang/String;\)V ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer3/000077500000000000000000000000001333451767700216315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer3/NullPointer3.class000066400000000000000000000005741333451767700252240ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLNullPointer3;main([Ljava/lang/String;)Vargs[Ljava/lang/String; SourceFileNullPointer3.java  NullPointer3java/lang/Object!/*  ,  cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer3/NullPointer3.java000066400000000000000000000001741333451767700250340ustar00rootroot00000000000000public class NullPointer3 { public static void main(String[] args) { throw null; // NULL pointer dereference } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer3/test.desc000066400000000000000000000001721333451767700234500ustar00rootroot00000000000000CORE NullPointer3.class ^EXIT=10$ ^SIGNAL=0$ ^.*Null pointer check: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer4/000077500000000000000000000000001333451767700216325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer4/NullPointer4.class000066400000000000000000000004321333451767700252170ustar00rootroot000000000000004   ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFileNullPointer4.java  NullPointer4java/lang/Object!*  &L+=  cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer4/NullPointer4.java000066400000000000000000000002331333451767700250320ustar00rootroot00000000000000public class NullPointer4 { public static void main(String[] args) { int array[]=null; int s=array.length; // NULL pointer dereference } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointer4/test.desc000066400000000000000000000003261333451767700234520ustar00rootroot00000000000000CORE NullPointer4.class --stop-on-fail ^EXIT=10$ ^SIGNAL=0$ ^ file NullPointer4.java line 6 function java::NullPointer4.main:\(\[Ljava/lang/String;\)V bytecode-index 4$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException1/000077500000000000000000000000001333451767700235065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException1/Main.class000066400000000000000000000011511333451767700254170ustar00rootroot000000000000004&      $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable  SourceFile Main.java !" java/lang/AssertionErrorjava/lang/ExceptionMain# $%java/lang/ObjecthashCode()Ijava/lang/ClassdesiredAssertionStatus()Z    * aL+W YM   B 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException1/Main.java000066400000000000000000000003101333451767700252270ustar00rootroot00000000000000class Main { public static void main(String[] args) { Object o=null; try { o.hashCode(); // should pass assert false; } catch(Exception e) { } } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException1/test.desc000066400000000000000000000001311333451767700253200ustar00rootroot00000000000000KNOWNBUG Main.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException2/000077500000000000000000000000001333451767700235075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException2/A.class000066400000000000000000000003671333451767700247240ustar00rootroot000000000000004 iI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile Test.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException2/B.class000066400000000000000000000003611333451767700247170ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile Test.java Bjava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException2/Test.class000066400000000000000000000014501333451767700254550ustar00rootroot0000000000000042 " #$% &' "( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLTest;main([Ljava/lang/String;)Vexc Ljava/lang/NullPointerException;args[Ljava/lang/String;aLA; StackMapTable,% SourceFile Test.java , -.java/lang/NullPointerException java/lang/AssertionErrorTest/ 01java/lang/ObjectAiIjava/lang/ClassdesiredAssertionStatus()Z!   /*  L+M Y        4 @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException2/Test.java000066400000000000000000000004221333451767700252670ustar00rootroot00000000000000class B extends RuntimeException {} class A { int i; } public class Test { public static void main(String args[]) { A a=null; try { a.i=0; } catch (NullPointerException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException2/test.desc000066400000000000000000000002501333451767700253230ustar00rootroot00000000000000CORE Test.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file Test.java line 14 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException3/000077500000000000000000000000001333451767700235105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException3/A.class000066400000000000000000000003671333451767700247250ustar00rootroot000000000000004 iI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile Test.java Ajava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException3/B.class000066400000000000000000000003611333451767700247200ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile Test.java Bjava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException3/Test.class000066400000000000000000000014501333451767700254560ustar00rootroot0000000000000042 " #$% &' "( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLTest;main([Ljava/lang/String;)Vexc Ljava/lang/NullPointerException;args[Ljava/lang/String;aLA; StackMapTable,% SourceFile Test.java , -.java/lang/NullPointerException java/lang/AssertionErrorTest/ 01java/lang/ObjectAiIjava/lang/ClassdesiredAssertionStatus()Z!   /*  L+=M Y        4 @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException3/Test.java000066400000000000000000000004261333451767700252740ustar00rootroot00000000000000class B extends RuntimeException {} class A { int i; } public class Test { public static void main(String args[]) { A a=null; try { int i=a.i; } catch (NullPointerException exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException3/test.desc000066400000000000000000000002501333451767700253240ustar00rootroot00000000000000CORE Test.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file Test.java line 14 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/000077500000000000000000000000001333451767700235115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/A.class000066400000000000000000000003031333451767700247140ustar00rootroot000000000000004   iI()VCodeLineNumberTable SourceFile Test.java Ajava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/Test.class000066400000000000000000000012061333451767700254560ustar00rootroot000000000000004*     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable#$ SourceFile Test.java $ %&java/lang/Exception java/lang/AssertionErrorTest' ()java/lang/Object[Ljava/lang/String;AiIjava/lang/ClassdesiredAssertionStatus()Z!   * gL+M Y     4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/Test.java000066400000000000000000000003421333451767700252720ustar00rootroot00000000000000class A { int i; } public class Test { public static void main(String args[]) { A a=null; try { a.i=0; } catch (Exception exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/java/000077500000000000000000000000001333451767700244325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/java/lang/000077500000000000000000000000001333451767700253535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/java/lang/NullPointerException.class000066400000000000000000000003521333451767700325340ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileNullPointerException.java java/lang/NullPointerExceptionjava/lang/RuntimeException!* cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/java/lang/NullPointerException.java000066400000000000000000000001231333451767700323440ustar00rootroot00000000000000package java.lang; public class NullPointerException extends RuntimeException { } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/java/lang/RuntimeException.class000066400000000000000000000003331333451767700317030ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileRuntimeException.java java/lang/RuntimeExceptionjava/lang/Exception!* cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/java/lang/RuntimeException.java000066400000000000000000000001101333451767700315100ustar00rootroot00000000000000package java.lang; public class RuntimeException extends Exception { } cbmc-cbmc-5.10/jbmc/regression/jbmc/NullPointerException4/test.desc000066400000000000000000000002501333451767700253250ustar00rootroot00000000000000CORE Test.class --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file Test.java line 12 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/VarLengthArrayTrace1/000077500000000000000000000000001333451767700232245ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/VarLengthArrayTrace1/Container.class000066400000000000000000000003631333451767700261770ustar00rootroot000000000000004  valI(I)VCodeLineNumberTable SourceFileVarLengthArrayTrace1.java   Containerjava/lang/Object()V  " **   cbmc-cbmc-5.10/jbmc/regression/jbmc/VarLengthArrayTrace1/VarLengthArrayTrace1.class000066400000000000000000000012311333451767700302010ustar00rootroot000000000000004*      !"$assertionsDisabledZ()VCodeLineNumberTablemain(II)V StackMapTable# SourceFileVarLengthArrayTrace1.java  Container $ %& java/lang/AssertionErrorVarLengthArrayTrace1' ()java/lang/Object[I(I)VvalIjava/lang/ClassdesiredAssertionStatus()Z!   * }8YM,, N-O-.6 Y  " 7 $4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/VarLengthArrayTrace1/VarLengthArrayTrace1.java000066400000000000000000000005211333451767700300160ustar00rootroot00000000000000public class VarLengthArrayTrace1 { public static void main(int unknown, int arg2) { Container c = new Container(unknown); if(c.val != 2) return; int[] arr = new int[c.val]; arr[1] = arg2; int test = arr[1]; assert(test != 10); } } class Container { public Container(int v) { val = v; } int val; } cbmc-cbmc-5.10/jbmc/regression/jbmc/VarLengthArrayTrace1/test.desc000066400000000000000000000002751333451767700250470ustar00rootroot00000000000000CORE VarLengthArrayTrace1.class --trace --function VarLengthArrayTrace1.main ^EXIT=10$ ^SIGNAL=0$ dynamic_3_array\[1.*\]=10 -- ^warning: ignoring assignment removed irep\("\(\\"nil\\"\)"\) cbmc-cbmc-5.10/jbmc/regression/jbmc/aastore_aaload1/000077500000000000000000000000001333451767700223135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/aastore_aaload1/A.class000066400000000000000000000003451333451767700235240ustar00rootroot000000000000004  valueI()VCodeLineNumberTable SourceFileaastore_aaload1.java  Ajava/lang/Object  & **   cbmc-cbmc-5.10/jbmc/regression/jbmc/aastore_aaload1/aastore_aaload1.class000066400000000000000000000011621333451767700263620ustar00rootroot000000000000004#     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileaastore_aaload1.java A java/lang/AssertionErroraastore_aaload1 !"java/lang/Object[LA;java/lang/ClassdesiredAssertionStatus()Z    * x4 <M>',YS,2 Yڱ    - 3 " 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/aastore_aaload1/aastore_aaload1.java000066400000000000000000000003761333451767700262040ustar00rootroot00000000000000class A { int value = 0; } class aastore_aaload1 { public static void main(String[] args) { int size = 10; A[] array = new A[size]; for (int i = 0; i < size; i++) { array[i] = new A(); assert array[i] != null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/aastore_aaload1/test.desc000066400000000000000000000001401333451767700241250ustar00rootroot00000000000000CORE aastore_aaload1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit1/000077500000000000000000000000001333451767700244045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit1/Test.class000066400000000000000000000012001333451767700263430ustar00rootroot000000000000004'      !"xI$assertionsDisabledZ(I)VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable#()V SourceFile Test.java  Test  java/lang/AssertionError$ %&java/lang/Object[LTest;java/lang/ClassdesiredAssertionStatus()Z!   " ** u8M<,YS,2 Y    7 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit1/Test.java000066400000000000000000000004311333451767700261640ustar00rootroot00000000000000public class Test { int x; Test(int x) { this.x = x; } public static void main(String[] args) { int i; Test[] tests = new Test[30]; for(i = 0; i < 30; ++i) { tests[i] = new Test(i); } assert i == tests[0].x; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit1/test.desc000066400000000000000000000001221333451767700262160ustar00rootroot00000000000000CORE Test.class --object-bits 4 too many addressed objects ^EXIT=6$ ^SIGNAL=0$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit2/000077500000000000000000000000001333451767700244055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit2/Test.class000066400000000000000000000012001333451767700263440ustar00rootroot000000000000004'      !"xI$assertionsDisabledZ(I)VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable#()V SourceFile Test.java  Test  java/lang/AssertionError$ %&java/lang/Object[LTest;java/lang/ClassdesiredAssertionStatus()Z!   " ** u8M<,YS,2 Y    7 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit2/Test.java000066400000000000000000000004311333451767700261650ustar00rootroot00000000000000public class Test { int x; Test(int x) { this.x = x; } public static void main(String[] args) { int i; Test[] tests = new Test[30]; for(i = 0; i < 30; ++i) { tests[i] = new Test(i); } assert i == tests[0].x; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/address_space_size_limit2/test.desc000066400000000000000000000002261333451767700262240ustar00rootroot00000000000000CORE Test.class --object-bits 8 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[java::Test.main:\(\[Ljava/lang/String;\)V.assertion.1\] .*: FAILURE$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/000077500000000000000000000000001333451767700217115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/ClassAnnotation.class000066400000000000000000000002221333451767700260340ustar00rootroot000000000000004  SourceFileannotations.javaClassAnnotationjava/lang/Objectjava/lang/annotation/Annotation&cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/FieldAnnotation.class000066400000000000000000000002221333451767700260120ustar00rootroot000000000000004  SourceFileannotations.javaFieldAnnotationjava/lang/Objectjava/lang/annotation/Annotation&cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/MethodAnnotation.class000066400000000000000000000002231333451767700262100ustar00rootroot000000000000004  SourceFileannotations.javaMethodAnnotationjava/lang/Objectjava/lang/annotation/Annotation&cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/annotations.class000066400000000000000000000006311333451767700252750ustar00rootroot000000000000004 xIRuntimeInvisibleAnnotationsLFieldAnnotation;y()VCodeLineNumberTablemainLMethodAnnotation; SourceFileannotations.javaLClassAnnotation;  annotationsjava/lang/Object!   *     cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/annotations.java000066400000000000000000000004371333451767700251150ustar00rootroot00000000000000@interface ClassAnnotation { } @interface MethodAnnotation { } @interface FieldAnnotation { } @ClassAnnotation public class annotations { @FieldAnnotation public int x; @FieldAnnotation public static int y; @MethodAnnotation public void main() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations1/show_annotation_symbol.desc000066400000000000000000000006361333451767700273550ustar00rootroot00000000000000CORE annotations.class --no-lazy-methods --verbosity 10 --show-symbol-table --function annotations.main ^EXIT=0$ ^SIGNAL=0$ ^Type\.\.\.\.\.\.\.\.: @java::ClassAnnotation struct annotations ^Type\.\.\.\.\.\.\.\.: @java::MethodAnnotation \(struct annotations \*\) -> void$ ^Type\.\.\.\.\.\.\.\.: @java::FieldAnnotation int$ -- -- The purpose of the test is ensuring that annotations can be shown in the symbol table.cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations2/000077500000000000000000000000001333451767700217125ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations2/FieldAnnotation.class000066400000000000000000000002131333451767700260130ustar00rootroot000000000000004  SourceFile Test.javaFieldAnnotationjava/lang/Objectjava/lang/annotation/Annotation&cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations2/Test.class000066400000000000000000000011601333451767700236560ustar00rootroot000000000000004#     dDRuntimeInvisibleAnnotationsLFieldAnnotation;$assertionsDisabledZ()VCodeLineNumberTablecheck StackMapTable SourceFile Test.java  java/lang/AssertionErrorTest !"java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!    *b1H' Y' Y   0 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations2/Test.java000066400000000000000000000003161333451767700234740ustar00rootroot00000000000000@interface FieldAnnotation { } public class Test { @FieldAnnotation public static double d; public void check() { double f = d; assert(f == d); assert(f != d); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/annotations2/test.desc000066400000000000000000000002371333451767700235330ustar00rootroot00000000000000CORE Test.class --function Test.check ^EXIT=10$ ^SIGNAL=0$ assertion at file Test.java line 10 .* SUCCESS assertion at file Test.java line 11 .* FAILURE -- -- cbmc-cbmc-5.10/jbmc/regression/jbmc/array1/000077500000000000000000000000001333451767700204725ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/array1/array1.class000066400000000000000000000012241333451767700227170ustar00rootroot000000000000004$    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable  SourceFile array1.java java/lang/AssertionErrorwhat_notarray1! "#java/lang/Object[I [Lwhat_not;java/lang/ClassdesiredAssertionStatus()Z    *  I < M> ,O,. YN- Y&   / 4H   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/array1/array1.java000066400000000000000000000004611333451767700225350ustar00rootroot00000000000000class array1 { public static void main(String[] args) { int size=10; int int_array[]=new int[size]; for(int i=0; i()VCodeLineNumberTable SourceFile what_not.java what_notjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/array1/what_not.java000066400000000000000000000000241333451767700231540ustar00rootroot00000000000000class what_not { }; cbmc-cbmc-5.10/jbmc/regression/jbmc/array2/000077500000000000000000000000001333451767700204735ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/array2/test.class000066400000000000000000000004731333451767700225050ustar00rootroot000000000000004 ()VCodeLineNumberTablef(I)V StackMapTable SourceFile test.java testjava/lang/Object[I!* T  M M,O        cbmc-cbmc-5.10/jbmc/regression/jbmc/array2/test.desc000066400000000000000000000001601333451767700223070ustar00rootroot00000000000000CORE test.class --function test.f --cover location \d+ of \d+ covered ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/array2/test.java000066400000000000000000000002761333451767700223220ustar00rootroot00000000000000public class test { public void f(int unknown) { int[] arr; if(unknown > 0) arr = new int[1]; else arr = new int[0]; if(unknown > 0) arr[0]=1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/000077500000000000000000000000001333451767700263305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/A.class000066400000000000000000000003641333451767700275420ustar00rootroot000000000000004 aF()VCodeLineNumberTableLocalVariableTablethisLA; SourceFileA.java Ajava/lang/Object!/*    cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/A.java000066400000000000000000000000451333451767700273520ustar00rootroot00000000000000public class A { public float a; } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/FloatMultidim1.class000066400000000000000000000007741333451767700322220ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLFloatMultidim1;f(I)[[FjIa1[[Fy StackMapTable SourceFileFloatMultidim1.java FloatMultidim1java/lang/Object!/*   )#M>>,2 Q,"   " $ 4) )cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/FloatMultidim1.java000066400000000000000000000004451333451767700320310ustar00rootroot00000000000000public class FloatMultidim1 { public float[][] f(int y) { if (y > 0 && y < 5) { float[][] a1 = new float[y][2]; int j; if (y > 1) { j = 1; } else { j = 0; } a1[j][1] = 1.0f; return a1; } else { return null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/FloatMultidim2.class000066400000000000000000000007761333451767700322250ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLFloatMultidim2;f(I)[[FjIa1[[Fy StackMapTable SourceFileFloatMultidim2.java FloatMultidim2java/lang/Object!/*   +#M>>,2 Q,"   " $ 4+ +cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/FloatMultidim2.java000066400000000000000000000004601333451767700320270ustar00rootroot00000000000000public class FloatMultidim2 { public float[][] f(int y) { if (y > 0 && y < 5) { float[][] a1 = new float[2][y]; int j; if (y > 1) { j = 1; } else { j = 0; } a1[1][j] = 1.0f; return a1; } else { return new float[1][1]; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefMultidim1.class000066400000000000000000000010531333451767700316600ustar00rootroot000000000000004   ()VCodeLineNumberTableLocalVariableTablethisLRefMultidim1;f(I)[[LA;jIa1[[LA;y StackMapTable SourceFileRefMultidim1.java  A  RefMultidim1java/lang/ObjectaF!  /*    82-M>>,2YS,22 , &    ( 1 3 4#8 8cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefMultidim1.java000066400000000000000000000004631333451767700315000ustar00rootroot00000000000000public class RefMultidim1 { public A[][] f(int y) { if (y > 0 && y < 5) { A[][] a1 = new A[y][2]; int j; if (y > 1) { j = 1; } else { j = 0; } a1[j][1] = new A(); a1[j][1].a = 1.0f; return a1; } else { return null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefMultidim2.class000066400000000000000000000010531333451767700316610ustar00rootroot000000000000004   ()VCodeLineNumberTableLocalVariableTablethisLRefMultidim2;f(I)[[LA;jIa1[[LA;y StackMapTable SourceFileRefMultidim2.java  A  RefMultidim2java/lang/ObjectaF!  /*    82-M>>,2YS,22 , &    ( 1 3 4#8 8cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefMultidim2.java000066400000000000000000000004631333451767700315010ustar00rootroot00000000000000public class RefMultidim2 { public A[][] f(int y) { if (y > 0 && y < 5) { A[][] a1 = new A[2][y]; int j; if (y > 1) { j = 1; } else { j = 0; } a1[1][j] = new A(); a1[1][j].a = 1.0f; return a1; } else { return null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefMultidimConstsize.class000066400000000000000000000007471333451767700335120ustar00rootroot000000000000004   ()VCodeLineNumberTableLocalVariableTablethisLRefMultidimConstsize;f(I)VyIa1[[LA;j SourceFileRefMultidimConstsize.java  A RefMultidimConstsizejava/lang/ObjectaF!  /*    wM>,2YS,22    *  cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefMultidimConstsize.java000066400000000000000000000002351333451767700333160ustar00rootroot00000000000000public class RefMultidimConstsize { public void f(int y) { A[][] a1 = new A[2][2]; int j = 1; a1[j][1] = new A(); a1[j][1].a = 1.0f; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefSingledim.class000066400000000000000000000010401333451767700317220ustar00rootroot000000000000004   ()VCodeLineNumberTableLocalVariableTablethisLRefSingledim;f(I)[LA;jIa1[LA;y StackMapTable SourceFileRefSingledim.java A  RefSingledimjava/lang/ObjectaF! /*    /,'M>>,YS,2 , &    $ + - 4/ /cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/RefSingledim.java000066400000000000000000000004461333451767700315470ustar00rootroot00000000000000public class RefSingledim { public A[] f(int y) { if (y > 0 && y < 5) { A[] a1 = new A[y]; int j; if (y > 1) { j = 1; } else { j = 0; } a1[j] = new A(); a1[j].a = 1.0f; return a1; } else { return null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/test_float_multidim_1.desc000066400000000000000000000002541333451767700334610ustar00rootroot00000000000000CORE FloatMultidim1.class --function FloatMultidim1.f --cover location --unwind 3 \d+ of \d+ covered ^EXIT=0$ ^SIGNAL=0$ y=1$ y=[2-4]$ y=([05-9]|[1-9][0-9]+|-[1-9][0-9]*)$ cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/test_float_multidim_2.desc000066400000000000000000000002311333451767700334550ustar00rootroot00000000000000CORE FloatMultidim2.class --function FloatMultidim2.f --cover location --unwind 3 ^EXIT=0$ ^SIGNAL=0$ y=1$ y=[2-4]$ y=([05-9]|[1-9][0-9]+|-[1-9][0-9]*)$ cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/test_ref_multidim_1.desc000066400000000000000000000002501333451767700331240ustar00rootroot00000000000000CORE RefMultidim1.class --function RefMultidim1.f --cover location --unwind 3 \d+ of \d+ covered ^EXIT=0$ ^SIGNAL=0$ y=1$ y=[2-4]$ y=([05-9]|[1-9][0-9]+|-[1-9][0-9]*)$ cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/test_ref_multidim_2.desc000066400000000000000000000002501333451767700331250ustar00rootroot00000000000000CORE RefMultidim2.class --function RefMultidim2.f --cover location --unwind 3 \d+ of \d+ covered ^EXIT=0$ ^SIGNAL=0$ y=1$ y=[2-4]$ y=([05-9]|[1-9][0-9]+|-[1-9][0-9]*)$ test_ref_multidim_constsize.desc000066400000000000000000000001761333451767700347350ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccessCORE RefMultidimConstsize.class --function RefMultidimConstsize.f --cover location --unwind 3 ^EXIT=0$ ^SIGNAL=0$ y=-*[0-9]+$ cbmc-cbmc-5.10/jbmc/regression/jbmc/array_nonconstsize_nonconstaccess/test_ref_singledim.desc000066400000000000000000000002251333451767700330350ustar00rootroot00000000000000CORE RefSingledim.class --function RefSingledim.f --cover location --unwind 3 ^EXIT=0$ ^SIGNAL=0$ y=1$ y=[2-4]$ y=([05-9]|[1-9][0-9]+|-[1-9][0-9]*)$ cbmc-cbmc-5.10/jbmc/regression/jbmc/arraylength1/000077500000000000000000000000001333451767700216745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/arraylength1/arraylength1.class000066400000000000000000000010661333451767700253270ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilearraylength1.java  java/lang/AssertionError arraylength1 java/lang/Object[Ijava/lang/ClassdesiredAssertionStatus()Z    *   P < M, Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/arraylength1/arraylength1.java000066400000000000000000000002411333451767700251350ustar00rootroot00000000000000class arraylength1 { public static void main(String[] args) { int size=10; int int_array[]=new int[size]; assert int_array.length == 10; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/arraylength1/test.desc000066400000000000000000000001351333451767700235120ustar00rootroot00000000000000CORE arraylength1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/arrayread1/000077500000000000000000000000001333451767700213265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/arrayread1/arrayread1.class000066400000000000000000000011441333451767700244100ustar00rootroot000000000000004$     readback Larrayread1;$assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable  SourceFilearrayread1.java  arrayread1 java/lang/AssertionError! "#java/lang/Object [Larrayread1;java/lang/ClassdesiredAssertionStatus()Z!   * ]&L+2 Y  %  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/arrayread1/arrayread1.java000066400000000000000000000003221333451767700242210ustar00rootroot00000000000000public class arrayread1 { static arrayread1 readback; public static void main(int c) { if(c!=1) return; arrayread1[] a = new arrayread1[c]; readback=a[0]; assert(readback==null); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/arrayread1/test.desc000066400000000000000000000002211333451767700231400ustar00rootroot00000000000000CORE arrayread1.class --unwind 3 --no-propagation --function arrayread1.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert1/000077500000000000000000000000001333451767700206555ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert1/assert1.class000066400000000000000000000013371333451767700232720ustar00rootroot000000000000004. *    ! "# $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile assert1.java java/util/Random ' () java/lang/AssertionErrormy super assertion *assert1+ ,-java/lang/Object(J)VnextInt()I(Ljava/lang/Object;)Vjava/lang/ClassdesiredAssertionStatus()Z * IYL+=  Y  Y    , 2 H ,4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/assert1/assert1.java000066400000000000000000000004571333451767700231100ustar00rootroot00000000000000class assert1 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); int i=random.nextInt(); if(i>=10) assert i>=10 : "my super assertion"; // should hold if(i>=20) assert i>=10 : "my super assertion"; // should hold } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert1/test.desc000066400000000000000000000001301333451767700224660ustar00rootroot00000000000000CORE assert1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert2/000077500000000000000000000000001333451767700206565ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert2/assert2.class000066400000000000000000000012741333451767700232740ustar00rootroot000000000000002. *    ! "# $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile assert2.java java/util/Random ' () java/lang/AssertionErrori is greater 1000 *assert2+ ,-java/lang/Object(J)VnextInt()I(Ljava/lang/Object;)Vjava/lang/ClassdesiredAssertionStatus()Z * f/YL+= Y    .  .5  @cbmc-cbmc-5.10/jbmc/regression/jbmc/assert2/assert2.java000066400000000000000000000003541333451767700231060ustar00rootroot00000000000000class assert2 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); int i=random.nextInt(); if(i>=1000) assert i>1000 : "i is greater 1000"; // should fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert2/test.desc000066400000000000000000000001251333451767700224730ustar00rootroot00000000000000CORE assert2.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert3/000077500000000000000000000000001333451767700206575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert3/assert3.class000066400000000000000000000007671333451767700233040ustar00rootroot000000000000002# *   ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile assert3.java java/util/Random  !java/lang/AssertionErrori>1000 "assert3java/lang/Object(J)VnextInt()I(Ljava/lang/Object;)V  * d)YL+= Y     (  (cbmc-cbmc-5.10/jbmc/regression/jbmc/assert3/assert3.java000066400000000000000000000004011333451767700231010ustar00rootroot00000000000000class assert3 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); int i=random.nextInt(); if(i>=1000) if(!(i>1000)) throw new AssertionError("i>1000"); // should fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert3/test.desc000066400000000000000000000001251333451767700224740ustar00rootroot00000000000000CORE assert3.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert3/test_throw_no_uncaught.desc000066400000000000000000000002221333451767700263070ustar00rootroot00000000000000CORE assert3.class --throw-assertion-error --disable-uncaught-exception-check ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert4/000077500000000000000000000000001333451767700206605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert4/assert4.class000066400000000000000000000012721333451767700232760ustar00rootroot000000000000004. *    ! "# $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile assert4.java java/util/Random ' () java/lang/AssertionErrormy super assertion *assert4+ ,-java/lang/Object(J)VnextInt()I(Ljava/lang/Object;)Vjava/lang/ClassdesiredAssertionStatus()Z * d-YL+=  Y    ,  ,4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/assert4/assert4.java000066400000000000000000000003521333451767700231100ustar00rootroot00000000000000class assert4 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); int i=random.nextInt(); if(i>=10) assert i>=20 : "my super assertion"; // should hold } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert4/test.desc000066400000000000000000000001251333451767700224750ustar00rootroot00000000000000CORE assert4.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert5/000077500000000000000000000000001333451767700206615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert5/assert5.class000066400000000000000000000012731333451767700233010ustar00rootroot000000000000004. *    ! "# $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile assert5.java java/util/Random ' () java/lang/AssertionErrori is greater 1000 *assert5+ ,-java/lang/Object(J)VnextInt()I(Ljava/lang/Object;)Vjava/lang/ClassdesiredAssertionStatus()Z * f/YL+= Y    .  .4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/assert5/assert5.java000066400000000000000000000003531333451767700231130ustar00rootroot00000000000000class assert5 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); int i=random.nextInt(); if(i>1000) assert i>1000 : "i is greater 1000"; // should hold } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert5/test.desc000066400000000000000000000001301333451767700224720ustar00rootroot00000000000000CORE assert5.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert6/000077500000000000000000000000001333451767700206625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert6/assert6.class000066400000000000000000000007671333451767700233120ustar00rootroot000000000000004# *   ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile assert6.java java/util/Random  !java/lang/AssertionErrori>1000 "assert6java/lang/Object(J)VnextInt()I(Ljava/lang/Object;)V  * d)YL+= Y     (  (cbmc-cbmc-5.10/jbmc/regression/jbmc/assert6/assert6.java000066400000000000000000000004021333451767700231100ustar00rootroot00000000000000class assert6 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); int i=random.nextInt(); if(i>=1000) if(!(i>=1000)) throw new AssertionError("i>1000"); // should fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert6/test.desc000066400000000000000000000001301333451767700224730ustar00rootroot00000000000000CORE assert6.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assert7/000077500000000000000000000000001333451767700206635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assert7/Test.class000066400000000000000000000004541333451767700226340ustar00rootroot000000000000004  ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile Test.java java/lang/AssertionErrorTestjava/lang/Object *  % YL   cbmc-cbmc-5.10/jbmc/regression/jbmc/assert7/Test.java000066400000000000000000000002121333451767700224400ustar00rootroot00000000000000class Test { public static void main(String[] args) { AssertionError a = new AssertionError(); if(false) throw a; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assert7/test.desc000066400000000000000000000001251333451767700225000ustar00rootroot00000000000000CORE Test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assertion_error_constructors/000077500000000000000000000000001333451767700253435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assertion_error_constructors/AssertionIssue.class000066400000000000000000000010541333451767700313520ustar00rootroot000000000000003   ThrowableAssertion InnerClasses()VCodeLineNumberTableLocalVariableTablethisLAssertionIssue;throwAssertion SourceFileAssertionIssue.java java/lang/AssertionErrorSomething went terribly wrong.!AssertionIssue$ThrowableAssertion AssertionIssuejava/lang/Object*(Ljava/lang/String;Ljava/lang/Throwable;)V!  /*    )YY  cbmc-cbmc-5.10/jbmc/regression/jbmc/assertion_error_constructors/AssertionIssue.java000066400000000000000000000005411333451767700311660ustar00rootroot00000000000000public class AssertionIssue { public static void throwAssertion() { throw new AssertionError("Something went terribly wrong.", new ThrowableAssertion()); } public static class ThrowableAssertion extends Throwable { @Override public String getMessage() { return "How did we get here?"; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assertion_error_constructors/test.desc000066400000000000000000000002041333451767700271560ustar00rootroot00000000000000CORE AssertionIssue.class --function AssertionIssue.throwAssertion ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assume1/000077500000000000000000000000001333451767700206515ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assume1/Assume1.class000066400000000000000000000012241333451767700232150ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LAssume1;foo(I)VxI StackMapTable SourceFile Assume1.java # $% java/lang/AssertionErrorAssume1& '(java/lang/Objectorg/cprover/CProverassume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z    /*  ^  Y     @  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/assume1/Assume1.java000066400000000000000000000001711333451767700230310ustar00rootroot00000000000000import org.cprover.CProver; class Assume1 { static void foo(int x) { CProver.assume(x>3); assert x>0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assume1/test.desc000066400000000000000000000001561333451767700224720ustar00rootroot00000000000000CORE Assume1.class --function Assume1.foo ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assume2/000077500000000000000000000000001333451767700206525ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assume2/Assume2.class000066400000000000000000000012251333451767700232200ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LAssume2;foo(I)VxI StackMapTable SourceFile Assume2.java # $% java/lang/AssertionErrorAssume2& '(java/lang/Objectorg/cprover/CProverassume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z    /*  _! Y   ! @  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/assume2/Assume2.java000066400000000000000000000001751333451767700230370ustar00rootroot00000000000000import org.cprover.CProver; class Assume2 { static void foo(int x) { CProver.assume(x>3); assert x>4; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assume2/test.desc000066400000000000000000000001531333451767700224700ustar00rootroot00000000000000CORE Assume2.class --function Assume2.foo ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/assume3/000077500000000000000000000000001333451767700206535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/assume3/Assume3.class000066400000000000000000000012541333451767700232240ustar00rootroot000000000000004)     !"$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis LAssume3;main([Ljava/lang/String;)Vargs[Ljava/lang/String; StackMapTable SourceFile Assume3.java # $% java/lang/AssertionErrorAssume3& '(java/lang/Objectorg/cprover/CProverassume(Z)Vjava/lang/ClassdesiredAssertionStatus()Z    /*   N Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/assume3/Assume3.java000066400000000000000000000002151333451767700230340ustar00rootroot00000000000000import org.cprover.CProver; class Assume3 { public static void main(String[] args) { CProver.assume(false); assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/assume3/test.desc000066400000000000000000000001301333451767700224640ustar00rootroot00000000000000CORE Assume3.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/astore_aload1/000077500000000000000000000000001333451767700220115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/astore_aload1/astore_aload1.class000066400000000000000000000057641333451767700255720ustar00rootroot000000000000004@ - ./ - 0 123$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable456789:;< SourceFileastore_aload1.java  java/lang/AssertionError astore_aload1= >?java/lang/Object[Ljava/lang/String;[Z[B[C[S[I[J[D[Fjava/lang/ClassdesiredAssertionStatus()Z *  s O <MN: : : ::: 6  R6  p6 ,  T-  T  U  V  O  P  R   Q  , Y,3 Y,3 Y,3 Y,3 Y,3 Y,3 Y,3 Y,3 Y,3 Y, 3 Y - Y-3 Y-3 Y-3 Y-3 Y-3 Y-3 Y-3 Y-3 Y-3 Y- 3 Y  Y5 Y5 Y5 Y5 Y5 Y5 Y5 Y5 Y5 Y 5 Y  Y. Y. Y. Y. Y. Y. Y. Y. Y. Y . Y  Y/ Y/ Y/ Y/ Y/ Y/ Y/ Y/ Y/ Y / Y  Y4 Y4 Y4 Y4 Y4 Y4 Y4 Y4 Y4 Y 4 Y  Y1 Y1 Y1 Y1 Y1 Y1 Y1 Y1 Y1 Y 1 Yd     $ )25<?ELT\cks{ !"#$%#&8'M(b)w*+,-./0 1"293P4f5{6789:;<=1>I?_@tABCDEFGH*IBJXKoLMNOPQRS8TRUhV}WXYZ[\]^3_K`aawbcdefghi5jNk zP, !"#$%&'()A*4  @+,cbmc-cbmc-5.10/jbmc/regression/jbmc/astore_aload1/astore_aload1.java000066400000000000000000000067111333451767700253770ustar00rootroot00000000000000class astore_aload1 { public static void main(String[] args) { int size = 10; boolean[] boolean_array = new boolean[size]; byte[] byte_array = new byte[size]; char[] char_array = new char[size]; short[] short_array = new short[size]; int[] int_array = new int[size]; long[] long_array = new long[size]; double[] double_array = new double[size]; float[] float_array = new float[size]; for (int i = 0; i < size; i++) { boolean tmp = false; if(i % 2 == 0) { tmp = true; } boolean_array[i] = tmp; byte_array[i] = (byte) i; char_array[i] = (char) i; short_array[i] = (short) i; int_array[i] = i; long_array[i] = (long) i; double_array[i] = (double) i; float_array[i] = (float) i; } assert 10 == boolean_array.length; assert boolean_array[0]; assert !boolean_array[1]; assert boolean_array[2]; assert !boolean_array[3]; assert boolean_array[4]; assert !boolean_array[5]; assert boolean_array[6]; assert !boolean_array[7]; assert boolean_array[8]; assert !boolean_array[9]; assert 10 == byte_array.length; assert byte_array[0] == (byte) 0; assert byte_array[1] == (byte) 1; assert byte_array[2] == (byte) 2; assert byte_array[3] == (byte) 3; assert byte_array[4] == (byte) 4; assert byte_array[5] == (byte) 5; assert byte_array[6] == (byte) 6; assert byte_array[7] == (byte) 7; assert byte_array[8] == (byte) 8; assert byte_array[9] == (byte) 9; assert 10 == short_array.length; assert short_array[0] == (short) 0; assert short_array[1] == (short) 1; assert short_array[2] == (short) 2; assert short_array[3] == (short) 3; assert short_array[4] == (short) 4; assert short_array[5] == (short) 5; assert short_array[6] == (short) 6; assert short_array[7] == (short) 7; assert short_array[8] == (short) 8; assert short_array[9] == (short) 9; assert 10 == int_array.length; assert int_array[0] == 0; assert int_array[1] == 1; assert int_array[2] == 2; assert int_array[3] == 3; assert int_array[4] == 4; assert int_array[5] == 5; assert int_array[6] == 6; assert int_array[7] == 7; assert int_array[8] == 8; assert int_array[9] == 9; assert 10 == long_array.length; assert long_array[0] == 0L; assert long_array[1] == 1L; assert long_array[2] == 2L; assert long_array[3] == 3L; assert long_array[4] == 4L; assert long_array[5] == 5L; assert long_array[6] == 6L; assert long_array[7] == 7L; assert long_array[8] == 8L; assert long_array[9] == 9L; assert 10 == char_array.length; assert char_array[0] == (char) 0; assert char_array[1] == (char) 1; assert char_array[2] == (char) 2; assert char_array[3] == (char) 3; assert char_array[4] == (char) 4; assert char_array[5] == (char) 5; assert char_array[6] == (char) 6; assert char_array[7] == (char) 7; assert char_array[8] == (char) 8; assert char_array[9] == (char) 9; assert 10 == double_array.length; assert (int) double_array[0] == 0; assert (int) double_array[1] == 1; assert (int) double_array[2] == 2; assert (int) double_array[3] == 3; assert (int) double_array[4] == 4; assert (int) double_array[5] == 5; assert (int) double_array[6] == 6; assert (int) double_array[7] == 7; assert (int) double_array[8] == 8; assert (int) double_array[9] == 9; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/astore_aload1/test.desc000066400000000000000000000001361333451767700236300ustar00rootroot00000000000000CORE astore_aload1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/athrow1/000077500000000000000000000000001333451767700206605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/athrow1/A.class000066400000000000000000000002711333451767700220670ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile athrow1.java Ajava/lang/Exception * cbmc-cbmc-5.10/jbmc/regression/jbmc/athrow1/athrow1.class000066400000000000000000000011731333451767700232760ustar00rootroot000000000000004'     !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable# SourceFile athrow1.java Ajava/lang/Exception java/lang/AssertionErrorathrow1$ %&java/lang/Object[Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z    * cYL+M Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/athrow1/athrow1.java000066400000000000000000000003141333451767700231060ustar00rootroot00000000000000class A extends Exception { } class athrow1 { public static void main(String[] args) { A a = new A(); try { throw a; } catch (Exception e) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/athrow1/test.desc000066400000000000000000000001311333451767700224720ustar00rootroot00000000000000KNOWNBUG athrow1.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/basic1/000077500000000000000000000000001333451767700204355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/basic1/helloworld.class000066400000000000000000000016331333451767700236420ustar00rootroot000000000000004<    ! "# $ % &'() *+,$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable( SourceFilehelloworld.java  - ./java/lang/AssertionError Hello World!0 12 3/ 456 78java/io/IOException helloworld9 :;java/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)VerrinLjava/io/InputStream;java/io/InputStream available()Ijava/lang/ClassdesiredAssertionStatus()Z * X Y Y Y <LLSV " 0 8 L SW I4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/basic1/helloworld.java000066400000000000000000000010231333451767700234470ustar00rootroot00000000000000// from // http://www.thegeekstuff.com/2010/02/java-hello-world-example-how-to-write-and-execute-java-program-on-unix-os/ /* Hello World Java Program */ class helloworld { public static void main(String[] args) { assert(System.out != null); System.out.println("Hello World!"); assert(System.err != null); System.err.println("Hello World!"); assert(System.in != null); try { int avail = System.in.available(); } catch(java.io.IOException e) {} } } cbmc-cbmc-5.10/jbmc/regression/jbmc/basic1/test.desc000066400000000000000000000001331333451767700222510ustar00rootroot00000000000000CORE helloworld.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/basic2/000077500000000000000000000000001333451767700204365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/basic2/basic.class000066400000000000000000000006621333451767700225520ustar00rootroot000000000000002     some_fieldI()VCodeLineNumberTablemain([Ljava/lang/String;)V some_method(II)V SourceFile basic.java basic2 basicjava/lang/Object other_method(I)V    *   ;{ȸYL+{       cbmc-cbmc-5.10/jbmc/regression/jbmc/basic2/basic.java000066400000000000000000000004561333451767700223670ustar00rootroot00000000000000class basic2 { void other_method(int q) { q++; } } class basic { public static void main(String[] args) { some_method(123, 456); basic2 b=new basic2(); b.other_method(123); } public static void some_method(int p, int q) { } int some_field; } cbmc-cbmc-5.10/jbmc/regression/jbmc/basic2/basic2.class000066400000000000000000000003751333451767700226350ustar00rootroot000000000000002   ()VCodeLineNumberTable other_method(I)V SourceFile basic.java basic2java/lang/Object *     cbmc-cbmc-5.10/jbmc/regression/jbmc/basic2/test.desc000066400000000000000000000001261333451767700222540ustar00rootroot00000000000000CORE basic.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/bitwise1/000077500000000000000000000000001333451767700210225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/bitwise1/bitwise1.class000066400000000000000000000010761333451767700236040ustar00rootroot000000000000004"     cC$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile bitwise1.java  java/lang/AssertionErrorbitwise1 !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * N< Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/bitwise1/bitwise1.java000066400000000000000000000002131333451767700234100ustar00rootroot00000000000000public class bitwise1 { static char c; public static void main(String[] args) { c=1; int i = (c | 2); assert i==3; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/bitwise1/test.desc000066400000000000000000000001311333451767700226340ustar00rootroot00000000000000CORE bitwise1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean1/000077500000000000000000000000001333451767700207735ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean1/boolean1.class000066400000000000000000000010151333451767700235170ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTabledoit(Z)V StackMapTable SourceFile boolean1.java  java/lang/AssertionErrorboolean1 java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   I Y      4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean1/boolean1.java000066400000000000000000000003241333451767700233350ustar00rootroot00000000000000class boolean1 { static public void doit(boolean my_boolean) { // Boolean shall be either true or false. if(my_boolean == true) return; if(my_boolean == false) return; assert false; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean1/test.desc000066400000000000000000000001611333451767700226100ustar00rootroot00000000000000CORE boolean1.class --function boolean1.doit ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean2/000077500000000000000000000000001333451767700207745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean2/boolean2.class000066400000000000000000000011761333451767700235310ustar00rootroot000000000000004#     $assertionsDisabledZ()VCodeLineNumberTableentry(Z)V StackMapTablef(Z)Z SourceFile boolean2.java  java/lang/AssertionErrorboolean2 !"java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * f"*= Y!  -  @  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean2/boolean2.java000066400000000000000000000002471333451767700233430ustar00rootroot00000000000000public class boolean2 { public void entry(boolean b) { boolean result=f(b); assert result==!b; } public boolean f(boolean b) { return !b; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/boolean2/test.desc000066400000000000000000000001621333451767700226120ustar00rootroot00000000000000CORE boolean2.class --function boolean2.entry ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/cast1/000077500000000000000000000000001333451767700203065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/cast1/cast1.class000066400000000000000000000014761333451767700223600ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile cast1.java  java/lang/AssertionErrorcast1 java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   n  <= Y> Y6 Y7 Y8 Y9 Y8 Y< Y7 Y R / 3 G K ae{   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/cast1/cast1.java000066400000000000000000000007231333451767700221660ustar00rootroot00000000000000class cast1 { public static void main(String[] args) { int i = 10; byte b = (byte) i; assert b == i; short s = (short) i; assert s == i; char c = (char) i; assert c == i; long l = (long) i; assert l == i; float f = (float) i; assert f == i; double d = (double) i; assert d == i; f = (float) d; assert (float) d == f; i = (int) d; assert (int) d == i; l = (long) d; assert i == l; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/cast1/test.desc000066400000000000000000000001261333451767700221240ustar00rootroot00000000000000CORE cast1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null1/000077500000000000000000000000001333451767700213405ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null1/test.class000066400000000000000000000003551333451767700233510ustar00rootroot000000000000004    ()VCodeLineNumberTablemain SourceFile test.java testjava/lang/Object!* "K   cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null1/test.desc000066400000000000000000000002051333451767700231540ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- Dynamic cast check: FAILURE ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null1/test.java000066400000000000000000000001241333451767700231570ustar00rootroot00000000000000 public class test { public static void main() { test t = (test)null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null2/000077500000000000000000000000001333451767700213415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null2/test.class000066400000000000000000000003551333451767700233520ustar00rootroot000000000000004    ()VCodeLineNumberTablemain SourceFile test.java testjava/lang/Object!* "K   cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null2/test.desc000066400000000000000000000002041333451767700231540ustar00rootroot00000000000000CORE test.class --throw-runtime-exceptions --function test.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/cast_null2/test.java000066400000000000000000000001241333451767700231600ustar00rootroot00000000000000 public class test { public static void main() { test t = (test)null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/catch1/000077500000000000000000000000001333451767700204365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/catch1/catch1.class000066400000000000000000000005501333451767700226300ustar00rootroot000000000000004  ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile catch1.java some_exception2some_exception1catch1java/lang/Object  *   > YL   Hcbmc-cbmc-5.10/jbmc/regression/jbmc/catch1/catch1.java000066400000000000000000000004121333451767700224410ustar00rootroot00000000000000class some_exception1 extends Throwable { }; class some_exception2 extends some_exception1 { }; class catch1 { public static void main(String[] args) { try { throw new some_exception2(); } catch(some_exception1 e) { } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/catch1/test.desc000066400000000000000000000001741333451767700222570ustar00rootroot00000000000000CORE catch1.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ ^\[.*\] no uncaught exception: FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/catch1/test_no_uncaught_exceptions.desc000066400000000000000000000001711333451767700271070ustar00rootroot00000000000000CORE catch1.class --disable-uncaught-exception-check ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/char1/000077500000000000000000000000001333451767700202715ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/char1/char1.class000066400000000000000000000010621333451767700223150ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTabledoit(C)V StackMapTable SourceFile char1.java java/lang/AssertionErrorchar1 java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *  o5<  Y;`; Y " 4   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/char1/char1.java000066400000000000000000000002631333451767700221330ustar00rootroot00000000000000class char1 { static public void doit(char my_char) { int x=my_char; assert x>=0 && x<='\uffff'; my_char='\uffff'; my_char++; assert my_char==0; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/char1/test.desc000066400000000000000000000001531333451767700221070ustar00rootroot00000000000000CORE char1.class --function char1.doit ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/000077500000000000000000000000001333451767700216445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/Test.class000066400000000000000000000011261333451767700236120ustar00rootroot000000000000006"    $assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLTest;maincLjava/lang/Class; StackMapTable SourceFile Test.java Test  java/lang/AssertionError !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*     RK Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/Test.java000066400000000000000000000001621333451767700234250ustar00rootroot00000000000000public class Test { public static void main() { java.lang.Class c = Test.class; assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/java/000077500000000000000000000000001333451767700225655ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/java/lang/000077500000000000000000000000001333451767700235065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/java/lang/Class.class000066400000000000000000000007501333451767700256040ustar00rootroot000000000000006   fieldLjava/lang/Integer;()VCodeLineNumberTableLocalVariableTablethisLjava/lang/Class;cproverNondetInitialize StackMapTable SourceFile Class.java   java/lang/Classjava/lang/Objectorg/cprover/CProverassume(Z)V!  /*     I*    @cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/java/lang/Class.java000066400000000000000000000002461333451767700254200ustar00rootroot00000000000000package java.lang; public class Class { public Integer field; protected void cproverNondetInitialize() { org.cprover.CProver.assume(field == null); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-fields/test.desc000066400000000000000000000002261333451767700234630ustar00rootroot00000000000000CORE Test.class --function Test.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Test\.java line 6.*: FAILURE$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/000077500000000000000000000000001333451767700222155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleAnnotation.class000066400000000000000000000002321333451767700266670ustar00rootroot000000000000004  SourceFileExampleAnnotation.javaExampleAnnotationjava/lang/Objectjava/lang/annotation/Annotation&cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleAnnotation.java000066400000000000000000000000521333451767700265030ustar00rootroot00000000000000 public @interface ExampleAnnotation { } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleEnum.class000066400000000000000000000012341333451767700254640ustar00rootroot000000000000004"     $VALUES[LExampleEnum;values()[LExampleEnum;CodeLineNumberTablevalueOf!(Ljava/lang/String;)LExampleEnum;(Ljava/lang/String;I)V Signature()VLjava/lang/Enum; SourceFileExampleEnum.java     ExampleEnum ! java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@1   "    " *  *+   cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleEnum.java000066400000000000000000000000371333451767700253000ustar00rootroot00000000000000 public enum ExampleEnum { } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleInterface.class000066400000000000000000000001611333451767700264560ustar00rootroot000000000000004 SourceFileExampleInterface.javaExampleInterfacejava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleInterface.java000066400000000000000000000000411333451767700262670ustar00rootroot00000000000000 interface ExampleInterface { } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleSynthetic.class000066400000000000000000000001561333451767700265340ustar00rootroot00000000000000-ExampleSynthetic.jjava/lang/ObjectExampleSynthetic SourceFile!cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/ExampleSynthetic.j000066400000000000000000000002131333451767700256520ustar00rootroot00000000000000; Compile me with Jasmin 2.1+ (https://sourceforge.net/projects/jasmin/) .class public synthetic ExampleSynthetic .super java/lang/Object cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/Test.class000066400000000000000000000031561333451767700241700ustar00rootroot000000000000004N + ,-./ +0123456789:; < = > ? @ A-012B CD$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile Test.java "# !ExampleAnnotationjava/lang/Classjava/lang/AssertionErrorExampleInterface ExampleEnumExampleSynthetic[C[S[I[J[F[D[Z[Ljava/lang/Object;[[Ljava/lang/Object; EF GF HF IF JF KLTest MFjava/lang/Object isAnnotation()Z isInterfaceisEnum isSyntheticisArraygetName()Ljava/lang/String;desiredAssertionStatus! !"#$*% &#$S Y Y Y  Y  Y  Y  Y  Y Y Y Y Y Y Y Y Y  Y  Y  Y  Y  Y Y Y Y Y Y Y Y Y  Y%~ , B X n 4J`v !"&#<-T.l/02' (#$4%' @)*cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/Test.java000066400000000000000000000037431333451767700240060ustar00rootroot00000000000000 public class Test { public static void main() { // First check that all `.class` literals are indeed java.lang.Class // instances: assert ExampleAnnotation.class instanceof Class; assert ExampleInterface.class instanceof Class; assert ExampleEnum.class instanceof Class; assert ExampleSynthetic.class instanceof Class; assert char[].class instanceof Class; assert short[].class instanceof Class; assert int[].class instanceof Class; assert long[].class instanceof Class; assert float[].class instanceof Class; assert double[].class instanceof Class; assert boolean[].class instanceof Class; assert Object[].class instanceof Class; assert Object[][].class instanceof Class; assert ExampleAnnotation.class.isAnnotation(); assert ExampleInterface.class.isInterface(); assert ExampleEnum.class.isEnum(); assert ExampleSynthetic.class.isSynthetic(); assert char[].class.isArray(); assert short[].class.isArray(); assert int[].class.isArray(); assert long[].class.isArray(); assert float[].class.isArray(); assert double[].class.isArray(); assert boolean[].class.isArray(); assert Object[].class.isArray(); assert Object[][].class.isArray(); // Note use of '==' not '.equals', as we expect the same exact literal, // which in jbmc always have the same address. // Note names of array classes are not tested yet, as arrays' types are // printed as their raw signature, to be addressed separately. // Note also primitive types (e.g. int.class) are not addresses here, as // they are created through box types' static initializers (e.g. Integer // has a static member TYPE that holds the Class for `int.class`) assert ExampleAnnotation.class.getName() == "ExampleAnnotation"; assert ExampleInterface.class.getName() == "ExampleInterface"; assert ExampleEnum.class.getName() == "ExampleEnum"; assert ExampleSynthetic.class.getName() == "ExampleSynthetic"; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/java/000077500000000000000000000000001333451767700231365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/java/lang/000077500000000000000000000000001333451767700240575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/java/lang/Class.class000066400000000000000000000020011333451767700261440ustar00rootroot000000000000006, ! " # $ % & ' ( )*+nameLjava/lang/String; isAnnotationZisArray isInterface isSynthetic isLocalClass isMemberClassisEnum()VCodeLineNumberTablecproverInitializeClassLiteral(Ljava/lang/String;ZZZZZZZ)VgetName()Ljava/lang/String;()Z SourceFile Class.java        java/lang/Classjava/lang/Object!   *f .*+******* &  !' -"*$*&*'*(*)***+* , cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/java/lang/Class.java000066400000000000000000000022651333451767700257740ustar00rootroot00000000000000package java.lang; public class Class { private String name; private boolean isAnnotation; private boolean isArray; private boolean isInterface; private boolean isSynthetic; private boolean isLocalClass; private boolean isMemberClass; private boolean isEnum; public void cproverInitializeClassLiteral( String name, boolean isAnnotation, boolean isArray, boolean isInterface, boolean isSynthetic, boolean isLocalClass, boolean isMemberClass, boolean isEnum) { this.name = name; this.isAnnotation = isAnnotation; this.isArray = isArray; this.isInterface = isInterface; this.isSynthetic = isSynthetic; this.isLocalClass = isLocalClass; this.isMemberClass = isMemberClass; this.isEnum = isEnum; } public String getName() { return name; } public boolean isAnnotation() { return isAnnotation; } public boolean isArray() { return isArray; } public boolean isInterface() { return isInterface; } public boolean isSynthetic() { return isSynthetic; } public boolean isLocalClass() { return isLocalClass; } public boolean isMemberClass() { return isMemberClass; } public boolean isEnum() { return isEnum; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/test.desc000066400000000000000000000001511333451767700240310ustar00rootroot00000000000000CORE Test.class --function Test.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/class-literals/test_lazy.desc000066400000000000000000000003421333451767700250720ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --function Test.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring -- lazy-methods is incompatible with symex-driven lazy loading cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/000077500000000000000000000000001333451767700224365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTest.class000066400000000000000000000004541333451767700262460ustar00rootroot000000000000004 field1LHierarchyTestGrandchild;field2LHierarchyTestChild2;()VCodeLineNumberTablefoo SourceFileHierarchyTest.java   HierarchyTestjava/lang/Object!  *   cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTest.java000066400000000000000000000007221333451767700260600ustar00rootroot00000000000000public abstract class HierarchyTest { // These fields exist only so the classloader will load all test classes: HierarchyTestGrandchild field1; HierarchyTestChild2 field2; abstract void foo(); } class HierarchyTestChild1 extends HierarchyTest { void foo() {} } class HierarchyTestChild2 extends HierarchyTest { void foo() {} } class HierarchyTestGrandchild extends HierarchyTestChild1 implements HierarchyTestInterface1, HierarchyTestInterface2 {} cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestChild1.class000066400000000000000000000003701333451767700272700ustar00rootroot000000000000004    ()VCodeLineNumberTablefoo SourceFileHierarchyTest.java HierarchyTestChild1 HierarchyTest *    cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestChild2.class000066400000000000000000000003701333451767700272710ustar00rootroot000000000000004    ()VCodeLineNumberTablefoo SourceFileHierarchyTest.java HierarchyTestChild2 HierarchyTest *   cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestGrandchild.class000066400000000000000000000004231333451767700302220ustar00rootroot000000000000004   ()VCodeLineNumberTable SourceFileHierarchyTest.java HierarchyTestGrandchildHierarchyTestChild1HierarchyTestInterface1HierarchyTestInterface2 *   cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestInterface1.class000066400000000000000000000001771333451767700301520ustar00rootroot000000000000004 SourceFileHierarchyTestInterface1.javaHierarchyTestInterface1java/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestInterface1.java000066400000000000000000000000451333451767700277600ustar00rootroot00000000000000interface HierarchyTestInterface1 {} cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestInterface2.class000066400000000000000000000001771333451767700301530ustar00rootroot000000000000004 SourceFileHierarchyTestInterface2.javaHierarchyTestInterface2java/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/HierarchyTestInterface2.java000066400000000000000000000000451333451767700277610ustar00rootroot00000000000000interface HierarchyTestInterface2 {} cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/test_json.desc000066400000000000000000000024321333451767700253070ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure HierarchyTest.class --show-class-hierarchy --json-ui activate-multi-line-match EXIT=0 SIGNAL=0 \{\n *"isAbstract": true,\n *"name": "java::HierarchyTest",\n *"parents": \[\n *"java::java.lang.Object"\n *\],\n *"children": \[\n *"java::HierarchyTestChild(1|2)",\n *"java::HierarchyTestChild(1|2)"\n *\]\n *\},\n *\{\n *"isAbstract": false,\n *"name": "java::HierarchyTestGrandchild",\n *"parents": \[\n *"java::HierarchyTestChild1",\n *"java::HierarchyTestInterface1",\n *"java::HierarchyTestInterface2"\n *\],\n *"children": \[\n *\]\n *\},\n *\{\n *"isAbstract": false,\n *"name": "java::HierarchyTestChild2",\n *"parents": \[\n *"java::HierarchyTest"\n *\],\n *"children": \[\n *\]\n *\},\n *\{\n *"isAbstract": false,\n *"name": "java::HierarchyTestChild1",\n *"parents": \[\n *"java::HierarchyTest"\n *\],\n *"children": \[\n *"java::HierarchyTestGrandchild"\n *\]\n *\},\n *\{\n *"isAbstract": true,\n *"name": "java::HierarchyTestInterface1",\n *"parents": \[\n *"java::java.lang.Object"\n *\],\n *"children": \[\n *"java::HierarchyTestGrandchild"\n *\]\n *\},\n *\{\n *"isAbstract": true,\n *"name": "java::HierarchyTestInterface2",\n *"parents": \[\n *"java::java.lang.Object"\n *\],\n *"children": \[\n *"java::HierarchyTestGrandchild"\n *\]\n *\}, cbmc-cbmc-5.10/jbmc/regression/jbmc/class_hierarchy/test_plain.desc000066400000000000000000000015651333451767700254470ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure HierarchyTest.class --show-class-hierarchy activate-multi-line-match EXIT=0 SIGNAL=0 java::HierarchyTest \(abstract\):\n *parents:\n *java::java\.lang\.Object\n *children:\n *java::HierarchyTestChild(1|2)\n *java::HierarchyTestChild(1|2)\njava::HierarchyTestGrandchild:\n *parents:\n *java::HierarchyTestChild1\n *java::HierarchyTestInterface1\n *java::HierarchyTestInterface2\n *children:\njava::HierarchyTestChild2:\n *parents:\n *java::HierarchyTest\n *children:\njava::HierarchyTestChild1:\n *parents:\n *java::HierarchyTest\n *children:\n *java::HierarchyTestGrandchild\njava::HierarchyTestInterface1 \(abstract\):\n *parents:\n *java::java\.lang\.Object\n *children:\n *java::HierarchyTestGrandchild\njava::HierarchyTestInterface2 \(abstract\):\n *parents:\n *java::java\.lang\.Object\n *children:\n *java::HierarchyTestGrandchild cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/000077500000000000000000000000001333451767700213365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/my_cp/000077500000000000000000000000001333451767700224455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/my_cp/test2.class000066400000000000000000000003501333451767700245330ustar00rootroot000000000000004   some_fieldI()VCodeLineNumberTable SourceFile test2.java  test2java/lang/Object  * **    cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/my_cp/test2.java000066400000000000000000000001101333451767700243410ustar00rootroot00000000000000class test2 { int some_field; test2() { some_field=1; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/test.class000066400000000000000000000012011333451767700233360ustar00rootroot000000000000004*      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile test.java test2 $%java/lang/AssertionErrorchecking some_field &test' ()java/lang/Object some_fieldI(Ljava/lang/Object;)Vjava/lang/ClassdesiredAssertionStatus()Z  * O!YL+ Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/test.desc000066400000000000000000000001471333451767700231570ustar00rootroot00000000000000CORE test.class -classpath my_cp:. ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath1/test.java000066400000000000000000000002351333451767700231600ustar00rootroot00000000000000class test { public static void main(String[] args) { test2 my_test2=new test2(); assert my_test2.some_field == 1 : "checking some_field"; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath2/000077500000000000000000000000001333451767700213375ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath2/jarfile3$A.class000066400000000000000000000005211333451767700242300ustar00rootroot000000000000004   xIthis$0 Ljarfile3; (Ljarfile3;)VCodeLineNumberTable SourceFile jarfile3.java    jarfile3$AA InnerClassesjava/lang/Object()Vjarfile3!   +*+**   cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath2/jarfile3$B.class000066400000000000000000000005211333451767700242310ustar00rootroot000000000000004   xIthis$0 Ljarfile3; (Ljarfile3;)VCodeLineNumberTable SourceFile jarfile3.java    jarfile3$BB InnerClassesjava/lang/Object()Vjarfile3!   +*+**   cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath2/jarfile3.class000066400000000000000000000013051333451767700240640ustar00rootroot0000000000000040  !" ! # $%  $& '()B InnerClassesA$assertionsDisabledZ()VCodeLineNumberTablef(I)V StackMapTable " SourceFile jarfile3.java  jarfile3$A * jarfile3$B  +,java/lang/AssertionErrorjarfile3- ./java/lang/Object (Ljarfile3;)VxIjava/lang/ClassdesiredAssertionStatus()Z! *y?Y*MY*N, Y -  Y  (> (4  @  cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath2/jarfile3.java000066400000000000000000000003111333451767700236740ustar00rootroot00000000000000public class jarfile3 { public class A { int x=1; } public class B { int x=1; } void f(int i) { A a=new A(); B b=new B(); assert(a.x==1); assert(b.x==1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/classpath2/test.desc000066400000000000000000000002521333451767700231550ustar00rootroot00000000000000CORE jarfile3.class --function jarfile3.f --java-cp-include-files 'jarfile3\.class' ^EXIT=10$ ^SIGNAL=0$ .*SUCCESS$ .*FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/classtest1/000077500000000000000000000000001333451767700213615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/classtest1/classtest1.class000066400000000000000000000005371333451767700245030ustar00rootroot000000000000004  ()VCodeLineNumberTablemain([Ljava/lang/String;)Vg(Ljava/lang/Object;)V SourceFileclasstest1.java  classtest1 java/lang/Object!* "    cbmc-cbmc-5.10/jbmc/regression/jbmc/classtest1/classtest1.java000066400000000000000000000002311333451767700243060ustar00rootroot00000000000000public class classtest1 { public static void main(String[] args) { g(classtest1.class); } static void g(Object c) { assert true; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/classtest1/test.desc000066400000000000000000000001331333451767700231750ustar00rootroot00000000000000CORE classtest1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/clean_derefs/000077500000000000000000000000001333451767700217055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/clean_derefs/Container.class000066400000000000000000000004661333451767700246640ustar00rootroot000000000000004  tLTest; (LTest;)VCodeLineNumberTableLocalVariableTablethis LContainer;_t SourceFile Test.java   Containerjava/lang/Object()V  > **+ .  cbmc-cbmc-5.10/jbmc/regression/jbmc/clean_derefs/Test.class000066400000000000000000000021351333451767700236540ustar00rootroot000000000000004< + ,- ./ 0 1 23 + 456fieldI$assertionsDisabledZ(I)VCodeLineNumberTableLocalVariableTablethisLTest;fmainnondett1t2tarray[LTest;c1 LContainer;c2c3 StackMapTable-/()V SourceFile Test.java ( Test  Container 7 8 java/lang/AssertionError9 :;java/lang/Object (LTest;)Vtjava/lang/ClassdesiredAssertionStatus()Z!  > **   ӻYLYMN-S-,S-+S+Y` +,Yd-p2Y`+-2Y`Y+:Y,:Y:Y`Y`( -2Yd Y J #-AOeoy "#$&(H od yZ! P" #- 7$$%@$ B$?&&&A&B$'(4 # @)*cbmc-cbmc-5.10/jbmc/regression/jbmc/clean_derefs/Test.java000066400000000000000000000022401333451767700234650ustar00rootroot00000000000000 public class Test { public int field; public Test(int f) { field = f; } public static void main(int nondet) { // This test creates and uses objects in a few different contexts to check // that in all cases goto-symex realises that the dereferenced object cannot // be null (due to the NullPointerException check that guards all derefs), // therefore symex never generates a reference to any $failed_object symbol // that for a C program would stand in for an unknown or invalid object such // as a dereferenced null pointer. Test t1 = new Test(nondet); Test t2 = new Test(nondet); Test[] tarray = new Test[5]; tarray[0] = null; tarray[1] = t2; tarray[2] = t1; t1.field++; (nondet == 10 ? t1 : t2).field--; tarray[nondet % 5].field++; (nondet == 20 ? t1 : tarray[2]).field++; Container c1 = new Container(t1); Container c2 = new Container(t2); Container c3 = new Container(null); c1.t.field++; (nondet == 30 ? c1 : c3).t.field++; (nondet == 40 ? c2.t : tarray[3]).field--; assert false; } } class Container { public Container(Test _t) { t = _t; } public Test t; } cbmc-cbmc-5.10/jbmc/regression/jbmc/clean_derefs/test.desc000066400000000000000000000004621333451767700235260ustar00rootroot00000000000000CORE Test.class --function Test.main --show-vcc ^EXIT=0$ ^SIGNAL=0$ -- invalid -- This checks that no invalid_object references are generated -- these would be created if symex thought it might follow a null or other invalid pointer, whereas Java dereferences should always be checked not-null beforehand. cbmc-cbmc-5.10/jbmc/regression/jbmc/const1/000077500000000000000000000000001333451767700205025ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/const1/const1.class000066400000000000000000000011601333451767700227360ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile const1.java  java/lang/AssertionErrorconst1 java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   W< Y Y Y Y & *-@CV   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/const1/const1.java000066400000000000000000000006751333451767700225640ustar00rootroot00000000000000class const1 { public static void main(String[] args) { assert 0.0f < 1.0f; assert 0.0 < 1.0; assert 1.0f < 2.0f; assert -1 < 0; assert 1 < 2; assert 3 < 4; assert 4 < 5; assert 0L < 1L; assert 98 < 99; assert 98.0 < 99.0; assert 98.0f < 99.0f; assert 98L < 99L; int i = 0; assert i == 0; ++i; assert i == 1; ++i; assert i == 2; ++i; assert i == 3; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/const1/test.desc000066400000000000000000000001271333451767700223210ustar00rootroot00000000000000CORE const1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/constructor1/000077500000000000000000000000001333451767700217415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/constructor1/A.class000066400000000000000000000011761333451767700231550ustar00rootroot000000000000004'     ! "#my_fieldImy_subLsub;something_static$assertionsDisabledZ()VCodeLineNumberTable(I)V StackMapTable SourceFileconstructor1.java   java/lang/AssertionErrorA$ %&  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    !*  V** Y*   <  @cbmc-cbmc-5.10/jbmc/regression/jbmc/constructor1/constructor1.class000066400000000000000000000014301333451767700254340ustar00rootroot0000000000000040       ! "# $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileconstructor1.java A  '(java/lang/AssertionError )* +( , constructor1- ./java/lang/Objectmy_fieldImy_subLsub;something_static(I)Vjava/lang/ClassdesiredAssertionStatus()Z * ~YL+ Y+ Y+W  YY M, Y, Y"2IR h!}"4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/constructor1/constructor1.java000066400000000000000000000007251333451767700252560ustar00rootroot00000000000000class sub { }; class A { A() { } A(int param) { assert(my_field==0); my_field=2; } int my_field; sub my_sub; static int something_static = 3; }; class constructor1 { public static void main(String[] args) { A some_a=new A(); assert some_a.my_field==0; assert some_a.my_sub==null; assert some_a.something_static==3; A other_a=new A(1); assert other_a.my_field==2; assert other_a.my_sub==null; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/constructor1/sub.class000066400000000000000000000002751333451767700235650ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileconstructor1.java subjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/constructor1/test.desc000066400000000000000000000001351333451767700235570ustar00rootroot00000000000000CORE constructor1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/coreModels/000077500000000000000000000000001333451767700213675ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/coreModels/test.class000066400000000000000000000011061333451767700233730ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile test.java   java/lang/AssertionErrortest! "#java/lang/Objectorg/cprover/CProver nondetInt()Ijava/lang/ClassdesiredAssertionStatus()Z    *  C< Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/coreModels/test.desc000066400000000000000000000005551333451767700232130ustar00rootroot00000000000000CORE test.class --no-lazy-methods --no-refine-strings --show-symbol-table --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` ^EXIT=0$ ^SIGNAL=0$ ^Symbol\s*\.*\: java\:\:org\.cprover\.CProver\.\\:\(\)V$ -- -- tests that the core models are being loaded by checking if the constructor for the CProver class was cbmc-cbmc-5.10/jbmc/regression/jbmc/coreModels/test.java000066400000000000000000000002161333451767700232100ustar00rootroot00000000000000import org.cprover.CProver; class test { public static void main(String[] args) { int i=CProver.nondetInt(); assert(i!=0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/covered1/000077500000000000000000000000001333451767700210035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/covered1/covered1.class000066400000000000000000000013561333451767700235470ustar00rootroot0000000000000047 ( ) * + , - . / 0 1 2 3 456xIyzz0aboddZz1z2z3z4z5(II)VCodeLineNumberTable StackMapTable5()V SourceFile covered1.java %            covered1java/lang/Object!  W*********h *` *  `   !:  !"$'.5=HV"H# @$% F `p  ! #"@&'cbmc-cbmc-5.10/jbmc/regression/jbmc/covered1/covered1.java000066400000000000000000000007511333451767700233610ustar00rootroot00000000000000public class covered1 { // this is a variable int x=1; //these are two, one line off the first int y=2; int z=3; //this is part of static init static int z0=0; //another non-static int a; int b; static boolean odd; static { odd=(z0+1)%2==0; } covered1(int a, int b) { this.a=a*b; this.b=a+b; if(this.a==a) z0++; else odd=!odd; } // at the back int z1=2; int z2=3; int z3=4; // static int z4=5; int z5=5; } cbmc-cbmc-5.10/jbmc/regression/jbmc/covered1/test.desc000066400000000000000000000031021333451767700226160ustar00rootroot00000000000000CORE covered1.class --cover location --json-ui --show-properties --function 'covered1.' ^EXIT=0$ ^SIGNAL=0$ .*\"coveredLines\": \"22\",$ (.*\"coveredLines\": \"4\")|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"6\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"7\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"23\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"24\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"25\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"31\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"32\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"33\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"36\"|(\"coveredLines\": \"4,6,7,23-25,31-33,36\"),$ .*\"coveredLines\": \"26\",$ .*\"coveredLines\": \"28\",$ .*\"coveredLines\": \"28\",$ .*\"coveredLines\": \"28\",$ .*\"coveredLines\": \"28\",$ .*\"coveredLines\": \"29\",$ .*\"coveredLines\": \"18\",$ .*\"coveredLines\": \"18\",$ .*\"coveredLines\": \"35\",$ -- ^warning: ignoring -- The alternation between the grouped and ungrouped reporting formats for coveredLines accommodates the difference between symex-driven-lazy-loading (which currently causes jbmc to use the grouped format) and normal loading (which uses the ungrouped format). The cause of the difference appears to be symex-driven loading being more pessimistic about possible exceptions coming from callees, which in turn changes the shape of the CFG. cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initialize/000077500000000000000000000000001333451767700266125ustar00rootroot00000000000000ObjectWithNondetInitialize.class000066400000000000000000000007361333451767700350240ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initialize4   value_I()VCodeLineNumberTablecproverNondetInitialize StackMapTablevalue()I SourceFileObjectWithNondetInitialize.java   ObjectWithNondetInitializejava/lang/Objectorg/cprover/CProverassume(Z)V   *   9*    @ *  ObjectWithNondetInitialize.java000066400000000000000000000003261333451767700346330ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initializeimport org.cprover.CProver; class ObjectWithNondetInitialize { private int value_; public void cproverNondetInitialize() { CProver.assume(value_ == 13); } public int value() { return value_; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initialize/Opaque.java000066400000000000000000000002221333451767700307030ustar00rootroot00000000000000import org.cprover.CProver; public class Opaque { public ObjectWithNondetInitialize get() { return new ObjectWithNondetInitialize(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initialize/Test.class000066400000000000000000000005531333451767700305630ustar00rootroot000000000000004    ()VCodeLineNumberTabletest()I SourceFile Test.java  Opaque   Testjava/lang/Objectget()LObjectWithNondetInitialize;ObjectWithNondetInitializevalue!  *   &Y cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initialize/Test.java000066400000000000000000000001311333451767700303670ustar00rootroot00000000000000public class Test { public int test() { return (new Opaque()).get().value(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/cprover-always-load-nondet-initialize/test.desc000066400000000000000000000004471333451767700304360ustar00rootroot00000000000000KNOWNBUG Test.class --function Test.test --show-goto-functions --lazy-methods EXIT=0 SIGNAL=0 ObjectWithNondetInitialize\.cproverNondetInitialize\(\) -- -- Check if cproverNondetInitialize method is loaded in an object returned from an opaque method https://github.com/diffblue/cbmc/issues/2273 cbmc-cbmc-5.10/jbmc/regression/jbmc/destructor1/000077500000000000000000000000001333451767700215525ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/destructor1/Break.class000066400000000000000000000006731333451767700236330ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLBreak;mainiIj StackMapTable SourceFile Break.java Breakjava/lang/Object!/*  2;<  ;  &   # + 1  0   cbmc-cbmc-5.10/jbmc/regression/jbmc/destructor1/Break.java000066400000000000000000000003011333451767700234330ustar00rootroot00000000000000 public class Break { public static void main() { int j = 0; ++j; for(int i = 0; i < 10; ++i) if(i == 5) break; for(j = 0; j < 10; ++j) if(j == 5) break; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/destructor1/test.desc000066400000000000000000000001441333451767700233700ustar00rootroot00000000000000CORE Break.class --show-goto-functions --function Break.main ^EXIT=0$ ^SIGNAL=0$ dead i; -- GOTO 11 cbmc-cbmc-5.10/jbmc/regression/jbmc/divide_by_zero/000077500000000000000000000000001333451767700222705ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/divide_by_zero/DivideByZero.class000066400000000000000000000004341333451767700256570ustar00rootroot000000000000004   ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFileDivideByZero.java  DivideByZerojava/lang/Object!*  (< l=  cbmc-cbmc-5.10/jbmc/regression/jbmc/divide_by_zero/DivideByZero.java000066400000000000000000000001661333451767700254750ustar00rootroot00000000000000public class DivideByZero { public static void main(String args[]) { int i=0; int j=10/i; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/divide_by_zero/test.desc000066400000000000000000000002001333451767700240770ustar00rootroot00000000000000CORE DivideByZero.class ^EXIT=10$ ^SIGNAL=0$ Denominator should be nonzero: FAILURE ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/double1/000077500000000000000000000000001333451767700206265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/double1/double1.class000066400000000000000000000007261333451767700232150ustar00rootroot000000000000002" *  ?rGE8()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile double1.java java/util/Random  !double1java/lang/Object(J)V nextDouble()D * { 7YL+I(6(6(7(8(6 I I I I2      !&*.26cbmc-cbmc-5.10/jbmc/regression/jbmc/double1/double1.java000066400000000000000000000006611333451767700230270ustar00rootroot00000000000000class double1 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); double d=random.nextDouble(); // conversions int i=(int)d; char c=(char)d; long l=(long)d; float f=(float)d; short s=(short)d; // constants d=1.1234; d=java.lang.Double.POSITIVE_INFINITY; d=java.lang.Double.NEGATIVE_INFINITY; d=java.lang.Double.NaN; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/double1/test.desc000066400000000000000000000001301333451767700224370ustar00rootroot00000000000000CORE double1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/dynamic-multi-dimensional-array/000077500000000000000000000000001333451767700254635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/dynamic-multi-dimensional-array/TestClass.class000066400000000000000000000006171333451767700304230ustar00rootroot000000000000004 B ()VCodeLineNumberTableLocalVariableTablethis LTestClass;f(I)VyIa1[[Fj SourceFileTestClass.java  TestClassjava/lang/Object!/*   [L=+2Q     cbmc-cbmc-5.10/jbmc/regression/jbmc/dynamic-multi-dimensional-array/TestClass.java000066400000000000000000000002101333451767700302240ustar00rootroot00000000000000public class TestClass { public static void f(int y) { float[][] a1 = new float[y][3]; int j = 0; a1[j][0] = 34.5f; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/dynamic-multi-dimensional-array/test.desc000066400000000000000000000001341333451767700273000ustar00rootroot00000000000000CORE TestClass.class --function TestClass.f --cover location --unwind 2 ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc/enum1/000077500000000000000000000000001333451767700203205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum1/enum1.class000066400000000000000000000025671333451767700224060ustar00rootroot000000000000004X 6 78!9 : ; < => ? @A ; B C D E F GH IJKVAL1Lenum1;VAL2VAL3VAL4VAL5$VALUES[Lenum1;$assertionsDisabledZvalues ()[Lenum1;CodeLineNumberTablevalueOf(Ljava/lang/String;)Lenum1;(Ljava/lang/String;I)V Signature()Vmain([Ljava/lang/String;)V StackMapTable9Ljava/lang/Enum; SourceFile enum1.java !! LMenum1 (N *+  "#java/lang/AssertionError *-O PQ     $%R STU VWjava/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;java/lang/ClassdesiredAssertionStatus()Zjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/Object;)V@1@@@@@ !"# $%&" ' ()&" *'*+&*+',- ./&HL+ Y ' 012-& Y  Y Y Y Y YSYSYSYSYSK*<=*2N-'Qv 0 @q,345cbmc-cbmc-5.10/jbmc/regression/jbmc/enum1/enum1.java000066400000000000000000000003521333451767700222100ustar00rootroot00000000000000public enum enum1 { VAL1, VAL2, VAL3, VAL4, VAL5; static { for(enum1 e : enum1.values()) { System.out.println(e); } } public static void main(String[] args) { enum1 e=VAL5; assert(e==VAL5); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum1/test.desc000066400000000000000000000004241333451767700221370ustar00rootroot00000000000000CORE enum1.class --java-unwind-enum-static --unwind 3 ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ ^Unwinding loop java::enum1.:\(\)V.0 iteration 5 \(6 max\) file enum1.java line 6 function java::enum1.:\(\)V bytecode-index 78 thread 0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/000077500000000000000000000000001333451767700216205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/000077500000000000000000000000001333451767700223765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/000077500000000000000000000000001333451767700241565ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/regression/000077500000000000000000000000001333451767700263365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/regression/Foo$1.class000066400000000000000000000013321333451767700302340ustar00rootroot000000000000004,      !)$SwitchMap$com$diffblue$regression$MyEnum[I()VCodeLineNumberTableLocalVariableTable StackMapTable SourceFileFoo.javaEnclosingMethod"# $% &' ()java/lang/NoSuchFieldError *' +'com/diffblue/regression/Foo$1 InnerClassesjava/lang/Objectcom/diffblue/regression/Foocom/diffblue/regression/MyEnumvalues#()[Lcom/diffblue/regression/MyEnum;A Lcom/diffblue/regression/MyEnum;ordinal()IBC    7 OKOKOK #&'25WMM cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/regression/Foo.class000066400000000000000000000013131333451767700301060ustar00rootroot000000000000004"    InnerClasses()VCodeLineNumberTableLocalVariableTablethisLcom/diffblue/regression/Foo;foo#(Lcom/diffblue/regression/MyEnum;)Ie Lcom/diffblue/regression/MyEnum; StackMapTable SourceFileFoo.java   !com/diffblue/regression/Foojava/lang/Objectcom/diffblue/regression/Foo$1)$SwitchMap$com$diffblue$regression$MyEnum[Icom/diffblue/regression/MyEnumordinal()I!  /*    0++.  (* , . 0 0! cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/regression/Foo.java000066400000000000000000000003721333451767700277260ustar00rootroot00000000000000package com.diffblue.regression; public class Foo { public int foo(MyEnum e) { if (e == null) return 0; switch (e) { case A: return 1; case B: return 2; case C: return 3; } return 5; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/regression/MyEnum.class000066400000000000000000000020561333451767700306020ustar00rootroot0000000000000048 * +,- . / / 0 1 2 34A Lcom/diffblue/regression/MyEnum;BCD$VALUES![Lcom/diffblue/regression/MyEnum;values#()[Lcom/diffblue/regression/MyEnum;CodeLineNumberTablevalueOf4(Ljava/lang/String;)Lcom/diffblue/regression/MyEnum;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;I)Vthis Signature()V2Ljava/lang/Enum; SourceFile MyEnum.java  56com/diffblue/regression/MyEnum 7 !"    java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@0@@@@ "  4 *   !"1*+ #$%&%pTY Y  Y  YY SY SY SYS 4$'()cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/com/diffblue/regression/MyEnum.java000066400000000000000000000000771333451767700304170ustar00rootroot00000000000000package com.diffblue.regression; enum MyEnum { A, B, C, D; } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_switch/test.desc000066400000000000000000000006101333451767700234340ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure com/diffblue/regression/Foo.class --trace --cover location --depth 1024 --java-max-vla-length 16 --refine-strings --max-nondet-string-length 20 --string-printable --unwind 10 --function "com.diffblue.regression.Foo.foo" --java-unwind-enum-static line 8.*SATISFIED line 10.*SATISFIED line 12.*SATISFIED line 14.*SATISFIED ^EXIT=0$ ^SIGNAL=0$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/000077500000000000000000000000001333451767700227765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/000077500000000000000000000000001333451767700235545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/diffblue/000077500000000000000000000000001333451767700253345ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/diffblue/regression/000077500000000000000000000000001333451767700275145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/diffblue/regression/EnumIter.class000066400000000000000000000010761333451767700322770ustar00rootroot000000000000004   ()VCodeLineNumberTableLocalVariableTablethis"Lcom/diffblue/regression/EnumIter;f()Ia![Lcom/diffblue/regression/MyEnum;numI SourceFile EnumIter.java    com/diffblue/regression/EnumIterjava/lang/Objectcom/diffblue/regression/MyEnumvalues#()[Lcom/diffblue/regression/MyEnum;ordinal!/*   ZL+2+2`=   cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/diffblue/regression/EnumIter.java000066400000000000000000000002751333451767700321130ustar00rootroot00000000000000package com.diffblue.regression; public class EnumIter { int f() { MyEnum[] a = MyEnum.values(); int num = a[2].ordinal() + a[3].ordinal(); return num ; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/diffblue/regression/MyEnum.class000066400000000000000000000020561333451767700317600ustar00rootroot0000000000000048 * +,- . / / 0 1 2 34A Lcom/diffblue/regression/MyEnum;BCD$VALUES![Lcom/diffblue/regression/MyEnum;values#()[Lcom/diffblue/regression/MyEnum;CodeLineNumberTablevalueOf4(Ljava/lang/String;)Lcom/diffblue/regression/MyEnum;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;I)Vthis Signature()V2Ljava/lang/Enum; SourceFile MyEnum.java  56com/diffblue/regression/MyEnum 7 !"    java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@0@@@@ "  4 *   !"1*+ #$%&%pTY Y  Y  YY SY SY SYS 4$'()cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/com/diffblue/regression/MyEnum.java000066400000000000000000000000771333451767700315750ustar00rootroot00000000000000package com.diffblue.regression; enum MyEnum { A, B, C, D; } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone/test.desc000066400000000000000000000005451333451767700246210ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure com/diffblue/regression/EnumIter.class --trace --cover location --depth 1024 --java-max-vla-length 16 --refine-strings --max-nondet-string-length 20 --string-printable --unwind 2 --function "com.diffblue.regression.EnumIter.f" --java-unwind-enum-static \d+ of \d+ covered \(100\.0%\) ^EXIT=0$ ^SIGNAL=0$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/000077500000000000000000000000001333451767700237765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/000077500000000000000000000000001333451767700245545ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/diffblue/000077500000000000000000000000001333451767700263345ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/diffblue/regression/000077500000000000000000000000001333451767700305145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/diffblue/regression/EnumIter.class000066400000000000000000000012731333451767700332760ustar00rootroot000000000000004'      ()VCodeLineNumberTableLocalVariableTablethis"Lcom/diffblue/regression/EnumIter;f()Ljava/lang/String;a![Lcom/diffblue/regression/MyEnum; SourceFile EnumIter.java  !"java/lang/StringBuilder # $% & com/diffblue/regression/EnumIterjava/lang/Objectcom/diffblue/regression/MyEnumvalues#()[Lcom/diffblue/regression/MyEnum;nameappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString!   /*   Y!LY+2+2 !cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/diffblue/regression/EnumIter.java000066400000000000000000000002421333451767700331050ustar00rootroot00000000000000package com.diffblue.regression; public class EnumIter { String f() { MyEnum[] a = MyEnum.values(); return a[2].name() + a[3].name(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/diffblue/regression/MyEnum.class000066400000000000000000000020561333451767700327600ustar00rootroot0000000000000048 * +,- . / / 0 1 2 34A Lcom/diffblue/regression/MyEnum;BCD$VALUES![Lcom/diffblue/regression/MyEnum;values#()[Lcom/diffblue/regression/MyEnum;CodeLineNumberTablevalueOf4(Ljava/lang/String;)Lcom/diffblue/regression/MyEnum;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;I)Vthis Signature()V2Ljava/lang/Enum; SourceFile MyEnum.java  56com/diffblue/regression/MyEnum 7 !"    java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@0@@@@ "  4 *   !"1*+ #$%&%pTY Y  Y  YY SY SY SYS 4$'()cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/com/diffblue/regression/MyEnum.java000066400000000000000000000000771333451767700325750ustar00rootroot00000000000000package com.diffblue.regression; enum MyEnum { A, B, C, D; } cbmc-cbmc-5.10/jbmc/regression/jbmc/enum_values_clone_name/test.desc000066400000000000000000000005431333451767700256170ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure com/diffblue/regression/EnumIter.class --trace --cover location --depth 1024 --java-max-vla-length 16 --refine-strings --max-nondet-string-length 20 --string-printable --unwind 2 --function "com.diffblue.regression.EnumIter.f" --java-unwind-enum-static \d+ of \d+ covered \(100\.0%\) ^EXIT=0$ ^SIGNAL=0$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/environment1/000077500000000000000000000000001333451767700217205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/environment1/Main.class000066400000000000000000000012541333451767700236350ustar00rootroot000000000000004"    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java java/lang/AssertionError[Ljava/lang/Object;Main !java/lang/Object[Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z!   *  e* Y*L+=>!+2: Y* Y* Y#6< O d  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/environment1/Main.java000066400000000000000000000004461333451767700234530ustar00rootroot00000000000000public class Main { public static void main(String[] args) { assert args!=null; // should pass for(String arg : args) assert arg!=null; // should pass assert args.length==0; // should fail // check some setup assert args instanceof Object[]; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/environment1/test.desc000066400000000000000000000005251333451767700235410ustar00rootroot00000000000000KNOWNBUG Main.class --all-properties --unwind 2 ^EXIT=10$ ^SIGNAL=0$ ^\[assertion.1\] assertion at file Main.java line 5: SUCCESS$ ^\[assertion.2\] assertion at file Main.java line 8: SUCCESS$ ^\[assertion.3\] assertion at file Main.java line 10: FAILURE$ ^\[assertion.4\] assertion at file Main.java line 13: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/000077500000000000000000000000001333451767700215355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/A.class000066400000000000000000000003521333451767700227440ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/Throwable /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/B.class000066400000000000000000000003301333451767700227410ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/C.class000066400000000000000000000003301333451767700227420ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/D.class000066400000000000000000000003301333451767700227430ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLD; SourceFile test.java DC /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/test.class000066400000000000000000000020011333451767700235340ustar00rootroot000000000000004= /0 /1 /2 /3 / 45 /6 789$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VdLD;cLC;bLB;aLA;eexcarg[Ljava/lang/String; StackMapTable0123 SourceFile test.java DCBA java/lang/AssertionErrortest: ;<java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z! /*  rnYLYMYNY ::L Y 6L Y $L Y L Y (((:(L(^J    ! %()7:;ILM[^_mf   !!"%#")$;$M$ _$"n%&'h(B)B*B+,4  ' @-.cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/test.desc000066400000000000000000000002471333451767700233570ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 26 function.*: FAILURE$ \*\* 1 of [0-9]* failed ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions1/test.java000066400000000000000000000007051333451767700233610ustar00rootroot00000000000000class A extends Throwable {} class B extends A {} class C extends B {} class D extends C {} public class test { public static void main (String arg[]) { try { D d = new D(); C c = new C(); B b = new B(); A a = new A(); A e = a; throw e; } catch(D exc) { assert false; } catch(C exc) { assert false; } catch(B exc) { assert false; } catch(A exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/000077500000000000000000000000001333451767700216155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/A.class000066400000000000000000000003611333451767700230240ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/B.class000066400000000000000000000003301333451767700230210ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/C.class000066400000000000000000000003301333451767700230220ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/test.class000066400000000000000000000015531333451767700236270ustar00rootroot0000000000000042 %& % '( % )*+ ,-.$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;foobLA;exc StackMapTable&main([Ljava/lang/String;)VaLB;args[Ljava/lang/String;* SourceFile test.java A java/lang/AssertionError Btest/ 01java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  /* sYK*K Y   J YLL Y    N!"4  @#$cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/test.desc000066400000000000000000000002161333451767700234330ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 12 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions10/test.java000066400000000000000000000005621333451767700234420ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} public class test { static void foo() { try { A b = new A(); throw b; } catch(A exc) { assert false; } } public static void main (String args[]) { try { A a = new A(); foo(); } catch(B exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions11/000077500000000000000000000000001333451767700216165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions11/A.class000066400000000000000000000004241333451767700230250ustar00rootroot000000000000004  iI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java  Ajava/lang/RuntimeException  8 **   cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions11/B.class000066400000000000000000000003301333451767700230220ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions11/test.class000066400000000000000000000017201333451767700236240ustar00rootroot0000000000000049 *+ *, - ./ * 0 .1 234$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;foo(I)IaLA;bexcLB;kI StackMapTable,main([Ljava/lang/String;)Vargs[Ljava/lang/String;+ SourceFile test.java AB  5java/lang/AssertionError test6 78java/lang/Objectijava/lang/ClassdesiredAssertionStatus()Z! /* 1 YL+YL+L+ Y"  /* 1 I! "#)YL WL+  Y !%#$(& )$% Q&'4   @()cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions11/test.desc000066400000000000000000000002161333451767700234340ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 36 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions11/test.java000066400000000000000000000007231333451767700234420ustar00rootroot00000000000000class A extends RuntimeException { int i=1; }; class B extends A { }; public class test { static int foo(int k) { try { if(k==0) { A a = new A(); throw a; } else { A b = new A(); throw b; } } catch(B exc) { assert exc.i==1; } return 1; } public static void main (String args[]) { try { A a = new A(); foo(6); } catch(A exc) { assert exc.i==2; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/000077500000000000000000000000001333451767700216175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/A.class000066400000000000000000000003611333451767700230260ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/B.class000066400000000000000000000003301333451767700230230ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/C.class000066400000000000000000000003301333451767700230240ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/F.class000066400000000000000000000012011333451767700230250ustar00rootroot000000000000004'     !"#$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLF;foobLB;exc StackMapTable SourceFile test.java B java/lang/AssertionErrorF$ %&java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    /*  }YL+L Y    J 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/test.class000066400000000000000000000013441333451767700236270ustar00rootroot0000000000000040 "# " $% &' "( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VfLF;excLB;args[Ljava/lang/String; StackMapTable% SourceFile test.java F ,B java/lang/AssertionErrortest- ./java/lang/Objectfoojava/lang/ClassdesiredAssertionStatus()Z!  /*  YL+L Y   O4  @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/test.desc000066400000000000000000000002161333451767700234350ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 12 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions12/test.java000066400000000000000000000005671333451767700234510ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} class F { void foo() { try { B b = new B(); throw b; } catch(B exc) { assert false; } } } public class test { public static void main (String args[]) { try { F f = new F(); f.foo(); } catch(B exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/000077500000000000000000000000001333451767700216205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/A.class000066400000000000000000000003611333451767700230270ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/B.class000066400000000000000000000003301333451767700230240ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/C.class000066400000000000000000000003301333451767700230250ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/F.class000066400000000000000000000006251333451767700230370ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLF;foobLB;exc StackMapTable SourceFile test.java BFjava/lang/Object /*   k YL+L+     Jcbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/test.class000066400000000000000000000013441333451767700236300ustar00rootroot0000000000000040 "# " $% &' "( )*+$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VfLF;excLB;args[Ljava/lang/String; StackMapTable% SourceFile test.java F ,B java/lang/AssertionErrortest- ./java/lang/Objectfoojava/lang/ClassdesiredAssertionStatus()Z!  /*  YL+L Y   O4  @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/test.desc000066400000000000000000000002161333451767700234360ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 25 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions13/test.java000066400000000000000000000005661333451767700234510ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} class F { void foo() { try { B b = new B(); throw b; } catch(B exc) { throw exc; } } } public class test { public static void main (String args[]) { try { F f = new F(); f.foo(); } catch(B exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/000077500000000000000000000000001333451767700216215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/A.class000066400000000000000000000003611333451767700230300ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/B.class000066400000000000000000000003301333451767700230250ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/C.class000066400000000000000000000003301333451767700230260ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/test.class000066400000000000000000000015321333451767700236300ustar00rootroot0000000000000043 &' &( & )* &+, -./$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VcLC;excLB;LA;args[Ljava/lang/String; StackMapTable'+( SourceFile test.java CA java/lang/AssertionErrorBtest0 12java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  /*  GYLYM$L YL YL Y% 472    "%&478F4&8GS B!B"#4  @$%cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/test.desc000066400000000000000000000001251333451767700234360ustar00rootroot00000000000000CORE test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions14/test.java000066400000000000000000000005371333451767700234500ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} public class test { public static void main (String args[]) { try { try { C c = new C(); A a = new A(); } catch(C exc) { assert false; } catch(B exc) { assert false; } } catch(A exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions15/000077500000000000000000000000001333451767700216225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions15/InetAddress.class000066400000000000000000000003731333451767700250610ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethis LInetAddress; SourceFile test.java  InetAddressjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions15/InetSocketAddress.class000066400000000000000000000004071333451767700262300ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLInetSocketAddress; SourceFile test.java InetSocketAddressjava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions15/test.class000066400000000000000000000017561333451767700236410ustar00rootroot0000000000000044 &' ( )* +, &- ./0$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;lookupPtrRecord!(LInetAddress;)Ljava/lang/String;address LInetAddress;reverse(LInetAddress;)LInetAddress; translate(LInetAddress;I)VeLjava/lang/Exception;iI StackMapTable* SourceFile test.java Foo  java/lang/Exception java/lang/AssertionErrortest1 23java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  /* 76+ **+NN Y   * !M"#4 ! @$%cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions15/test.desc000066400000000000000000000001561333451767700234430ustar00rootroot00000000000000CORE test.class --function test.translate ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions15/test.java000066400000000000000000000006311333451767700234440ustar00rootroot00000000000000class InetAddress {} class InetSocketAddress {} public class test { public String lookupPtrRecord(InetAddress address) { return "Foo"; } public InetAddress reverse(InetAddress address) { return address; } public void translate(InetAddress address, int i) { try { String domainName = lookupPtrRecord(reverse(address)); } catch (Exception e) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/000077500000000000000000000000001333451767700216235ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/A.class000066400000000000000000000003611333451767700230320ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/B.class000066400000000000000000000003301333451767700230270ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/C.class000066400000000000000000000003301333451767700230300ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/test.class000066400000000000000000000013161333451767700236320ustar00rootroot000000000000004- !" #$ !% !& '()$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;foo(I)VexcLA;LB;xI StackMapTable"% SourceFile test.java A java/lang/AssertionErrorBtest* +,java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /* -L YYL Y"   , - FG4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/test.desc000066400000000000000000000002411333451767700234370ustar00rootroot00000000000000CORE test.class --function test.foo ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 18 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions16/test.java000066400000000000000000000004401333451767700234430ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} public class test { static void foo (int x) { try { x++; } catch(A exc) { assert false; } try { throw new B(); } catch(B exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions18/000077500000000000000000000000001333451767700216255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions18/A.class000066400000000000000000000003611333451767700230340ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile Test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions18/Test.class000066400000000000000000000013641333451767700235770ustar00rootroot000000000000004%  !  "#$()VCodeLineNumberTableLocalVariableTablethisLTest;googoo_aLA;foo(I)VzIa_innerxea_outeryb_outer StackMapTable#! SourceFile Test.java A Testjava/lang/Object! /*    B YL+    *6=>66Y:* :N- $'/2 J   !$ '),/%2"3$5& \   )(36 64 !Bcbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions18/Test.java000066400000000000000000000004001333451767700234010ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} public class Test { void foo() { A a=new A(); throw a; } void goo() { try { foo(); assert false; } catch(B e) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions18/test.desc000066400000000000000000000002041333451767700234400ustar00rootroot00000000000000CORE Test.class --function Test.goo ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ no uncaught exception: FAILURE -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions19/000077500000000000000000000000001333451767700216265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions19/exception_handler.class000066400000000000000000000003761333451767700263560ustar00rootroot00000000000000. java/lang/Object SourceFile     exception_handlerCodefjava/lang/Exception()Vexception_handler.j   *   YYL cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions19/exception_handler.j000066400000000000000000000007411333451767700254760ustar00rootroot00000000000000.class exception_handler .super java/lang/Object .method public ()V aload_0 invokevirtual java/lang/Object/()V return .end method .method public f()V .limit stack 4 .limit locals 4 begin: new java/lang/Exception dup invokespecial java/lang/Exception.()V athrow start: dup end: astore_1 return .catch all from begin to end using start .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions19/test.desc000066400000000000000000000002001333451767700234350ustar00rootroot00000000000000CORE exception_handler.class --function exception_handler.f ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/000077500000000000000000000000001333451767700215365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/A.class000066400000000000000000000003521333451767700227450ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/Throwable /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/B.class000066400000000000000000000003301333451767700227420ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/C.class000066400000000000000000000003301333451767700227430ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/test.class000066400000000000000000000014031333451767700235420ustar00rootroot000000000000004. "# "$ %& "' ()*$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VbLB;excLC;args[Ljava/lang/String; StackMapTable$# SourceFile test.java BC java/lang/AssertionErrortest+ ,-java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*  ,YL+L YL Y  " +* , JB4  @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/test.desc000066400000000000000000000002501333451767700233520ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 15 function.*: FAILURE$ ^\*\* 1 of [0-9]* failed ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions2/test.java000066400000000000000000000004341333451767700233610ustar00rootroot00000000000000class A extends Throwable {} class B extends A {} class C extends B {} public class test { public static void main (String args[]) { try { B b = new B(); throw b; } catch(C exc) { assert false; } catch(B exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/000077500000000000000000000000001333451767700216165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/A.class000066400000000000000000000003521333451767700230250ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/Throwable /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/B.class000066400000000000000000000003301333451767700230220ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/C.class000066400000000000000000000003301333451767700230230ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/D.class000066400000000000000000000003301333451767700230240ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLD; SourceFile test.java DC /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/test.class000066400000000000000000000020011333451767700236150ustar00rootroot000000000000004= /0 /1 /2 /3 / 45 /6 789$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VdLD;cLC;bLB;aLA;eexcarg[Ljava/lang/String; StackMapTable0123 SourceFile test.java DCBA java/lang/AssertionErrortest: ;<java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z! /*  rnYLYMYNY ::L Y 6L Y $L Y L Y (((:(L(^J    ! %()7:;ILM[^_mf   !!"%#")$;$M$ _$"n%&'h(B)B*B+,4  ' @-.cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/test.desc000066400000000000000000000003071333451767700234350ustar00rootroot00000000000000CORE test.class --json-ui --trace ^EXIT=10$ ^SIGNAL=0$ .*VERIFICATION FAILED.* -- ^warning: ignoring -- this fails with assertion error if nil values are not allowed in assignments in the JSON trace cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions20/test.java000066400000000000000000000007051333451767700234420ustar00rootroot00000000000000class A extends Throwable {} class B extends A {} class C extends B {} class D extends C {} public class test { public static void main (String arg[]) { try { D d = new D(); C c = new C(); B b = new B(); A a = new A(); A e = a; throw e; } catch(D exc) { assert false; } catch(C exc) { assert false; } catch(B exc) { assert false; } catch(A exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions21/000077500000000000000000000000001333451767700216175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions21/test.class000066400000000000000000000006751333451767700236350ustar00rootroot000000000000004   fieldI()VCodeLineNumberTablef StackMapTable SourceFile test.java test java/lang/NullPointerExceptionjava/lang/Object!  *   %YKL=*=N+=N   2    !$Gcbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions21/test.desc000066400000000000000000000006051333451767700234370ustar00rootroot00000000000000CORE test.class --function test.f --throw-runtime-exceptions ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL -- reference is null in .*: FAILURE -- This checks that the second use of a particular exception type in a given function is correctly initialised. In the failing case the #exception_value variable is nondet at the time it is thrown, so cbmc can set it to null and fail an assertion. cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions21/test.java000066400000000000000000000006371333451767700234470ustar00rootroot00000000000000public class test { int field; public static void f() { test testinstance = new test(); test testnull = null; int x = 0; try { x = testinstance.field; } catch(NullPointerException e) { x++; } try { x = testnull.field; } catch(NullPointerException e) { x++; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions22/000077500000000000000000000000001333451767700216205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions22/test.class000066400000000000000000000012031333451767700236220ustar00rootroot000000000000004$       $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTablef SourceFile test.java  java/lang/Exception java/lang/AssertionErrortest! "#java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * SK Y F > YK  H4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions22/test.desc000066400000000000000000000004131333451767700234350ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL -- ^warning: ignoring -- This test checks that a thrown exception is caught, and is not erroneously rethrown on function exit such that another surrounding try block can catch it again. cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions22/test.java000066400000000000000000000005161333451767700234440ustar00rootroot00000000000000public class test { public static void main () { try { f(); } catch(Exception e) { assert(false); // Should be unreachable } } public static void f() { try { throw new Exception(); } catch(Exception e) { // Should prevent main's catch handler from being invoked } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions23/000077500000000000000000000000001333451767700216215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions23/test.class000066400000000000000000000010661333451767700236320ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile test.java java/lang/NullPointerException java/lang/AssertionErrortest java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   ZK*.<K Y    I  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions23/test.desc000066400000000000000000000005331333451767700234410ustar00rootroot00000000000000CORE test.class --throw-runtime-exceptions --function test.main ^EXIT=10$ ^SIGNAL=0$ VERIFICATION FAILED assertion at file test\.java line 9 function java::test\.main:\(\)V bytecode-index 13: FAILURE -- ^warning: ignoring -- This test checks that accessing an array member, cf. a getfield or setfield bytecode, can produce a NullPointerException. cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions23/test.java000066400000000000000000000002611333451767700234420ustar00rootroot00000000000000 public class test { public static void main () { try { int[] array = null; int x = array[0]; } catch(NullPointerException e) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions24/000077500000000000000000000000001333451767700216225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions24/A.class000066400000000000000000000003361333451767700230330ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Ajava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions24/test.class000066400000000000000000000011131333451767700236240ustar00rootroot000000000000004%     $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile test.java  ! java/lang/NullPointerException java/lang/AssertionErrortest" #$java/lang/ObjectAfjava/lang/ClassdesiredAssertionStatus()Z!   *  ZK*K Y    I 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions24/test.desc000066400000000000000000000006731333451767700234470ustar00rootroot00000000000000CORE test.class --throw-runtime-exceptions --function test.main ^EXIT=10$ ^SIGNAL=0$ VERIFICATION FAILED assertion at file test\.java line 9 function java::test\.main:\(\)V bytecode-index 11: FAILURE -- ^warning: ignoring -- This test ensures that attempting a virtual call against a null pointer can produce a NullPointerException, even when there are no field accesses inside the method or inspection of its class identifier to trigger one. cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions24/test.java000066400000000000000000000003021333451767700234370ustar00rootroot00000000000000 public class test { public static void main () { try { A a = null; a.f(); } catch(NullPointerException e) { assert false; } } } class A { public void f() {} } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions26/000077500000000000000000000000001333451767700216245ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions26/A.class000066400000000000000000000002751333451767700230370ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java Ajava/lang/RuntimeException * cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions26/B.class000066400000000000000000000002441333451767700230340ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java BA * cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions26/test.class000066400000000000000000000014141333451767700236320ustar00rootroot000000000000004*     ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable%& SourceFile test.java AB java/lang/AssertionErrortest' ()java/lang/Object[Ljava/lang/String;java/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!  * Z<YMYN Y-M Y Y //2   */0CFY2 K4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions26/test.desc000066400000000000000000000002331333451767700234410ustar00rootroot00000000000000CORE test.class ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring -- This test verifies that catches are executed in the correct order cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions26/test.java000066400000000000000000000011321333451767700234430ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} // This test verifies that catches are executed in the correct order public class test { public static void main (String args[]) { int i = 0; try { try { throw new A(); } catch(A exc) { i++; throw new B(); } finally { // Make sure A threw into the catch assert(i==1); i++; } } catch(B exc) { // Make sure finally was executed assert(i==2); i++; } // Make sure B was rethrown by finally assert(i==3); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions27/000077500000000000000000000000001333451767700216255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions27/A.class000066400000000000000000000002751333451767700230400ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java Ajava/lang/RuntimeException * cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions27/B.class000066400000000000000000000002441333451767700230350ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java BA * cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions27/test.class000066400000000000000000000020541333451767700236340ustar00rootroot000000000000004/   !  "# $ %&'$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable! () SourceFile test.java * +,AB java/lang/AssertionErrortest- .,java/lang/Objectjava/lang/Throwable[Ljava/lang/String;org/cprover/CProver nondetBoolean()Zjava/lang/ClassdesiredAssertionStatus!  * <= YYN Y *NY: Y  Y K`DY N Y Y:` Y N7C7ECttn  1478;CX^qt)!#$%),1.05HGEKW E4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions27/test.desc000066400000000000000000000002371333451767700234460ustar00rootroot00000000000000CORE test.class VERIFICATION SUCCESSFUL ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring -- Tests embedded try-catch-finally to ensure the catching order is correct cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions27/test.java000066400000000000000000000021601333451767700234460ustar00rootroot00000000000000import org.cprover.CProver; class A extends RuntimeException {} class B extends A {} // This test verifies that catches are executed in the correct order public class test { public static void main (String args[]) { int i = 0; int j = 0; try { try { try { if (CProver.nondetBoolean()) throw new A(); else throw new B(); } catch(B exc) { i++; } catch(A exc) { i++; throw new B(); } finally { // Make sure A threw into the catch assert(i==1); i++; } assert(i==2); // Account for the rethrow in finally j++; } catch(B exc) { // Make sure finally was executed assert(i==2); i++; throw new B(); } finally { assert ((i+j) == 3); } // Account for the rethrow in finally j++; } catch(B exc) { i++; } // Make sure B was rethrown by finally when A was thrown // or if B was thrown there was no rethrow assert(i+j == 4); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/000077500000000000000000000000001333451767700215375ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/A.class000066400000000000000000000003521333451767700227460ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/Throwable /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/B.class000066400000000000000000000003301333451767700227430ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/C.class000066400000000000000000000003301333451767700227440ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/test.class000066400000000000000000000013571333451767700235530ustar00rootroot000000000000004- !" !# $% !& '()$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VexcLC;LB;args[Ljava/lang/String; StackMapTable#" SourceFile test.java BC java/lang/AssertionErrortest* +,java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*  *YL YL Y  )  * HB4  @ cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/test.desc000066400000000000000000000002161333451767700233550ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 14 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions3/test.java000066400000000000000000000004151333451767700233610ustar00rootroot00000000000000class A extends Throwable {} class B extends A {} class C extends B {} public class test { public static void main (String args[]) { try { throw new B(); } catch(C exc) { assert false; } catch(B exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/000077500000000000000000000000001333451767700215405ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/A.class000066400000000000000000000003521333451767700227470ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/Throwable /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/B.class000066400000000000000000000003301333451767700227440ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/C.class000066400000000000000000000003301333451767700227450ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/test.class000066400000000000000000000016221333451767700235470ustar00rootroot000000000000004< &' &( )*( +, -. &'/ 012$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VbLB;excLC;args[Ljava/lang/String; StackMapTable(' SourceFile test.java BC3 456 78 java/lang/AssertionErrortest9 :;java/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vjava/lang/ClassdesiredAssertionStatus()Z! /*  .YL+L Y L   $&   !$%-* %. J!B"#4   @$%cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/test.desc000066400000000000000000000001251333451767700233550ustar00rootroot00000000000000CORE test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions4/test.java000066400000000000000000000005101333451767700233560ustar00rootroot00000000000000class A extends Throwable {} class B extends A {} class C extends B {} public class test { public static void main (String args[]) { try { B b = new B(); throw b; } catch(C exc) { System.out.println("C"); assert false; } catch(B exc) { System.out.println("B"); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/000077500000000000000000000000001333451767700215415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/A.class000066400000000000000000000003521333451767700227500ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/Throwable /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/B.class000066400000000000000000000003301333451767700227450ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/C.class000066400000000000000000000003301333451767700227460ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/D.class000066400000000000000000000003301333451767700227470ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLD; SourceFile test.java DC /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/test.class000066400000000000000000000022561333451767700235540ustar00rootroot000000000000004M 56 57 58 59 5 :;6 <= >? 5789@ ABC$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VdLD;cLC;bLB;aLA;eexcarg[Ljava/lang/String; StackMapTable6789 SourceFile test.java DCBAD EFG HI java/lang/AssertionErrortestJ KLjava/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vjava/lang/ClassdesiredAssertionStatus()Z!/*   YLYMYNY ::L  Y@L  Y&L  Y L  (((B(\(vV  ! % ()1?BCKY\]esvwf  !"#$%&!'(%)()*"C*$]*&w*(+,-h.B/B0B124 - @34cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/test.desc000066400000000000000000000001251333451767700233560ustar00rootroot00000000000000CORE test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions5/test.java000066400000000000000000000010761333451767700233670ustar00rootroot00000000000000class A extends Throwable {} class B extends A {} class C extends B {} class D extends C {}public class test { public static void main (String arg[]) { try { D d = new D(); C c = new C(); B b = new B(); A a = new A(); A e = a; throw e; } catch(D exc) { System.out.println("D"); assert false; } catch(C exc) { System.out.println("C"); assert false; } catch(B exc) { System.out.println("B"); assert false; } catch(A exc) { System.out.println("A"); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/000077500000000000000000000000001333451767700215425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/A.class000066400000000000000000000004301333451767700227460ustar00rootroot000000000000004  iI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java  Ajava/lang/RuntimeException  < **    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/B.class000066400000000000000000000003301333451767700227460ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/C.class000066400000000000000000000003301333451767700227470ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/D.class000066400000000000000000000003301333451767700227500ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLD; SourceFile test.java DC /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/test.class000066400000000000000000000014461333451767700235550ustar00rootroot0000000000000042 %& % ' () %* (+ ,-.$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)ViIexcLA;LB;args[Ljava/lang/String; StackMapTable&* SourceFile test.java A  java/lang/AssertionErrorBtest/ 01java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  /*   <<YL+ YL+  Y !$"  !$%;* %< J B!"4   @#$cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/test.desc000066400000000000000000000002161333451767700233600ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 18 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions6/test.java000066400000000000000000000005261333451767700233670ustar00rootroot00000000000000class A extends RuntimeException { int i; A() { i = 1; } } class B extends A {} class C extends B {} public class test { public static void main (String args[]) { try { try { int i = 0; throw new A(); } catch(A exc) { assert exc.i==2; } } catch(B exc) { assert exc.i==2; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/000077500000000000000000000000001333451767700215435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/A.class000066400000000000000000000003611333451767700227520ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/B.class000066400000000000000000000003301333451767700227470ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/C.class000066400000000000000000000003301333451767700227500ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/test.class000066400000000000000000000015471333451767700235600ustar00rootroot0000000000000044 '( ') ' *+ ',- ./0$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;main([Ljava/lang/String;)VcLC;aLA;excLB;args[Ljava/lang/String; StackMapTable(,) SourceFile test.java CA java/lang/AssertionErrorBtest1 23java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!  /*  FYLYM,L YL YL Y$ 362    !$%367E> %7F R!B"B#$4   @%&cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/test.desc000066400000000000000000000002161333451767700233610ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 21 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions7/test.java000066400000000000000000000005511333451767700233660ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} public class test { public static void main (String args[]) { try { try { C c = new C(); A a = new A(); throw a; } catch(C exc) { assert false; } catch(B exc) { assert false; } } catch(A exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/000077500000000000000000000000001333451767700215445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/A.class000066400000000000000000000003611333451767700227530ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java Ajava/lang/RuntimeException /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/B.class000066400000000000000000000003301333451767700227500ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/C.class000066400000000000000000000003301333451767700227510ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/test.class000066400000000000000000000016471333451767700235620ustar00rootroot0000000000000047 )* )+, ) - ./ )0 123$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;foobLB;excLC; StackMapTable+main([Ljava/lang/String;)VaLA;args[Ljava/lang/String;*, SourceFile test.java BCA  java/lang/AssertionErrortest4 56java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z! /* fYK*K<   J /YL+L Y L Y   &    .* ! !/"# M$B%&4  @'(cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/test.desc000066400000000000000000000002161333451767700233620ustar00rootroot00000000000000CORE test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file test.java line 23 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions8/test.java000066400000000000000000000006511333451767700233700ustar00rootroot00000000000000class A extends RuntimeException {} class B extends A {} class C extends B {} public class test { static void foo() { try { B b = new B(); throw b; } catch(C exc) { int i=0; } } public static void main (String args[]) { try { A a = new A(); foo(); throw a; } catch(B exc) { assert false; } catch(A exc) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/000077500000000000000000000000001333451767700215455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/A.class000066400000000000000000000004241333451767700227540ustar00rootroot000000000000004  iI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile test.java  Ajava/lang/RuntimeException  8 **   cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/B.class000066400000000000000000000003301333451767700227510ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile test.java BA /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/C.class000066400000000000000000000003301333451767700227520ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLC; SourceFile test.java CB /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/test.class000066400000000000000000000017201333451767700235530ustar00rootroot0000000000000049 *+ *, - ./ * 0 .1 234$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLtest;foo(I)IaLA;bexcLB;kI StackMapTable,main([Ljava/lang/String;)Vargs[Ljava/lang/String;+ SourceFile test.java AB  5java/lang/AssertionError test6 78java/lang/Objectijava/lang/ClassdesiredAssertionStatus()Z! /* 1 YL+YL+L+ Y"  /* 1 I! "#)YL WL+  Y !%#$(& )$% Q&'4   @()cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/test.desc000066400000000000000000000001251333451767700233620ustar00rootroot00000000000000CORE test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/exceptions9/test.java000066400000000000000000000007231333451767700233710ustar00rootroot00000000000000class A extends RuntimeException { int i=1; }; class B extends A { }; public class test { static int foo(int k) { try { if(k==0) { A a = new A(); throw a; } else { A b = new A(); throw b; } } catch(B exc) { assert exc.i==1; } return 1; } public static void main (String args[]) { try { A a = new A(); foo(6); } catch(A exc) { assert exc.i==1; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/external_getstatic1/000077500000000000000000000000001333451767700232455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/external_getstatic1/test.class000066400000000000000000000010711333451767700252520ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile test.java  Ajava/lang/AssertionErrortest! "#java/lang/Objectexternal_globalLA;java/lang/ClassdesiredAssertionStatus()Z!   *  X!K* Y      4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/external_getstatic1/test.desc000066400000000000000000000001511333451767700250610ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/external_getstatic1/test.java000066400000000000000000000003541333451767700250710ustar00rootroot00000000000000class A { public static A external_global; public int i; }; public class test { public static void main() { if(A.external_global == null) return; A local = A.external_global; assert(local instanceof A); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/farith1/000077500000000000000000000000001333451767700206315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/farith1/__CPROVER.class000066400000000000000000000013631333451767700233010ustar00rootroot000000000000004/ % &&ff>?' %333333?ٙ?333333( )*+$assertionsDisabledZ()VCodeLineNumberTable__java_bytecode_frem(FF)F StackMapTable__java_bytecode_drem(DD)D SourceFile farith1.java  java/lang/AssertionError __CPROVER, -.java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z * S-'""# # Y  *" !X2+& & ( ( Y  . &"4 @#$cbmc-cbmc-5.10/jbmc/regression/jbmc/farith1/farith1.class000066400000000000000000000013661333451767700232240ustar00rootroot000000000000004, "@ ? #=$ "@@??% &'($assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile farith1.java  java/lang/AssertionErrorfarith1) *+java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z * wD#vD# bD# fD# jD# nD#rD# # Y I(wI(cI(gI( kI( oI( sI( ( YF 7;>BFLR X!v" /64 @ !cbmc-cbmc-5.10/jbmc/regression/jbmc/farith1/farith1.java000066400000000000000000000013531333451767700230340ustar00rootroot00000000000000class __CPROVER { public static float __java_bytecode_frem(float numerator, float denominator) { assert numerator > -2.6f && numerator < -2.4f && denominator > 0.4f && denominator < 0.6f; return -0.0f; } public static double __java_bytecode_drem(double numerator, double denominator) { assert numerator > -2.6 && numerator < -2.4 && denominator > 0.4 && denominator < 0.6; return -0.0; } } class farith1 { public static void main(String[] args) { float f = 2.5f; f = -f; ++f; f -= 1.0f; f *= 2.0f; f /= 2.0f; f %= 0.5f; assert f > -0.1f && f < 0.1f; double d = 2.5; d = -d; ++d; d -= 1.0; d *= 2.0; d /= 2.0; d %= 0.5; assert d > -0.1 && d < 0.1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/farith1/test.desc000066400000000000000000000001301333451767700224420ustar00rootroot00000000000000CORE farith1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/fcmpx_dcmpx1/000077500000000000000000000000001333451767700216645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/fcmpx_dcmpx1/fcmpx_dcmpx1.class000066400000000000000000000013271333451767700253070ustar00rootroot000000000000004& @  @@@@@ !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilefcmpx_dcmpx1.java  java/lang/AssertionError fcmpx_dcmpx1# $%java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z * D# Y# Y# YI( Y( Y( Y& -A E [ q 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/fcmpx_dcmpx1/fcmpx_dcmpx1.java000066400000000000000000000003561333451767700251240ustar00rootroot00000000000000class fcmpx_dcmpx1 { public static void main(String[] args) { float f = 2.5f; assert f == 2.5f; assert f < 3.0f; assert f > 2.0f; double d = 2.5; assert d == 2.5; assert d < 3.0; assert d > 2.0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/fcmpx_dcmpx1/test.desc000066400000000000000000000001351333451767700235020ustar00rootroot00000000000000CORE fcmpx_dcmpx1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally1/000077500000000000000000000000001333451767700210125ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally1/test.class000066400000000000000000000011221333451767700230140ustar00rootroot000000000000004#     $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable Exceptions SourceFile test.java java/lang/Exception java/lang/AssertionErrortest !"java/lang/Objectjava/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   *  OYK Y*   H 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally1/test.desc000066400000000000000000000003051333451767700226270ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 7 function java::test\.main:\(\)V bytecode-index 10: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally1/test.java000066400000000000000000000002301333451767700226270ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { throw new Exception(); } finally { assert(false); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/finally2/000077500000000000000000000000001333451767700210135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally2/test.class000066400000000000000000000011751333451767700230250ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable  Exceptions SourceFile test.java java/lang/Exception java/lang/AssertionErrortest! "#java/lang/Objectjava/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   *  w)YKYL Y+  ( HN 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally2/test.desc000066400000000000000000000003051333451767700226300ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 8 function java::test\.main:\(\)V bytecode-index 10: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally2/test.java000066400000000000000000000002621333451767700226350ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { throw new Exception(); } catch(Exception e) { } finally { assert(false); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/finally3/000077500000000000000000000000001333451767700210145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally3/test.class000066400000000000000000000013271333451767700230250ustar00rootroot000000000000004(     !"$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable# Exceptions$ SourceFile test.java java/lang/NullPointerExceptionjava/lang/ArithmeticException java/lang/AssertionErrortest% &'java/lang/Objectjava/lang/Throwablejava/lang/Exceptionjava/lang/ClassdesiredAssertionStatus()Z!   * 7YK YYL Y+%  6 HM4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally3/test.desc000066400000000000000000000004451333451767700226360ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 7 function java::test\.main:\(\)V bytecode-index 10: SUCCESS assertion at file test\.java line 10 function java::test\.main:\(\)V bytecode-index 23: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally3/test.java000066400000000000000000000003361333451767700226400ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { throw new NullPointerException(); } catch(ArithmeticException e) { assert(false); } finally { assert(false); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/finally4/000077500000000000000000000000001333451767700210155ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally4/test.class000066400000000000000000000013111333451767700230170ustar00rootroot000000000000004%    $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable  Exceptions! SourceFile test.java java/lang/AssertionErrorjava/lang/ArithmeticExceptiontest" #$java/lang/Objectjava/lang/Throwablejava/lang/Exceptionjava/lang/ClassdesiredAssertionStatus()Z!   *   B;9YK YYL Y+0"0 " A SM  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally4/test.desc000066400000000000000000000003051333451767700226320ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 11 function java::test\.main:\(\)V bytecode-index 8: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally4/test.java000066400000000000000000000003211333451767700226330ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { int x = 1; x++; } catch(ArithmeticException e) { assert(false); } finally { assert(false); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/finally5/000077500000000000000000000000001333451767700210165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally5/test.class000066400000000000000000000012511333451767700230230ustar00rootroot000000000000004&       !$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable" Exceptionsf SourceFile test.java   java/lang/AssertionErrorjava/lang/Exceptiontest# $%java/lang/Objectjava/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   * `#YK Y*" Q  Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally5/test.desc000066400000000000000000000003051333451767700226330ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 7 function java::test\.main:\(\)V bytecode-index 13: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally5/test.java000066400000000000000000000003171333451767700226410ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { f(); } finally { assert(false); } } public static void f() throws Exception { throw new Exception(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/finally6/000077500000000000000000000000001333451767700210175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally6/test.class000066400000000000000000000013201333451767700230210ustar00rootroot000000000000004'      !"$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable# Exceptionsf SourceFile test.java   java/lang/AssertionErrorjava/lang/Exceptiontest$ %&java/lang/Objectjava/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   * 2+YKYL Y+ 1 QN  Y 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally6/test.desc000066400000000000000000000003051333451767700226340ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 8 function java::test\.main:\(\)V bytecode-index 13: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally6/test.java000066400000000000000000000003511333451767700226400ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { f(); } catch(Exception e) { } finally { assert(false); } } public static void f() throws Exception { throw new Exception(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/finally7/000077500000000000000000000000001333451767700210205ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/finally7/test.class000066400000000000000000000014621333451767700230310ustar00rootroot000000000000004+     ! " #$%$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable & Exceptions'f SourceFile test.java   java/lang/AssertionErrorjava/lang/ArithmeticExceptionjava/lang/NullPointerExceptiontest( )*java/lang/Objectjava/lang/Throwablejava/lang/Exceptionjava/lang/ClassdesiredAssertionStatus()Z!  * @9YK YYL Y+. .  ? QM  Y4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/finally7/test.desc000066400000000000000000000004451333451767700226420ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ assertion at file test\.java line 7 function java::test\.main:\(\)V bytecode-index 13: SUCCESS assertion at file test\.java line 10 function java::test\.main:\(\)V bytecode-index 26: FAILURE ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/finally7/test.java000066400000000000000000000004401333451767700226400ustar00rootroot00000000000000public class test { public static void main() throws Exception { try { f(); } catch(ArithmeticException e) { assert(false); } finally { assert(false); } } public static void f() throws NullPointerException { throw new NullPointerException(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/float1/000077500000000000000000000000001333451767700204615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/float1/float1.class000066400000000000000000000006761333451767700227070ustar00rootroot000000000000002 *  ?˒()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile float1.java java/util/Random  float1java/lang/Object(J)V nextFloat()F  * v 2YL+E$>$6$7$9$6 EE E E2      %(+.1cbmc-cbmc-5.10/jbmc/regression/jbmc/float1/float1.java000066400000000000000000000006461333451767700225200ustar00rootroot00000000000000class float1 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); float f=random.nextFloat(); // conversions int i=(int)f; char c=(char)f; long l=(long)f; double d=f; short s=(short)f; // constants f=1.1234f; f=java.lang.Float.POSITIVE_INFINITY; f=java.lang.Float.NEGATIVE_INFINITY; f=java.lang.Float.NaN; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/float1/test.desc000066400000000000000000000001271333451767700223000ustar00rootroot00000000000000CORE float1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/function1/000077500000000000000000000000001333451767700212015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/function1/Main.class000066400000000000000000000004311333451767700231120ustar00rootroot000000000000003  ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile Main.java OtherMainjava/lang/Object!*  % YL   cbmc-cbmc-5.10/jbmc/regression/jbmc/function1/Main.java000066400000000000000000000002671333451767700227350ustar00rootroot00000000000000 class Other { public void fail() { assert i == 0; } private int i; } public class Main { public static void main(String[] args) { Other o = new Other(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/function1/Other.class000066400000000000000000000010141333451767700233050ustar00rootroot000000000000003!     iI$assertionsDisabledZ()VCodeLineNumberTablefail StackMapTable SourceFile Main.java  java/lang/AssertionErrorOther  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *;* Y 5 @cbmc-cbmc-5.10/jbmc/regression/jbmc/function1/test.desc000066400000000000000000000001551333451767700230210ustar00rootroot00000000000000CORE Main.class --function 'Other.fail:()V' ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/000077500000000000000000000000001333451767700212025ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/A.class000066400000000000000000000003031333451767700224050ustar00rootroot000000000000003   iI()VCodeLineNumberTable SourceFile Main.java Ajava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/B.class000066400000000000000000000002641333451767700224140ustar00rootroot000000000000003   jI()VCodeLineNumberTable SourceFile Main.java BA *   cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/C.class000066400000000000000000000002641333451767700224150ustar00rootroot000000000000003   kI()VCodeLineNumberTable SourceFile Main.java CB *    cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/D.class000066400000000000000000000011261333451767700224140ustar00rootroot000000000000003-       ! "#$cLC;$assertionsDisabledZ()VCodeLineNumberTablefail StackMapTable SourceFile Main.java   % &' (' )'java/lang/AssertionErrorD* +,java/lang/ObjectCiIjkjava/lang/ClassdesiredAssertionStatus()Z  *R-)*** Y ,,5  @cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/Main.class000066400000000000000000000004251333451767700231160ustar00rootroot000000000000003  ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile Main.java DMainjava/lang/Object!*  % YL    cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/Main.java000066400000000000000000000004601333451767700227310ustar00rootroot00000000000000 class A { public int i; } class B extends A { public int j; } class C extends B { public int k; } class D { protected C c; public void fail() { assert c.i == 0 || c.j == 0 || c.k == 0; } } public class Main { public static void main(String[] args) { D d = new D(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/function2/test.desc000066400000000000000000000001511333451767700230160ustar00rootroot00000000000000CORE Main.class --function 'D.fail:()V' ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/function3/000077500000000000000000000000001333451767700212035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/function3/A.class000066400000000000000000000010001333451767700224010ustar00rootroot000000000000004    bLB;$assertionsDisabledZ()VCodeLineNumberTabledummy StackMapTable SourceFile Main.java Ajava/lang/AssertionError java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    * ;* Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/function3/B.class000066400000000000000000000003051333451767700224110ustar00rootroot000000000000004   aLA;()VCodeLineNumberTable SourceFile Main.java Bjava/lang/Object *    cbmc-cbmc-5.10/jbmc/regression/jbmc/function3/Main.class000066400000000000000000000004251333451767700231170ustar00rootroot000000000000004  ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile Main.java BMainjava/lang/Object!*  % YL   cbmc-cbmc-5.10/jbmc/regression/jbmc/function3/Main.java000066400000000000000000000003501333451767700227300ustar00rootroot00000000000000 class A { public void dummy() { // check some setup assert this instanceof A; } public B b; } class B { public A a; } public class Main { public static void main(String[] args) { B B = new B(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/function3/test.desc000066400000000000000000000001611333451767700230200ustar00rootroot00000000000000KNOWNBUG Main.class --function 'A.dummy:()V' ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/function4/000077500000000000000000000000001333451767700212045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/function4/Main.class000066400000000000000000000004311333451767700231150ustar00rootroot000000000000003  ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile Main.java OtherMainjava/lang/Object!*  % YL   cbmc-cbmc-5.10/jbmc/regression/jbmc/function4/Main.java000066400000000000000000000003501333451767700227310ustar00rootroot00000000000000 class Other { public void fail() { assert i == 0; } private int i; } class Other2 extends Other { private int j; } public class Main { public static void main(String[] args) { Other o = new Other(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/function4/Other.class000066400000000000000000000010141333451767700233100ustar00rootroot000000000000003!     iI$assertionsDisabledZ()VCodeLineNumberTablefail StackMapTable SourceFile Main.java  java/lang/AssertionErrorOther  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *;* Y 5 @cbmc-cbmc-5.10/jbmc/regression/jbmc/function4/test.desc000066400000000000000000000001601333451767700230200ustar00rootroot00000000000000KNOWNBUG Main.class --function 'Other.fail' ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/000077500000000000000000000000001333451767700233445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/A.class000066400000000000000000000001241333451767700245500ustar00rootroot000000000000004 SourceFileGn.javaAjava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/B.class000066400000000000000000000001241333451767700245510ustar00rootroot000000000000004 SourceFileGn.javaBjava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/C.class000066400000000000000000000001241333451767700245520ustar00rootroot000000000000004 SourceFileGn.javaCjava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/Gn.class000066400000000000000000000014771333451767700247500ustar00rootroot000000000000004.   !"# $%&'ex1LGn; SignatureLGn<*>;()VCodeLineNumberTableLocalVariableTablethisLocalVariableTypeTable LGn;foo1(LGn;)V StackMapTable (LGn<*>;)Vmain([Ljava/lang/String;)Vargs[Ljava/lang/String; ;>Ljava/lang/Object; SourceFileGn.java  ( )*ddfsdf+ ,-Gnjava/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V!    A*   k +*+          7      cbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/Gn.java000066400000000000000000000004251333451767700245540ustar00rootroot00000000000000interface A{} interface B{} interface C{} interface L extends A,B,C{} public class Gn>{ Gn ex1; public void foo1(Gn ex1){ if(ex1 != null) this.ex1 = ex1; } public static void main(String[] args) { System.out.println("ddfsdf"); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/L.class000066400000000000000000000002671333451767700245730ustar00rootroot000000000000004     Signature1Ljava/lang/Object;LA;LB;LC; SourceFileGn.javaLjava/lang/ObjectABC cbmc-cbmc-5.10/jbmc/regression/jbmc/generic_class_bound1/test.desc000066400000000000000000000013401333451767700251610ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Gn.class --cover location --no-lazy-methods --no-refine-strings ^EXIT=0$ ^SIGNAL=0$ .*file Gn.java line 6 function java::Gn.\:\(\)V bytecode-index 1 block .: FAILED .*file Gn.java line 9 function java::Gn.foo1:\(LGn;\)V bytecode-index 1 block .: FAILED .*file Gn.java line 10 function java::Gn.foo1:\(LGn;\)V bytecode-index 4 block .: FAILED .*file Gn.java line 13 function java::Gn.main:\(\[Ljava/lang/String;\)V bytecode-index 2 block .: SATISFIED -- -- This fails under symex-driven lazy loading because the FAILED blocks occur in functions that are unreachable from the entry point, so with symex-driven loading the functions foo1 and the constructor don't get created at all. cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_recursive_parameters/000077500000000000000000000000001333451767700254045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_recursive_parameters/KeyValue.class000066400000000000000000000010621333451767700301570ustar00rootroot000000000000004 next LKeyValue; SignatureLKeyValue;reverseLKeyValue;keyLjava/lang/Object;TK;valueTV;()VCodeLineNumberTableLocalVariableTablethisLocalVariableTypeTable<Ljava/lang/Object; SourceFileMutuallyRecursiveGenerics.java KeyValuejava/lang/Object   A*  cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_recursive_parameters/MutuallyRecursiveGenerics.class000066400000000000000000000005511333451767700336200ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLMutuallyRecursiveGenerics;f SourceFileMutuallyRecursiveGenerics.java MutuallyRecursiveGenericsjava/lang/Object /*  +     cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_recursive_parameters/MutuallyRecursiveGenerics.java000066400000000000000000000003031333451767700334270ustar00rootroot00000000000000class KeyValue { KeyValue next; KeyValue reverse; K key; V value; } class MutuallyRecursiveGenerics { void f() { KeyValue example1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_recursive_parameters/test.desc000066400000000000000000000003561333451767700272270ustar00rootroot00000000000000CORE MutuallyRecursiveGenerics.class --cover location --function MutuallyRecursiveGenerics.f ^EXIT=0$ ^SIGNAL=0$ -- -- This failed before due to infinite recursion in the way how the instantiated generic parameters were used. cf. TG-3067 cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/000077500000000000000000000000001333451767700233135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/AWrapper.class000066400000000000000000000003031333451767700260570ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileGenericFields.java AWrapperjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/FWrapper.class000066400000000000000000000003031333451767700260640ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileGenericFields.java FWrapperjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/GenericFields$SimpleGenericField.class000066400000000000000000000013131333451767700325220ustar00rootroot000000000000004!    field_inputLSimpleWrapper; SignatureLSimpleWrapper;this$0LGenericFields;(LGenericFields;)VCodeLineNumberTablefoo()Vf/(LSimpleWrapper;LSimpleWrapper;)LSimpleWrapper;T(LSimpleWrapper;LSimpleWrapper<[LAWrapper;>;)LSimpleWrapper; SourceFileGenericFields.java  SimpleWrapper  GenericFields$SimpleGenericFieldSimpleGenericField InnerClassesjava/lang/Object GenericFields     " *+* Y  cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/GenericFields.class000066400000000000000000000004421333451767700270450ustar00rootroot000000000000004  SimpleGenericField InnerClasses()VCodeLineNumberTable SourceFileGenericFields.java  GenericFieldsjava/lang/Object GenericFields$SimpleGenericField! *    cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/GenericFields.java000066400000000000000000000006651333451767700266700ustar00rootroot00000000000000class IWrapper { public int i; } class FWrapper { } class AWrapper { } class SimpleWrapper { } public class GenericFields { class SimpleGenericField { // IWrapper field; // for this to work, uncomment this line SimpleWrapper field_input; public void foo() { } SimpleWrapper f(SimpleWrapper s, SimpleWrapper a) { return new SimpleWrapper<>(); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/IWrapper.class000066400000000000000000000003231333451767700260710ustar00rootroot000000000000004   iI()VCodeLineNumberTable SourceFileGenericFields.java IWrapperjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/SimpleWrapper.class000066400000000000000000000004071333451767700271350ustar00rootroot000000000000004   ()VCodeLineNumberTable Signature(Ljava/lang/Object; SourceFileGenericFields.java  SimpleWrapperjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/generics_type_param/test.desc000066400000000000000000000004771333451767700251420ustar00rootroot00000000000000CORE GenericFields$SimpleGenericField.class --cover location --function GenericFields\$SimpleGenericField.foo --verbosity 10 ^EXIT=0$ ^SIGNAL=0$ Reading class AWrapper Reading class FWrapper Reading class IWrapper -- failed to load class \`AWrapper\' failed to load class \`FWrapper\' failed to load class \`IWrapper\' cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith1/000077500000000000000000000000001333451767700206345ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith1/iarith1.class000066400000000000000000000014121333451767700232220ustar00rootroot000000000000004(   c"! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile iarith1.java  java/lang/AssertionErroriarith1% &'java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z *  c<`=<d=<h=<l=<"p<t< YB! aB!aB! eB!iB! mB! qB!uB! Yf      "$),@DHNTZ`fi @>4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith1/iarith1.java000066400000000000000000000006351333451767700230440ustar00rootroot00000000000000class iarith1 { public static void main(String[] args) { int i = 99; ++i; int tmp = i + 2; i = tmp; tmp = i - 3; i = tmp; i += 3; i -= 3; tmp = i * 2; i = tmp; tmp = i / 3; i = tmp; i %= 34; i = -i; assert i == -32; long l = 99; ++l; l += 2L; l -= 3L; l *= 2L; l /= 3L; l %= 34L; l = -l; assert l == -32L; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith1/test.desc000066400000000000000000000001301333451767700224450ustar00rootroot00000000000000CORE iarith1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith2/000077500000000000000000000000001333451767700206355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith2/iarith2.class000066400000000000000000000016761333451767700232400ustar00rootroot0000000000000040 # $% # & ' () *+,$assertionsDisabledZ()VCodeLineNumberTablei()Il()Js StackMapTablemain([Ljava/lang/String;)V SourceFile iarith2.java  java/lang/AssertionError   iarith2- ./java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z * W;~;;;x;z;t;|;&      ]%? ???y?{?u?}?& # V;< Y  !"  `2  Y  Y%&.'1( 4 @!"cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith2/iarith2.java000066400000000000000000000012331333451767700230410ustar00rootroot00000000000000class iarith2 { private static int i() { int value = 3; value &= 1; value |= 4; value ^= 4; value <<= 2; value >>= 1; value = -value; value >>>= 1; return value; } private static long l() { long value = 3L; value &= 1L; value |= 4L; value ^= 4L; value <<= 2L; value >>= 1L; value = -value; value >>>= 1L; return value; } private static void s() { short lhs = 127; short rhs = 32767; if (lhs < rhs) { return; } assert false; } public static void main(String[] args) { assert i() == 2147483647; assert l() == 9223372036854775807L; s(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/iarith2/test.desc000066400000000000000000000001301333451767700224460ustar00rootroot00000000000000CORE iarith2.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/if_acmp1/000077500000000000000000000000001333451767700207525ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/if_acmp1/A.class000066400000000000000000000002671333451767700221660ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile if_acmp1.java Ajava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/if_acmp1/B.class000066400000000000000000000002671333451767700221670ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile if_acmp1.java Bjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/if_acmp1/if_acmp1.class000066400000000000000000000020241333451767700234560ustar00rootroot000000000000004-  !  "#  $% &'($assertionsDisabledZ()VCodeLineNumberTableget_B()LB;main([Ljava/lang/String;)V StackMapTable)! ( SourceFile if_acmp1.java BA java/lang/AssertionError if_acmp1* +,java/lang/Object[Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z  * & YK*    YLYMYNY:Y:++ Y,, Y-- Y Y Y,- Y- Y Y+ Y: Y :+::  YV!*=Pcx !"#5 = 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/if_acmp1/if_acmp1.java000066400000000000000000000010711333451767700232730ustar00rootroot00000000000000class A { } class B { } class if_acmp1 { private static B get_B() { B b = new B(); return b; } public static void main(String[] args) { A a0 = new A(); A a1 = new A(); A a2 = new A(); A a3 = new A(); A a4 = new A(); assert a0 == a0; assert a1 == a1; assert a2 == a2; assert a3 == a3; assert a4 == a4; assert a1 != a2; assert a2 != a3; assert a3 != a4; assert a0 != null; A a5 = null; assert a5 == null; B b = get_B(); Object o0 = a0; Object o1 = b; assert o0 != o1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/if_acmp1/test.desc000066400000000000000000000001311333451767700225640ustar00rootroot00000000000000CORE if_acmp1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/if_expr1/000077500000000000000000000000001333451767700210105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/if_expr1/if_expr1.class000066400000000000000000000013661333451767700235620ustar00rootroot000000000000004-      !"$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable Exceptions# SourceFile if_expr1.java $ %&' () java/lang/AssertionErrorif_expr1* +,java/lang/Objectjava/io/IOExceptionjava/lang/SysteminLjava/io/InputStream;java/io/InputStreamread()Ijava/lang/ClassdesiredAssertionStatus()Z    * D<   = % Y Y/ C  A 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/if_expr1/if_expr1.java000066400000000000000000000003201333451767700233630ustar00rootroot00000000000000class if_expr1 { static public void main(String[] args) throws java.io.IOException { int x=System.in.read(); int y=x==10?11:9; if(x==10) assert y==11; else assert y==9; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/if_expr1/test.desc000066400000000000000000000001311333451767700226220ustar00rootroot00000000000000CORE if_expr1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/if_icmp1/000077500000000000000000000000001333451767700207625ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/if_icmp1/if_icmp1.class000066400000000000000000000013251333451767700235010ustar00rootroot000000000000004!     $assertionsDisabledZ()VCodeLineNumberTablef StackMapTablemain([Ljava/lang/String;)V SourceFile if_icmp1.java java/lang/AssertionError  if_icmp1  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   i ; < Y Y Y Y Y6    , 4BGUZh       4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/if_icmp1/if_icmp1.java000066400000000000000000000006501333451767700233150ustar00rootroot00000000000000class if_icmp1 { private static void f() { int i = 10; int j = 11; if (i == j) { assert false; } if (i >= j) { assert false; } if (j > i) { assert true; } else { assert false; } if (j <= i) { assert false; } if (j < i) { assert false; } else { assert true; } } public static void main(String[] args) { f(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/if_icmp1/test.desc000066400000000000000000000001311333451767700225740ustar00rootroot00000000000000CORE if_icmp1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/ifxx1/000077500000000000000000000000001333451767700203325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/ifxx1/ifxx1.class000066400000000000000000000014551333451767700224250ustar00rootroot000000000000004%     !$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLifxx1;main([Ljava/lang/String;)Vargs[Ljava/lang/String;iI StackMapTable SourceFile ifxx1.java  java/lang/AssertionErrorifxx1" #$java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    /*    w< Y< Y Y< Y< Y< Y J   ( ,:<@NPTbdhvwu   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/ifxx1/ifxx1.java000066400000000000000000000006031333451767700222330ustar00rootroot00000000000000class ifxx1 { public static void main(String[] args) { int i = 0; if (i != 0) { assert false; } i = 1; if (i == 0) { assert false; } if (i < 0) { assert false; } i = 0; if (i > 0) { assert false; } i = 1; if (i <= 0) { assert false; } i = -1; if (i >= 0) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/ifxx1/test.desc000066400000000000000000000001261333451767700221500ustar00rootroot00000000000000CORE ifxx1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/inferlexicalscope1/000077500000000000000000000000001333451767700230535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inferlexicalscope1/test.class000066400000000000000000000006421333451767700250630ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLtest;mainyIzx StackMapTable SourceFile test.java testjava/lang/Object!/*  ; `< `<"         cbmc-cbmc-5.10/jbmc/regression/jbmc/inferlexicalscope1/test.desc000066400000000000000000000001261333451767700246710ustar00rootroot00000000000000CORE test.class --show-symbol-table --function test.main ^EXIT=0$ ^SIGNAL=0$ ^pc7: -- cbmc-cbmc-5.10/jbmc/regression/jbmc/inferlexicalscope1/test.java000066400000000000000000000002631333451767700246760ustar00rootroot00000000000000public class test { public static void main() { int x = 5; if(x == 4) { int y = x + 1; ++y; } else { int z = x + 1; ++z; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field1/000077500000000000000000000000001333451767700240415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field1/Parent.class000066400000000000000000000003101333451767700263130ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Test.java Parentjava/lang/Object  *    cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field1/Test.class000066400000000000000000000010161333451767700260050ustar00rootroot000000000000004#      $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile Test.java  java/lang/AssertionErrorTest !"ParentxIjava/lang/ClassdesiredAssertionStatus()Z!   * E Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field1/Test.java000066400000000000000000000002521333451767700256220ustar00rootroot00000000000000public class Test extends Parent { public static void main(int nondet) { x = nondet; assert x == Parent.x; } } class Parent { public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field1/test.desc000066400000000000000000000003361333451767700256620ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- This checks that jbmc knows that test.x and parent.x refer to the same field. Both test and parent are concrete (available) classes. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/000077500000000000000000000000001333451767700241215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/Parent.class000066400000000000000000000003121333451767700263750ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Parent.java Parentjava/lang/Object! *   cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/Parent.java000066400000000000000000000003431333451767700262150ustar00rootroot00000000000000 public class Parent { // This is the version of Parent we will run jbmc against, which has // a static field 'x', but that field is private and cannot correspond // to the reference 'Test.x'. private static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/Test.class000066400000000000000000000010161333451767700260650ustar00rootroot000000000000004#      $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile Test.java  java/lang/AssertionErrorTest !"ParentxIjava/lang/ClassdesiredAssertionStatus()Z!   * E Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/Test.java000066400000000000000000000001771333451767700257100ustar00rootroot00000000000000public class Test extends Parent { public static void main(int nondet) { x = nondet; assert x == Parent.x; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/compile_against/000077500000000000000000000000001333451767700272575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/compile_against/Parent.class000066400000000000000000000003121333451767700315330ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Parent.java Parentjava/lang/Object! *   cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/compile_against/Parent.java000066400000000000000000000002341333451767700313520ustar00rootroot00000000000000 public class Parent { // This is the version of Parent we compile Test.java against, which does // have a static field 'x'. public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field10/test.desc000066400000000000000000000007551333451767700257470ustar00rootroot00000000000000CORE Test.class --function Test.main Stub static field x found for non-stub type java::Test\. In future this will be a fatal error\. assertion at file Test\.java line 6 .* FAILURE ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- Stub static field x found for non-stub type java::Parent\. In future this will be a fatal error\. -- This test is the same as inherited_static_field9, except that the version of Parent we run against has a private static field that Test's 'x' cannot be referring to. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/000077500000000000000000000000001333451767700240425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/InterfaceWithStatic.class000066400000000000000000000006541333451767700310020ustar00rootroot000000000000004    alLjava/util/ArrayList; Signature*Ljava/util/ArrayList;xI()VCodeLineNumberTable SourceFileInterfaceWithStatic.javajava/util/ArrayList    InterfaceWithStaticjava/lang/Objectsize()I    0Y  cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/InterfaceWithStatic.java000066400000000000000000000005171333451767700306140ustar00rootroot00000000000000import java.util.ArrayList; interface InterfaceWithStatic { // The ArrayList is only here to define a constant x that // is complicated enough for javac to generate a static init // rather than just propagate the constant to all users. static ArrayList al = new ArrayList(); static int x = al.size(); } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/Parent.class000066400000000000000000000002701333451767700263210ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile Test.java Parentjava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/Test.class000066400000000000000000000010521333451767700260060ustar00rootroot000000000000004$      $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile Test.java   java/lang/AssertionErrorTest! "#ParentInterfaceWithStaticxIjava/lang/ClassdesiredAssertionStatus()Z!    * M;< Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/Test.java000066400000000000000000000003171333451767700256250ustar00rootroot00000000000000public class Test extends Parent implements InterfaceWithStatic { public static void main() { int val1 = InterfaceWithStatic.x; int val2 = x; assert val1 == val2; } } class Parent { } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field2/test.desc000066400000000000000000000003231333451767700256570ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- This checks that jbmc knows that Test.x and InterfaceWithStatic.x are the same field. All types are concrete (not stubs). cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field3/000077500000000000000000000000001333451767700240435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field3/Test.class000066400000000000000000000010051333451767700260050ustar00rootroot000000000000004"      $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile Test.java java/lang/AssertionErrorTest ! OpaqueParentxIjava/lang/ClassdesiredAssertionStatus()Z!   *  = Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field3/Test.java000066400000000000000000000002421333451767700256230ustar00rootroot00000000000000public class Test extends OpaqueParent { public static void main() { assert x == OpaqueParent.x; } } class OpaqueParent { public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field3/test.desc000066400000000000000000000002531333451767700256620ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- This is the same as test inherited_static_field1, except Test's parent is opaque. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field4/000077500000000000000000000000001333451767700240445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field4/Grandparent.class000066400000000000000000000003151333451767700273370ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Test.java  Grandparentjava/lang/Object  *   cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field4/Parent.class000066400000000000000000000003031333451767700263200ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Test.java Parent Grandparent  *    cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field4/Test.class000066400000000000000000000010371333451767700260130ustar00rootroot000000000000004%      $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile Test.java  !java/lang/AssertionErrorTest" #$ParentxI Grandparentjava/lang/ClassdesiredAssertionStatus()Z!   * E Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field4/Test.java000066400000000000000000000003631333451767700256300ustar00rootroot00000000000000public class Test extends Parent { public static void main(int nondet) { x = nondet; assert x == Grandparent.x; } } class Parent extends Grandparent { public static int x; } class Grandparent { public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field4/test.desc000066400000000000000000000003741333451767700256670ustar00rootroot00000000000000CORE Test.class --function Test.main assertion at file Test\.java line 6 .* FAILURE ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- -- This checks that jbmc knows that the hidden field Grandparent.x is not the same as Test.x, which resolves to Parent.x. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field5/000077500000000000000000000000001333451767700240455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field5/InterfaceWithStatic.class000066400000000000000000000006541333451767700310050ustar00rootroot000000000000004    alLjava/util/ArrayList; Signature*Ljava/util/ArrayList;xI()VCodeLineNumberTable SourceFileInterfaceWithStatic.javajava/util/ArrayList    InterfaceWithStaticjava/lang/Objectsize()I    0Y  cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field5/InterfaceWithStatic.java000066400000000000000000000005171333451767700306170ustar00rootroot00000000000000import java.util.ArrayList; interface InterfaceWithStatic { // The ArrayList is only here to define a constant x that // is complicated enough for javac to generate a static init // rather than just propagate the constant to all users. static ArrayList al = new ArrayList(); static int x = al.size(); } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field5/Test.class000066400000000000000000000010601333451767700260100ustar00rootroot000000000000004$      $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile Test.java   java/lang/AssertionErrorTest! "# OpaqueParentInterfaceWithStaticxIjava/lang/ClassdesiredAssertionStatus()Z!    * M;< Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field5/Test.java000066400000000000000000000003331333451767700256260ustar00rootroot00000000000000public class Test extends OpaqueParent implements InterfaceWithStatic { public static void main() { int val1 = x; int val2 = InterfaceWithStatic.x; assert val1 == val2; } } class OpaqueParent { } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field5/test.desc000066400000000000000000000004441333451767700256660ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- This is the same as inherited_static_field2, except that Test's parent is opaque. It must pass because the field 'x' should be found on InterfaceWithStatic, and so not created as a stub on OpaqueParent. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field6/000077500000000000000000000000001333451767700240465ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field6/Grandparent.class000066400000000000000000000003151333451767700273410ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Test.java  Grandparentjava/lang/Object  *   cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field6/Test.class000066400000000000000000000010451333451767700260140ustar00rootroot000000000000004%      $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile Test.java  !java/lang/AssertionErrorTest" #$ OpaqueParentxI Grandparentjava/lang/ClassdesiredAssertionStatus()Z!   * E Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field6/Test.java000066400000000000000000000003771333451767700256370ustar00rootroot00000000000000public class Test extends OpaqueParent { public static void main(int nondet) { x = nondet; assert x == Grandparent.x; } } class OpaqueParent extends Grandparent { public static int x; } class Grandparent { public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field6/test.desc000066400000000000000000000005451333451767700256710ustar00rootroot00000000000000CORE Test.class --function Test.main assertion at file Test\.java line 6 .* FAILURE ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- -- This test is the same as inherited_static_field4, except that Test's parent is opaque. This checks that jbmc guesses that the hidden field Grandparent.x is not the same as Test.x, which may resolve to the (unseen) Parent.x. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field7/000077500000000000000000000000001333451767700240475ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field7/OpaqueInterfaceWithStatic.java000066400000000000000000000005251333451767700317730ustar00rootroot00000000000000import java.util.ArrayList; interface OpaqueInterfaceWithStatic { // The ArrayList is only here to define a constant x that // is complicated enough for javac to generate a static init // rather than just propagate the constant to all users. static ArrayList al = new ArrayList(); static int x = al.size(); } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field7/Test.class000066400000000000000000000010721333451767700260150ustar00rootroot000000000000004$      $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile Test.java   java/lang/AssertionErrorTest! "#java/lang/ObjectOpaqueInterfaceWithStaticxIjava/lang/ClassdesiredAssertionStatus()Z!    * M;< Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field7/Test.java000066400000000000000000000002711333451767700256310ustar00rootroot00000000000000public class Test implements OpaqueInterfaceWithStatic { public static void main() { int val1 = x; int val2 = OpaqueInterfaceWithStatic.x; assert val1 == val2; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field7/test.desc000066400000000000000000000005131333451767700256650ustar00rootroot00000000000000CORE Test.class --function Test.main ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- -- This test must pass, as there is only one opaque parent (interface_with_static). In particular this one makes sure we don't identify Object as opaque and guess that java.lang.Object.x exists (since we know Object doesn't have static fields). cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field8/000077500000000000000000000000001333451767700240505ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field8/Parent.class000066400000000000000000000003111333451767700263230ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Test.java ParentOpaqueGrandparent  *    cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field8/Test.class000066400000000000000000000011061333451767700260140ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile Test.java  ! java/lang/AssertionError"Test# $%ParentxIOpaqueGrandparentjava/lang/ClassdesiredAssertionStatus()Z!   * a3 Y Y2 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field8/Test.java000066400000000000000000000004371333451767700256360ustar00rootroot00000000000000public class Test extends Parent { public static void main(int nondet) { x = nondet; assert x == Parent.x; assert x == OpaqueGrandparent.x; } } class Parent extends OpaqueGrandparent { public static int x; } class OpaqueGrandparent { public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field8/test.desc000066400000000000000000000006231333451767700256700ustar00rootroot00000000000000CORE Test.class --function Test.main assertion at file Test\.java line 6 .* SUCCESS assertion at file Test\.java line 7 .* FAILURE ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- -- This test is the same as inherited_static_field4, except that Test's grandparent is opaque. This checks that jbmc infers that the hidden field Grandparent.x is not the same as Test.x, which is known to resolve to Parent.x. cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/000077500000000000000000000000001333451767700240515ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/Parent.class000066400000000000000000000002721333451767700263320ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile Parent.java Parentjava/lang/Object!* cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/Parent.java000066400000000000000000000002051333451767700261420ustar00rootroot00000000000000 public class Parent { // This is the version of Parent we will run jbmc against, which does // not have a static field 'x'. } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/Test.class000066400000000000000000000010161333451767700260150ustar00rootroot000000000000004#      $assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTable SourceFile Test.java  java/lang/AssertionErrorTest !"ParentxIjava/lang/ClassdesiredAssertionStatus()Z!   * E Y 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/Test.java000066400000000000000000000001771333451767700256400ustar00rootroot00000000000000public class Test extends Parent { public static void main(int nondet) { x = nondet; assert x == Parent.x; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/compile_against/000077500000000000000000000000001333451767700272075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/compile_against/Parent.class000066400000000000000000000003121333451767700314630ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile Parent.java Parentjava/lang/Object! *   cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/compile_against/Parent.java000066400000000000000000000002341333451767700313020ustar00rootroot00000000000000 public class Parent { // This is the version of Parent we compile Test.java against, which does // have a static field 'x'. public static int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/inherited_static_field9/test.desc000066400000000000000000000012371333451767700256730ustar00rootroot00000000000000CORE Test.class --function Test.main Stub static field x found for non-stub type java::Test\. In future this will be a fatal error\. Stub static field x found for non-stub type java::Parent\. In future this will be a fatal error\. assertion at file Test\.java line 6 .* FAILURE ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- -- This tests the corner case where static fields are found on non-stub types, here caused by compiling Test.class against a version of Parent.class (in directory compile_against) that has a static field but then analysing it with one that doesn't have that field. In future, as the warning messages we check for note, this will be a fatal error. cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof1/000077500000000000000000000000001333451767700215055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof1/instanceof1.class000066400000000000000000000010271333451767700247460ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileinstanceof1.java  java/lang/Objectjava/lang/AssertionError instanceof1 java/lang/ClassdesiredAssertionStatus()Z    *   ;* Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof1/instanceof1.java000066400000000000000000000001531333451767700245610ustar00rootroot00000000000000class instanceof1 { public static void main(String[] args) { assert args instanceof Object; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof1/test.desc000066400000000000000000000001341333451767700233220ustar00rootroot00000000000000CORE instanceof1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof2/000077500000000000000000000000001333451767700215065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof2/instanceof2.class000066400000000000000000000011251333451767700247470ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileinstanceof2.java   java/lang/Objectjava/lang/AssertionError instanceof2! "#java/lang/IntegerTYPELjava/lang/Class;java/lang/ClassdesiredAssertionStatus()Z    *  = Y   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof2/instanceof2.java000066400000000000000000000001601333451767700245610ustar00rootroot00000000000000class instanceof2 { public static void main(String[] args) { assert int.class instanceof Object; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof2/test.desc000066400000000000000000000001401333451767700233200ustar00rootroot00000000000000KNOWNBUG instanceof2.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof3/000077500000000000000000000000001333451767700215075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof3/instanceof3.class000066400000000000000000000010601333451767700247470ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileinstanceof3.java [Ljava/lang/Object;java/lang/AssertionError instanceof3 java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *  ;* Y   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof3/instanceof3.java000066400000000000000000000001551333451767700245670ustar00rootroot00000000000000class instanceof3 { public static void main(String[] args) { assert args instanceof Object[]; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof3/test.desc000066400000000000000000000001341333451767700233240ustar00rootroot00000000000000CORE instanceof3.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof4/000077500000000000000000000000001333451767700215105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof4/instanceof4.class000066400000000000000000000010641333451767700247550ustar00rootroot000000000000004"    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileinstanceof4.java java/lang/Stringjava/lang/AssertionError instanceof4 !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    * < Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof4/instanceof4.java000066400000000000000000000001511333451767700245650ustar00rootroot00000000000000class instanceof4 { public static void main(String[] args) { assert "" instanceof String; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof4/test.desc000066400000000000000000000001341333451767700233250ustar00rootroot00000000000000CORE instanceof4.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof5/000077500000000000000000000000001333451767700215115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof5/instanceof5.class000066400000000000000000000011011333451767700247470ustar00rootroot000000000000004!    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileinstanceof5.java java/lang/Object java/lang/Stringjava/lang/AssertionError instanceof5  java/lang/ClassdesiredAssertionStatus()Z    *  LYL+ Y  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof5/instanceof5.java000066400000000000000000000002071333451767700245710ustar00rootroot00000000000000class instanceof5 { public static void main(String[] args) { Object o=new Object(); assert ! (o instanceof String); } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof5/test.desc000066400000000000000000000001341333451767700233260ustar00rootroot00000000000000CORE instanceof5.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof6/000077500000000000000000000000001333451767700215125ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof6/A.class000066400000000000000000000002721333451767700227220ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileinstanceof6.java Ajava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof6/B.class000066400000000000000000000002531333451767700227220ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileinstanceof6.java BA * cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof6/instanceof6.class000066400000000000000000000011711333451767700247600ustar00rootroot000000000000004&       !$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable" SourceFileinstanceof6.java AB java/lang/AssertionError instanceof6# $%java/lang/Object[LA;java/lang/ClassdesiredAssertionStatus()Z  * {HYYSYYSL+2 Y+2 Y0G 04  @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof6/instanceof6.java000066400000000000000000000003171333451767700245750ustar00rootroot00000000000000class instanceof6 { public static void main(String[] args) { A[] as = { new A(), new B() }; assert(as[0] instanceof A); assert(as[1] instanceof A); } }; class A { } class B extends A { } cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof6/test.desc000066400000000000000000000001341333451767700233270ustar00rootroot00000000000000CORE instanceof6.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof7/000077500000000000000000000000001333451767700215135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof7/A.class000066400000000000000000000002721333451767700227230ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileinstanceof7.java Ajava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof7/B.class000066400000000000000000000002531333451767700227230ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileinstanceof7.java BA * cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof7/instanceof7.class000066400000000000000000000011711333451767700247620ustar00rootroot000000000000004&       !$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable" SourceFileinstanceof7.java AB java/lang/AssertionError instanceof7# $%java/lang/Object[LA;java/lang/ClassdesiredAssertionStatus()Z  * {HYYSYYSL+2 Y+2 Y0G 04  @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof7/instanceof7.java000066400000000000000000000003221333451767700245730ustar00rootroot00000000000000class instanceof7 { public static void main(String[] args) { A[] as = { new A(), new B() }; assert(!(as[0] instanceof B)); assert(as[1] instanceof B); } }; class A { } class B extends A { } cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof7/test.desc000066400000000000000000000001341333451767700233300ustar00rootroot00000000000000CORE instanceof7.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof8/000077500000000000000000000000001333451767700215145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof8/InstanceOf8.class000066400000000000000000000013141333451767700246630ustar00rootroot000000000000004'      !"$assertionsDisabledZ()VCodeLineNumberTabletest(Ljava/lang/Integer;)Z StackMapTablemain([Ljava/lang/String;)V SourceFileInstanceOf8.java java/lang/Integer java/lang/AssertionError # InstanceOf8$ %&java/lang/Object(I)Vjava/lang/ClassdesiredAssertionStatus()Z!   * 4 *  \2 YY Y  1 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof8/InstanceOf8.java000066400000000000000000000004211333451767700244750ustar00rootroot00000000000000public class InstanceOf8 { public static boolean test(Integer i) { if (i instanceof Integer) { return true; } else { return false; } } public static void main(String[] args) { assert(!test(null)); assert(test(new Integer(1))); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/instanceof8/test.desc000066400000000000000000000001111333451767700233240ustar00rootroot00000000000000CORE InstanceOf8.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/integer_without_simplify1/000077500000000000000000000000001333451767700245105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/integer_without_simplify1/test.class000066400000000000000000000003501333451767700265140ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java testjava/lang/Object!* 2<   cbmc-cbmc-5.10/jbmc/regression/jbmc/integer_without_simplify1/test.desc000066400000000000000000000001531333451767700263260ustar00rootroot00000000000000CORE test.class --no-simplify --function test.f --cover location ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/integer_without_simplify1/test.java000066400000000000000000000001031333451767700263240ustar00rootroot00000000000000 public class test { public void f() { int x = 50; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/000077500000000000000000000000001333451767700213145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/A.class000066400000000000000000000001561333451767700225250ustar00rootroot000000000000004 f()V SourceFileinterface1.javaAjava/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/B.class000066400000000000000000000007621333451767700225310ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablef StackMapTable SourceFileinterface1.java java/lang/AssertionErrorB java/lang/ObjectAjava/lang/ClassdesiredAssertionStatus()Z    *  4 Y     4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/C.class000066400000000000000000000003551333451767700225300ustar00rootroot000000000000004   ()VCodeLineNumberTablef SourceFileinterface1.java Cjava/lang/ObjectA *   cbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/interface1.class000066400000000000000000000005301333451767700243620ustar00rootroot000000000000004    ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFileinterface1.java BC   interface1java/lang/ObjectAf   *   ;YLYM+ cbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/interface1.java000066400000000000000000000004651333451767700242050ustar00rootroot00000000000000interface A { public void f(); } class B implements A { public void f() { assert false; // should fail } } class C implements A { public void f() { } } class interface1 { public static void main(String[] args) { A b = new B(); A c = new C(); b.f(); // really calls B.f } } cbmc-cbmc-5.10/jbmc/regression/jbmc/interface1/test.desc000066400000000000000000000001301333451767700231250ustar00rootroot00000000000000CORE interface1.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/000077500000000000000000000000001333451767700211705ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/000077500000000000000000000000001333451767700217465ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/000077500000000000000000000000001333451767700235265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/000077500000000000000000000000001333451767700253475ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/000077500000000000000000000000001333451767700302035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/subpackage/000077500000000000000000000000001333451767700323105ustar00rootroot00000000000000Item.class000066400000000000000000000005361333451767700341620ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/subpackage4 costI()VCodeLineNumberTableLocalVariableTablethis5Lcom/diffblue/javatest/nestedobjects/subpackage/Item; SourceFile Item.java 3com/diffblue/javatest/nestedobjects/subpackage/Itemjava/lang/Object!/*    Item.java000066400000000000000000000001421333451767700337670ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/subpackagepackage com.diffblue.javatest.nestedobjects.subpackage; public class Item { public int cost; } Order.class000066400000000000000000000013171333451767700343350ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/subpackage4   item5Lcom/diffblue/javatest/nestedobjects/subpackage/Item;()VCodeLineNumberTableLocalVariableTablethis6Lcom/diffblue/javatest/nestedobjects/subpackage/Order;hasItem()Z StackMapTablesetItem8(Lcom/diffblue/javatest/nestedobjects/subpackage/Item;)ZexistsZ SourceFile Order.java   4com/diffblue/javatest/nestedobjects/subpackage/Orderjava/lang/Object!  /*    F *      R *=*+     Order.java000066400000000000000000000006561333451767700341560ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/subpackagepackage com.diffblue.javatest.nestedobjects.subpackage; public class Order { public Item item; /** * Checks if this order has an item. */ public boolean hasItem() { if (item == null) { return false; } else { return true; } } /** * Sets the item for this order. */ public boolean setItem(Item item) { boolean exists = hasItem(); this.item = item; return exists; } } readme.txt000066400000000000000000000001051333451767700342230ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/com/diffblue/javatest/nestedobjects/subpackageSource of benchmark: https://github.com/DiffBlue-benchmarks/java-testcbmc-cbmc-5.10/jbmc/regression/jbmc/internal1/test.desc000066400000000000000000000026101333451767700230060ustar00rootroot00000000000000CORE com/diffblue/javatest/nestedobjects/subpackage/Order.class --json-ui --function 'com.diffblue.javatest.nestedobjects.subpackage.Order.setItem:(Lcom/diffblue/javatest/nestedobjects/subpackage/Item;)Z' --cover location --trace activate-multi-line-match EXIT=0 SIGNAL=0 "identifier": "__CPROVER_initialize",\n *"sourceLocation": [{][}]\n *[}],\n *"hidden": false,\n *"internal": true,\n *"stepType": "function-call", "internal": true,\n *"lhs": "tmp_object_factory[$][0-9]+", "internal": false,\n *"sourceLocation": [{]\n *"file": "com/diffblue/javatest/nestedobjects/subpackage/Order.java",\n *"function": "java::com.diffblue.javatest.nestedobjects.subpackage.Order.setItem:[(]Lcom/diffblue/javatest/nestedobjects/subpackage/Item;[)]Z",\n *"line": "21"\n *[}],\n *"stepType": "function-call", "internal": false,\n *"lhs": "this",\n *"mode": "java",\n *"sourceLocation": [{]\n *"file": "com/diffblue/javatest/nestedobjects/subpackage/Order.java",\n *"function": "java::com.diffblue.javatest.nestedobjects.subpackage.Order.setItem:[(]Lcom/diffblue/javatest/nestedobjects/subpackage/Item;[)]Z", "internal": false,\n *"lhs": "item",\n *"mode": "java",\n *"sourceLocation": [{]\n *"file": "com/diffblue/javatest/nestedobjects/subpackage/Order.java",\n *"function": "java::com.diffblue.javatest.nestedobjects.subpackage.Order.setItem:[(]Lcom/diffblue/javatest/nestedobjects/subpackage/Item;[)]Z", -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/invalid_classpath/000077500000000000000000000000001333451767700227635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/invalid_classpath/Test.class000066400000000000000000000003441333451767700247320ustar00rootroot000000000000004    ()VCodeLineNumberTablemain SourceFile Test.java Testjava/lang/Object!*  cbmc-cbmc-5.10/jbmc/regression/jbmc/invalid_classpath/Test.java000066400000000000000000000000601333451767700245410ustar00rootroot00000000000000public class Test { public void main() {} } cbmc-cbmc-5.10/jbmc/regression/jbmc/invalid_classpath/test-jar.desc000066400000000000000000000004131333451767700253520ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --classpath ./NotHere.jar ^EXIT=6$ ^SIGNAL=0$ ^the program has no entry point$ ^failed to load class `Test'$ -- -- symex-driven lazy loading should emit "the program has no entry point" but currently doesn't cbmc-cbmc-5.10/jbmc/regression/jbmc/invalid_classpath/test-path.desc000066400000000000000000000004071333451767700255350ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --classpath ./NotHere ^EXIT=6$ ^SIGNAL=0$ ^the program has no entry point$ ^failed to load class `Test'$ -- -- symex-driven lazy loading should emit "the program has no entry point" but currently doesn't cbmc-cbmc-5.10/jbmc/regression/jbmc/isnan1/000077500000000000000000000000001333451767700204645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/isnan1/test.class000066400000000000000000000034431333451767700224760ustar00rootroot000000000000004A + , - . / 0 1 2 3 4 5 6 7 89 +: ;<=$assertionsDisabledZ()VCodeLineNumberTablemain(I)V StackMapTablecheckeq(FF)Vcheckneqcheckgtcheckgeqcheckltcheckleq(DD)V SourceFile test.java  ! "! #! $! %! &! ' "' #' $' %' &' java/lang/AssertionErrortest> ?@java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!* 2D EJ9$#$#$#$#$# $#  )  )  )  ) ) )r     %*/49>DIOU[agmsy!"   !:"# Y %& "!:"# Y )* #!:"# Y -. $!:"# Y 12 %!:"# Y 56 &!:"# Y 9: ':&( Y => "':&( Y AB #':&( Y EF $':&( Y IJ %':&( Y MN &':&( Y QR(4 @)*cbmc-cbmc-5.10/jbmc/regression/jbmc/isnan1/test.desc000066400000000000000000000012461333451767700223060ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file test.java line 37 .*: FAILURE assertion at file test.java line 45 .*: FAILURE assertion at file test.java line 49 .*: FAILURE assertion at file test.java line 53 .*: FAILURE assertion at file test.java line 57 .*: FAILURE assertion at file test.java line 41 .*: SUCCESS assertion at file test.java line 61 .*: FAILURE assertion at file test.java line 69 .*: FAILURE assertion at file test.java line 73 .*: FAILURE assertion at file test.java line 77 .*: FAILURE assertion at file test.java line 81 .*: FAILURE assertion at file test.java line 65 .*: SUCCESS -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/isnan1/test.java000066400000000000000000000033341333451767700223110ustar00rootroot00000000000000public class test { public static void main(int nondet) { float nan = 0.0f / 0.0f; float one = 1.0f; double nand = 0.0 / 0.0; double oned = 1.0; if(nondet == 1) checkeq(one, nan); if(nondet == 2) checkneq(one, nan); if(nondet == 3) checkgt(one, nan); if(nondet == 4) checkgeq(one, nan); if(nondet == 5) checklt(one, nan); if(nondet == 6) checkleq(one, nan); if(nondet == 7) checkeq(oned, nand); if(nondet == 8) checkneq(oned, nand); if(nondet == 9) checkgt(oned, nand); if(nondet == 10) checkgeq(oned, nand); if(nondet == 11) checklt(oned, nand); else checkleq(oned, nand); } public static void checkeq(float arg1, float arg2) { assert arg1 == arg2; } public static void checkneq(float arg1, float arg2) { assert arg1 != arg2; } public static void checkgt(float arg1, float arg2) { assert arg1 > arg2; } public static void checkgeq(float arg1, float arg2) { assert arg1 >= arg2; } public static void checklt(float arg1, float arg2) { assert arg1 < arg2; } public static void checkleq(float arg1, float arg2) { assert arg1 <= arg2; } public static void checkeq(double arg1, double arg2) { assert arg1 == arg2; } public static void checkneq(double arg1, double arg2) { assert arg1 != arg2; } public static void checkgt(double arg1, double arg2) { assert arg1 > arg2; } public static void checkgeq(double arg1, double arg2) { assert arg1 >= arg2; } public static void checklt(double arg1, double arg2) { assert arg1 < arg2; } public static void checkleq(double arg1, double arg2) { assert arg1 <= arg2; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator1/000077500000000000000000000000001333451767700212055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator1/iterator1.class000066400000000000000000000011051333451767700241430ustar00rootroot000000000000004%    ()VCodeLineNumberTablef(Ljava/util/List;)V StackMapTable Signature'(Ljava/util/List;)V SourceFileiterator1.java     !" #$java/lang/String iterator1java/lang/Objectjava/util/Iteratorjava/util/Listiterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;!  *   Z$=+N--:  #   cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator1/iterator1.java000066400000000000000000000002211333451767700237550ustar00rootroot00000000000000import java.util.List; public class iterator1 { public void f(List list) { int i = 0; for(String s : list) i++; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator1/test.desc000066400000000000000000000002011333451767700230150ustar00rootroot00000000000000CORE iterator1.class --cover location --unwind 3 --function iterator1.f ^EXIT=0$ ^SIGNAL=0$ ^.*SATISFIED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator2/000077500000000000000000000000001333451767700212065ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator2/iterator2.class000066400000000000000000000012511333451767700241470ustar00rootroot000000000000004&    ()VCodeLineNumberTablef(Ljava/util/List;)V StackMapTable Signature9(Ljava/util/List;>;)V SourceFileiterator2.java ! "# $%java/util/Listjava/lang/String iterator2java/lang/Objectjava/util/Iteratoriterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;!  *   X=>+:7:::>  " A G J W  cbmc-cbmc-5.10/jbmc/regression/jbmc/iterator2/iterator2.java000066400000000000000000000003411333451767700237620ustar00rootroot00000000000000import java.util.List; public class iterator2 { public void f(List> list) { int i = 0, j = 0; for(List l : list) { for(String s : l) i++; } for(j=0;j4l6)G{#qgh/y!R2K*6nCANO %0hne1M_dV6yMAY"hPB٨@CYGݧVuotRI4VPKPK'pG META-INF/PK'pGDTV=META-INF/MANIFEST.MFPKmoG test.classPK*cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file1/test.desc000066400000000000000000000001761333451767700226700ustar00rootroot00000000000000CORE some_jar.jar ^EXIT=(0|6)$ ^SIGNAL=0$ ^(VERIFICATION SUCCESSFUL|No support for reading JAR files)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file2/000077500000000000000000000000001333451767700210465ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file2/jar-file2.jar000066400000000000000000000014661333451767700233260ustar00rootroot00000000000000PKd~H META-INF/PKPKd~HMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPKnCDPKM~Hsome_class.classEN@ϴB)?0.\ ٰ u1 ִŇ\$އ2i.f9=31Fk:*TubC&Cis310C%\3[ 8.Nܿbe;#nmw膾pGҘ톶xi?-3^7~!d pƔPLȘH!Pɧ˸Ĉm:LlƐwBǭS+" AvtB tRiQ$0tQeTsW)DdddZHPeԻ9iR"AHdI"Mb9ZX kF~PL| 9@SߡČ|DR]PK7dQePKd~H META-INF/PKd~HnCD=META-INF/MANIFEST.MFPKM~H7dQesome_class.classPKecbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file2/some_class.java000066400000000000000000000001311333451767700240340ustar00rootroot00000000000000class some_class { public static void main(String[] args) { assert false; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file2/test.desc000066400000000000000000000002231333451767700226620ustar00rootroot00000000000000CORE jar-file2.jar --main-class some_class ^EXIT=(10|6)$ ^SIGNAL=0$ ^(VERIFICATION FAILED|No support for reading JAR files)$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/000077500000000000000000000000001333451767700210475ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/A.jar000066400000000000000000000013211333451767700217220ustar00rootroot00000000000000PKoWNJ META-INF/PKPKoWNJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPK"DEPKgWNJjarfile3$A.classEOMK@}$M&&[oB5V7EP(zPoT[g73?_&8E,g-;> ΘՋ.1dsuv mtuI;]>*B4Fݬ^SU4玸[ֶ(o2@}2aF03F\* siǷi:?l ı]; WCfXN נ]!GQzm֖ mPKUQPKoWNJ META-INF/PKoWNJ"DE=META-INF/MANIFEST.MFPKgWNJUQjarfile3$A.classPKcbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/B.jar000066400000000000000000000013211333451767700217230ustar00rootroot00000000000000PKsWNJ META-INF/PKPKsWNJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPK"DEPKgWNJjarfile3$B.classEOMK@}Ӧfݘqz)Bу}SWSHRoy(?J o~}8áD.#;cJV/,œ9w/lnKB0o?™51ŽN2ȻŲk늠ьRz$Lo+ynIҔ ǙΟǷIj=p!b-EnW8*p0@'ZB&e=,9[-C[PK<ɲQPKsWNJ META-INF/PKsWNJ"DE=META-INF/MANIFEST.MFPKgWNJ<ɲQjarfile3$B.classPKcbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/C.jar000066400000000000000000000016461333451767700217360ustar00rootroot00000000000000PK5^NJ META-INF/PKPK5^NJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPK"DEPK[NJjarfile3.classMR]OA=vBJț-I>0&mn_GU"MRfι9wf~::(a:0Qb&Ұ蠈y07܇oaI@l x(j{ı * QI8gat̑@a#dS /0=)0Fro#KM&I9$ ޥ)AFwp~s0|R?Pnj F/#[1Vj9VsYUkh 'N_v;6/>pᄚޔ@'PޅLFqz3GK|Qi{rγq\g_4U΅jԏ,5>8$=;WNPY9e~;F )˨1R*&D=߸a,̭ -`za澡098s &mj[q3.?PK`QPK5^NJ META-INF/PK5^NJ"DE=META-INF/MANIFEST.MFPK[NJ`Qjarfile3.classPKcbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/jarfile3.class000066400000000000000000000013051333451767700235740ustar00rootroot0000000000000040  !" ! # $%  $& '()B InnerClassesA$assertionsDisabledZ()VCodeLineNumberTablef(I)V StackMapTable " SourceFile jarfile3.java  jarfile3$A * jarfile3$B  +,java/lang/AssertionErrorjarfile3- ./java/lang/Object (Ljarfile3;)VxIjava/lang/ClassdesiredAssertionStatus()Z! *y?Y*MY*N, Y -  Y  (> (4  @  cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/jarfile3.java000066400000000000000000000003111333451767700234040ustar00rootroot00000000000000public class jarfile3 { public class A { int x=1; } public class B { int x=1; } void f(int i) { A a=new A(); B b=new B(); assert(a.x==1); assert(b.x==1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file3/test.desc000066400000000000000000000001731333451767700226670ustar00rootroot00000000000000CORE C.jar --function jarfile3.f -classpath A.jar:B.jar ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file4/000077500000000000000000000000001333451767700210505ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file4/A.jar000066400000000000000000000013211333451767700217230ustar00rootroot00000000000000PKoWNJ META-INF/PKPKoWNJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPK"DEPKgWNJjarfile3$A.classEOMK@}$M&&[oB5V7EP(zPoT[g73?_&8E,g-;> ΘՋ.1dsuv mtuI;]>*B4Fݬ^SU4玸[ֶ(o2@}2aF03F\* siǷi:?l ı]; WCfXN נ]!GQzm֖ mPKUQPKoWNJ META-INF/PKoWNJ"DE=META-INF/MANIFEST.MFPKgWNJUQjarfile3$A.classPKcbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file4/B.jar000066400000000000000000000013211333451767700217240ustar00rootroot00000000000000PKsWNJ META-INF/PKPKsWNJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPK"DEPKgWNJjarfile3$B.classEOMK@}Ӧfݘqz)Bу}SWSHRoy(?J o~}8áD.#;cJV/,œ9w/lnKB0o?™51ŽN2ȻŲk늠ьRz$Lo+ynIҔ ǙΟǷIj=p!b-EnW8*p0@'ZB&e=,9[-C[PK<ɲQPKsWNJ META-INF/PKsWNJ"DE=META-INF/MANIFEST.MFPKgWNJ<ɲQjarfile3$B.classPKcbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file4/C.jar000066400000000000000000000016461333451767700217370ustar00rootroot00000000000000PK5^NJ META-INF/PKPK5^NJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krrPK"DEPK[NJjarfile3.classMR]OA=vBJț-I>0&mn_GU"MRfι9wf~::(a:0Qb&Ұ蠈y07܇oaI@l x(j{ı * QI8gat̑@a#dS /0=)0Fro#KM&I9$ ޥ)AFwp~s0|R?Pnj F/#[1Vj9VsYUkh 'N_v;6/>pᄚޔ@'PޅLFqz3GK|Qi{rγq\g_4U΅jԏ,5>8$=;WNPY9e~;F )˨1R*&D=߸a,̭ -`za澡098s &mj[q3.?PK`QPK5^NJ META-INF/PK5^NJ"DE=META-INF/MANIFEST.MFPK[NJ`Qjarfile3.classPKcbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file4/jar.json000066400000000000000000000001641333451767700225200ustar00rootroot00000000000000{ "jar": [ "A.jar", "B.jar" ], "classFiles": [ "jarfile3$A.class", "jarfile3.class" ] } cbmc-cbmc-5.10/jbmc/regression/jbmc/jar-file4/test.desc000066400000000000000000000002331333451767700226650ustar00rootroot00000000000000CORE C.jar --function jarfile3.f --java-cp-include-files '@jar.json' ^EXIT=10$ ^SIGNAL=0$ .*SUCCESS$ .*FAILURE$ ^VERIFICATION FAILED -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace1/000077500000000000000000000000001333451767700215035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace1/Test.class000066400000000000000000000005761333451767700234610ustar00rootroot000000000000004  ()VCodeLineNumberTablemain([B)B StackMapTable SourceFile Test.java Testjava/lang/Object!* C+ => 1+3 `=+3 d= +3`>2     " ) 179 A    cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace1/Test.java000066400000000000000000000004761333451767700232740ustar00rootroot00000000000000public class Test { byte main(byte[] a) { if (a.length != 9) { return -1; } byte diff = 0; for (byte i = 0; i < 9; i++) { if (a[i] == 1) { diff++; } else if (a[i] == 2) { diff--; } else if (a[i] != 0) { return -1; } } return -1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace1/test.desc000066400000000000000000000001621333451767700233210ustar00rootroot00000000000000CORE Test.class --cover location --trace --json-ui --function Test.main ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace2/000077500000000000000000000000001333451767700215045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace2/Test.class000066400000000000000000000004441333451767700234540ustar00rootroot000000000000004  ()VCodeLineNumberTabletest(Ljava/lang/Object;)Z StackMapTable SourceFile Test.java Testjava/lang/Object!* 1+   cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace2/Test.java000066400000000000000000000001521333451767700232640ustar00rootroot00000000000000public class Test { boolean test(Object x) { if(x==null) return false; return true; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace2/test.desc000066400000000000000000000014771333451767700233340ustar00rootroot00000000000000CORE Test.class --cover location --trace --json-ui --function Test.test activate-multi-line-match EXIT=0 SIGNAL=0 "outputID": "return",\n *"sourceLocation": \{\n *"file": "Test\.java",\n *"function": "java::Test\.test:\(Ljava/lang/Object;\)Z",\n *"line": "3"\n *\},\n *"stepType": "output",\n *"thread": 0,\n *"values": \[\n *\{\n *"binary": "00000000",\n *"data": "false",\n *"name": "integer",\n *"type": "boolean",\n *"width": 8 "inputID": "arg1a",\n *"internal": true,\n *"mode": "java",\n *"sourceLocation": \{\n *"file": "Test\.java",\n *"function": "java::Test\.test:\(Ljava/lang/Object;\)Z",\n *"line": "3"\n *\},\n *"stepType": "input",\n *"thread": 0,\n *"values": \[\n *\{\n *"data": "null",\n *"name": "pointer",\n *"type": "struct java\.lang\.Object \{ __CPROVER_string @class_identifier; \} \*" -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace3/000077500000000000000000000000001333451767700215055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace3/Test.class000066400000000000000000000004721333451767700234560ustar00rootroot000000000000004  ()VCodeLineNumberTablemain([J)V StackMapTable SourceFile Test.java Testjava/lang/Object!*  W*<**P   cbmc-cbmc-5.10/jbmc/regression/jbmc/json_trace3/Test.java000066400000000000000000000002371333451767700232710ustar00rootroot00000000000000public class Test { public static void main(long[] a) { if(a.length<3) return; for(int i=0; i(IFI)ViinitialCapacity loadFactorconcurrencyLevelsshiftssizeccap(IF)V(I)V()V(Ljava/util/Map;)VmLjava/util/Map;isEmpty()Zmc[Imcsumsize()Iksumcheckget&(Ljava/lang/Object;)Ljava/lang/Object;keyLjava/lang/Object; containsKey(Ljava/lang/Object;)Z containsValue cleanSweepZvaluefoundcontainsput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; putIfAbsentputAlleEntryLjava/util/Map$Entry;itLjava/util/Iterator;remove'(Ljava/lang/Object;Ljava/lang/Object;)Zreplace9(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)ZoldValuenewValueclear()Ljava/util/Set;ks()Ljava/util/Collection;vseskeys()Ljava/util/Enumeration;elements writeObject(Ljava/io/ObjectOutputStream;)VLLedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$HashEntry;tabM[Ledu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$HashEntry;segJLedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$Segment;sLjava/io/ObjectOutputStream; Exceptions readObject(Ljava/io/ObjectInputStream;)VLjava/io/ObjectInputStream; SourceFileConcurrentHashMap.java jk i_ h_ {"java/lang/IllegalArgumentException Hedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$Segment { {|   _ _    qr wx  java/lang/NullPointerException  n !"# $ %&java/util/Map$Entry '& (& ) * ) lmGedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$KeySet {+ opGedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$Values nmIedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$EntrySetLedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$KeyIteratorNedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$ValueIterator, - . / %0 1Jedu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap$HashEntry 23 &@edu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap/edu/emory/mathcs/backport/java/util/AbstractMap66x6* d*d*  <l6h6 x66** Y$ StfJKLN O#R&S)T/U2V;XDYLZU\[]^^d_m`pasbzcefegu\ !}_yz~_b_&_)_dD_s5_{sK *$ t xyu  yz ~_ b{sB *  t  u yz ~_{s9 *  t  u  yz{s\ *+ n`  *+tu yz sg*L+ M>6+$+2,+2[O`>-6+#+2,.+2t:   "17;E]_eu>(}_>'}_gyzbjk ] [_s *L A 7+ :6 7 A66  +& + 2aA + 2[O`6 76  +-+ 2a7 .+ 2 7    N A6++26+ +2aA6++2  t$ !+6HNS]jy~uz $*}_ V1}_ !p__}_}_}_yzjkZ ZsU+=*+t u yz q_sU+=*+t u yz q_sm + Y *M, N6666,0,26-,2[O`6,2+!606,&,26 -.,2 6 ~6,,266,,2+! 6 &:  : 6  ,, 2  t' $%()"*%+/,8-I.T/V+\1_2d3n4w5673;<(?@?ACDEFCILJKJMu8_(4}_w_ g*}_"v_%s__9_}_}_}_ yzjkMs:*+"t`uyzsu!, Y +>*+,#tqr stu*!yz!! q_su!, Y +>*+,#t u*!yz!! q_s4+$%M,&!,'(N*-)-*+Wܱt3u* '4yz4sV+=*+,t u yz q_sv",+>*+,,tu*"yz""q_s(,- Y +6*+,--tu4(yz(((q_st , Y +>*+,.t u* yz   q_s[<**2/t u}_yzlsS*0L++*1Y*2Z0t uyzmosS*3L++*4Y*5Z3t uyzpnsS*6L++*7Y*8Z6t   uyzms3 9Y*:tu  yzs3 ;Y*<tu  yzs4z+==*c*2N-->:612:+?@+A@B:- :-+@+@Y``b`tJ +7@ISY]`iotyuH2!#6}_ 9Si_zyzzs>+C=**2DE+FM+FN, *,-+Wt* "',03=u4}_',>yz>LZ 7GK4GM1GNOGPQGR;GS9GTUGV GWDGX( cbmc-cbmc-5.10/jbmc/regression/jbmc/jsr1/test.desc000066400000000000000000000004771333451767700220010ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure edu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap.class --show-goto-functions ^EXIT=0$ ^SIGNAL=0$ -- \\"statement\\" \(\\"jsr\\"\) \\"statement\\" \(\\"ret\\"\) -- This doesn't work under symex-driven lazy loading because no entry-point function is given. cbmc-cbmc-5.10/jbmc/regression/jbmc/jsr2/000077500000000000000000000000001333451767700201535ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/jsr2/test.class000066400000000000000000000003071333451767700221610ustar00rootroot00000000000000. java/lang/Object SourceFilemain  Code test.jatest()V!  *  KN cbmc-cbmc-5.10/jbmc/regression/jbmc/jsr2/test.desc000066400000000000000000000003141333451767700217700ustar00rootroot00000000000000CORE test.class --show-goto-functions --function test.main ^EXIT=0$ ^SIGNAL=0$ Labels: pc3 Labels: pc6 Labels: pc9 Labels: pc12 Labels: pc13 -- \\"statement\\" \(\\"jsr\\"\) \\"statement\\" \(\\"ret\\"\) cbmc-cbmc-5.10/jbmc/regression/jbmc/jsr2/test.j000066400000000000000000000010031333451767700212770ustar00rootroot00000000000000; This is Jasmin assembler syntax-- see http://jasmin.sourceforge.net/guide.html or apt-get install jasmin-sable .class public test .super java/lang/Object ; standard initializer .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public static main()V .limit locals 4 .limit stack 1 goto runsrs sr1: astore_0 ret 0 runsrs: jsr sr1 jsr sr2 return sr2: astore_3 ret 3 .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/000077500000000000000000000000001333451767700205745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/B.class000066400000000000000000000023121333451767700220020ustar00rootroot000000000000004@   @ !o  & '()yIdmulLjava/util/function/Function; SignatureCLjava/util/function/Function;()VCodeLineNumberTableset(I)Vlambda$static$0&(Ljava/lang/Double;)Ljava/lang/Double; SourceFileB.java  * +, -.BootstrapMethods/01 23 Bjava/lang/Objectjava/lang/Double doubleValue()DvalueOf(D)Ljava/lang/Double; 45&(Ljava/lang/Object;)Ljava/lang/Object; 6apply()Ljava/util/function/Function;7 8< "java/lang/invoke/LambdaMetafactory metafactory>Lookup InnerClasses(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;?%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandles!  *"*  $ *k! ; 9=:! "#$%cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/B.java000066400000000000000000000002571333451767700216240ustar00rootroot00000000000000public class B { public int y; public static java.util.function.Function dmul = x -> x * 3.1415; public void set(int x) { y = x; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/C.class000066400000000000000000000007121333451767700220050ustar00rootroot000000000000004  ()VCodeLineNumberTableis_ok(Ljava/lang/Integer;)Z(Ljava/lang/Object;)Z Signature5Ljava/lang/Object;LCustomLambda; SourceFileLambdatest.java java/lang/Integer Cjava/lang/Object CustomLambda  * ]   _A  ! *+ ]cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/CustomLambda.class000066400000000000000000000004531333451767700242000ustar00rootroot000000000000004  is_ok(Ljava/lang/Object;)Z Signature(TT;)Z(Ljava/lang/Object; SourceFileCustomLambda.javaRuntimeVisibleAnnotationsLjava/lang/FunctionalInterface; CustomLambdajava/lang/Object  cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/CustomLambda.java000066400000000000000000000001131333451767700240050ustar00rootroot00000000000000@FunctionalInterface interface CustomLambda { boolean is_ok(T t); } cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/Lambdatest$A.class000066400000000000000000000005101333451767700240440ustar00rootroot000000000000004  xIthis$0 LLambdatest;(LLambdatest;)VCodeLineNumberTable SourceFileLambdatest.java   Lambdatest$AA InnerClassesjava/lang/Object()V Lambdatest   " *+*   cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/Lambdatest.class000066400000000000000000000101401333451767700236770ustar00rootroot000000000000004 '\b cg h ij \ k lmnr st uw xz { (|z ~zz    \        uA InnerClassescustomLCustomLambda; Signature#LCustomLambda;addLjava/util/function/BiFunction;XLjava/util/function/BiFunction;zIaLLambdatest$A;bLB;()VCodeLineNumberTablegX(Ljava/lang/Float;Ljava/lang/Integer;Ljava/util/function/BiFunction;)Ljava/lang/Integer;(Ljava/lang/Float;Ljava/lang/Integer;Ljava/util/function/BiFunction;)Ljava/lang/Integer;f:(Ljava/lang/Float;Ljava/lang/Integer;Ljava/lang/Integer;)Ii(I)Ijklmd(Ljava/lang/Double;)Dcapture2(Ljava/lang/Float;)I(Ljava/lang/Integer;)Zmain([Ljava/lang/String;)V lambda$m$7((Ljava/lang/Integer;)Ljava/lang/Integer; lambda$l$6 lambda$k$5 lambda$j$4 lambda$i$3)(ILjava/lang/Integer;)Ljava/lang/Integer; lambda$f$2;(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer; lambda$new$19(Ljava/lang/Float;Ljava/lang/Integer;)Ljava/lang/Integer; lambda$new$0 SourceFileLambdatest.java 89BootstrapMethodsK +,X /0 23B 67 java/lang/IntegerO    45 3 3 java/lang/Double   Lambdatest ?@ AB CB DB EB FB java/lang/Object Lambdatest$A (Ljava/lang/Object;)Z is_ok()LCustomLambda;8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; apply!()Ljava/util/function/BiFunction;java/util/function/BiFunction&(Ljava/lang/Object;)Ljava/lang/Object; 2(Ljava/lang/Integer;)Ljava/util/function/Function;java/util/function/FunctionintValue()I  (I)Ljava/util/function/Function;valueOf(I)Ljava/lang/Integer; +(LLambdatest;)Ljava/util/function/Function;x y  dmulLjava/util/function/Function; doubleValue()D CustomLambdajava/lang/Float(F)Ljava/lang/Float;set(I)V YK WX UV ST RO QO PO NO"java/lang/invoke/LambdaMetafactory metafactoryLookup(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandles!'+,-./0-123456789:P(**** *Y ;  <=:$ -+,  ;->?@:H(*+,  : :-  ;AB::=N-  ; CB:4*M,  ; !"DB:A!* *M,  ;& ()EB:]5*  *M*Y * ,  ;- .34$5FB:A!*  *M,  ;9 :?GH:(+ ;DIJ:-*+  ;H+K:# *+;L LM:l8YL+ W+ W+!W+"W+#W+$W;"STUV%W+X1Y7ZNO::+* h=* ;; <=PO::+* h=* %;/ 01QO:(+*h;(RO:% +*h;! ST:" +h; UV:% +*h; WX:% *&+`;  YK:; Z[*()]R^_`a^def^opq^ovq^oyq^o}q^oq^oqcbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/Lambdatest.java000066400000000000000000000041141333451767700235170ustar00rootroot00000000000000import java.util.function.*; public class Lambdatest { class A { int x; } CustomLambda custom = x -> true; BiFunction add = (x0, y0) -> x0.intValue() + y0; int z = 10; A a; B b = new B(); public Integer g(Float x, Integer y, BiFunction fun) { return fun.apply(x, y); } public int f(Float x, Integer y, Integer z) { Integer tmp = add.apply(x, y); Function mul = (a) -> a * tmp; return mul.apply(z); } public int i(int x) { int z = 5; Function foo = (a) -> a * z; return foo.apply(x); } public int j(int x) { Function foo = (a) -> a * z; return foo.apply(x); } public int k(int x) { a.x = 10; Function foo = (y) -> y * a.x; return foo.apply(x); } public int l(int x) { b.y = 10; Function foo = (y) -> { int r = y * b.y; b.set(r); return r; }; b = new B(); b.y = 14; return foo.apply(x); } public int m(int x) { b.y = 10; Function foo = (y) -> { int r = y * b.y; b.y = r; return r; }; return foo.apply(x); } // test static field of different class public double d(Double x) { return B.dmul.apply(x); } public int capture2(Float a) { return add.apply(a, 1); } public boolean custom(Integer i) { return custom.is_ok(i); } public static void main(String[] args) { // Uses all of the above test functions, to ensure they are loaded under // symex-driven loading: Lambdatest lt = new Lambdatest(); lt.f(0.0f, 0, 0); lt.i(0); lt.j(0); lt.k(0); lt.l(0); lt.m(0); } } class C implements CustomLambda { public boolean is_ok(Integer i) { return true; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda1/test.desc000066400000000000000000000015741333451767700224220ustar00rootroot00000000000000CORE Lambdatest.class --verbosity 10 --show-goto-functions --function Lambdatest.main lambda function reference lambda\$new\$0 in class \"Lambdatest\" lambda function reference lambda\$new\$1 in class \"Lambdatest\" lambda function reference lambda\$f\$2 in class \"Lambdatest\" lambda function reference lambda\$i\$3 in class \"Lambdatest\" lambda function reference lambda\$j\$4 in class \"Lambdatest\" lambda function reference lambda\$k\$5 in class \"Lambdatest\" lambda function reference lambda\$l\$6 in class \"Lambdatest\" lambda function reference lambda\$m\$7 in class \"Lambdatest\" lambda function reference lambda\$static\$0 in class \"B\" ^EXIT=0$ ^SIGNAL=0$ -- -- Incompatible with symex-driven lazy loading because this test wants to process everything in the given class, not the functions reachable from a particular entry point, which is required for symex-driven loading. cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/000077500000000000000000000000001333451767700205755ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/StaticMethodRef.class000066400000000000000000000030151333451767700246500ustar00rootroot000000000000004NStaticMethodRefjava/lang/Object()VCode  LineNumberTableSmr((Ljava/lang/Integer;)Ljava/lang/Integer; apply()Ljava/util/function/Function;  !()Ljava/util/function/BiFunction; java/lang/Integer valueOf(I)Ljava/lang/Integer; java/util/function/Function &(Ljava/lang/Object;)Ljava/lang/Object; ! "#equals(Ljava/lang/Object;)Z%8'0111 )+*java/util/function/BiFunction ,8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; StackMapTable SourceFileStaticMethodRef.javaBootstrapMethods 243"java/lang/invoke/LambdaMetafactory 56 metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;1  = >'(Ljava/lang/String;)Ljava/lang/Integer;<>, C D((Ljava/lang/String;I)Ljava/lang/Integer;B:(Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;F InnerClassesJ%java/lang/invoke/MethodHandles$LookupLjava/lang/invoke/MethodHandlesLookup!*  vMN:+,  , +-$ -$+&( &(+ *   %4COct-4)$./0 789:7;?@7AEGH IKMcbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/StaticMethodRef.java000066400000000000000000000011021333451767700244570ustar00rootroot00000000000000import java.util.function.Function; import java.util.function.BiFunction; public class StaticMethodRef{ public Integer Smr(Integer ctr) { Function func1 = Integer::valueOf; // Uses Integer.valueOf(String) Function func2 = Integer::valueOf; BiFunction func3 = Integer::valueOf; if (ctr.equals(func1.apply(9))) return func1.apply(9); if (ctr.equals(func2.apply("8"))) return func2.apply("8"); if (ctr.equals(func3.apply("0111", 2))) return func3.apply("0111", 2); return ctr; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/SymStream.class000066400000000000000000000105731333451767700235560ustar00rootroot000000000000004 !X Y Z [\ X ] ^_ X `a b `c dj kl mn kop q `r s `t u `v %w xy X t z {|streamIdLjava/lang/String; streamType~Type InnerClasses;externalLjava/lang/Boolean;()VCodeLineNumberTableLocalVariableTablethis2Lorg/symphonyoss/symphony/clients/model/SymStream; getStreamId()Ljava/lang/String; setStreamId(Ljava/lang/String;)V getStreamType>()Lorg/symphonyoss/symphony/clients/model/SymStreamTypes$Type; setStreamType?(Lorg/symphonyoss/symphony/clients/model/SymStreamTypes$Type;)V getRoomName setRoomName getMembers()Ljava/util/List;D()Ljava/util/List; setMembers(Ljava/util/List;)VLocalVariableTypeTableE(Ljava/util/List;)V getExternal()Ljava/lang/Boolean; setExternal(Ljava/lang/Boolean;)V toSymStreamc(Lorg/symphonyoss/symphony/agent/model/V4Stream;)Lorg/symphonyoss/symphony/clients/model/SymStream;stream/Lorg/symphonyoss/symphony/agent/model/V4Stream; symStream StackMapTable__(Lorg/symphonyoss/symphony/clients/model/SymStream;)Lorg/symphonyoss/symphony/pod/model/Stream;+Lorg/symphonyoss/symphony/pod/model/Stream;_(Lorg/symphonyoss/symphony/pod/model/Stream;)Lorg/symphonyoss/symphony/clients/model/SymStream; SourceFileSymStream.java 01 "# $( )#java/util/ArrayList *+ ./0org/symphonyoss/symphony/clients/model/SymStream HI JK AB NBootstrapMethods   java/util/List DE ?8 @: 78 9: ;8 =>)org/symphonyoss/symphony/pod/model/Stream : 8java/lang/Object:org/symphonyoss/symphony/clients/model/SymStreamTypes$Type-org/symphonyoss/symphony/agent/model/V4Stream()Ljava/util/stream/Stream; &(Ljava/lang/Object;)Ljava/lang/Object; _(Lorg/symphonyoss/symphony/agent/model/V4User;)Lorg/symphonyoss/symphony/clients/model/SymUser;apply()Ljava/util/function/Function;java/util/stream/Streammap8(Ljava/util/function/Function;)Ljava/util/stream/Stream;java/util/stream/CollectorstoList()Ljava/util/stream/Collector;collect0(Ljava/util/stream/Collector;)Ljava/lang/Object; fromValueP(Ljava/lang/String;)Lorg/symphonyoss/symphony/clients/model/SymStreamTypes$Type;setIdgetId5org/symphonyoss/symphony/clients/model/SymStreamTypes  "java/lang/invoke/LambdaMetafactory metafactoryLookup(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;.org/symphonyoss/symphony/clients/model/SymUser toSymUser%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandles! !"#$()#*+,-./012b$*****Y*3%( +.144 $56782/*384 569:2>*+3 <=456"#;<2/*3@4 56=>2>*+3 DE456$(?82/*3H4 56@:2>*+3 LM456)#AB2/*3P4 56,CDE2P*+3 TU456*+F *-,GHI2/*3X4 56JK2>*+3 \]456./ LM2\* Y L+* +* * +*+*+*+3* abegi8k?lGnOpZr4\NONP6Q @R LS2e*YL+*+3xy|~4P6 NTQ LU2e* Y L+* +34NT P6QVW'%}&@e fghicbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/readme.txt000066400000000000000000000001741333451767700225750ustar00rootroot00000000000000from https://github.com/symphonyoss/symphony-java-client/ The StaticMethodRef.class is compiled using the Eclipse Compiler cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/test.desc000066400000000000000000000004171333451767700224160ustar00rootroot00000000000000KNOWNBUG SymStream.class --verbosity 10 --show-goto-functions lambda function reference org/symphonyoss/symphony/clients/model/SymUser\.toSymUser in class \"SymStream\" ^EXIT=0 ^SIGNAL=0 -- -- lambda functions without "lambda$" prefix aren't recognized currently TG-2691 cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/test_no_crash.desc000066400000000000000000000004731333451767700242740ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure SymStream.class --no-lazy-methods --verbosity 10 --show-goto-functions ^EXIT=0 ^SIGNAL=0 -- -- just to test that it doesn't crash in this situation, cf. TG-2684 Doesn't work with symex-driven loading because there is no entry point (we want to load the entire class) cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda2/test_no_crash_ecj.desc000066400000000000000000000007061333451767700251140ustar00rootroot00000000000000CORE StaticMethodRef.class --function StaticMethodRef.Smr VERIFICATION FAILED EXIT=10 SIGNAL=0 ^SIGNAL=0 -- -- Tests that it doesn't crash when failing to read a `BootstrapMethods` entry and there is another attribute after this. The EXIT=10/VERIFCATION FAILED comes from the fact that the invokedynamic currently returns a null object, causing our model of this to predict a null pointer exception. This test will need to be adjusted when lambdas work. cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda3/000077500000000000000000000000001333451767700205765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda3/LambdaTest/000077500000000000000000000000001333451767700226165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda3/LambdaTest/Lamb1.class000066400000000000000000000002441333451767700246010ustar00rootroot000000000000004  lambFunc1((Ljava/lang/Integer;)Ljava/lang/Integer; SourceFile Test.javaLambdaTest/Lamb1java/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/lambda3/LambdaTest/Test.class000066400000000000000000000026441333451767700245720ustar00rootroot000000000000004A " #$ %& %'()()VCodeLineNumberTableLocalVariableTablethisLLambdaTest/Test; recvLambda;(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;yLjava/lang/Integer;zlmb1LLambdaTest/Lamb1; StackMapTable*lambda$recvLambda$0N(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;x SourceFile Test.java  BootstrapMethods+,- ./* .,0 12 34LambdaTest/Testjava/lang/ObjectLambdaTest/Lamb1 56((Ljava/lang/Integer;)Ljava/lang/Integer; 7 lambFunc1:(Ljava/lang/Integer;Ljava/lang/Integer;)LLambdaTest/Lamb1;java/lang/IntegerintValue()IvalueOf(I)Ljava/lang/Integer;8 9= "java/lang/invoke/LambdaMetafactory metafactory?Lookup InnerClasses(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;@%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandles   /*     x *+M,+ ,*,+         M*+`YM  < :>;  ! cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda3/LambdaTest/Test.java000066400000000000000000000005221333451767700243770ustar00rootroot00000000000000package LambdaTest; interface Lamb1 { public Integer lambFunc1(Integer x); } class Test { public static Integer recvLambda(Integer y, Integer z) { Lamb1 lmb1 = (x) -> x = y + z; // Initializing in a lambda statement if (lmb1 != null && z != null) { return lmb1.lambFunc1(y); } return lmb1.lambFunc1(z); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lambda3/test.desc000066400000000000000000000002631333451767700224160ustar00rootroot00000000000000CORE LambdaTest/Test.class --show-symbol-table --function LambdaTest.Test.recvLambda ^EXIT=0$ ^SIGNAL=0$ -- -- This is to verify that parsing lambdas in a package does not crash. cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading1/000077500000000000000000000000001333451767700216715ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading1/A.class000066400000000000000000000003361333451767700231020ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Ajava/lang/Object *    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading1/B.class000066400000000000000000000003361333451767700231030ustar00rootroot000000000000004    ()VCodeLineNumberTableg SourceFile test.java Bjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading1/test.class000066400000000000000000000004441333451767700237010ustar00rootroot000000000000004  aLA;bLB;()VCodeLineNumberTablemain SourceFile test.java   testjava/lang/ObjectAf!  *    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading1/test.desc000066400000000000000000000004371333451767700235140ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.main ^EXIT=0$ ^SIGNAL=0$ elaborate java::A\.f:\(\)V -- elaborate java::B\.g:\(\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading1/test.java000066400000000000000000000003771333451767700235220ustar00rootroot00000000000000// The most basic lazy loading test: A::f is directly called, B::g should be unreachable public class test { A a; B b; public static void main() { A.f(); } } class A { public static void f() {} } class B { public static void g() {} } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading10/000077500000000000000000000000001333451767700217515ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading10/test.class000066400000000000000000000006741333451767700237660ustar00rootroot000000000000004   xIy()VCodeLineNumberTablesetx(I)Vsety(F)Vf SourceFile test.java  testjava/lang/Object!  '***   *  *  *#      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading10/test.desc000066400000000000000000000005561333451767700235760ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.f --lazy-methods-extra-entry-point test.sety ^SIGNAL=0$ CI lazy methods: elaborate java::test\.sety:\(I\)V CI lazy methods: elaborate java::test\.sety:\(F\)V -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading10/test.java000066400000000000000000000003671333451767700236010ustar00rootroot00000000000000public class test { int x; int y; public test() { x = 1; y = 2; } public void setx(int _x) { x = _x; } public void sety(int _y) { y = _y; } public void sety(float _y) { y = (int)_y; } public void f() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading11/000077500000000000000000000000001333451767700217525ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading11/test.class000066400000000000000000000006741333451767700237670ustar00rootroot000000000000004   xIy()VCodeLineNumberTablesetx(I)Vsety(F)Vf SourceFile test.java  testjava/lang/Object!  '***   *  *  *#      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading11/test.desc000066400000000000000000000007771333451767700236040ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.f --lazy-methods-extra-entry-point 'test.sety:\(I\)V' --lazy-methods-extra-entry-point 'test.sety:\(F\)V' ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL CI lazy methods: elaborate java::test\.sety:\(I\)V CI lazy methods: elaborate java::test\.sety:\(F\)V -- CI lazy methods: elaborate java::test\.setx:\(I\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading11/test.java000066400000000000000000000003671333451767700236020ustar00rootroot00000000000000public class test { int x; int y; public test() { x = 1; y = 2; } public void setx(int _x) { x = _x; } public void sety(int _y) { y = _y; } public void sety(float _y) { y = (int)_y; } public void f() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading2/000077500000000000000000000000001333451767700216725ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading2/A.class000066400000000000000000000003361333451767700231030ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Ajava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading2/B.class000066400000000000000000000003361333451767700231040ustar00rootroot000000000000004    ()VCodeLineNumberTableg SourceFile test.java Bjava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading2/test.class000066400000000000000000000004661333451767700237060ustar00rootroot000000000000004   aLA;bLB;()VCodeLineNumberTablemain SourceFile test.java A  testjava/lang/Objectf!   *   - YK* cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading2/test.desc000066400000000000000000000004371333451767700235150ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.main ^EXIT=0$ ^SIGNAL=0$ elaborate java::A\.f:\(\)V -- elaborate java::B\.g:\(\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading2/test.java000066400000000000000000000004311333451767700235120ustar00rootroot00000000000000// This test checks that because A is instantiated in main and B is not, // A::f is reachable and B::g is not public class test { A a; B b; public static void main() { A a = new A(); a.f(); } } class A { public void f() {} } class B { public void g() {} } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/000077500000000000000000000000001333451767700216735ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/A.class000066400000000000000000000003361333451767700231040ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Ajava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/B.class000066400000000000000000000003361333451767700231050ustar00rootroot000000000000004    ()VCodeLineNumberTableg SourceFile test.java Bjava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/C.class000066400000000000000000000003051333451767700231020ustar00rootroot000000000000004   aLA;()VCodeLineNumberTable SourceFile test.java Cjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/D.class000066400000000000000000000003051333451767700231030ustar00rootroot000000000000004   bLB;()VCodeLineNumberTable SourceFile test.java Djava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/test.class000066400000000000000000000005261333451767700237040ustar00rootroot000000000000004   ()VCodeLineNumberTablemain(LC;)V StackMapTable SourceFile test.java   testjava/lang/ObjectCaLA;Af!*  B* **     cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/test.desc000066400000000000000000000004371333451767700235160ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.main ^EXIT=0$ ^SIGNAL=0$ elaborate java::A\.f:\(\)V -- elaborate java::B\.g:\(\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading3/test.java000066400000000000000000000005641333451767700235220ustar00rootroot00000000000000// This test checks that because `main` has a parameter of type C, which has a field of type A, // A::f is considered reachable, but B::g is not. public class test { public static void main(C c) { if(c==null || c.a==null) return; c.a.f(); } } class A { public void f() {} } class B { public void g() {} } class C { A a; } class D { B b; } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading4/000077500000000000000000000000001333451767700216745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading4/Main.class000066400000000000000000000004701333451767700236100ustar00rootroot000000000000004   ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile Main.java Problem Mainjava/lang/ObjectcheckInvariant! *   ' Y   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading4/Main.java000066400000000000000000000004451333451767700234260ustar00rootroot00000000000000class Problem { private static final Object[] DEFAULT = {}; private Object data; Problem() { this.data = DEFAULT; } void checkInvariant() { assert data != null; } } public class Main { public static void main(String[] args) { new Problem().checkInvariant(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading4/Problem.class000066400000000000000000000011671333451767700243300ustar00rootroot000000000000004%       !DEFAULT[Ljava/lang/Object;dataLjava/lang/Object;$assertionsDisabledZ()VCodeLineNumberTablecheckInvariant StackMapTable SourceFile Main.java  java/lang/AssertionErrorProblem" #$java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    , ** ;* Y   ?   @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading4/test.desc000066400000000000000000000003351333451767700235140ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Main.class --lazy-methods ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading5/000077500000000000000000000000001333451767700216755ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading5/other.class000066400000000000000000000005021333451767700240420ustar00rootroot000000000000004  xI()VCodeLineNumberTablegetx()I SourceFile test.java  otherjava/lang/Object   *      ! cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading5/test.class000066400000000000000000000010221333451767700236760ustar00rootroot000000000000004#     $assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile test.java  java/lang/AssertionErrortest !"java/lang/Objectothergetx()Ijava/lang/ClassdesiredAssertionStatus()Z!   *   ; Y   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading5/test.desc000066400000000000000000000003621333451767700235150ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --function test.main ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading5/test.java000066400000000000000000000003061333451767700235160ustar00rootroot00000000000000 public class test { public static void main() { assert(other.getx()==1); } } class other { public static int x; public static int getx() { return x; } static { x=1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading6/000077500000000000000000000000001333451767700216765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading6/test.class000066400000000000000000000006741333451767700237130ustar00rootroot000000000000004   xIy()VCodeLineNumberTablesetx(I)Vsety(F)Vf SourceFile test.java  testjava/lang/Object!  '***   *  *  *#      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading6/test.desc000066400000000000000000000007021333451767700235140ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.f --lazy-methods-extra-entry-point test.setx ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL CI lazy methods: elaborate java::test\.setx:\(I\)V -- CI lazy methods: elaborate java::test\.sety:\(I\)V CI lazy methods: elaborate java::test\.sety:\(F\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading6/test.java000066400000000000000000000003671333451767700235260ustar00rootroot00000000000000public class test { int x; int y; public test() { x = 1; y = 2; } public void setx(int _x) { x = _x; } public void sety(int _y) { y = _y; } public void sety(float _y) { y = (int)_y; } public void f() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading7/000077500000000000000000000000001333451767700216775ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading7/test.class000066400000000000000000000006741333451767700237140ustar00rootroot000000000000004   xIy()VCodeLineNumberTablesetx(I)Vsety(F)Vf SourceFile test.java  testjava/lang/Object!  '***   *  *  *#      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading7/test.desc000066400000000000000000000007131333451767700235170ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.f --lazy-methods-extra-entry-point 'test.sety:\(I\)V' ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL CI lazy methods: elaborate java::test\.sety:\(I\)V -- CI lazy methods: elaborate java::test\.setx:\(I\)V CI lazy methods: elaborate java::test\.sety:\(F\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading7/test.java000066400000000000000000000003671333451767700235270ustar00rootroot00000000000000public class test { int x; int y; public test() { x = 1; y = 2; } public void setx(int _x) { x = _x; } public void sety(int _y) { y = _y; } public void sety(float _y) { y = (int)_y; } public void f() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading8/000077500000000000000000000000001333451767700217005ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading8/test.class000066400000000000000000000006741333451767700237150ustar00rootroot000000000000004   xIy()VCodeLineNumberTablesetx(I)Vsety(F)Vf SourceFile test.java  testjava/lang/Object!  '***   *  *  *#      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading8/test.desc000066400000000000000000000007131333451767700235200ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.f --lazy-methods-extra-entry-point 'test.sety:\(F\)V' ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL CI lazy methods: elaborate java::test\.sety:\(F\)V -- CI lazy methods: elaborate java::test\.sety:\(I\)V CI lazy methods: elaborate java::test\.setx:\(I\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading8/test.java000066400000000000000000000003671333451767700235300ustar00rootroot00000000000000public class test { int x; int y; public test() { x = 1; y = 2; } public void setx(int _x) { x = _x; } public void sety(int _y) { y = _y; } public void sety(float _y) { y = (int)_y; } public void f() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading9/000077500000000000000000000000001333451767700217015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading9/test.class000066400000000000000000000006741333451767700237160ustar00rootroot000000000000004   xIy()VCodeLineNumberTablesetx(I)Vsety(F)Vf SourceFile test.java  testjava/lang/Object!  '***   *  *  *#      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading9/test.desc000066400000000000000000000007011333451767700235160ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.f --lazy-methods-extra-entry-point 'test.*' ^EXIT=0$ ^SIGNAL=0$ VERIFICATION SUCCESSFUL CI lazy methods: elaborate java::test\.setx:\(I\)V CI lazy methods: elaborate java::test\.sety:\(I\)V CI lazy methods: elaborate java::test\.sety:\(F\)V -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading9/test.java000066400000000000000000000003671333451767700235310ustar00rootroot00000000000000public class test { int x; int y; public test() { x = 1; y = 2; } public void setx(int _x) { x = _x; } public void sety(int _y) { y = _y; } public void sety(float _y) { y = (int)_y; } public void f() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_array_parameter/000077500000000000000000000000001333451767700250465ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_array_parameter/asserthere.class000066400000000000000000000007721333451767700302500ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTabledoassert(Z)V StackMapTable SourceFile test.java  java/lang/AssertionError asserthere java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   4 Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_array_parameter/test.class000066400000000000000000000006421333451767700270560ustar00rootroot000000000000004   ()VCodeLineNumberTablef()Ig ([Ltest;)V StackMapTable SourceFile test.java   testjava/lang/Object assertheredoassert(Z)V!*    U$** *2*2   #  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_array_parameter/test.desc000066400000000000000000000004341333451767700266660ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.g ^EXIT=0$ ^SIGNAL=0$ elaborate java::test\.f:\(\)I VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_array_parameter/test.java000066400000000000000000000007061333451767700266730ustar00rootroot00000000000000 public class test { public int f() { return 1; } public static void g(test[] args) { if(args == null || args.length != 1 || args[0] == null) return; asserthere.doassert(args[0].f() == 1); } } class asserthere { // Used to avoid lazy-loading currently marking any class with an // $assertionsEnabled member (i.e. any class that asserts) as needed. public static void doassert(boolean condition) { assert(condition); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/000077500000000000000000000000001333451767700243235ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/Base.class000066400000000000000000000004521333451767700262250ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLBase;f SourceFile test.java Basejava/lang/Object /*  +    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/Derived.class000066400000000000000000000004461333451767700267400ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethis LDerived;f SourceFile test.java DerivedMiddle /*  +    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/Foo.class000066400000000000000000000004061333451767700260750ustar00rootroot000000000000004 entryLcycle1;()VCodeLineNumberTableLocalVariableTablethisLFoo; SourceFile test.java Foojava/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/Middle.class000066400000000000000000000003741333451767700265540ustar00rootroot000000000000004 cLcycle1;()VCodeLineNumberTableLocalVariableTablethisLMiddle; SourceFile test.java MiddleBase /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/cycle1.class000066400000000000000000000004101333451767700265250ustar00rootroot000000000000004 cLMiddle;()VCodeLineNumberTableLocalVariableTablethisLcycle1; SourceFile test.java cycle1java/lang/Object /*    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/cycle2.class000066400000000000000000000003171333451767700265340ustar00rootroot000000000000004   cLcycle1;()VCodeLineNumberTable SourceFile test.java cycle2java/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/test.class000066400000000000000000000007441333451767700263360ustar00rootroot000000000000004%    ()VCodeLineNumberTableLocalVariableTablethisLtest;test(LFoo;)VfooLFoo; StackMapTable SourceFile test.java   !"# $java/lang/ObjectFooentryLcycle1;cycle1cLMiddle;Middlef! /*    [ *** * !  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/test.desc000066400000000000000000000004071333451767700261430ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.test ^EXIT=0$ ^SIGNAL=0$ elaborate java::Base\.f:\(\)V -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_cyclic_class/test.java000066400000000000000000000005371333451767700261520ustar00rootroot00000000000000class cycle1 { Middle c; } class Base { void f() { } } class Middle extends Base { cycle1 c; } class Derived extends Middle { void f() { } } class Foo { public cycle1 entry; } public class test { public static void test(Foo foo) { if(foo != null && foo.entry != null && foo.entry.c != null) { foo.entry.c.f(); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_array_parameter/000077500000000000000000000000001333451767700267275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_array_parameter/asserthere.class000066400000000000000000000007721333451767700321310ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTabledoassert(Z)V StackMapTable SourceFile test.java  java/lang/AssertionError asserthere java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   4 Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_array_parameter/container.class000066400000000000000000000003321333451767700317360ustar00rootroot000000000000004    test_array[Ltest;()VCodeLineNumberTable SourceFile test.java  containerjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_array_parameter/test.class000066400000000000000000000007651333451767700307450ustar00rootroot000000000000004!    ()VCodeLineNumberTablef()Ig(Lcontainer;)V StackMapTable SourceFile test.java     testjava/lang/Object[Ltest; container test_array assertheredoassert(Z)V! *      q.**L++ +2+2     -  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_array_parameter/test.desc000066400000000000000000000004341333451767700305470ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.g ^EXIT=0$ ^SIGNAL=0$ elaborate java::test\.f:\(\)I VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_array_parameter/test.java000066400000000000000000000010671333451767700305550ustar00rootroot00000000000000 public class test { public int f() { return 1; } public static void g(container c) { if(c == null) return; test[] args = c.test_array; if(args == null || args.length != 1 || args[0] == null) return; asserthere.doassert(args[0].f() == 1); } } class container { public test[] test_array; } class asserthere { // Used to avoid lazy-loading currently marking any class with an // $assertionsEnabled member (i.e. any class that asserts) as needed. public static void doassert(boolean condition) { assert(condition); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_generic_array_parameter/000077500000000000000000000000001333451767700304235ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_generic_array_parameter/asserthere.class000066400000000000000000000011251333451767700336160ustar00rootroot000000000000004"    $assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis Lasserthere;doassert(Z)V condition StackMapTable SourceFile test.java  java/lang/AssertionError asserthere !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    /*    F Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_generic_array_parameter/container.class000066400000000000000000000006561333451767700334430ustar00rootroot000000000000004  test_array[Ljava/lang/Object; Signature[TT;()VCodeLineNumberTableLocalVariableTablethis Lcontainer;LocalVariableTypeTableLcontainer;(Ljava/lang/Object; SourceFile test.java   containerjava/lang/Object   A*     cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_generic_array_parameter/test.class000066400000000000000000000013721333451767700324340ustar00rootroot000000000000004,    ! "#$%()VCodeLineNumberTableLocalVariableTablethisLtest;f()Ig(Lcontainer;)Vc Lcontainer;args[Ltest;LocalVariableTypeTableLcontainer; StackMapTable Signature(Lcontainer;)V SourceFile test.java  & '( ) *+testjava/lang/Object container test_array[Ljava/lang/Object; assertheredoassert(Z)V!  /*    ,     1**L++ +2+2     0 1 $ 1  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_generic_array_parameter/test.desc000066400000000000000000000004341333451767700322430ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.g ^EXIT=0$ ^SIGNAL=0$ elaborate java::test\.f:\(\)I VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_indirect_generic_array_parameter/test.java000066400000000000000000000010751333451767700322500ustar00rootroot00000000000000 public class test { public int f() { return 1; } public static void g(container c) { if(c == null) return; test[] args = c.test_array; if(args == null || args.length != 1 || args[0] == null) return; asserthere.doassert(args[0].f() == 1); } } class container { public T[] test_array; } class asserthere { // Used to avoid lazy-loading currently marking any class with an // $assertionsEnabled member (i.e. any class that asserts) as needed. public static void doassert(boolean condition) { assert(condition); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/000077500000000000000000000000001333451767700241615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/Base.class000066400000000000000000000003411333451767700260600ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Basejava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/Derived.class000066400000000000000000000003501333451767700265700ustar00rootroot000000000000004   ()VCodeLineNumberTablef SourceFile test.java  DerivedMiddle * *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/Middle.class000066400000000000000000000002541333451767700264070ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java MiddleBase * cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/test.class000066400000000000000000000004561333451767700261740ustar00rootroot000000000000004   ()VCodeLineNumberTabletest (LMiddle;)V StackMapTable SourceFile test.java  java/lang/ObjectMiddlef!* 2 **   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/test.desc000066400000000000000000000005101333451767700257740ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.test ^EXIT=0$ ^SIGNAL=0$ elaborate java::Base\.f:\(\)V -- elaborate java::Derived\.f:\(\)V elaborate java::Middle\.f:\(\)V -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance/test.java000066400000000000000000000003531333451767700260040ustar00rootroot00000000000000class Base { void f() { } } class Middle extends Base { } class Derived extends Middle { void f() { super.f(); } } public class test { public static void test(Middle foo) { if(foo != null ) { foo.f(); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/000077500000000000000000000000001333451767700253245ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/Base.class000066400000000000000000000003411333451767700272230ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Basejava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/Derived.class000066400000000000000000000003321333451767700277330ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java DerivedMiddle *    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/Foo.class000066400000000000000000000003141333451767700270740ustar00rootroot000000000000004   mLMiddle;()VCodeLineNumberTable SourceFile test.java Foojava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/Middle.class000066400000000000000000000002541333451767700275520ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile test.java MiddleBase * cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/test.class000066400000000000000000000005271333451767700273360ustar00rootroot000000000000004    ()VCodeLineNumberTabletest(LFoo;)V StackMapTable SourceFile test.java   java/lang/ObjectFoomLMiddle;Middlef!*  <** *    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/test.desc000066400000000000000000000004071333451767700271440ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.test ^EXIT=0$ ^SIGNAL=0$ elaborate java::Base\.f:\(\)V -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_inheritance_field/test.java000066400000000000000000000004171333451767700271500ustar00rootroot00000000000000class Base { void f() { } } class Middle extends Base { } class Derived extends Middle { void f() { } } class Foo { public Middle m; } public class test { public static void test(Foo foo) { if(foo != null && foo.m != null) { foo.m.f(); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/000077500000000000000000000000001333451767700261455ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/A.class000066400000000000000000000003421333451767700273530ustar00rootroot000000000000004   ()VCodeLineNumberTablef()I SourceFileA.java Ajava/lang/Object!*   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/A.java000066400000000000000000000001021333451767700271610ustar00rootroot00000000000000public class A { public int f() { return 1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/B.class000066400000000000000000000003421333451767700273540ustar00rootroot000000000000004   ()VCodeLineNumberTableg()I SourceFileB.java Bjava/lang/Object!*   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/B.java000066400000000000000000000001021333451767700271620ustar00rootroot00000000000000public class B { public int g() { return 5; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/Test.class000066400000000000000000000013301333451767700301100ustar00rootroot0000000000000041     !" #$ % &'(arrayA[LA;arrayB[LB;$assertionsDisabledZ()VCodeLineNumberTablecheck (LTest;)V StackMapTable SourceFile Test.java  ) *+, -+ java/lang/AssertionErrorTest. /0java/lang/ObjectAf()IBgjava/lang/ClassdesiredAssertionStatus()Z!  * b*3*,*%***2 *2*2<*2=`> Y4 5 ? I Ma 4+4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/Test.java000066400000000000000000000005741333451767700277350ustar00rootroot00000000000000public class Test { A[] arrayA; B[] arrayB; public static void check(Test t) { if (t == null || t.arrayA == null || t.arrayB == null || t.arrayA.length == 0 || t.arrayB.length == 0 || t.arrayA[0] == null || t.arrayB[0] == null) return; int i = t.arrayA[0].f(); int j = t.arrayB[0].g(); int sum = i + j; assert(sum == 6); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_array_types/test.desc000066400000000000000000000004701333451767700277650ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --verbosity 10 --function Test.check ^EXIT=0$ ^SIGNAL=0$ elaborate java::A\.f:\(\)I elaborate java::B\.g:\(\)I VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_generic_parameters/000077500000000000000000000000001333451767700274425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_generic_parameters/asserthere.class000066400000000000000000000011251333451767700326350ustar00rootroot000000000000004"    $assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethis Lasserthere;doassert(Z)V condition StackMapTable SourceFile test.java  java/lang/AssertionError asserthere !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    /*    F Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_generic_parameters/container.class000066400000000000000000000007051333451767700324550ustar00rootroot000000000000004  test_array[Ljava/lang/Object; Signature[TT;()VCodeLineNumberTableLocalVariableTablethis Lcontainer;LocalVariableTypeTableLcontainer;<Ljava/lang/Object; SourceFile test.java   containerjava/lang/Object   A*     cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_generic_parameters/test.class000066400000000000000000000014401333451767700314470ustar00rootroot000000000000004,    ! "#$%()VCodeLineNumberTableLocalVariableTablethisLtest;f()Ig(Lcontainer;)Vc Lcontainer;args[Ltest;LocalVariableTypeTable&Lcontainer; StackMapTable Signature)(Lcontainer;)V SourceFile test.java  & '( ) *+testjava/lang/Object container test_array[Ljava/lang/Object; assertheredoassert(Z)V!  /*    ,     1**L++ +2+2     0 1 $ 1  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_generic_parameters/test.desc000066400000000000000000000004341333451767700312620ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.g ^EXIT=0$ ^SIGNAL=0$ elaborate java::test\.f:\(\)I VERIFICATION SUCCESSFUL -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_multiple_generic_parameters/test.java000066400000000000000000000011111333451767700312560ustar00rootroot00000000000000 public class test { public int f() { return 1; } public static void g(container c) { if(c == null) return; test[] args = c.test_array; if(args == null || args.length != 1 || args[0] == null) return; asserthere.doassert(args[0].f() == 1); } } class container { public T[] test_array; } class asserthere { // Used to avoid lazy-loading currently marking any class with an // $assertionsEnabled member (i.e. any class that asserts) as needed. public static void doassert(boolean condition) { assert(condition); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/000077500000000000000000000000001333451767700270715ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/asserthere.class000066400000000000000000000007721333451767700322730ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTabledoassert(Z)V StackMapTable SourceFile test.java  java/lang/AssertionError asserthere java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *   4 Y "  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/container.class000066400000000000000000000004641333451767700321060ustar00rootroot000000000000004  test_array[Ljava/lang/Object; Signature[TT;()VCodeLineNumberTable(Ljava/lang/Object; SourceFile test.java   containerjava/lang/Object   *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/container2.class000066400000000000000000000004551333451767700321700ustar00rootroot000000000000004 nextLjava/lang/Object; SignatureTT;()VCodeLineNumberTable(Ljava/lang/Object; SourceFile test.java   container2java/lang/Object   *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/test.class000066400000000000000000000012421333451767700310760ustar00rootroot000000000000004+      !"()VCodeLineNumberTablef()Ig(Lcontainer2;)V StackMapTable Signature$(Lcontainer2;>;)V SourceFile test.java # $% container &'[Ltest; ( )*testjava/lang/Object container2nextLjava/lang/Object; test_array[Ljava/lang/Object; assertheredoassert(Z)V!   *     >**L++M,, ,2,2 *     *+=  @cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/test.desc000066400000000000000000000007461333451767700307170ustar00rootroot00000000000000KNOWNBUG test.class --lazy-methods --verbosity 10 --function test.g ^EXIT=0$ ^SIGNAL=0$ elaborate java::test\.f:\(\)I VERIFICATION SUCCESSFUL -- -- The right methods are loaded, but verification is not successful because __CPROVER_start doesn't create appropriately typed input for this kind of nested generic parameter, so dynamic cast checks fail upon fetching the generic type's field. This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_nested_generic_parameters/test.java000066400000000000000000000012771333451767700307220ustar00rootroot00000000000000 public class test { public int f() { return 1; } public static void g(container2> c) { if(c == null) return; container outer = c.next; if(outer == null) return; test[] args = outer.test_array; if(args == null || args.length != 1 || args[0] == null) return; asserthere.doassert(args[0].f() == 1); } } class container { public T[] test_array; } class container2 { public T next; } class asserthere { // Used to avoid lazy-loading currently marking any class with an // $assertionsEnabled member (i.e. any class that asserts) as needed. public static void doassert(boolean condition) { assert(condition); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_no_candidates/000077500000000000000000000000001333451767700244635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_no_candidates/Test$factory_intf.class000066400000000000000000000003361333451767700311070ustar00rootroot000000000000003  getintfintf InnerClasses ()LTest$intf; SourceFile Test.javaTest$factory_intf factory_intfjava/lang/Object Test$intfTest   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_no_candidates/Test$intf.class000066400000000000000000000002401333451767700273520ustar00rootroot000000000000003  f()V SourceFile Test.java  Test$intfintf InnerClassesjava/lang/ObjectTest  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_no_candidates/Test.class000066400000000000000000000010041333451767700264240ustar00rootroot000000000000003"   intf InnerClasses factory_intf()VCodeLineNumberTableLocalVariableTablethisLTest;main(LTest$factory_intf;)ViLTest$factory_intf; SourceFile Test.java  ! Testjava/lang/Object Test$intfTest$factory_intfgetintf ()LTest$intf;f!  3*    6 *     cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_no_candidates/Test.java000066400000000000000000000002761333451767700262520ustar00rootroot00000000000000public class Test { interface factory_intf { public intf getintf(); } interface intf { public void f(); } public static void main(factory_intf i) { i.getintf().f(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_no_candidates/test.desc000066400000000000000000000005201333451767700262770ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --show-goto-functions --verbosity 10 --function Test.main ^EXIT=0$ ^SIGNAL=0$ ^CI lazy methods: elaborate java::Test\$intf\.f:\(\)V$ Test\$intf\.f:\(\)V\(\);$ -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/000077500000000000000000000000001333451767700244225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Bar.class000066400000000000000000000005151333451767700261560ustar00rootroot000000000000004 xI()VCodeLineNumberTableLocalVariableTablethisLBar;cproverNondetInitialize SourceFileBar.java Barjava/lang/Object!/*    +   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Bar.java000066400000000000000000000001251333451767700257670ustar00rootroot00000000000000public class Bar { public int x; public void cproverNondetInitialize() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Baz.class000066400000000000000000000004751333451767700261730ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLBaz;cproverNondetInitialize SourceFileBaz.java Bazjava/lang/Object!/*   +    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Baz.java000066400000000000000000000001041333451767700257740ustar00rootroot00000000000000public class Baz { public void cproverNondetInitialize() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Foo.class000066400000000000000000000006751333451767700262040ustar00rootroot000000000000004 subTypeLBar; arraySubtype[LBaz; genSubtypeLGen; SignatureLGen;()VCodeLineNumberTableLocalVariableTablethisLFoo;cproverNondetInitialize SourceFileFoo.java Foojava/lang/Object!    /*  +  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Foo.java000066400000000000000000000002361333451767700260110ustar00rootroot00000000000000public class Foo { public Bar subType; public Baz[] arraySubtype; public Gen genSubtype; public void cproverNondetInitialize() { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Gen.class000066400000000000000000000006201333451767700261600ustar00rootroot000000000000004 tLjava/lang/Object; SignatureTT;()VCodeLineNumberTableLocalVariableTablethisLGen;LocalVariableTypeTable LGen;(Ljava/lang/Object; SourceFileGen.java  Genjava/lang/Object!  A*     cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Gen.java000066400000000000000000000000371333451767700257760ustar00rootroot00000000000000public class Gen { T t; } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/GenFiller.class000066400000000000000000000005371333451767700273250ustar00rootroot000000000000004 iI()VCodeLineNumberTableLocalVariableTablethis LGenFiller;cproverNondetInitialize SourceFileGenFiller.java  GenFillerjava/lang/Object!/*    +   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/GenFiller.java000066400000000000000000000001321333451767700271300ustar00rootroot00000000000000public class GenFiller { public int i; public void cproverNondetInitialize() { } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/Opaque.java000066400000000000000000000001131333451767700265120ustar00rootroot00000000000000public class Opaque { static Foo opaqueMethod() { return null; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/TestClass.class000066400000000000000000000007011333451767700273540ustar00rootroot000000000000004#    ()VCodeLineNumberTableLocalVariableTablethis LTestClass; testFunctionxI SourceFileTestClass.java   !"  TestClassjava/lang/ObjectOpaque opaqueMethod()LFoo;FoosubTypeLBar;Bar! /*    9 ;    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/TestClass.java000066400000000000000000000001621333451767700271710ustar00rootroot00000000000000public class TestClass { public static void testFunction() { int x = Opaque.opaqueMethod().subType.x; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_opaquereturn/test.desc000066400000000000000000000012451333451767700262430ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure TestClass.class --function TestClass.testFunction --lazy-methods --verbosity 10 CI lazy methods: elaborate java::Foo\.cproverNondetInitialize:\(\)V CI lazy methods: elaborate java::Bar\.cproverNondetInitialize:\(\)V CI lazy methods: elaborate java::Baz\.cproverNondetInitialize:\(\)V CI lazy methods: elaborate java::GenFiller\.cproverNondetInitialize:\(\)V -- -- Testing that the return type of an opaque method is correctly elaborated. The cproverNondetInitialize should be loaded for all classes where an instance might be seen. This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/000077500000000000000000000000001333451767700250645ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/Base.class000066400000000000000000000003411333451767700267630ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java Basejava/lang/Object *  cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/Derived.class000066400000000000000000000003321333451767700274730ustar00rootroot000000000000004    ()VCodeLineNumberTablef SourceFile test.java DerivedMiddle *    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/Foo.class000066400000000000000000000003141333451767700266340ustar00rootroot000000000000004   mLMiddle;()VCodeLineNumberTable SourceFile test.java Foojava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/Middle.class000066400000000000000000000003121333451767700273050ustar00rootroot000000000000004   internalLMiddle;()VCodeLineNumberTable SourceFile test.java MiddleBase *   cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/test.class000066400000000000000000000005271333451767700270760ustar00rootroot000000000000004    ()VCodeLineNumberTabletest(LFoo;)V StackMapTable SourceFile test.java   java/lang/ObjectFoomLMiddle;Middlef!*  <** *    cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/test.desc000066400000000000000000000004071333451767700267040ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure test.class --lazy-methods --verbosity 10 --function test.test ^EXIT=0$ ^SIGNAL=0$ elaborate java::Base\.f:\(\)V -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_recursive_class/test.java000066400000000000000000000004421333451767700267060ustar00rootroot00000000000000class Base { void f() { } } class Middle extends Base { Middle internal; } class Derived extends Middle { void f() { } } class Foo { public Middle m; } public class test { public static void test(Foo foo) { if(foo != null && foo.m != null) { foo.m.f(); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1/000077500000000000000000000000001333451767700270325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1/Test.class000066400000000000000000000003731333451767700310030ustar00rootroot000000000000004  uLUnused;()VCodeLineNumberTablemain SourceFile Test.java Testjava/lang/Object!*      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1/Test.java000066400000000000000000000004571333451767700306220ustar00rootroot00000000000000public class Test { // Refers to, but never instantiates or refers to static fields of, Unused. // Thus a clinit-wrapper for Unused should be created, but subsequently // discarded. Unused u; public static void main() { } } class Unused { static int x; static { x = 1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1/Unused.class000066400000000000000000000004141333451767700313230ustar00rootroot000000000000004  xI()VCodeLineNumberTable SourceFile Test.java  Unusedjava/lang/Object  *   !   check_clinit_normally_present.desc000066400000000000000000000002761333451767700357140ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1CORE symex-driven-lazy-loading-expected-failure Test.class --no-lazy-methods --show-goto-functions --function Test.main java::Unused::clinit_wrapper Unused\.\(\) ^EXIT=0$ ^SIGNAL=0$ check_clinit_removed_by_lazy_loading.desc000066400000000000000000000004421333451767700372010ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --show-goto-functions --function Test.main ^EXIT=0$ ^SIGNAL=0$ -- java::Unused::clinit_wrapper Unused\.\(\) -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods check_runs_with_lazy_loading.desc000066400000000000000000000003621333451767700355270ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup1CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --function Test.main VERIFICATION SUCCESSFUL ^EXIT=0$ ^SIGNAL=0$ -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2/000077500000000000000000000000001333451767700270335ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2/Test.class000066400000000000000000000003741333451767700310050ustar00rootroot000000000000004  u LUnused1;()VCodeLineNumberTablemain SourceFile Test.java Testjava/lang/Object!*      cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2/Test.java000066400000000000000000000005251333451767700306170ustar00rootroot00000000000000public class Test { // Refers to, but never instantiates or refers to static fields of, Unused. // Thus a clinit-wrapper for Unused should be created, but subsequently // discarded. Unused1 u; public static void main() { } } class Unused1 extends Unused2 { } class Unused2 { static int x; static { x = 1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2/Unused1.class000066400000000000000000000002601333451767700314040ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFile Test.java Unused1Unused2 * cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2/Unused2.class000066400000000000000000000004151333451767700314070ustar00rootroot000000000000004  xI()VCodeLineNumberTable SourceFile Test.java  Unused2java/lang/Object  *   !   check_clinit_normally_present.desc000066400000000000000000000003361333451767700357120ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2CORE symex-driven-lazy-loading-expected-failure Test.class --no-lazy-methods --show-goto-functions --function Test.main java::Unused1::clinit_wrapper java::Unused2::clinit_wrapper Unused2\.\(\) ^EXIT=0$ ^SIGNAL=0$ check_clinit_removed_by_lazy_loading.desc000066400000000000000000000005021333451767700371770ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --show-goto-functions --function Test.main ^EXIT=0$ ^SIGNAL=0$ -- java::Unused1::clinit_wrapper java::Unused2::clinit_wrapper Unused2\.\(\) -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods check_runs_with_lazy_loading.desc000066400000000000000000000003621333451767700355300ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup2CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --function Test.main VERIFICATION SUCCESSFUL ^EXIT=0$ ^SIGNAL=0$ -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup3/000077500000000000000000000000001333451767700270345ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup3/Test.class000066400000000000000000000005151333451767700310030ustar00rootroot000000000000004  ()VCodeLineNumberTablemainunused ()LOpaque; SourceFile Test.java  Testjava/lang/ObjectOpaquefieldLOpaque;!*     cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup3/Test.java000066400000000000000000000005441333451767700306210ustar00rootroot00000000000000public class Test { public static void main() { } public static Opaque unused() { // Should cause jbmc to create a synthetic static initialiser for Opaque, // but because this function isn't called by main() it should then be // cleaned up as unused. return Opaque.field; } } class Opaque { public static Opaque field; } check_clinit_normally_present.desc000066400000000000000000000003061333451767700357100ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup3CORE symex-driven-lazy-loading-expected-failure Test.class --no-lazy-methods --show-goto-functions --function Test.main java::Opaque\.:\(\)V java::Opaque::clinit_wrapper ^EXIT=0$ ^SIGNAL=0$ check_clinit_removed_by_lazy_loading.desc000066400000000000000000000004521333451767700372040ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup3CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --show-goto-functions --function Test.main ^EXIT=0$ ^SIGNAL=0$ -- java::Opaque\.:\(\)V java::Opaque::clinit_wrapper -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods check_runs_with_lazy_loading.desc000066400000000000000000000003621333451767700355310ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lazyloading_synthetic_method_cleanup3CORE symex-driven-lazy-loading-expected-failure Test.class --lazy-methods --function Test.main VERIFICATION SUCCESSFUL ^EXIT=0$ ^SIGNAL=0$ -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/000077500000000000000000000000001333451767700203275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/LinkedList.class000066400000000000000000000016211333451767700234200ustar00rootroot000000000000002)     ! " #$%HeadLLinkedListEntry;()VCodeLineNumberTablesize()I StackMapTable add(II)V(I)Vremoveget(I)I SourceFile list1.java  & LinkedListEntry '(   LinkedListjava/lang/ObjectNextValueI   *R<*M,,M   :YN- *-*:6:-.  &-39 & ** $ %a#*M>,M,,)* +*,"- V*M>,M,12 324 cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/LinkedListEntry.class000066400000000000000000000003711333451767700244430ustar00rootroot000000000000002 NextLLinkedListEntry;ValueI()VCodeLineNumberTable SourceFile list1.java  LinkedListEntryjava/lang/Object   *   cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/__CPROVER_nondet.class000066400000000000000000000003761333451767700243510ustar00rootroot000000000000002   ()VCodeLineNumberTable nondet_int()I SourceFile list1.java __CPROVER_nondetjava/lang/Object *8  <  cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/__CPROVER_synthesis.class000066400000000000000000000004771333451767700251150ustar00rootroot000000000000002 ()VCodeLineNumberTable accumulator(II)I predicate(I)Z SourceFile list1.java __CPROVER_synthesisjava/lang/Object *@  D I  cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/list1.class000066400000000000000000000024021333451767700224100ustar00rootroot000000000000002N $ % &' () * &+ (,- $ ./ 0 1 23 $4 567$assertionsDisabledZ()VCodeLineNumberTablestream(LLinkedList;)I StackMapTable8main([Ljava/lang/String;)V9- SourceFile list1.java  :;8 <=> ?@ AB C; DE LinkedListF GH IJ  java/lang/AssertionErrorlist1K LMjava/lang/ObjectLinkedListEntry[Ljava/lang/String;HeadLLinkedListEntry;ValueI__CPROVER_synthesis predicate(I)Zremove(I)VNext accumulator(II)I__CPROVER_nondet nondet_int()Iadd(II)Vjava/lang/ClassdesiredAssertionStatus()Z *M F<*M, , *,M=*N--=-N. RS TUW S(Z*[3\<[D^  Y LY M >6 6+ , 6+:(p 6:, 6  YFcdefh!i)j1f7m:nEpOqYr`njupwx&    !5 M @"#cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/list1.java000066400000000000000000000045141333451767700222320ustar00rootroot00000000000000class LinkedListEntry { public LinkedListEntry Next; public int Value; } class LinkedList { public LinkedListEntry Head; public int size() { int count = 0; for (LinkedListEntry entry = Head; entry != null; entry = entry.Next) ++count; return count; } public void add(int index, int e) { LinkedListEntry newEntry = new LinkedListEntry(); newEntry.Value = e; if (index == 0) { Head = newEntry; return; } LinkedListEntry entry = Head; for (int i = 1; i < index; ++i) entry = entry.Next; entry.Next = newEntry; } public void add(int e) { add(size(), e); } public void remove(int index) { LinkedListEntry entry = Head; for (int i = 1; i < index; ++i) entry = entry.Next; entry.Next = entry.Next.Next; } public int get(int index) { LinkedListEntry entry = Head; for (int i = 0; i < index; ++i) entry = entry.Next; return entry.Value; } } class __CPROVER_nondet { public static int nondet_int() { return 0; } } class __CPROVER_synthesis { public static int accumulator(int aggregated, int e) { return 0; } public static boolean predicate(int lhs) { return true; } } class list1 { private static int stream(LinkedList list) { // java.util.stream.Stream.filter(...) int index = 0; for (LinkedListEntry entry = list.Head; entry != null; entry = entry.Next) if (__CPROVER_synthesis.predicate(entry.Value)) ++index; else list.remove(index); // java.util.stream.Stream.reduce(...) int aggregated = 0; for (LinkedListEntry it = list.Head; it != null; it = it.Next) aggregated = __CPROVER_synthesis.accumulator(aggregated, it.Value); return aggregated; } public static void main(String[] args) { LinkedList lhs = new LinkedList(); LinkedList rhs = new LinkedList(); int size = 10; for (int i = 0; i < size; ++i) { int value = __CPROVER_nondet.nondet_int(); lhs.add(i, value); rhs.add(i, value); } int lhs_result = 0; for (LinkedListEntry it = lhs.Head; it != null; it = it.Next) { if (it.Value % 2 == 0) if (lhs_result < it.Value) lhs_result = it.Value; } int rhs_result = stream(rhs); assert(lhs_result == rhs_result); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/list1/test.desc000066400000000000000000000001261333451767700221450ustar00rootroot00000000000000CORE list1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/long1/000077500000000000000000000000001333451767700203135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/long1/long1.class000066400000000000000000000014431333451767700223640ustar00rootroot000000000000004.  !* "@ #$ % &'($assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable)! SourceFile long1.java java/util/Random * java/lang/AssertionErrorlong1+ ,-java/lang/Object[Ljava/lang/String;(J)Vjava/lang/ClassdesiredAssertionStatus()Z *  YLA 6 6 8 9 6    Y    Y     Y :     %*DIchD4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/long1/long1.java000066400000000000000000000007031333451767700221760ustar00rootroot00000000000000class long1 { public static void main(String[] args) { java.util.Random random = new java.util.Random(42); //long l=random.nextLong(); long l=4620693217682128896L; // conversions int i=(int)l; char c=(char)l; float f=l; double d=l; short s=(short)l; if(i>=0) assert (long)i==(l&0x7fffffff); if(c>=0) assert (long)c==(l&0x7fff); if(s>=0) assert (long)s==(l&0x7fff); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/long1/test.desc000066400000000000000000000001261333451767700221310ustar00rootroot00000000000000CORE long1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/lookupswitch1/000077500000000000000000000000001333451767700221075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lookupswitch1/lookupswitch1.class000066400000000000000000000016061333451767700257550ustar00rootroot000000000000002. *    !" # $%&$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable' SourceFilelookupswitch1.java java/util/Random ( )* java/lang/AssertionError lookupswitch1+ ,-java/lang/Object[Ljava/lang/String;(J)VnextInt()Ijava/lang/ClassdesiredAssertionStatus()Z * 5YN-<`; @dFL'SZ=% =e=='= ==# d'  %` Y  Y :  L Q W]dkqs" L$5   @cbmc-cbmc-5.10/jbmc/regression/jbmc/lookupswitch1/lookupswitch1.java000066400000000000000000000010261333451767700255650ustar00rootroot00000000000000class lookupswitch1 { public static void main(String[] args) { int i, j; java.util.Random random = new java.util.Random(42); i=random.nextInt(); switch(i) { case 1: j=2; break; case 10: j=11; break; case 100: j=101; break; case 1000: j=1001; break; case 10000: j=10001; break; case 100000: j=100001; break; default: j=-1; } if(i==1 || i==10 || i==100 || i==1000 || i==10000 || i==100000) assert j==i+1; else assert j==-1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lookupswitch1/test.desc000066400000000000000000000001361333451767700237260ustar00rootroot00000000000000CORE lookupswitch1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/loop1/000077500000000000000000000000001333451767700203255ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/loop1/loop1.class000066400000000000000000000004721333451767700224110ustar00rootroot000000000000002  ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile loop1.java loop1java/lang/Object *  D<d =     cbmc-cbmc-5.10/jbmc/regression/jbmc/loop1/loop1.java000066400000000000000000000001721333451767700222220ustar00rootroot00000000000000class loop1 { public static void main(String[] args) { for(int i=0; i<100; i++) { int j=i; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/loop1/test.desc000066400000000000000000000001261333451767700221430ustar00rootroot00000000000000CORE loop1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_local_variables_manual/000077500000000000000000000000001333451767700250135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_local_variables_manual/ManyLocalVariables.class000066400000000000000000000003361333451767700315540ustar00rootroot00000000000000- java/lang/ObjectManyLocalVariables.j SourceFile()ICodeLineNumberTabletestManyLocalVariables!  8 6666```cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_local_variables_manual/ManyLocalVariables.j000066400000000000000000000012131333451767700306730ustar00rootroot00000000000000; This generates a class file that attempts to access local variables indexed ; at 255, 256 and 65534 ; The class file is generated from this file using the following command: ; java -jar jasmin.jar ManyLocalVariables.j ; The jasmin jar file can be obtained from: http://jasmin.sourceforge.net/ .class public ManyLocalVariables .super java/lang/Object .method public static test()I .limit stack 10 .limit locals 65535 .line 1 iconst_1 istore 1 iconst_1 istore 255 iconst_1 istore_w 256 iconst_1 istore_w 65534 iload 1 iload 255 iload_w 256 iload_w 65534 iadd iadd iadd ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_local_variables_manual/test.desc000066400000000000000000000001551333451767700266330ustar00rootroot00000000000000CORE ManyLocalVariables.class --function ManyLocalVariables.test VERIFICATION SUCCESSFUL ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_of_local_variables/000077500000000000000000000000001333451767700241425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_of_local_variables/TooManyLocals.class000066400000000000000000000226451333451767700277260ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLTooManyLocals;testallIntsIi0i1i2i3i4i5i6i7i8i9i10i11i12i13i14i15i16i17i18i19i20i21i22i23i24i25i26i27i28i29i30i31i32i33i34i35i36i37i38i39i40i41i42i43i44i45i46i47i48i49i50i51i52i53i54i55i56i57i58i59i60i61i62i63i64i65i66i67i68i69i70i71i72i73i74i75i76i77i78i79i80i81i82i83i84i85i86i87i88i89i90i91i92i93i94i95i96i97i98i99i100i101i102i103i104i105i106i107i108i109i110i111i112i113i114i115i116i117i118i119i120i121i122i123i124i125i126i127i128i129i130i131i132i133i134i135i136i137i138i139i140i141i142i143i144i145i146i147i148i149i150i151i152i153i154i155i156i157i158i159i160i161i162i163i164i165i166i167i168i169i170i171i172i173i174i175i176i177i178i179i180i181i182i183i184i185i186i187i188i189i190i191i192i193i194i195i196i197i198i199i200i201i202i203i204i205i206i207i208i209i210i211i212i213i214i215i216i217i218i219i220i221i222i223i224i225i226i227i228i229i230i231i232i233i234i235i236i237i238i239i240i241i242i243i244i245i246i247i248i249i250i251i252i253i254i255i256 StackMapTable SourceFileTooManyLocals.java java/lang/AssertionError TooManyLocals! "#java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   /*     ;<=>666666  6  6  6  6  6666666666666666666  6!!6""6##6$$6%%6&&6''6((6))6**6++6,,6--6..6//6006116226336446556666776886996::6;;6<<6==6>>6??6@@6AA6BB6CC6DD6EE6FF6GG6HH6II6JJ6KK6LL6MM6NN6OO6PP6QQ6RR6SS6TT6UU6VV6WW6XX6YY6ZZ6[[6\\6]]6^^6__6``6aa6bb6cc6dd6ee6ff6gg6hh6ii6jj6kk6ll6mm6nn6oo6pp6qq6rr6ss6tt6uu6vv6ww6xx6yy6zz6{{6||6}}6~~66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666`;`;`;`;`;`;`;`; `; `; `; `; `;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`; `;!`;"`;#`;$`;%`;&`;'`;(`;)`;*`;+`;,`;-`;.`;/`;0`;1`;2`;3`;4`;5`;6`;7`;8`;9`;:`;;`;<`;=`;>`;?`;@`;A`;B`;C`;D`;E`;F`;G`;H`;I`;J`;K`;L`;M`;N`;O`;P`;Q`;R`;S`;T`;U`;V`;W`;X`;Y`;Z`;[`;\`;]`;^`;_`;``;a`;b`;c`;d`;e`;f`;g`;h`;i`;j`;k`;l`;m`;n`;o`;p`;q`;r`;s`;t`;u`;v`;w`;x`;y`;z`;{`;|`;}`;~`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`;`; Y      !%)-159=AEIMQUY]aei m!q"u#y$}%&'()*+,-./0123456789:;<=>?@ABCDEFG H IJKLM!N%O)P-Q1R5S9T=UAVEWIXMYQZU[Y\]]a^e_i`maqbucyd}efghijklmnopqrstuvwxyz{|}~ !&+05:?DINSX]bglqv{  %*/49>CHMRW\afkpuz $).38=BGLQV[`ejot{       !"#$%$&)'.(3)8*=+B,G-L.Q/V0[1`2e3j4o5t6y7~89:;<=>?@ABCDEFGHIJKLMNOPQRS TUVWX#Y(Z-[2\7]<^A_F`KaPbUcZd_edfignhsixj}klmnopqrstuvwxyz{|}~ "',16;@EJOTY^chmrw| !&+05:?DINSX]bglqv{        % * / 4 9 > C H M R W \ a f k p u z               ! | % x ) t  - p! 1 l"5 h#9 d$= `%A \&E X'I T(M P)Q L*U H+Y D,] @-a <.e 8/i 40m 01q ,2u (3y $4 } 5! 6" 7# 8$ 9% :& ;' <( =)>*?+@,A-B.C/D0E1F2G3H4I5J6K7L8M9N:O;P<Q=R>S?T@UAVBWC XD YEZF[G\H]I!|^J%x_K)t`L-paM1lbN5hcO9ddP=`eQA\fREXgSIThTMPiUQLjVUHkWYDlX]@mYa<nZe8o[i4p\m0q]q,r^u(s_y$t`} uavbwcxdye zf{g|h}i~jklmnopqrstuvwxyz{|}~ !|&w+r0m5h:c?^DYITNOSJXE]@b;g6l1q,v'{"   }%x*s/n4i9d>_CZHUMPRKWF\Aa<f7k2p-u(z#  ~$y)t.o3j8e=`B[ GV LQ QL VG [B`=e8j3o.t){"    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_of_local_variables/TooManyLocals.java000066400000000000000000000241271333451767700275370ustar00rootroot00000000000000public class TooManyLocals { public static void test() { int allInts = 0; int i0 = 0; int i1 = 1; int i2 = 2; int i3 = 3; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = 7; int i8 = 8; int i9 = 9; int i10 = 10; int i11 = 11; int i12 = 12; int i13 = 13; int i14 = 14; int i15 = 15; int i16 = 16; int i17 = 17; int i18 = 18; int i19 = 19; int i20 = 20; int i21 = 21; int i22 = 22; int i23 = 23; int i24 = 24; int i25 = 25; int i26 = 26; int i27 = 27; int i28 = 28; int i29 = 29; int i30 = 30; int i31 = 31; int i32 = 32; int i33 = 33; int i34 = 34; int i35 = 35; int i36 = 36; int i37 = 37; int i38 = 38; int i39 = 39; int i40 = 40; int i41 = 41; int i42 = 42; int i43 = 43; int i44 = 44; int i45 = 45; int i46 = 46; int i47 = 47; int i48 = 48; int i49 = 49; int i50 = 50; int i51 = 51; int i52 = 52; int i53 = 53; int i54 = 54; int i55 = 55; int i56 = 56; int i57 = 57; int i58 = 58; int i59 = 59; int i60 = 60; int i61 = 61; int i62 = 62; int i63 = 63; int i64 = 64; int i65 = 65; int i66 = 66; int i67 = 67; int i68 = 68; int i69 = 69; int i70 = 70; int i71 = 71; int i72 = 72; int i73 = 73; int i74 = 74; int i75 = 75; int i76 = 76; int i77 = 77; int i78 = 78; int i79 = 79; int i80 = 80; int i81 = 81; int i82 = 82; int i83 = 83; int i84 = 84; int i85 = 85; int i86 = 86; int i87 = 87; int i88 = 88; int i89 = 89; int i90 = 90; int i91 = 91; int i92 = 92; int i93 = 93; int i94 = 94; int i95 = 95; int i96 = 96; int i97 = 97; int i98 = 98; int i99 = 99; int i100 = 100; int i101 = 101; int i102 = 102; int i103 = 103; int i104 = 104; int i105 = 105; int i106 = 106; int i107 = 107; int i108 = 108; int i109 = 109; int i110 = 110; int i111 = 111; int i112 = 112; int i113 = 113; int i114 = 114; int i115 = 115; int i116 = 116; int i117 = 117; int i118 = 118; int i119 = 119; int i120 = 120; int i121 = 121; int i122 = 122; int i123 = 123; int i124 = 124; int i125 = 125; int i126 = 126; int i127 = 127; int i128 = 128; int i129 = 129; int i130 = 130; int i131 = 131; int i132 = 132; int i133 = 133; int i134 = 134; int i135 = 135; int i136 = 136; int i137 = 137; int i138 = 138; int i139 = 139; int i140 = 140; int i141 = 141; int i142 = 142; int i143 = 143; int i144 = 144; int i145 = 145; int i146 = 146; int i147 = 147; int i148 = 148; int i149 = 149; int i150 = 150; int i151 = 151; int i152 = 152; int i153 = 153; int i154 = 154; int i155 = 155; int i156 = 156; int i157 = 157; int i158 = 158; int i159 = 159; int i160 = 160; int i161 = 161; int i162 = 162; int i163 = 163; int i164 = 164; int i165 = 165; int i166 = 166; int i167 = 167; int i168 = 168; int i169 = 169; int i170 = 170; int i171 = 171; int i172 = 172; int i173 = 173; int i174 = 174; int i175 = 175; int i176 = 176; int i177 = 177; int i178 = 178; int i179 = 179; int i180 = 180; int i181 = 181; int i182 = 182; int i183 = 183; int i184 = 184; int i185 = 185; int i186 = 186; int i187 = 187; int i188 = 188; int i189 = 189; int i190 = 190; int i191 = 191; int i192 = 192; int i193 = 193; int i194 = 194; int i195 = 195; int i196 = 196; int i197 = 197; int i198 = 198; int i199 = 199; int i200 = 200; int i201 = 201; int i202 = 202; int i203 = 203; int i204 = 204; int i205 = 205; int i206 = 206; int i207 = 207; int i208 = 208; int i209 = 209; int i210 = 210; int i211 = 211; int i212 = 212; int i213 = 213; int i214 = 214; int i215 = 215; int i216 = 216; int i217 = 217; int i218 = 218; int i219 = 219; int i220 = 220; int i221 = 221; int i222 = 222; int i223 = 223; int i224 = 224; int i225 = 225; int i226 = 226; int i227 = 227; int i228 = 228; int i229 = 229; int i230 = 230; int i231 = 231; int i232 = 232; int i233 = 233; int i234 = 234; int i235 = 235; int i236 = 236; int i237 = 237; int i238 = 238; int i239 = 239; int i240 = 240; int i241 = 241; int i242 = 242; int i243 = 243; int i244 = 244; int i245 = 245; int i246 = 246; int i247 = 247; int i248 = 248; int i249 = 249; int i250 = 250; int i251 = 251; int i252 = 252; int i253 = 253; int i254 = 254; int i255 = 255; int i256 = 256; allInts += i0; allInts += i1; allInts += i2; allInts += i3; allInts += i4; allInts += i5; allInts += i6; allInts += i7; allInts += i8; allInts += i9; allInts += i10; allInts += i11; allInts += i12; allInts += i13; allInts += i14; allInts += i15; allInts += i16; allInts += i17; allInts += i18; allInts += i19; allInts += i20; allInts += i21; allInts += i22; allInts += i23; allInts += i24; allInts += i25; allInts += i26; allInts += i27; allInts += i28; allInts += i29; allInts += i30; allInts += i31; allInts += i32; allInts += i33; allInts += i34; allInts += i35; allInts += i36; allInts += i37; allInts += i38; allInts += i39; allInts += i40; allInts += i41; allInts += i42; allInts += i43; allInts += i44; allInts += i45; allInts += i46; allInts += i47; allInts += i48; allInts += i49; allInts += i50; allInts += i51; allInts += i52; allInts += i53; allInts += i54; allInts += i55; allInts += i56; allInts += i57; allInts += i58; allInts += i59; allInts += i60; allInts += i61; allInts += i62; allInts += i63; allInts += i64; allInts += i65; allInts += i66; allInts += i67; allInts += i68; allInts += i69; allInts += i70; allInts += i71; allInts += i72; allInts += i73; allInts += i74; allInts += i75; allInts += i76; allInts += i77; allInts += i78; allInts += i79; allInts += i80; allInts += i81; allInts += i82; allInts += i83; allInts += i84; allInts += i85; allInts += i86; allInts += i87; allInts += i88; allInts += i89; allInts += i90; allInts += i91; allInts += i92; allInts += i93; allInts += i94; allInts += i95; allInts += i96; allInts += i97; allInts += i98; allInts += i99; allInts += i100; allInts += i101; allInts += i102; allInts += i103; allInts += i104; allInts += i105; allInts += i106; allInts += i107; allInts += i108; allInts += i109; allInts += i110; allInts += i111; allInts += i112; allInts += i113; allInts += i114; allInts += i115; allInts += i116; allInts += i117; allInts += i118; allInts += i119; allInts += i120; allInts += i121; allInts += i122; allInts += i123; allInts += i124; allInts += i125; allInts += i126; allInts += i127; allInts += i128; allInts += i129; allInts += i130; allInts += i131; allInts += i132; allInts += i133; allInts += i134; allInts += i135; allInts += i136; allInts += i137; allInts += i138; allInts += i139; allInts += i140; allInts += i141; allInts += i142; allInts += i143; allInts += i144; allInts += i145; allInts += i146; allInts += i147; allInts += i148; allInts += i149; allInts += i150; allInts += i151; allInts += i152; allInts += i153; allInts += i154; allInts += i155; allInts += i156; allInts += i157; allInts += i158; allInts += i159; allInts += i160; allInts += i161; allInts += i162; allInts += i163; allInts += i164; allInts += i165; allInts += i166; allInts += i167; allInts += i168; allInts += i169; allInts += i170; allInts += i171; allInts += i172; allInts += i173; allInts += i174; allInts += i175; allInts += i176; allInts += i177; allInts += i178; allInts += i179; allInts += i180; allInts += i181; allInts += i182; allInts += i183; allInts += i184; allInts += i185; allInts += i186; allInts += i187; allInts += i188; allInts += i189; allInts += i190; allInts += i191; allInts += i192; allInts += i193; allInts += i194; allInts += i195; allInts += i196; allInts += i197; allInts += i198; allInts += i199; allInts += i200; allInts += i201; allInts += i202; allInts += i203; allInts += i204; allInts += i205; allInts += i206; allInts += i207; allInts += i208; allInts += i209; allInts += i210; allInts += i211; allInts += i212; allInts += i213; allInts += i214; allInts += i215; allInts += i216; allInts += i217; allInts += i218; allInts += i219; allInts += i220; allInts += i221; allInts += i222; allInts += i223; allInts += i224; allInts += i225; allInts += i226; allInts += i227; allInts += i228; allInts += i229; allInts += i230; allInts += i231; allInts += i232; allInts += i233; allInts += i234; allInts += i235; allInts += i236; allInts += i237; allInts += i238; allInts += i239; allInts += i240; allInts += i241; allInts += i242; allInts += i243; allInts += i244; allInts += i245; allInts += i246; allInts += i247; allInts += i248; allInts += i249; allInts += i250; allInts += i251; allInts += i252; allInts += i253; allInts += i254; allInts += i255; allInts += i256; assert(allInts == 257 * 128); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/lots_of_local_variables/test.desc000066400000000000000000000001431333451767700257570ustar00rootroot00000000000000CORE TooManyLocals.class --function TooManyLocals.test VERIFICATION SUCCESSFUL ^EXIT=0$ ^SIGNAL=0$ cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-groovy/000077500000000000000000000000001333451767700214235ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-groovy/DetectSplitPackagesTask.class000066400000000000000000000251011333451767700271570ustar00rootroot0000000000000048org/springframework/build/gradle/DetectSplitPackagesTaskorg/gradle/api/DefaultTaskgroovy/lang/GroovyObject DetectSplitPackagesPlugin.groovyJAVA_FILE_SUFFIXLjava/lang/String;.java PACKAGE_SEPARATORHIDDEN_DIRECTORY_PREFIXprojectsToScanLjava/util/Set;)Ljava/util/Set;Lorg/gradle/api/tasks/Input;$staticClassInfo*Lorg/codehaus/groovy/reflection/ClassInfo;__$stMCZ metaClassLgroovy/lang/MetaClass;()V  $getCallSiteArray2()[Lorg/codehaus/groovy/runtime/callsite/CallSite;  -org/codehaus/groovy/runtime/callsite/CallSite"callGroovyObjectGetProperty&(Ljava/lang/Object;)Ljava/lang/Object; $% #&callGetProperty (% #) java/util/Set+1org/codehaus/groovy/runtime/ScriptBytecodeAdapter- castToType7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; /0 .1  3$getStaticMetaClass()Lgroovy/lang/MetaClass; 56 7  9 Verification;group=java/lang/String?setGroovyObjectPropertyR(Ljava/lang/Object;Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)V AB .C6Detects packages split across two or more subprojects.E descriptionGthis:Lorg/springframework/build/gradle/DetectSplitPackagesTask;detectSplitPackages!Lorg/gradle/api/tasks/TaskAction;  M.org/codehaus/groovy/runtime/BytecodeInterface8OdisabledStandardMetaClass()Z QR PS callCurrent.(Lgroovy/lang/GroovyObject;)Ljava/lang/Object; VW #XdoDetectSplitPackages()Ljava/util/Map; Z[ \call _% #`Borg/codehaus/groovy/runtime/typehandling/DefaultTypeTransformationb booleanUnbox(Ljava/lang/Object;)Z de cf3The following split package(s) have been detected: hgroovy/lang/Referencej(Ljava/lang/Object;)V l kmVorg/springframework/build/gradle/DetectSplitPackagesTask$_detectSplitPackages_closure1p>(Ljava/lang/Object;Ljava/lang/Object;Lgroovy/lang/Reference;)V r qs8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; _u #vorg/gradle/api/GradleExceptionyget()Ljava/lang/Object; {| k}callConstructor u #java/lang/Throwable splitPackagesLjava/lang/Object;messageLgroovy/lang/Reference;0[Lorg/codehaus/groovy/runtime/callsite/CallSite;java/lang/Object createMap$([Ljava/lang/Object;)Ljava/util/Map; .findMergedProjects [ mapPackagesByProject [    isOrigInt R PisOrigZ R Pjava/lang/IntegervalueOf(I)Ljava/lang/Integer;  compareLessThan'(Ljava/lang/Object;Ljava/lang/Object;)Z . intUnbox(Ljava/lang/Object;)I c java/util/HashSetcompareNotEqual .Xorg/springframework/build/gradle/DetectSplitPackagesTask$_doDetectSplitPackages_closure2l(Ljava/lang/Object;Ljava/lang/Object;Lgroovy/lang/Reference;Lgroovy/lang/Reference;Lgroovy/lang/Reference;)V   !"#$% java/util/MapmergedProjectspackagesByProjectprojects nProjectsiIjprj_iprj_jpkgs_ipkgs_j&Worg/springframework/build/gradle/DetectSplitPackagesTask$_mapPackagesByProject_closure3 s'()Uorg/springframework/build/gradle/DetectSplitPackagesTask$_findMergedProjects_closure4'(Ljava/lang/Object;Ljava/lang/Object;)V  Uorg/springframework/build/gradle/DetectSplitPackagesTask$_findMergedProjects_closure5 Uorg/springframework/build/gradle/DetectSplitPackagesTask$_findMergedProjects_closure6 s findPackages2(Ljava/util/Set;Ljava/io/File;Ljava/lang/String;)V* java/io/FileJ(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;  #+Oorg/springframework/build/gradle/DetectSplitPackagesTask$_findPackages_closure7 java/io/FileFilterasType 0 .createPojoWrapperS(Ljava/lang/Object;Ljava/lang/Class;)Lorg/codehaus/groovy/runtime/wrappers/Wrapper;  .[Ljava/io/File;,-./01Oorg/springframework/build/gradle/DetectSplitPackagesTask$_findPackages_closure8 Oorg/springframework/build/gradle/DetectSplitPackagesTask$_findPackages_closure9 packagesdirLjava/io/File; packagePathscanDir javaFilesgetClass()Ljava/lang/Class;   initMetaClass+(Ljava/lang/Object;)Lgroovy/lang/MetaClass;  ! ."  $(org/codehaus/groovy/reflection/ClassInfo& getClassInfo=(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo; () '* getMetaClass ,6 '-groovy/lang/MetaClass/ setMetaClass(Lgroovy/lang/MetaClass;)V invokeMethod8(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; -J(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; 36 07 getProperty&(Ljava/lang/String;)Ljava/lang/Object;8(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; 9; 0<.? A CgetProjectsToScan()Ljava/util/Set;setProjectsToScan(Ljava/util/Set;)V$callSiteArrayLjava/lang/ref/SoftReference;$createCallSiteArray_1([Ljava/lang/String;)V subprojectsMprojectOZisEmptyReachT<$constructor$>VtoArrayZkeySet\length^minus`plusbgetAtd{ retainAllgnextifindAllk listFilesmaddo$createCallSiteArray6()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;2 KL t2org/codehaus/groovy/runtime/callsite/CallSiteArrayv'(Ljava/lang/Class;[Ljava/lang/String;)V x wy IJ {java/lang/ref/SoftReference} ~} qr  ~marray  w_detectSplitPackages_closure1_doDetectSplitPackages_closure2_mapPackagesByProject_closure3_findMergedProjects_closure4_findMergedProjects_closure5_findMergedProjects_closure6_findPackages_closure7_findPackages_closure8_findPackages_closure9 ConstantValue SignatureRuntimeVisibleAnnotationsCodeLocalVariableTableLineNumberTable StackMapTableO()Ljava/util/Map;>;N()Ljava/util/Map;>;C()Ljava/util/Map;F(Ljava/util/Set;Ljava/io/File;Ljava/lang/String;)V+()Ljava/util/Set;,(Ljava/util/Set;)V SourceFile InnerClasses!      IJb*L+ 2+!2*'*M,,2,*_4,W*8N-*_:-W<:*>@DWF:*H@DW ]IJ 9EMFKLMN T+U2*YN-M-W]:MW+^2,ag<ikZ_n:W+o2,qY**twW+x2z~ IJX-K'K4LLM[NqQ @;LZ[ LkZ_nM,WNN T+2*Y:NW:NW:N T+2*Y::W::W+2+2aa:  W+2 *:  WN T6  W +2 wi+2 w6  W +2 w+2  wkZ_n:  W+2  wkZ_n:W+2+2 ~w:W+2~w:W+2wW+2ag!+2- ~w~!+2-~w ~+2Y**, ŹwW Y6+2_aY6 WW Y6+2_aY6 WW\6W+2 w<`6W+2 w+2 wkZ_n:W+2 wkZ_n:W+2+2~w:W+2~w:W+2wW+2ag!+2-~w~!+2-~w~+2Y**,ŹwWY6`Y6WWY6`Y6WW,~ո2հIJLf   0 1 NnOVr""VW<WLXqXZ[]^_4`QbqcdfgfghiL]l^_`bcd f g f%gGhiip'k k kC k3kkk@ @ @ kk"kkk@ @ @k k [=LkZ_nM,W+2*4Y**,wW,~ո2հ;IJ'tu.~ ;[aLkZ_nM,W+2+2+2*4Y**wY**wY**,wW,~ո2հ_IJKR _  b*kZ_nN+kZ_n:,kZ_n::2~~@:W2Yw 2 :WN TI 2* 2-~,~@wWF 2* 2-~,~@wW22YwY-wWR` V K Cw%Fz- ,@kkk #@#@56B'**#%L+*+YL%+. ',6/*:YW*Y8:*:I012*+:34 *5*+,89: *5*+=>!@K*B*W@L+D+WEF*4GH*+4 KLqe* NS*!PS*UQS*^SS*oUS*xWS*XS*YS*[S*]S*_S*aS*cS*aS*eS*eS*WS*fS*fS*hS*SS*fS*fS*US*jS*jS*aS*aS*eS*eS*WS*fS*fS*hS*SS*fS*fS*US*US*US*lS*lS*WS*nS* _S* pS* _S* pS*US*nS qr"s@K*uwY*z C(||wYKK~Y*|* wJ qcbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-groovy/test.desc000066400000000000000000000003761333451767700232500ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure DetectSplitPackagesTask.class --show-symbol-table --no-lazy-methods --no-refine-strings ^EXIT=0$ ^SIGNAL=0$ -- -- This doesn't work under symex-driven lazy loading because no entry-point function is given. cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-unexpected/000077500000000000000000000000001333451767700222425ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-unexpected/Makefile000066400000000000000000000000701333451767700236770ustar00rootroot00000000000000 T=unexpected all : $T.class %.class : %.j jasmin $< cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-unexpected/test.desc000066400000000000000000000010411333451767700240550ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure unexpected.class --verbosity 10 --show-symbol-table ^EXIT=0$ ^SIGNAL=0$ -- -- The LVT in the only method in unexpected.class does not satisfy the constraints expected by the bytecode to goto conversion algorithms. Namely, the live range of parameter x in that method is not preceeded by a store_i instruction, which is perfectly possibly as per the JVM specs but currently additionally required in CBMC. This doesn't work under symex-driven lazy loading because no entry-point function is given. cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-unexpected/unexpected.class000066400000000000000000000006321333451767700254360ustar00rootroot00000000000000.  unexpected.jjava/lang/Object unexpectedReturning from test1!argCode  SourceFilexI java/io/PrintStreamprintlnStarting test1!java/lang/Systemtest1(I)I out(Ljava/lang/String;)VLocalVariableTableLjava/io/PrintStream;!  >  `<   cbmc-cbmc-5.10/jbmc/regression/jbmc/lvt-unexpected/unexpected.j000066400000000000000000000014051333451767700245610ustar00rootroot00000000000000.class public unexpected .super java/lang/Object .method public static test1(I)I .limit stack 10 .limit locals 20 ; unexpected in previous code, as arg is the argument of the method and its ; start_pc is != 0 .var 0 is arg I from Label1 to Label2 .var 1 is x I from Label1 to Label2 ; say hello getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Starting test1!" invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V Label1: ; x = arg + 3 iload_0 iconst_3 iadd istore_1 ; say bye getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Returning from test1!" invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V ; return x iload_1 ireturn Label2: .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null1/000077500000000000000000000000001333451767700246045ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null1/Main.class000066400000000000000000000010531333451767700265160ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   ]/*+*2 Y*2 Y .   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null1/Main.java000066400000000000000000000003011333451767700263250ustar00rootroot00000000000000public class Main { public static void main(String[] args) { if(args.length>1) { assert(args[0] != null); // must hold assert(args[1] != null); // must hold } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null1/test.desc000066400000000000000000000001251333451767700264210ustar00rootroot00000000000000CORE Main.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null2/000077500000000000000000000000001333451767700246055ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null2/Main.class000066400000000000000000000010211333451767700265120ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   C**2 Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null2/Main.java000066400000000000000000000002261333451767700263340ustar00rootroot00000000000000public class Main { public static void main(String[] args) { if(args.length>0) { assert(args[0] != null); // must not fail } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-elements-non-null2/test.desc000066400000000000000000000001251333451767700264220ustar00rootroot00000000000000CORE Main.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null-with-function1/000077500000000000000000000000001333451767700255665ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null-with-function1/Main.class000066400000000000000000000010061333451767700274760ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   8* Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null-with-function1/Main.java000066400000000000000000000001561333451767700273170ustar00rootroot00000000000000public class Main { public static void main(String[] args) { assert(args != null); // must hold } } cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null-with-function1/test.desc000066400000000000000000000001511333451767700274020ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null1/000077500000000000000000000000001333451767700227725ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null1/Main.class000066400000000000000000000010061333451767700247020ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   8* Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null1/Main.java000066400000000000000000000001561333451767700245230ustar00rootroot00000000000000public class Main { public static void main(String[] args) { assert(args != null); // must hold } } cbmc-cbmc-5.10/jbmc/regression/jbmc/main-args-non-null1/test.desc000066400000000000000000000001251333451767700246070ustar00rootroot00000000000000CORE Main.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters1/000077500000000000000000000000001333451767700230575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters1/method_parameters.class000066400000000000000000000041461333451767700276160ustar00rootroot000000000000004A >@^;dZ?@()VCodeLineNumberTabletest1test2(Z)Vtest3(B)Vtest3a(C)Vtest4(I)Vtest5(F)Vtest6(Ljava/lang/String;)Vtest7(J)Vtest8(D)Vtest9(IJ)Vtest10(DLjava/lang/String;)Vtest11([[I)Vtest12([[DD)D StackMapTabletest12a ([[[DID)Vtest12btest12c([[[DD)Vtest13(DIBC)Vttest1ttest2ttest3ttest3attest4ttest5ttest6ttest7ttest8ttest9ttest10ttest11ttest12ttest12attest12bttest12cttest13 SourceFilemethod_parameters.java method_parametersjava/lang/Object #*               !{6  !!{6 %&  )!"D++2(+21c -./# $% 3&" 7'( <)* ?+ D,  G- J. M/ P0 S1 V2 Y3 \4 {> `a5 {> ef6  i7"D**2'*21c mno# 8% s9" w:( |;* <=cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters1/method_parameters.java000066400000000000000000000033011333451767700274220ustar00rootroot00000000000000class method_parameters { void test1() {} void test2(boolean b) {} void test3(byte b) {} void test3a(char c) {} void test4(int i) {} void test5(float f) {} void test6(String s) {} void test7(long l) {} void test8(double l) {} void test9(int i, long l) { int local = 123; } void test10(double i, String s) { int local = 123; } void test11(int a[][]) {} double test12(double a[][], double d) { if (a.length < 1) return 0; if (a[0].length < 1) return 0; return d + a[0][0]; } void test12a(double a[][][], int i, double d) {} double test12b(double a[][], double d) { return 123.123; } void test12c(double a[][][], double d) { } void test13(double d, int i, byte b, char c) {} // Same as above but now static static void ttest1() {} static void ttest2(boolean b) {} static void ttest3(byte b) {} static void ttest3a(char c) {} static void ttest4(int i) {} static void ttest5(float f) {} static void ttest6(String s) {} static void ttest7(long l) {} static void ttest8(double l) {} static void ttest9(int i, long l) { int local = 123; } static void ttest10(double i, String s) { int local = 123; } static void ttest11(int a[][]) {} static double ttest12(double a[][], double d) { if (a.length < 1) return 0; if (a[0].length < 1) return 0; return d + a[0][0]; } static void ttest12a(double a[][][], int i, double d) {} static double ttest12b(double a[][], double d) { return 123.123; } static void ttest12c(double a[][][], double d) { } static void ttest13(double d, int i, byte b, char c) {} } cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters1/test.desc000066400000000000000000000005731333451767700247030ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure method_parameters.class --verbosity 10 --show-symbol-table ^EXIT=0$ ^SIGNAL=0$ -- -- The purpose of the test is ensuring that the bytecode -> symbol table AST generation happens correctly. The generated .class file does not contain LVTs. This doesn't work under symex-driven lazy loading because no entry-point function is given. cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters2/000077500000000000000000000000001333451767700230605ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters2/method_parameters.class000066400000000000000000000063701333451767700276200ustar00rootroot000000000000004X U@^;dZVW()VCodeLineNumberTableLocalVariableTablethisLmethod_parameters;test1test2(Z)VbZtest3(B)VBtest3a(C)VcCtest4(I)ViItest5(F)VfFtest6(Ljava/lang/String;)VsLjava/lang/String;test7(J)VlJtest8(D)VDtest9(IJ)Vlocaltest10(DLjava/lang/String;)Vtest11([[I)Va[[Itest12([[DD)D[[Dd StackMapTabletest12a ([[[DID)V[[[Dtest12btest12c([[[DD)Vtest13(DIBC)Vttest1ttest2ttest3ttest3attest4ttest5ttest6ttest7ttest8ttest9ttest10ttest11ttest12ttest12attest12bttest12cttest13 SourceFilemethod_parameters.java method_parametersjava/lang/Object #/*   +   5   5   5   5   5    !"5   #$%&5   '()*5   '+,-Q{6  ! * '(./0Q{6 %& * +#$.125 )  3456j++2(+21c -./  378+9 :;I 3 * 3<8+=6B 7  378+>?? <  3<8+@AS ? 4 8+B DC+ G D+ J E+ M F+ P G+ S  H"+ V #$I&+ Y '(J*+ \ '+K-F{> `a '(.L0F{> ef +#$.M2+ i 34N6`**2'*21c mno 378+9 O;? s 3<8+P68 w 378+Q?5 | 3<8+RAI  *8+STcbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters2/method_parameters.java000066400000000000000000000033011333451767700274230ustar00rootroot00000000000000class method_parameters { void test1() {} void test2(boolean b) {} void test3(byte b) {} void test3a(char c) {} void test4(int i) {} void test5(float f) {} void test6(String s) {} void test7(long l) {} void test8(double l) {} void test9(int i, long l) { int local = 123; } void test10(double i, String s) { int local = 123; } void test11(int a[][]) {} double test12(double a[][], double d) { if (a.length < 1) return 0; if (a[0].length < 1) return 0; return d + a[0][0]; } void test12a(double a[][][], int i, double d) {} double test12b(double a[][], double d) { return 123.123; } void test12c(double a[][][], double d) { } void test13(double d, int i, byte b, char c) {} // Same as above but now static static void ttest1() {} static void ttest2(boolean b) {} static void ttest3(byte b) {} static void ttest3a(char c) {} static void ttest4(int i) {} static void ttest5(float f) {} static void ttest6(String s) {} static void ttest7(long l) {} static void ttest8(double l) {} static void ttest9(int i, long l) { int local = 123; } static void ttest10(double i, String s) { int local = 123; } static void ttest11(int a[][]) {} static double ttest12(double a[][], double d) { if (a.length < 1) return 0; if (a[0].length < 1) return 0; return d + a[0][0]; } static void ttest12a(double a[][][], int i, double d) {} static double ttest12b(double a[][], double d) { return 123.123; } static void ttest12c(double a[][][], double d) { } static void ttest13(double d, int i, byte b, char c) {} } cbmc-cbmc-5.10/jbmc/regression/jbmc/method_parameters2/test.desc000066400000000000000000000006501333451767700247000ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure method_parameters.class --verbosity 10 --show-symbol-table ^EXIT=0$ ^SIGNAL=0$ -- -- The purpose of the test is ensuring that the bytecode -> symbol table AST generation happens correctly. The generated .class file DOES contain LVTs, i.e., it has been compiled with with "javac -g". This doesn't work under symex-driven lazy loading because no entry-point function is given. cbmc-cbmc-5.10/jbmc/regression/jbmc/monitorenter1/000077500000000000000000000000001333451767700221015ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/monitorenter1/monitorenter1.class000066400000000000000000000015131333451767700257360ustar00rootroot000000000000004+   !" # $%&$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLmonitorenter1;doIt(I)IsomeIwhat StackMapTable#&'test SourceFilemonitorenter1.java java/lang/AssertionError monitorenter1( )*java/lang/Objectjava/lang/Throwablejava/lang/ClassdesiredAssertionStatus()Z!   /*  *YN=-ç :-    *    O* Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/monitorenter1/monitorenter1.java000066400000000000000000000003151333451767700255510ustar00rootroot00000000000000public class monitorenter1 { public int doIt(int what) { int some; synchronized(this) { some=what; } return some; } public void test() { assert doIt(1)==1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/monitorenter1/test.desc000066400000000000000000000001731333451767700237210ustar00rootroot00000000000000CORE monitorenter1.class --function monitorenter1.test ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/multinewarray/000077500000000000000000000000001333451767700221765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/multinewarray/A.class000066400000000000000000000002741333451767700234100ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFilemultinewarray.java Ajava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/multinewarray/multinewarray.class000066400000000000000000000014031333451767700261260ustar00rootroot000000000000004$    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable  SourceFilemultinewarray.java [[[I java/lang/AssertionError[[I multinewarray! "#java/lang/Object[Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z    * L+ Y+2 Y+22 Y=>:6%62`O۱6   2 JLNV_hu{' 4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/multinewarray/multinewarray.java000066400000000000000000000007431333451767700257500ustar00rootroot00000000000000class A { } class multinewarray { public static void main(String[] args) { int[][][] some_a = new int[4][3][2]; assert some_a.length==4; assert some_a[0].length==3; assert some_a[0][0].length==2; int x=3; int y=5; int[][] int_array = new int[x][y]; for(int i=0; i()VCodeLineNumberTablemust_not_throwRuntimeInvisibleAnnotationsLorg/cprover/MustNotThrow;main StackMapTable! SourceFile Test.java java/lang/RuntimeExceptionOh dear ( java/lang/Throwable java/lang/AssertionErrorTest) *+java/lang/Object(Ljava/lang/String;)Vjava/lang/ClassdesiredAssertionStatus()Z!  * " Y SK Y    F4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/must-not-throw-annotation/Test.java000066400000000000000000000004051333451767700261530ustar00rootroot00000000000000public class Test { @org.cprover.MustNotThrow public static void mustNotThrow() { throw new RuntimeException("Oh dear"); } public static void main() { try { mustNotThrow(); } catch(Throwable e) { assert false; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/must-not-throw-annotation/org/000077500000000000000000000000001333451767700251615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/must-not-throw-annotation/org/cprover/000077500000000000000000000000001333451767700266415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/must-not-throw-annotation/org/cprover/MustNotThrow.class000066400000000000000000000002341333451767700323240ustar00rootroot000000000000004  SourceFileMustNotThrow.javaorg/cprover/MustNotThrowjava/lang/Objectjava/lang/annotation/Annotation&cbmc-cbmc-5.10/jbmc/regression/jbmc/must-not-throw-annotation/org/cprover/MustNotThrow.java000066400000000000000000000000711333451767700321370ustar00rootroot00000000000000package org.cprover; public @interface MustNotThrow { } cbmc-cbmc-5.10/jbmc/regression/jbmc/must-not-throw-annotation/test.desc000066400000000000000000000001511333451767700262060ustar00rootroot00000000000000CORE Test.class --function Test.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null1/000077500000000000000000000000001333451767700255215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null1/Main.class000066400000000000000000000010251333451767700274320ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  G***2 Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null1/Main.java000066400000000000000000000002471333451767700272530ustar00rootroot00000000000000public class Main { static void main(String[] args) // not public! { if(args != null && args.length>0) assert(args[0] != null); // allowed to fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null1/test.desc000066400000000000000000000001461333451767700273410ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null2/000077500000000000000000000000001333451767700255225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null2/Main.class000066400000000000000000000010251333451767700274330ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  G***2 Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null2/Main.java000066400000000000000000000002571333451767700272550ustar00rootroot00000000000000public class Main { static void main(String[] args) // not public! { if(args != null && args.length>0) { assert(args[0] == null); // allowed to fail } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-elements-maybe-null2/test.desc000066400000000000000000000001461333451767700273420ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null1/000077500000000000000000000000001333451767700237075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null1/Main.class000066400000000000000000000010061333451767700256170ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  8+ Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null1/Main.java000066400000000000000000000001741333451767700254400ustar00rootroot00000000000000public class Main { public void main(String[] args) // not static! { assert(args != null); // allowed to fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null1/test.desc000066400000000000000000000001461333451767700255270ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null2/000077500000000000000000000000001333451767700237105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null2/Main.class000066400000000000000000000010061333451767700256200ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  8+ Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null2/Main.java000066400000000000000000000001741333451767700254410ustar00rootroot00000000000000public class Main { public void main(String[] args) // not static! { assert(args == null); // allowed to fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-args-maybe-null2/test.desc000066400000000000000000000001461333451767700255300ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-int-array-maybe-null1/000077500000000000000000000000001333451767700246615ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-int-array-maybe-null1/Main.class000066400000000000000000000011501333451767700265710ustar00rootroot000000000000004!    $assertionsDisabledZ()VCodeLineNumberTablemain([I)V StackMapTable SourceFile Main.java java/lang/AssertionErrorjava/lang/ExceptionMain  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *  D* Y* Y***.<L Y-14"$- 1 4 5 C O  4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-int-array-maybe-null1/Main.java000066400000000000000000000005011333451767700264040ustar00rootroot00000000000000public class Main { public static void main(int[] args) { assert(args == null); // allowed to fail assert(args != null); // allowed to fail if(args != null && args.length > 0) { try { int i = args[0]; } catch(Exception e) { assert false; // must hold } } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-int-array-maybe-null1/test.desc000066400000000000000000000005661333451767700265070ustar00rootroot00000000000000CORE Main.class --function Main.main --throw-runtime-exceptions ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 5 function .* bytecode-index 7: FAILURE assertion at file Main\.java line 6 function .* bytecode-index 15: FAILURE assertion at file Main\.java line 12 function .* bytecode-index 32: SUCCESS \*\* 2 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null1/000077500000000000000000000000001333451767700252215ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null1/Main.class000066400000000000000000000010411333451767700271300ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([[Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   R-)*%* *2*2*22 Y , ,  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null1/Main.java000066400000000000000000000003371333451767700267530ustar00rootroot00000000000000public class Main { public static void main(String[][] args) { assert(args == null || args.length == 0 || args[0] == null || args[0].length == 0 || args[0][0] != null); // allowed to fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null1/test.desc000066400000000000000000000003051333451767700270360ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 5 function .* bytecode-index 25: FAILURE \*\* 1 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null2/000077500000000000000000000000001333451767700252225ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null2/Main.class000066400000000000000000000010411333451767700271310ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([[Ljava/lang/String;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   R-)*%* *2*2*22 Y , ,  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null2/Main.java000066400000000000000000000003371333451767700267540ustar00rootroot00000000000000public class Main { public static void main(String[][] args) { assert(args == null || args.length == 0 || args[0] == null || args[0].length == 0 || args[0][0] == null); // allowed to fail } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-multi-array-maybe-null2/test.desc000066400000000000000000000003051333451767700270370ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 5 function .* bytecode-index 25: FAILURE \*\* 1 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null1/000077500000000000000000000000001333451767700271475ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null1/Main.class000066400000000000000000000010111333451767700310530ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain ([LMain;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   G***2 Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null1/Main.java000066400000000000000000000002471333451767700307010ustar00rootroot00000000000000public class Main { public static void main(Main[] args) { if(args != null && args.length > 0) { assert(args[0] == null); // allowed to fail } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null1/test.desc000066400000000000000000000003051333451767700307640ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 6 function .* bytecode-index 14: FAILURE \*\* 1 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null2/000077500000000000000000000000001333451767700271505ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null2/Main.class000066400000000000000000000010111333451767700310540ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain ([LMain;)V StackMapTable SourceFile Main.java  java/lang/AssertionErrorMain java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   G***2 Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null2/Main.java000066400000000000000000000002471333451767700307020ustar00rootroot00000000000000public class Main { public static void main(Main[] args) { if(args != null && args.length > 0) { assert(args[0] != null); // allowed to fail } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-elements-maybe-null2/test.desc000066400000000000000000000003051333451767700307650ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 6 function .* bytecode-index 14: FAILURE \*\* 1 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null1/000077500000000000000000000000001333451767700253355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null1/Main$A.class000066400000000000000000000003651333451767700274210ustar00rootroot000000000000004  xI()VCodeLineNumberTable SourceFile Main.java Main$AA InnerClassesjava/lang/ObjectMain!*      cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null1/Main.class000066400000000000000000000012011333451767700272420ustar00rootroot000000000000004&      !"A InnerClassesaLMain$A;$assertionsDisabledZ()VCodeLineNumberTablemain ([LMain;)V StackMapTable SourceFile Main.java  java/lang/AssertionError Main# $%java/lang/ObjectMain$Ajava/lang/ClassdesiredAssertionStatus()Z! * o9* Y*%* *2L++ Y    #8%4 @   cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null1/Main.java000066400000000000000000000005001333451767700270570ustar00rootroot00000000000000public class Main { public static class A { int x; } public A a; public static void main(Main[] args) { assert(args != null); // allowed to fail if(args != null && args.length > 0) { Main m = args[0]; if(m != null) { assert(m.a == null); // allowed to fail } } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null1/test.desc000066400000000000000000000004211333451767700271510ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 10 function .* bytecode-index 7: FAILURE assertion at file Main\.java line 14 function .* bytecode-index 27: FAILURE \*\* 2 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null2/000077500000000000000000000000001333451767700253365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null2/Main$A.class000066400000000000000000000003651333451767700274220ustar00rootroot000000000000004  xI()VCodeLineNumberTable SourceFile Main.java Main$AA InnerClassesjava/lang/ObjectMain!*      cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null2/Main.class000066400000000000000000000012011333451767700272430ustar00rootroot000000000000004&      !"A InnerClassesaLMain$A;$assertionsDisabledZ()VCodeLineNumberTablemain ([LMain;)V StackMapTable SourceFile Main.java  java/lang/AssertionError Main# $%java/lang/ObjectMain$Ajava/lang/ClassdesiredAssertionStatus()Z! * o9* Y*%* *2L++ Y    #8%4 @   cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null2/Main.java000066400000000000000000000005001333451767700270600ustar00rootroot00000000000000public class Main { public static class A { int x; } public A a; public static void main(Main[] args) { assert(args != null); // allowed to fail if(args != null && args.length > 0) { Main m = args[0]; if(m != null) { assert(m.a != null); // allowed to fail } } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/no-main-object-array-maybe-null2/test.desc000066400000000000000000000004211333451767700271520ustar00rootroot00000000000000CORE Main.class --function Main.main ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Main\.java line 10 function .* bytecode-index 7: FAILURE assertion at file Main\.java line 14 function .* bytecode-index 27: FAILURE \*\* 2 of .* failed -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/000077500000000000000000000000001333451767700220575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/Test.class000066400000000000000000000011071333451767700240240ustar00rootroot000000000000004!    xI$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable notOverlain SourceFile Test.java java/lang/AssertionErrorTest  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * 4 Y     4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/Test.java000066400000000000000000000002511333451767700236370ustar00rootroot00000000000000public class Test { public int x; public static void main(String[] args) { assert(false); } public static void notOverlain() { assert(true); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/000077500000000000000000000000001333451767700244145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/com/000077500000000000000000000000001333451767700251725ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/com/diffblue/000077500000000000000000000000001333451767700267525ustar00rootroot00000000000000OverlayClassImplementation.class000066400000000000000000000002711333451767700352370ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/com/diffblue4  SourceFileOverlayClassImplementation.java'com/diffblue/OverlayClassImplementationjava/lang/Objectjava/lang/annotation/Annotation&OverlayClassImplementation.java000066400000000000000000000001101333451767700350430ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/com/diffbluepackage com.diffblue; public @interface OverlayClassImplementation { } OverlayMethodImplementation.class000066400000000000000000000002731333451767700354140ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/com/diffblue4  SourceFile OverlayMethodImplementation.java(com/diffblue/OverlayMethodImplementationjava/lang/Objectjava/lang/annotation/Annotation&OverlayMethodImplementation.java000066400000000000000000000001111333451767700352170ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/annotations/com/diffbluepackage com.diffblue; public @interface OverlayMethodImplementation { } cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/correct-overlay/000077500000000000000000000000001333451767700251775ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/correct-overlay/Test.class000066400000000000000000000006341333451767700271500ustar00rootroot000000000000004 xI()VCodeLineNumberTablemain([Ljava/lang/String;)VRuntimeInvisibleAnnotations*Lcom/diffblue/OverlayMethodImplementation; SourceFile Test.java)Lcom/diffblue/OverlayClassImplementation; Testjava/lang/Object!*      cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/correct-overlay/Test.java000066400000000000000000000004071333451767700267620ustar00rootroot00000000000000import com.diffblue.OverlayClassImplementation; import com.diffblue.OverlayMethodImplementation; @OverlayClassImplementation public class Test { public int x; @OverlayMethodImplementation public static void main(String[] args) { assert(true); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/correct-test.desc000066400000000000000000000016521333451767700253410ustar00rootroot00000000000000CORE Test.class --classpath `../../../../scripts/format_classpath.sh . annotations correct-overlay` --verbosity 10 ^Getting class `Test' from file \.[\\/]Test\.class$ ^Getting class `Test' from file correct-overlay[\\/]Test\.class$ ^Adding symbol from overlay class: field 'x'$ ^Adding symbol from overlay class: method 'java::Test\.:\(\)V'$ ^Field definition for java::Test\.x already loaded from overlay class$ ^Adding symbol from overlay class: method 'java::Test\.main:\(\[Ljava/lang/String;\)V'$ ^Method java::Test\.:\(\)V exists in an overlay class without being marked as an overlay and also exists in the underlying class ^Adding symbol: method 'java::Test\.notOverlain:\(\)V'$ ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^Skipping class Test marked with OverlayClassImplementation but found before original definition$ ^Skipping duplicate definition of class Test not marked with OverlayClassImplementation$ cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/duplicate-test.desc000066400000000000000000000016541333451767700256540ustar00rootroot00000000000000CORE Test.class --classpath `../../../../scripts/format_classpath.sh . annotations . correct-overlay` --verbosity 10 ^Getting class `Test' from file \.[\\/]Test\.class$ ^Getting class `Test' from file correct-overlay[\\/]Test\.class$ ^Skipping duplicate definition of class Test not marked with OverlayClassImplementation$ ^Adding symbol from overlay class: field 'x'$ ^Adding symbol from overlay class: method 'java::Test\.:\(\)V'$ ^Field definition for java::Test\.x already loaded from overlay class$ ^Adding symbol from overlay class: method 'java::Test\.main:\(\[Ljava/lang/String;\)V'$ ^Method java::Test\.:\(\)V exists in an overlay class without being marked as an overlay and also exists in the underlying class ^Adding symbol: method 'java::Test\.notOverlain:\(\)V'$ ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -- ^Skipping class Test marked with OverlayClassImplementation but found before original definition$ cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/misordered-test.desc000066400000000000000000000013641333451767700260350ustar00rootroot00000000000000CORE Test.class --classpath `../../../../scripts/format_classpath.sh annotations correct-overlay .` --verbosity 10 ^Getting class `Test' from file correct-overlay[\\/]Test\.class$ ^Getting class `Test' from file \.[\\/]Test\.class$ ^Skipping class Test marked with OverlayClassImplementation but found before original definition$ ^Adding symbol: field 'x'$ ^Adding symbol: method 'java::Test\.main:\(\[Ljava/lang/String;\)V'$ ^Adding symbol: method 'java::Test\.notOverlain:\(\)V'$ ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^Skipping duplicate definition of class Test not marked with OverlayClassImplementation$ ^Adding symbol from overlay class exists in an overlay class without being marked as an overlay and also exists in the underlying class cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/unmarked-overlay/000077500000000000000000000000001333451767700253445ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/unmarked-overlay/Test.class000066400000000000000000000011311333451767700273060ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTableRuntimeInvisibleAnnotations*Lcom/diffblue/OverlayMethodImplementation; SourceFile Test.java  java/lang/AssertionErrorTest java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *   4 Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/unmarked-overlay/Test.java000066400000000000000000000003331333451767700271250ustar00rootroot00000000000000import com.diffblue.OverlayClassImplementation; import com.diffblue.OverlayMethodImplementation; public class Test { @OverlayMethodImplementation public static void main(String[] args) { assert(false); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/overlay-class/unmarked-test.desc000066400000000000000000000013661333451767700255100ustar00rootroot00000000000000CORE Test.class --classpath `../../../../scripts/format_classpath.sh . annotations unmarked-overlay` --verbosity 10 ^Getting class `Test' from file \.[\\/]Test\.class$ ^Getting class `Test' from file unmarked-overlay[\\/]Test\.class$ ^Skipping duplicate definition of class Test not marked with OverlayClassImplementation$ ^Adding symbol: field 'x'$ ^Adding symbol: method 'java::Test\.main:\(\[Ljava/lang/String;\)V'$ ^Adding symbol: method 'java::Test\.notOverlain:\(\)V'$ ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^Skipping class Test marked with OverlayClassImplementation but found before original definition$ ^Adding symbol from overlay class exists in an overlay class without being marked as an overlay and also exists in the underlying class cbmc-cbmc-5.10/jbmc/regression/jbmc/overloading1/000077500000000000000000000000001333451767700216655ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/overloading1/other_class.class000066400000000000000000000003051333451767700252200ustar00rootroot000000000000004    ()VCodeLineNumberTable SourceFileoverloading1.java  other_classjava/lang/Object * cbmc-cbmc-5.10/jbmc/regression/jbmc/overloading1/overloading1.class000066400000000000000000000014471333451767700253140ustar00rootroot000000000000004+     !"  #$ %&'$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTablef(I)I(D)I(Lother_class;)I SourceFileoverloading1.java   java/lang/AssertionError  other_class  overloading1( )*java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z  * xI Y YY  Y  , H 4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/overloading1/overloading1.java000066400000000000000000000005111333451767700251170ustar00rootroot00000000000000class other_class { }; class overloading1 { public static void main(String[] args) { assert(f(1)==1); assert(f(1.0d)==2); assert(f(new other_class())==3); } static int f(int i) { return 1; } static int f(double d) { return 2; } static int f(other_class o) { return 3; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/overloading1/test.desc000066400000000000000000000001351333451767700235030ustar00rootroot00000000000000CORE overloading1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/000077500000000000000000000000001333451767700207475ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/classA.class000066400000000000000000000011131333451767700232000ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile classA.java   java/lang/AssertionErrorclassA! "#java/lang/Objectmypackage/classB some_method()Ijava/lang/ClassdesiredAssertionStatus()Z    *  E<{ Y   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/classA.java000066400000000000000000000002251333451767700230170ustar00rootroot00000000000000import mypackage.*; class classA { public static void main(String[] args) { int result=classB.some_method(); assert result==123; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/mypackage/000077500000000000000000000000001333451767700227105ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/mypackage/classB.class000066400000000000000000000004011333451767700251410ustar00rootroot000000000000004   ()VCodeLineNumberTable some_method()I SourceFile classB.java mypackage/classBjava/lang/Object!*  {  cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/mypackage/classB.java000066400000000000000000000001371333451767700247630ustar00rootroot00000000000000package mypackage; public class classB { public static int some_method() { return 123; } }; cbmc-cbmc-5.10/jbmc/regression/jbmc/package1/test.desc000066400000000000000000000001271333451767700225660ustar00rootroot00000000000000CORE classA.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/000077500000000000000000000000001333451767700226435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/main.class000066400000000000000000000003661333451767700246230ustar00rootroot000000000000003   ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFile main.java java/lang/Object!*    cbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/main.java000066400000000000000000000001041333451767700244250ustar00rootroot00000000000000public class main { public static void main(String[] args) { } }cbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/package_friendly1.class000066400000000000000000000002161333451767700272410ustar00rootroot000000000000003  operation1()V SourceFilepackage_friendly1.javapackage_friendly1java/lang/Objectcbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/package_friendly1.java000066400000000000000000000001731333451767700270570ustar00rootroot00000000000000interface package_friendly1 { void operation1(); } class package_friendly2 { int operation2() { return 999; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/package_friendly2.class000066400000000000000000000004151333451767700272430ustar00rootroot000000000000003   ()VCodeLineNumberTable operation2()I SourceFilepackage_friendly1.java package_friendly2java/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/package_friendly1/test.desc000066400000000000000000000005711333451767700244650ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure main.class --no-lazy-methods --java-load-class package_friendly1 --java-load-class package_friendly2 --show-goto-functions ^main[.]main[\(].*[\)].*$ ^package_friendly2[.]operation2[\(][\)].*$ ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring -- This doesn't work under symex-driven lazy loading because no entry-point function is given. cbmc-cbmc-5.10/jbmc/regression/jbmc/phi-merge_uninitialized_values/000077500000000000000000000000001333451767700254575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/phi-merge_uninitialized_values/PhiMergeUninitialized.class000066400000000000000000000027271333451767700327470ustar00rootroot000000000000003B + ,-. /0 / 1 23 + 4 56 789 Aetherial InnerClasses Ephemeralfield!LPhiMergeUninitialized$Ephemeral; staticField$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLPhiMergeUninitialized;dynamicAllocationUninitialized(Ljava/lang/Boolean;)IobjtriggerLjava/lang/Boolean; StackMapTable.fieldUninitializedstaticFieldUninitialized SourceFilePhiMergeUninitialized.java : ;<PhiMergeUninitialized$Ephemeral =PhiMergeUninitialized$Aetherial  >?java/lang/AssertionError  PhiMergeUninitialized@ A<java/lang/Objectjava/lang/Boolean booleanValue()Z(LPhiMergeUninitialized;I)VvalIjava/lang/ClassdesiredAssertionStatus!  /*  <+Y**MY*M, Y , 7 *!<<"# !$  %& 7+*Y** * * Y * /77"#$' D+Y** Y*L  L Y !$$=%DD"#$ (4 $ @)*  cbmc-cbmc-5.10/jbmc/regression/jbmc/phi-merge_uninitialized_values/PhiMergeUninitialized.java000066400000000000000000000020731333451767700325550ustar00rootroot00000000000000public class PhiMergeUninitialized { public int dynamicAllocationUninitialized(Boolean trigger) { Ephemeral obj; if (trigger) { obj = new Ephemeral(42); } else { obj = new Aetherial(20); } assert obj.val == 20; return obj.val; } private Ephemeral field; public int fieldUninitialized(Boolean trigger) { if (trigger) { field = new Ephemeral(42); } assert field.val == 42; return field.val; } private static Ephemeral staticField; public int staticFieldUninitialized(Boolean trigger) { if (trigger) { staticField = new Ephemeral(42); } else { staticField = new Aetherial(76); } assert staticField.val == 76; return staticField.val; } class Ephemeral { Ephemeral(int value) { val = value; } int val; } class Aetherial extends Ephemeral { Aetherial(int value) { super(value); } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/phi-merge_uninitialized_values/field.desc000066400000000000000000000010371333451767700274030ustar00rootroot00000000000000CORE PhiMergeUninitialized.class --function PhiMergeUninitialized.fieldUninitialized --show-vcc activate-multi-line-match ^EXIT=0$ ^SIGNAL=0$ -- ^.*:\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0\) ^.*\?\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0\s+: -- These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below statement: (guard ? dynamic_object2@3#1 : dynamic_object3@3#0) Should not appear. First regex deals with when the gen zero is the latter position, second when it's in the former.cbmc-cbmc-5.10/jbmc/regression/jbmc/phi-merge_uninitialized_values/local.desc000066400000000000000000000010531333451767700274100ustar00rootroot00000000000000CORE PhiMergeUninitialized.class --function PhiMergeUninitialized.dynamicAllocationUninitialized --show-vcc activate-multi-line-match ^EXIT=0$ ^SIGNAL=0$ -- ^.*:\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0\) ^.*\?\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0\s+: -- These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below statement: (guard ? dynamic_object2@3#1 : dynamic_object3@3#0) Should not appear. First regex deals with when the gen zero is the latter position, second when it's in the former.cbmc-cbmc-5.10/jbmc/regression/jbmc/phi-merge_uninitialized_values/static_field.desc000066400000000000000000000010451333451767700307510ustar00rootroot00000000000000CORE PhiMergeUninitialized.class --function PhiMergeUninitialized.staticFieldUninitialized --show-vcc activate-multi-line-match ^EXIT=0$ ^SIGNAL=0$ -- ^.*:\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0\) ^.*\?\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0\s+: -- These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below statement: (guard ? dynamic_object2@3#1 : dynamic_object3@3#0) Should not appear. First regex deals with when the gen zero is the latter position, second when it's in the former.cbmc-cbmc-5.10/jbmc/regression/jbmc/pointer_check1/000077500000000000000000000000001333451767700221715ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/pointer_check1/A.class000066400000000000000000000003171333451767700234010ustar00rootroot000000000000003   valI()VCodeLineNumberTable SourceFilepointer_check1.java Ajava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/pointer_check1/B.class000066400000000000000000000004251333451767700234020ustar00rootroot000000000000003  ()VCodeLineNumberTablegetVal(LA;)I SourceFilepointer_check1.java  Bjava/lang/ObjectAvalI * +  cbmc-cbmc-5.10/jbmc/regression/jbmc/pointer_check1/pointer_check1.class000066400000000000000000000005171333451767700261210ustar00rootroot000000000000003   ()VCodeLineNumberTablemain([Ljava/lang/String;)V SourceFilepointer_check1.java B pointer_check1java/lang/ObjectgetVal(LA;)I  *   /YL+=   cbmc-cbmc-5.10/jbmc/regression/jbmc/pointer_check1/pointer_check1.java000066400000000000000000000003121333451767700257260ustar00rootroot00000000000000class A { int val; } class B { int getVal(A a) { return a.val; } } class pointer_check1 { public static void main(String[] args) { B b = new B(); int myval = b.getVal(null); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/pointer_check1/test.desc000066400000000000000000000001341333451767700240060ustar00rootroot00000000000000CORE pointer_check1.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/provide_object_implementation/000077500000000000000000000000001333451767700253765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/provide_object_implementation/java/000077500000000000000000000000001333451767700263175ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/provide_object_implementation/java/lang/000077500000000000000000000000001333451767700272405ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/provide_object_implementation/java/lang/Object.class000066400000000000000000000021241333451767700314740ustar00rootroot000000000000004*# $%& $ '(()VCodeLineNumberTablegetClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;hashCode()Iequals(Ljava/lang/Object;)Z StackMapTableclone()Ljava/lang/Object; ExceptionstoString()Ljava/lang/String;notify notifyAllwait(J)V(JI)Vfinalize) SourceFile Object.java$java/lang/CloneNotSupportedException  objectjava/lang/InterruptedException java/lang/Objectjava/lang/Throwable!          . *+   @ Y           Y  "*   *       !"cbmc-cbmc-5.10/jbmc/regression/jbmc/provide_object_implementation/java/lang/Object.java000066400000000000000000000014511333451767700313120ustar00rootroot00000000000000package java.lang; public class Object { public final Class getClass() { return null; } public int hashCode() { return 0; } public boolean equals(Object obj) { return (this == obj); } protected Object clone() throws CloneNotSupportedException { throw new CloneNotSupportedException(); } public String toString() { return "object"; } public final void notify() {} public final void notifyAll() {} public final void wait(long timeout) throws InterruptedException { throw new InterruptedException(); } public final void wait(long timeout, int nanos) throws InterruptedException { wait(timeout); } public final void wait() throws InterruptedException { wait(0); } protected void finalize() throws Throwable { } } cbmc-cbmc-5.10/jbmc/regression/jbmc/provide_object_implementation/test.desc000066400000000000000000000004471333451767700272220ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure java/lang/Object.class --no-lazy-methods ^EXIT=6$ ^SIGNAL=0$ ^the program has no entry point$ -- ^failed to add class symbol java::java\.lang\.Object$ -- symex-driven lazy loading should emit "the program has no entry point" but currently doesn't cbmc-cbmc-5.10/jbmc/regression/jbmc/putfield_getfield1/000077500000000000000000000000001333451767700230335ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/putfield_getfield1/A.class000066400000000000000000000003211333451767700242360ustar00rootroot000000000000004   iI()VCodeLineNumberTable SourceFileputfield_getfield1.java Ajava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/putfield_getfield1/putfield_getfield1.class000066400000000000000000000011451333451767700276230ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileputfield_getfield1.java A !" java/lang/AssertionErrorputfield_getfield1# $%java/lang/ObjectiIjava/lang/ClassdesiredAssertionStatus()Z    * Z(YL++ Y   ' '4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/putfield_getfield1/putfield_getfield1.java000066400000000000000000000002431333451767700274350ustar00rootroot00000000000000class A { public int i; }; class putfield_getfield1 { public static void main(String[] args) { A a=new A(); a.i = 999; assert 999 == a.i; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/putfield_getfield1/test.desc000066400000000000000000000001431333451767700246500ustar00rootroot00000000000000CORE putfield_getfield1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_getstatic1/000077500000000000000000000000001333451767700234435ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_getstatic1/A.class000066400000000000000000000004231333451767700246510ustar00rootroot000000000000004  iI()VCodeLineNumberTable SourceFileputstatic_getstatic1.java  Ajava/lang/Object   *      cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_getstatic1/putstatic_getstatic1.class000066400000000000000000000011501333451767700306370ustar00rootroot000000000000004$     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFileputstatic_getstatic1.java   java/lang/AssertionErrorputstatic_getstatic1! "#java/lang/ObjectAiIjava/lang/ClassdesiredAssertionStatus()Z    *  a3 Y Y   2   4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_getstatic1/putstatic_getstatic1.java000066400000000000000000000002641333451767700304600ustar00rootroot00000000000000class A { public static int i = 1; }; class putstatic_getstatic1 { public static void main(String[] args) { assert A.i == 1; A.i = 999; assert A.i == 999; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_getstatic1/test.desc000066400000000000000000000001451333451767700252620ustar00rootroot00000000000000CORE putstatic_getstatic1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_source_location/000077500000000000000000000000001333451767700245635ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_source_location/test.class000066400000000000000000000005001333451767700265640ustar00rootroot000000000000004  xI()VCodeLineNumberTablemain SourceFile test.java  testjava/lang/Object!  *   !   !   cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_source_location/test.desc000066400000000000000000000002211333451767700263750ustar00rootroot00000000000000CORE test.class --show-goto-functions --function test.main ^EXIT=0$ ^SIGNAL=0$ test\.java line 5 function java::test.main:\(\)V bytecode-index 1 cbmc-cbmc-5.10/jbmc/regression/jbmc/putstatic_source_location/test.java000066400000000000000000000001661333451767700264100ustar00rootroot00000000000000public class test { public static int x; public static void main() { x = 1; } static { x = 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/reachability-slice/000077500000000000000000000000001333451767700230305ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/reachability-slice/A.class000066400000000000000000000004761333451767700242460ustar00rootroot000000000000004  ()VCodeLineNumberTablefoo(I)V StackMapTable SourceFileA.java Ajava/lang/Object!* c&`=`=`= `=`=   %   cbmc-cbmc-5.10/jbmc/regression/jbmc/reachability-slice/A.java000066400000000000000000000006341333451767700240560ustar00rootroot00000000000000public class A { public void foo(int i ) { // We use integer constants that we grep for later in a goto program. int x = 1001 + i; if (i > 0) { x = 1002 + i; // property "java::A.foo:(I)V.coverage.3", see https://github.com/diffblue/cbmc/pull/1943#discussion_r175367063 for a discusison. x = 1003 + i; } else x = 1004 + i; x = 1005 + i; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/reachability-slice/test.desc000066400000000000000000000007711333451767700246540ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure A.class --reachability-slice --show-goto-functions --property 'java::A.foo:(I)V.coverage.3' --cover location = \(int\)\(short\)1001 -- = \(int\)\(short\)1003 = \(int\)\(short\)1004 = \(int\)\(short\)1005 -- Note: 1002 might and might not be removed, based on where the assertion for coverage resides. At the time of writing of this test, 1002 is removed. Doesn't work with symex-driven lazy loading because the reachability slicer is a whole-program pass. cbmc-cbmc-5.10/jbmc/regression/jbmc/reachability-slice/test2.desc000066400000000000000000000005761333451767700247410ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure A.class --reachability-slice-fb --show-goto-functions --property 'java::A.foo:(I)V.coverage.4' --cover location = \(int\)\(short\)1001 = \(int\)\(short\)1002 = \(int\)\(short\)1003 = \(int\)\(short\)1005 -- = \(int\)\(short\)1004 -- Doesn't work with symex-driven lazy loading because the reachability slicer is a whole-program pass. cbmc-cbmc-5.10/jbmc/regression/jbmc/reachability-slice/test3.desc000066400000000000000000000005221333451767700247310ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure A.class --reachability-slice --show-goto-functions --cover location = \(int\)\(short\)1001 = \(int\)\(short\)1002 = \(int\)\(short\)1003 = \(int\)\(short\)1004 = \(int\)\(short\)1005 -- -- Doesn't work with symex-driven lazy loading because the reachability slicer is a whole-program pass. cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion1/000077500000000000000000000000001333451767700213655ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion1/recursion1.class000066400000000000000000000011621333451767700245060ustar00rootroot000000000000003"     $assertionsDisabledZ()VCodeLineNumberTablef(I)I StackMapTablemain([Ljava/lang/String;)V SourceFilerecursion1.java  java/lang/AssertionError recursion1 !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   * 8dh  < Y    5 @cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion1/recursion1.java000066400000000000000000000003011333451767700243140ustar00rootroot00000000000000public class recursion1 { static int f(int n) { if(n <= 0) return 1; else return n * f(n-1); } public static void main(String[] args) { assert f(1)==1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion2/000077500000000000000000000000001333451767700213665ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion2/recursion2.class000066400000000000000000000012011333451767700245020ustar00rootroot000000000000004"     $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTablerecursion_test(I)I SourceFilerecursion2.java java/lang/AssertionError recursion2 !java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z    *  = Y  : ``     4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion2/recursion2.java000066400000000000000000000003541333451767700243260ustar00rootroot00000000000000class recursion2 { public static void main(String[] args) { assert recursion_test(0)==10; } static int recursion_test(int depth) { if(depth<10) return recursion_test(depth+1)+1; else return 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/recursion2/test.desc000066400000000000000000000001331333451767700232020ustar00rootroot00000000000000CORE recursion2.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/000077500000000000000000000000001333451767700261575ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/VirtualFunctions$A.class000066400000000000000000000006131333451767700326720ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisA InnerClassesLVirtualFunctions$A;f SourceFileVirtualFunctions.java VirtualFunctions$Ajava/lang/ObjectVirtualFunctions!/*   +    cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/VirtualFunctions$B.class000066400000000000000000000006311333451767700326730ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisB InnerClassesLVirtualFunctions$B;f SourceFileVirtualFunctions.java VirtualFunctions$BVirtualFunctions$AAVirtualFunctions!/*    +      cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/VirtualFunctions$C.class000066400000000000000000000005341333451767700326760ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisC InnerClassesLVirtualFunctions$C; SourceFileVirtualFunctions.java VirtualFunctions$CVirtualFunctions$BBVirtualFunctions!/*      cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/VirtualFunctions.class000066400000000000000000000013311333451767700325230ustar00rootroot000000000000004) ! " " "#$%C InnerClasses&B'A static_objectLjava/lang/Object;()VCodeLineNumberTableLocalVariableTablethisLVirtualFunctions;check?(LVirtualFunctions$A;LVirtualFunctions$B;LVirtualFunctions$C;)VaLVirtualFunctions$A;bLVirtualFunctions$B;cLVirtualFunctions$C; SourceFileVirtualFunctions.java  (VirtualFunctionsjava/lang/ObjectVirtualFunctions$CVirtualFunctions$BVirtualFunctions$Af!/*  W *+,         cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/VirtualFunctions.java000066400000000000000000000006741333451767700323500ustar00rootroot00000000000000public class VirtualFunctions { Object static_object; public static class A { public void f() { } } public static class B extends A{ public void f() { } } public static class C extends B { } public static void check(A a, B b, C c) { // multiple possibilities, one needs a cast a.f(); // single possibility, does not need a cast b.f(); // single possibility, needs cast c.f(); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/remove_virtual_function_typecast/test.desc000066400000000000000000000011061333451767700277740ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure VirtualFunctions.class --lazy-methods --java-max-vla-length 48 --unwind 8 --java-unwind-enum-static --trace --cover location --function VirtualFunctions.check --show-goto-functions \(struct VirtualFunctions\$B \*\)a \. VirtualFunctions\$B\.f:\(\)V\(\);$ a \. VirtualFunctions\$A\.f:\(\)V\(\);$ b \. VirtualFunctions\$B\.f:\(\)V\(\);$ \(struct VirtualFunctions\$B \*\)c \. VirtualFunctions\$B\.f:\(\)V\(\);$ ^EXIT=0$ ^SIGNAL=0$ -- -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/000077500000000000000000000000001333451767700245725ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/AbstractList$Itr.class000066400000000000000000000013601333451767700307430ustar00rootroot000000000000004$   !this$0LAbstractList;(LAbstractList;)VCodeLineNumberTableLocalVariableTablethisItr InnerClassesLAbstractList$Itr;LocalVariableTypeTableLAbstractList.Itr;hasNext()Znext()Ljava/lang/Object; Signature()TE;!Ljava/lang/Object;LIterator; SourceFileAbstractList.java  "#AbstractList$Itrjava/lang/ObjectIterator()V AbstractList   J *+*       > "     > &     cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/AbstractList.class000066400000000000000000000026431333451767700302250ustar00rootroot000000000000004D 12 3 45 6 6 78 79 :;<Itr InnerClasses()VCodeLineNumberTableLocalVariableTablethisLAbstractList;LocalVariableTypeTableLAbstractList;iterator ()LIterator; Signature()LIterator; listIterator()LListIterator;()LListIterator;equals(Ljava/lang/Object;)Zo1Ljava/lang/Object;o2oe1LListIterator;e2TE;LListIterator;LListIterator<*>; StackMapTable=<3Ljava/lang/Object;LList; SourceFileAbstractList.java AbstractList$Itr > ?List = @A BC   AbstractListjava/lang/Object ListIterator(LAbstractList;)V(I)LListIterator;hasNext()Znext()Ljava/lang/Object;! A*  E Y*    B*    Uu+*+*M+N,8-/, :- :  ,-6 19AXZ]>9!!"A#"uu$"`%&V'&*9!!(u`%)V'*+ ,,.-- @./0  cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/AbstractList.java000066400000000000000000000017051333451767700300370ustar00rootroot00000000000000public abstract class AbstractList implements List { public Iterator iterator() { return new Itr(); } public ListIterator listIterator() { return listIterator(0); } public boolean equals(Object o) { if (o == this) return true; if (!(o instanceof List)) return false; ListIterator e1 = listIterator(); ListIterator e2 = ((List) o).listIterator(); while (e1.hasNext() && e2.hasNext()) { E o1 = e1.next(); Object o2 = e2.next(); if (!(o1==null ? o2==null : o1.equals(o2))) return false; } return !(e1.hasNext() || e2.hasNext()); } private class Itr implements Iterator { Itr() { } public boolean hasNext() { return false; } public E next() { return null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ArrayList$Itr.class000066400000000000000000000013331333451767700302560ustar00rootroot000000000000004$   !this$0 LArrayList;(LArrayList;)VCodeLineNumberTableLocalVariableTablethisItr InnerClassesLArrayList$Itr;LocalVariableTypeTableLArrayList.Itr;hasNext()Znext()Ljava/lang/Object; Signature()TE;!Ljava/lang/Object;LIterator; SourceFileArrayList.java  "# ArrayList$Itrjava/lang/ObjectIterator()V ArrayList   J *+*       >      >      cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ArrayList$ListItr.class000066400000000000000000000012611333451767700311120ustar00rootroot000000000000004$   !this$0 LArrayList;(LArrayList;I)VCodeLineNumberTableLocalVariableTablethisListItr InnerClassesLArrayList$ListItr;indexILocalVariableTypeTableLArrayList.ListItr; hasPrevious()Z SignatureItr'LArrayList.Itr;LListIterator; SourceFileArrayList.java  "#ArrayList$ListItr ArrayList$Itr ListIterator(LArrayList;)V ArrayList   Y *+*+        >     cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ArrayList.class000066400000000000000000000014771333451767700275440ustar00rootroot000000000000004'  !"#$%Itr InnerClassesListItr()VCodeLineNumberTableLocalVariableTablethis LArrayList;LocalVariableTypeTableLArrayList; listIterator()LListIterator; Signature()LListIterator;(I)LListIterator;indexI(I)LListIterator;4LAbstractList;LList; SourceFileArrayList.java ArrayList$ListItr & ArrayList AbstractListList ArrayList$Itr(LArrayList;I)V!  A*   F Y*     P Y*      cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ArrayList.java000066400000000000000000000012421333451767700273460ustar00rootroot00000000000000public class ArrayList extends AbstractList implements List { public ListIterator listIterator() { return new ListItr(0); } public ListIterator listIterator(int index) { return new ListItr(index); } private class ListItr extends Itr implements ListIterator { ListItr(int index) { super(); } public boolean hasPrevious() { return false; } } private class Itr implements Iterator { Itr() { } public boolean hasNext() { return false; } public E next() { return null; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ArrayListEquals.class000066400000000000000000000012361333451767700307100ustar00rootroot000000000000004"   ()VCodeLineNumberTableLocalVariableTablethisLArrayListEquals;check2(LArrayList;)Il1 LArrayList;alLocalVariableTypeTable LArrayList; StackMapTable Signature#(LArrayList;)I SourceFileArrayListEquals.java  ArrayList !ArrayListEqualsjava/lang/Objectequals(Ljava/lang/Object;)Z! /*    YM+,     cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ArrayListEquals.java000066400000000000000000000003511333451767700305210ustar00rootroot00000000000000public class ArrayListEquals { public int check2(ArrayList l1) { ArrayList al = new ArrayList(); if(l1.equals(al)) return 1; else return 0; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/Iterator.class000066400000000000000000000003561333451767700274160ustar00rootroot000000000000004  hasNext()Znext()Ljava/lang/Object; Signature()TE;(Ljava/lang/Object; SourceFile Iterator.javaIteratorjava/lang/Object  cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/Iterator.java000066400000000000000000000001061333451767700272230ustar00rootroot00000000000000public interface Iterator { boolean hasNext(); E next(); } cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/List.class000066400000000000000000000004371333451767700265400ustar00rootroot000000000000004   listIterator()LListIterator; Signature()LListIterator;(I)LListIterator;(I)LListIterator;(Ljava/lang/Object; SourceFile List.javaListjava/lang/Object  cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/List.java000066400000000000000000000001561333451767700263520ustar00rootroot00000000000000public interface List { ListIterator listIterator(); ListIterator listIterator(int index); } cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ListIterator.class000066400000000000000000000004531333451767700302500ustar00rootroot000000000000004hasNext()Z hasPreviousnext()Ljava/lang/Object; Signature()TE;7Ljava/lang/Object;LIterator; SourceFileListIterator.java ListIteratorjava/lang/ObjectIterator     cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/ListIterator.java000066400000000000000000000001711333451767700300610ustar00rootroot00000000000000public interface ListIterator extends Iterator { boolean hasNext(); boolean hasPrevious(); E next(); } cbmc-cbmc-5.10/jbmc/regression/jbmc/removed_virtual_functions/test.desc000066400000000000000000000006531333451767700264150ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure ArrayListEquals.class --lazy-methods --java-max-vla-length 48 --unwind 8 --java-unwind-enum-static --trace --cover location --function ArrayListEquals.check2 --show-goto-functions e2 . ArrayList\$Itr.hasNext:\(\)Z\(\); ^EXIT=0$ ^SIGNAL=0$ -- e2 . ListIterator.hasNext:\(\)Z\(\); -- This doesn't work under symex-driven lazy loading because it is incompatible with --lazy-methods cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/000077500000000000000000000000001333451767700224315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/A.class000066400000000000000000000003731333451767700236430ustar00rootroot000000000000004 fieldI()VCodeLineNumberTableLocalVariableTablethisLA; SourceFile Test.java Ajava/lang/Object /* ,   cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/B.class000066400000000000000000000003301333451767700236350ustar00rootroot000000000000004  ()VCodeLineNumberTableLocalVariableTablethisLB; SourceFile Test.java BA /*-    cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/Test.class000066400000000000000000000025571333451767700244100ustar00rootroot000000000000004B 4 56 47 48 4 9: ;<=$assertionsDisabledZ()VCodeLineNumberTableLocalVariableTablethisLTest; testAssertion(Z)V condition StackMapTabletestArrayBounds([II)Varray[IindexIgot testClassCastunknownmaybe_bLA; definitely_bLB;7 testNullDeref(LA;)V maybeNull testDivByZero(I)VdivtestArrayCreation maybeNegativearr SourceFile Test.java  java/lang/AssertionErrorAB >Test? @Ajava/lang/Objectfieldjava/lang/ClassdesiredAssertionStatus()Z!  /*  a% Y Y  $  % e**.=*.=      !x! Y YL+M+M  !" #$%&F' ()G * <* <  *$  +,E l<l<!"# "- .,E  L L&'( /014  @23cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/Test.java000066400000000000000000000023711333451767700242160ustar00rootroot00000000000000public class Test { // In each of these cases a guard is repeated -- either an explicit assertion, // or a guard implied by Java's semantics, e.g. that an array index is in bounds. // It should be possible to violate the condition the first time, but not the second, // as the program would have aborted (without --java-throw-runtime-exceptions) or a // runtime exception thrown (with --java-throw-runtime-exceptions). public static void testAssertion(boolean condition) { assert(condition); assert(condition); } public static void testArrayBounds(int[] array, int index) { if(array == null) return; int got = array[index]; got = array[index]; } public static void testClassCast(boolean unknown) { A maybe_b = unknown ? new A() : new B(); B definitely_b = (B)maybe_b; definitely_b = (B)maybe_b; } public static void testNullDeref(A maybeNull) { int got = maybeNull.field; got = maybeNull.field; } public static void testDivByZero(int unknown) { int div = 1 / unknown; div = 1 / unknown; } public static void testArrayCreation(int maybeNegative) { int[] arr = new int[maybeNegative]; arr = new int[maybeNegative]; } } class A { public int field; } class B extends A {} cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/test_arraybounds.desc000066400000000000000000000004471333451767700266660ustar00rootroot00000000000000CORE Test.class --function Test.testArrayBounds ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ array-index-out-of-bounds-low\.1.*: FAILURE$ array-index-out-of-bounds-low\.2.*: SUCCESS$ array-index-out-of-bounds-high\.1.*: FAILURE$ array-index-out-of-bounds-high\.2.*: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/test_arraycreation.desc000066400000000000000000000003071333451767700271730ustar00rootroot00000000000000CORE Test.class --function Test.testArrayCreation ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ array-create-negative-size\.1.*: FAILURE$ array-create-negative-size\.2.*: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/test_assertion.desc000066400000000000000000000003211333451767700263330ustar00rootroot00000000000000CORE Test.class --function Test.testAssertion ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ assertion at file Test\.java line 10.*: FAILURE$ assertion at file Test\.java line 11.*: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/test_classcast.desc000066400000000000000000000002571333451767700263140ustar00rootroot00000000000000CORE Test.class --function Test.testClassCast ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ bad-dynamic-cast\.1.*: FAILURE$ bad-dynamic-cast\.2.*: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/test_divbyzero.desc000066400000000000000000000002731333451767700263470ustar00rootroot00000000000000CORE Test.class --function Test.testDivByZero ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ integer-divide-by-zero\.1.*: FAILURE$ integer-divide-by-zero\.2.*: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/repeated_guards/test_nullderef.desc000066400000000000000000000003531333451767700263110ustar00rootroot00000000000000CORE Test.class --function Test.testNullDeref ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ testNullDeref:\(LA;\)V\.null-pointer-exception\.1.*: FAILURE$ testNullDeref:\(LA;\)V\.null-pointer-exception\.2.*: SUCCESS$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/return1/000077500000000000000000000000001333451767700206735ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/return1/return1.class000066400000000000000000000014341333451767700233240ustar00rootroot000000000000002+  ! " #$ % &'($assertionsDisabledZ()VCodeLineNumberTable short_value()S bool_value()Z long_value()Jmain([Ljava/lang/String;)V StackMapTable SourceFile return1.java     java/lang/AssertionErrorreturn1) *java/lang/Objectjava/lang/ClassdesiredAssertionStatus  *  ;   ;   "?  `(<! Y  ''5  @cbmc-cbmc-5.10/jbmc/regression/jbmc/return1/return1.java000066400000000000000000000007261333451767700231430ustar00rootroot00000000000000class return1 { public static short short_value() { short s = 1; return s; } public static boolean bool_value() { boolean b = true; return b; } public static long long_value() { long l = 0x10000ffffl; return l; } public static void main(String[] args) { short s = short_value(); if(s == 1) if(bool_value()) if(long_value()==0x10000ffffl) assert false; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/return1/test.desc000066400000000000000000000001251333451767700225100ustar00rootroot00000000000000CORE return1.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/return2/000077500000000000000000000000001333451767700206745ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/return2/return2.class000066400000000000000000000013051333451767700233230ustar00rootroot000000000000004-      !"#$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile return2.java $ %&' () java/lang/AssertionErrorjava/io/IOExceptionreturn2* +,java/lang/Objectjava/lang/SysteminLjava/io/InputStream;java/io/InputStreamread()Ijava/lang/ClassdesiredAssertionStatus()Z    * h&<= YL!$ ! $ %!B4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/return2/return2.java000066400000000000000000000004021333451767700231340ustar00rootroot00000000000000class return2 { public static void main(String[] args) { try { int v1=System.in.read(); int v2=System.in.read(); assert v1==v2; // should be able to fail } catch(java.io.IOException e) { } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/return2/test.desc000066400000000000000000000001251333451767700225110ustar00rootroot00000000000000CORE return2.class ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/short1/000077500000000000000000000000001333451767700205135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/short1/short1.class000066400000000000000000000005331333451767700227630ustar00rootroot000000000000002 ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFile short1.java short1java/lang/Object * ^=<d<,<=<"      cbmc-cbmc-5.10/jbmc/regression/jbmc/short1/short1.java000066400000000000000000000003011333451767700225700ustar00rootroot00000000000000class short1 { public static void main(String[] args) { short s; int i=100000; s=0; s=100; s=300; if(s>=1000) i=s; else s=(short)i; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/short1/test.desc000066400000000000000000000001271333451767700223320ustar00rootroot00000000000000CORE short1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/short2/000077500000000000000000000000001333451767700205145ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/short2/short2.class000066400000000000000000000010441333451767700227630ustar00rootroot000000000000004!     aS$assertionsDisabledZ()VCodeLineNumberTablef StackMapTable SourceFile short2.java  java/lang/AssertionErrorshort2  java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!   *T'**Y`* Y& &4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/short2/short2.java000066400000000000000000000001311333451767700225730ustar00rootroot00000000000000public class short2 { short a; void f() { a=0; a++; assert a==1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/short2/test.desc000066400000000000000000000001521333451767700223310ustar00rootroot00000000000000CORE short2.class --function short2.f ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects1/000077500000000000000000000000001333451767700223555ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects1/Other.class000066400000000000000000000003071333451767700244650ustar00rootroot000000000000004   xI()VCodeLineNumberTable SourceFile test.java Otherjava/lang/Object *   cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects1/test.class000066400000000000000000000010721333451767700243630ustar00rootroot000000000000004$       o1LOther;o2$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFile test.java  java/lang/AssertionErrortest! "#java/lang/Objectjava/lang/ClassdesiredAssertionStatus()Z!    *M* * Y    4 @cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects1/test.desc000066400000000000000000000002011333451767700241650ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ VERIFICATION FAILED assertion at file test\.java line 10 .* FAILURE -- cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects1/test.java000066400000000000000000000002671333451767700242040ustar00rootroot00000000000000 public class test { public Other o1; public Other o2; public void main() { if(o1 == null || o2 == null) return; assert(false); } } class Other { int x; } cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects2/000077500000000000000000000000001333451767700223565ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects2/Other.class000066400000000000000000000003401333451767700244630ustar00rootroot000000000000004 xInextLOther;()VCodeLineNumberTable SourceFile test.java  Otherjava/lang/Object   *   cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects2/test.class000066400000000000000000000014641333451767700243710ustar00rootroot000000000000004/    ! " # $% & '()o1LOther;o2$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTablenext_pointers_not_nulltoplevel_pointers_not_null SourceFile test.java   * +   java/lang/AssertionErrortest, -.java/lang/ObjectOthernextjava/lang/ClassdesiredAssertionStatus()Z!  *]+*&***** " & *&4 Y  4 Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects2/test.desc000066400000000000000000000004131333451767700241730ustar00rootroot00000000000000CORE test.class --function test.main ^EXIT=10$ ^SIGNAL=0$ VERIFICATION FAILED assertion at file test.java line 23 function java::test\.toplevel_pointers_not_null.*: FAILURE assertion at file test.java line 18 function java::test\.next_pointers_not_null.*: FAILURE -- cbmc-cbmc-5.10/jbmc/regression/jbmc/siblingobjects2/test.java000066400000000000000000000010271333451767700242000ustar00rootroot00000000000000 public class test { public Other o1; public Other o2; public void main() { if(o1 != null && o2 != null) { if(o1.next != null && o2.next != null) { next_pointers_not_null(); } toplevel_pointers_not_null(); } } public void next_pointers_not_null() { // Should be possible to hit with --java-max-input-tree-depth >= 2 assert(false); } public void toplevel_pointers_not_null() { // Should be possible to hit assert(false); } } class Other { int x; Other next; } cbmc-cbmc-5.10/jbmc/regression/jbmc/simplify_expr_termination/000077500000000000000000000000001333451767700245765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/simplify_expr_termination/test.class000066400000000000000000000010201333451767700265750ustar00rootroot000000000000004    $assertionsDisabledZ()VCodeLineNumberTablecheck()I StackMapTable SourceFile test.java  java/lang/AssertionErrortest java/lang/Object[Zjava/lang/ClassdesiredAssertionStatus()Z!   *   LK*3 Y     4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/simplify_expr_termination/test.desc000066400000000000000000000002661333451767700264210ustar00rootroot00000000000000CORE test.class --function test.check ^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -- ^warning: ignoring -- Checks that a non-termination bug no longer occurs in simplify_byte_extract cbmc-cbmc-5.10/jbmc/regression/jbmc/simplify_expr_termination/test.java000066400000000000000000000002561333451767700264230ustar00rootroot00000000000000public class test { public static int check() { boolean[] assigned = new boolean[3]; if (assigned[0] == false) { assert false; } return 1; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/000077500000000000000000000000001333451767700213315ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/README000066400000000000000000000004201333451767700222050ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/stack_test.class000066400000000000000000000011331333451767700245220ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var1 !" java/lang/AssertionError stack_test# $%java/lang/Objectf(I)Ijava/lang/ClassdesiredAssertionStatus()Z!   * T!YL+= Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/stack_test.java000066400000000000000000000002261333451767700243400ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var1 s = new stack_var1(); int n = s.f(1); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/stack_var1.class000066400000000000000000000003151333451767700244150ustar00rootroot00000000000000. java/lang/Object SourceFile  Code stack_var1.jf stack_var1()V(I)I!  * dcbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/stack_var1.j000066400000000000000000000005471333451767700235500ustar00rootroot00000000000000.class public stack_var1 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f(I)I .limit stack 2 .limit locals 2 ;; copy of arg on stack iload_1 ;; increment arg iinc 1 1 ;; incremented copy on stack iload_1 isub ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var1/test.desc000066400000000000000000000002311333451767700231440ustar00rootroot00000000000000CORE stack_test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file stack_test.java line 5 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/000077500000000000000000000000001333451767700214115ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/README000066400000000000000000000004201333451767700222650ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/stack_test.class000066400000000000000000000011321333451767700246010ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var10 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * S YL+= Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/stack_test.java000066400000000000000000000002271333451767700244210ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var10 s = new stack_var10(); int n = s.f(); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/stack_var10.class000066400000000000000000000003371333451767700245610ustar00rootroot00000000000000.   stack_var10 stack_var10.jjava/lang/Object SourceFilen()I  Codef()VI!   *  <=<cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/stack_var10.j000066400000000000000000000006641333451767700237100ustar00rootroot00000000000000.class public stack_var10 .super java/lang/Object .field private static n I .method public ()V .limit stack 5 aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f()I .limit stack 8 .limit locals 5 iconst_1 istore_1 iconst_0 istore_2 ;; lvar1 is 1, lvar2 is 0 iload_1 iload_2 ;; on stack 1, 0 istore_1 ;; store 0 into lvar1 ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var10/test.desc000066400000000000000000000002311333451767700232240ustar00rootroot00000000000000CORE stack_test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file stack_test.java line 5 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var11/000077500000000000000000000000001333451767700214125ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var11/README000066400000000000000000000004201333451767700222660ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var11/stack_test.class000066400000000000000000000011321333451767700246020ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var11 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * S YL+= Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var11/stack_test.java000066400000000000000000000002271333451767700244220ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var11 s = new stack_var11(); int n = s.f(); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var11/stack_var11.class000066400000000000000000000003711333451767700245610ustar00rootroot00000000000000.  java/lang/Object SourceFile[I()I stack_var11.j  Codearrf()V   stack_var11!   **   *.*Ocbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var11/stack_var11.j000066400000000000000000000011241333451767700237020ustar00rootroot00000000000000.class public stack_var11 .super java/lang/Object .field private arr [I .method public ()V .limit stack 5 aload_0 invokenonvirtual java/lang/Object/()V aload_0 iconst_2 newarray int putfield stack_var11/arr [I return .end method .method public f()I .limit stack 8 .limit locals 5 aload_0 getfield stack_var11/arr [I iconst_0 iaload ;; put arr[0] on stack (currently 0) aload_0 getfield stack_var11/arr [I iconst_0 iconst_1 iastore ;; store 1 in arr[0], ;; value on stack should not be touched ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var12/000077500000000000000000000000001333451767700214135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var12/stack_typecast.class000066400000000000000000000005571333451767700254720ustar00rootroot00000000000000.java/lang/Objectthis stack_typecast.j ()VCode   SourceFile  I()I[B LineNumberTablebuffer stack_typecastfLocalVariableTableposition   * ?**Y Z` 3~  cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var12/stack_typecast.j000066400000000000000000000012261333451767700246100ustar00rootroot00000000000000.class stack_typecast .super java/lang/Object .field public position I .field public buffer [B .method public ()V aload_0 invokevirtual java/lang/Object/()V return .end method .method public f()I .limit stack 6 .limit locals 1 .var 0 is this stack_typecast from begin to end .line 0 begin: sipush 255 aload_0 getfield stack_typecast/buffer [B aload_0 dup getfield stack_typecast/position I dup_x1 iconst_1 iadd putfield stack_typecast/position I baload iand end: ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var12/test.desc000066400000000000000000000007641333451767700232410ustar00rootroot00000000000000CORE stack_typecast.class --cover location --function stack_typecast.f ^EXIT=0$ ^SIGNAL=0$ covered \(100.0%\) -- -- This tests that there is no invariant violation when modifying the values on the stack. in this case the `position` variable is used as index in an array via the Java equivalent of buffer[position++]; The code pushes position, duplicates it and the modifies the stack entry. Before, the stack entry generation removed typecasts which gave a typing problem with the `iand` operator cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/000077500000000000000000000000001333451767700213325ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/README000066400000000000000000000004201333451767700222060ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/stack_test.class000066400000000000000000000011331333451767700245230ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var2 !" java/lang/AssertionError stack_test# $%java/lang/Objectf(I)Ijava/lang/ClassdesiredAssertionStatus()Z!   * T!YL+= Y   4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/stack_test.java000066400000000000000000000002261333451767700243410ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var2 s = new stack_var2(); int n = s.f(1); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/stack_var2.class000066400000000000000000000003161333451767700244200ustar00rootroot00000000000000. java/lang/Object SourceFile  Codef stack_var2()V stack_var2.j(I)I!  * Yd cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/stack_var2.j000066400000000000000000000006261333451767700235500ustar00rootroot00000000000000.class public stack_var2 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f(I)I .limit stack 3 .limit locals 2 ;; push local var1 iload_1 ;; duplicate dup ;; increment local var1 iinc 1 1 ;; push local var1 iload_1 isub ;; incremented copy on stack ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var2/test.desc000066400000000000000000000002311333451767700231450ustar00rootroot00000000000000CORE stack_test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file stack_test.java line 5 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/000077500000000000000000000000001333451767700213335ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/README000066400000000000000000000004201333451767700222070ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/stack_test.class000066400000000000000000000011311333451767700245220ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var3 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * S YL+= Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/stack_test.java000066400000000000000000000002251333451767700243410ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var3 s = new stack_var3(); int n = s.f(); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/stack_var3.class000066400000000000000000000003221333451767700244170ustar00rootroot00000000000000. java/lang/Object SourceFile ()I  Codef stack_var3()V stack_var3.j!  *  <=ZWd cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/stack_var3.j000066400000000000000000000007701333451767700235520ustar00rootroot00000000000000.class public stack_var3 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f()I .limit stack 5 .limit locals 3 ;; 1->var1 ;; 0->var2 iconst_1 istore_1 iconst_0 istore_2 ;; push local var2 / var1 iload_2 iload_1 ;; dup var1 dup_x1 ;; sub one from var1 iinc 1 -1 ;; pop first var1 pop ;; sub isub ;; incremented copy on stack ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var3/test.desc000066400000000000000000000002311333451767700231460ustar00rootroot00000000000000CORE stack_test.class ^EXIT=10$ ^SIGNAL=0$ ^.*assertion at file stack_test.java line 5 function.*: FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/000077500000000000000000000000001333451767700213345ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/README000066400000000000000000000004201333451767700222100ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/stack_test.class000066400000000000000000000011311333451767700245230ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var4 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * S YL+= Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/stack_test.java000066400000000000000000000002251333451767700243420ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var4 s = new stack_var4(); int n = s.f(); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/stack_var4.class000066400000000000000000000003261333451767700244250ustar00rootroot00000000000000. java/lang/Object SourceFile  stack_var4.j()I  Codef stack_var4()V!   *  <=>[WWWcbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/stack_var4.j000066400000000000000000000010561333451767700235520ustar00rootroot00000000000000.class public stack_var4 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f()I .limit stack 5 .limit locals 4 ;; 0->var1 ;; 1->var2 ;; 2->var3 iconst_0 istore_1 iconst_1 istore_2 iconst_2 istore_3 ;; push local var3 / var2 / var1 iload_3 iload_2 iload_1 ;; push var1 in front of var3 dup_x2 ;; add one to local var 1 iinc 1 1 pop pop pop ;; incremented copy on stack ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var4/test.desc000066400000000000000000000001331333451767700231500ustar00rootroot00000000000000CORE stack_test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/000077500000000000000000000000001333451767700213355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/README000066400000000000000000000004201333451767700222110ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/stack_test.class000066400000000000000000000011321333451767700245250ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var5 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * T!YL+= Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/stack_test.java000066400000000000000000000002251333451767700243430ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var5 s = new stack_var5(); int n = s.f(); assert(n==1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/stack_var5.class000066400000000000000000000003211333451767700244220ustar00rootroot00000000000000. java/lang/Object  SourceFile()I   stack_var5.jCode stack_var5f()V!   *   <=\dcbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/stack_var5.j000066400000000000000000000007551333451767700235610ustar00rootroot00000000000000.class public stack_var5 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f()I .limit stack 4 .limit locals 4 ;; 1->var1 ;; 2->var2 iconst_1 istore_1 iconst_2 istore_2 ;; push local var2 / var1 iload_2 iload_1 ;; duplicate var2 / var1 dup2 ;; add one to local var 1 iinc 1 1 ;; sub isub ;; incremented copy on stack ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var5/test.desc000066400000000000000000000001331333451767700231510ustar00rootroot00000000000000CORE stack_test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/000077500000000000000000000000001333451767700213365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/README000066400000000000000000000004201333451767700222120ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/stack_test.class000066400000000000000000000011411333451767700245260ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var6 !" java/lang/AssertionError stack_test# $%java/lang/Objectf(III)Ijava/lang/ClassdesiredAssertionStatus()Z!   * X%YL+= Y$ $4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/stack_test.java000066400000000000000000000002331333451767700243430ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var6 s = new stack_var6(); int n = s.f(1,2,4); assert(n==-2); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/stack_var6.class000066400000000000000000000003211333451767700244240ustar00rootroot00000000000000. java/lang/Object SourceFile(III)I   stack_var6Codef stack_var6.j()V!   *   ]d cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/stack_var6.j000066400000000000000000000006331333451767700235560ustar00rootroot00000000000000.class public stack_var6 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f(III)I .limit stack 8 .limit locals 5 ;; push local var3 / var2 / var1 iload_1 iload_2 iload_3 dup2_x1 ;; add one to local var 2 iinc 2 1 ;; sub isub ;; incremented copy on stack ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var6/test.desc000066400000000000000000000001331333451767700231520ustar00rootroot00000000000000CORE stack_test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/000077500000000000000000000000001333451767700213375ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/README000066400000000000000000000004201333451767700222130ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/stack_test.class000066400000000000000000000011321333451767700245270ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var7 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * T!YL+= Y    4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/stack_test.java000066400000000000000000000002251333451767700243450ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var7 s = new stack_var7(); int n = s.f(); assert(n==1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/stack_var7.class000066400000000000000000000003371333451767700244350ustar00rootroot00000000000000. java/lang/Object SourceFile()I   stack_var7Codef()V stack_var7.j!   *  &<=>6^WWWWd cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/stack_var7.j000066400000000000000000000012001333451767700235470ustar00rootroot00000000000000.class public stack_var7 .super java/lang/Object .method public ()V aload_0 invokenonvirtual java/lang/Object/()V return .end method .method public f()I .limit stack 8 .limit locals 5 ;; 1->var1 ;; 2->var2 ;; 4->var3 ;; 8->var4 iconst_1 istore_1 iconst_2 istore_2 iconst_4 istore_3 bipush 8 istore 4 ;; push local var4 / var3 / var2 / var1 iload 4 iload_3 iload_2 iload 1 ;; push var2 / var1 in on head dup2_x2 ;; add one to local var 1 iinc 1 1 pop pop pop pop ;; sub isub ;; incremented copy on stack ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var7/test.desc000066400000000000000000000001331333451767700231530ustar00rootroot00000000000000CORE stack_test.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var8/000077500000000000000000000000001333451767700213405ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var8/README000066400000000000000000000004201333451767700222140ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var8/stack_test.class000066400000000000000000000011311333451767700245270ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var8 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * S YL+= Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var8/stack_test.java000066400000000000000000000002251333451767700243460ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var8 s = new stack_var8(); int n = s.f(); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var8/stack_var8.class000066400000000000000000000003561333451767700244400ustar00rootroot00000000000000.  stack_var8.jjava/lang/Object SourceFilen()I   stack_var8 Codef()V  I !   **   **cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var8/stack_var8.j000066400000000000000000000006331333451767700235620ustar00rootroot00000000000000.class public stack_var8 .super java/lang/Object .field private n I .method public ()V .limit stack 5 aload_0 invokenonvirtual java/lang/Object/()V aload_0 iconst_0 putfield stack_var8/n I return .end method .method public f()I .limit stack 8 .limit locals 5 aload_0 getfield stack_var8/n I aload_0 iconst_1 putfield stack_var8/n I ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var9/000077500000000000000000000000001333451767700213415ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var9/README000066400000000000000000000004201333451767700222150ustar00rootroot00000000000000This regression test is created from the .j file with the jasmin assembler. https://github.com/Sable/jasmin On Ubuntu, it is available as jasmin-sable. To convert a .j file, it is sufficient to do > jasmin $FILE.j and it will create the corresponding $FILE.class file. cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var9/stack_test.class000066400000000000000000000011311333451767700245300ustar00rootroot000000000000004&       $assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable SourceFilestack_test.java  stack_var9 !" java/lang/AssertionError stack_test# $%java/lang/Objectf()Ijava/lang/ClassdesiredAssertionStatus()Z!   * S YL+= Y  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var9/stack_test.java000066400000000000000000000002251333451767700243470ustar00rootroot00000000000000public class stack_test { public static void main(String[] args) { stack_var9 s = new stack_var9(); int n = s.f(); assert(n==0); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var9/stack_var9.class000066400000000000000000000003531333451767700244370ustar00rootroot00000000000000.  java/lang/Object SourceFilen()I stack_var9.j stack_var9  Codef()VI  !    *  cbmc-cbmc-5.10/jbmc/regression/jbmc/stack_var9/stack_var9.j000066400000000000000000000006041333451767700235620ustar00rootroot00000000000000.class public stack_var9 .super java/lang/Object .field private static n I .method public ()V .limit stack 5 aload_0 invokenonvirtual java/lang/Object/()V iconst_0 putstatic stack_var9/n I return .end method .method public f()I .limit stack 8 .limit locals 5 getstatic stack_var9/n I iconst_1 putstatic stack_var9/n I ireturn .end method cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/000077500000000000000000000000001333451767700216665ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/A.class000066400000000000000000000004721333451767700231000ustar00rootroot000000000000004    xIy()VCodeLineNumberTable SourceFilestatic_init.java  Ajava/lang/ObjectB     *    +   cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/B.class000066400000000000000000000004721333451767700231010ustar00rootroot000000000000004    xIy()VCodeLineNumberTable SourceFilestatic_init.java   Bjava/lang/ObjectA     *   +   cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/static_init.class000066400000000000000000000011141333451767700252240ustar00rootroot000000000000004*         !$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFilestatic_init.java  " #$% &$java/lang/AssertionError static_init' ()java/lang/ObjectAxIByjava/lang/ClassdesiredAssertionStatus()Z!  * Q+'  Y *"4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/static_init.java000066400000000000000000000006261333451767700250470ustar00rootroot00000000000000public class static_init { // A should be initialised first, then B will begin init // after A.x is set. public static void main() { assert(A.x == 1 && B.x == 1 && B.y == 2 && A.y == 2); } } class A { public static int x; public static int y; static { x = 1; y = B.y; } } class B { public static int x; public static int y; static { x = A.x; y = 2; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/test.desc000066400000000000000000000001671333451767700235110ustar00rootroot00000000000000CORE static_init.class --function static_init.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init1/test1.desc000066400000000000000000000002101333451767700235570ustar00rootroot00000000000000CORE static_init.class --function static_init.main --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/000077500000000000000000000000001333451767700216675ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/A.class000066400000000000000000000004721333451767700231010ustar00rootroot000000000000004    xIy()VCodeLineNumberTable SourceFilestatic_init.java  Ajava/lang/ObjectB     *    +   cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/B.class000066400000000000000000000004721333451767700231020ustar00rootroot000000000000004    xIy()VCodeLineNumberTable SourceFilestatic_init.java   Bjava/lang/ObjectA     *   +   cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/static_init.class000066400000000000000000000011131333451767700252240ustar00rootroot000000000000004*         !$assertionsDisabledZ()VCodeLineNumberTablemain StackMapTable SourceFilestatic_init.java  " #$ %$&java/lang/AssertionError static_init' ()java/lang/ObjectBxIyAjava/lang/ClassdesiredAssertionStatus()Z!  * P*&  Y )!4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/static_init.java000066400000000000000000000007021333451767700250430ustar00rootroot00000000000000public class static_init { // B will begin init first, but then begin A init before it // has set B.y, leading to the unintuitive result given here. public static void main() { assert(B.x == 1 && B.y == 2 && A.x == 1 && A.y == 0); } } class A { public static int x; public static int y; static { x = 1; y = B.y; } } class B { public static int x; public static int y; static { x = A.x; y = 2; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/test.desc000066400000000000000000000001671333451767700235120ustar00rootroot00000000000000CORE static_init.class --function static_init.main ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init2/test1.desc000066400000000000000000000002101333451767700235600ustar00rootroot00000000000000CORE static_init.class --function static_init.main --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/000077500000000000000000000000001333451767700230005ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/A.class000066400000000000000000000004241333451767700242070ustar00rootroot000000000000004  ()VCodeLineNumberTable SourceFilestatic_init_order.java  Ajava/lang/ObjectCxI *' "  *+  cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/B.class000066400000000000000000000004051333451767700242070ustar00rootroot000000000000004  ()VCodeLineNumberTable SourceFilestatic_init_order.java  BACxI *. " 12  cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/C.class000066400000000000000000000004201333451767700242050ustar00rootroot000000000000004  xI()VCodeLineNumberTable SourceFilestatic_init_order.java  Cjava/lang/Object   * "   $  cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/static_init_order.class000066400000000000000000000013261333451767700275360ustar00rootroot000000000000004*      ! "#$$assertionsDisabledZ()VCodeLineNumberTabletest1 StackMapTabletest2 SourceFilestatic_init_order.java CB %& java/lang/AssertionErrorstatic_init_order' ()java/lang/ObjectxIjava/lang/ClassdesiredAssertionStatus()Z!  * b)YKYL*W Y   ( ( ^)YKYL*W Y ( (4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/static_init_order.java000066400000000000000000000020551333451767700273520ustar00rootroot00000000000000public class static_init_order { // as per the Java Virtual Machine Specification, // section 5.5, p. 35 we expect the static initializer of // the parent class to be called before the static initializer // of the class in question. // // The following tests will verify the aforementioned behaviour. public static void test1() { C object2 = new C(); B object = new B(); if(object2.x != 20) // order of init is: C.clint, B.clint, A.clint // This should not be reachable as expected order // should be: C.clint, A.clint, B.clint. assert(false); } public static void test2() { C object2 = new C(); B object = new B(); // Assertion is expected to fail, // as the only way for object2.x // to be assigned a value of 10 is through // the following incorrect ordering of init calls: // C.clint, B.clint, A.clint assert(object2.x == 10); } } class C { public static int x = 0; } class A { static { C.x=10; } } class B extends A { static { C.x=20; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/test1.desc000066400000000000000000000001711333451767700246770ustar00rootroot00000000000000CORE static_init_order.class --function static_init_order.test1 --trace ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/test2.desc000066400000000000000000000001561333451767700247030ustar00rootroot00000000000000CORE static_init_order.class --function static_init_order.test2 ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/test3.desc000066400000000000000000000002121333451767700246750ustar00rootroot00000000000000CORE static_init_order.class --function static_init_order.test1 --trace --java-threading ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/static_init_order/test4.desc000066400000000000000000000001771333451767700247100ustar00rootroot00000000000000CORE static_init_order.class --function static_init_order.test2 --java-threading ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- cbmc-cbmc-5.10/jbmc/regression/jbmc/static_method1/000077500000000000000000000000001333451767700222035ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/static_method1/static_method1.class000066400000000000000000000007311333451767700261430ustar00rootroot000000000000004 ()VCodeLineNumberTableLocalVariableTablethisLstatic_method1;f(II)VaIbcg SourceFilestatic_method1.java static_method1java/lang/Object!/*  I`l=     I`l=     cbmc-cbmc-5.10/jbmc/regression/jbmc/static_method1/static_method1.java000066400000000000000000000002441333451767700257560ustar00rootroot00000000000000public class static_method1 { static public void f(int a, int b) { int c = b/(a+1); } static public void g(int a, int b) { int c = a/(b+1); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/static_method1/test.desc000066400000000000000000000001711333451767700240210ustar00rootroot00000000000000CORE static_method1.class --function 'static_method1.f' ^EXIT=10$ ^SIGNAL=0$ ^VERIFICATION FAILED$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/store_load1/000077500000000000000000000000001333451767700215075ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/store_load1/store_load1.class000066400000000000000000000025201333451767700247510ustar00rootroot000000000000004/ $ %& $@@@?@@@' ()*$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable+ SourceFilestore_load1.java  java/lang/AssertionError store_load1, -.java/lang/Object[Ljava/lang/String;java/lang/ClassdesiredAssertionStatus()Z *  <=>66 Y Y Y Y Y @ B77 7   Y ! Y Y Y  YHJ 9 99 ' Y) Y  Y  Y YD E F88# Y $ Y % Y Y Y)  2 EYmoqv{ !"#$(%?&V'm*p+r,t-x.|/01235r  &  &  #  !4 @"#cbmc-cbmc-5.10/jbmc/regression/jbmc/store_load1/store_load1.java000066400000000000000000000020321333451767700245630ustar00rootroot00000000000000class store_load1 { public static void main(String[] args) { if (true) { int a0 = 0; int a1 = 1; int a2 = 2; int a3 = 3; int a4 = 4; assert 0 == a0; assert 1 == a1; assert 2 == a2; assert 3 == a3; assert 4 == a4; } if (true) { long a0 = 0L; long a1 = 1L; long a2 = 2L; long a3 = 3L; long a4 = 4L; assert 0L == a0; assert 1L == a1; assert 2L == a2; assert 3L == a3; assert 4L == a4; } if (true) { double a0 = 0.0; double a1 = 1.0; double a2 = 2.0; double a3 = 3.0; double a4 = 4.0; assert 0.0 == a0; assert 1.0 == a1; assert 2.0 == a2; assert 3.0 == a3; assert 4.0 == a4; } if (true) { float a0 = 0.5f; float a1 = 1.0f; float a2 = 2.0f; float a3 = 3.0f; float a4 = 4.0f; assert 0.5f == a0; assert 1.0f == a1; assert 2.0f == a2; assert 3.0f == a3; assert 4.0f == a4; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/store_load1/test.desc000066400000000000000000000001341333451767700233240ustar00rootroot00000000000000CORE store_load1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/string_field_aliasing/000077500000000000000000000000001333451767700236135ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/string_field_aliasing/Cart$Category.class000066400000000000000000000006261333451767700273010ustar00rootroot000000000000004  nameLjava/lang/String;this$0LCart; (LCart;)VCodeLineNumberTableLocalVariableTablethisCategory InnerClassesLCart$Category; SourceFile Cart.java   Cart$Categoryjava/lang/Object()VCart   > *+*     cbmc-cbmc-5.10/jbmc/regression/jbmc/string_field_aliasing/Cart$Product.class000066400000000000000000000007311333451767700271410ustar00rootroot000000000000004  sizeLjava/lang/String;catCategory InnerClassesLCart$Category;this$0LCart; (LCart;)VCodeLineNumberTableLocalVariableTablethisProductLCart$Product; SourceFile Cart.java  Cart$Productjava/lang/Object Cart$Category()VCart   > *+*    cbmc-cbmc-5.10/jbmc/regression/jbmc/string_field_aliasing/Cart.class000066400000000000000000000012501333451767700255310ustar00rootroot000000000000004/   ! "#$%&Category InnerClasses'Product()VCodeLineNumberTableLocalVariableTablethisLCart; checkTax4#(LCart$Product;Ljava/lang/String;)ZproductLCart$Product;sLjava/lang/String; SourceFile Cart.java abc ( )* +, -.Cartjava/lang/Object Cart$Category Cart$ProductsizecatLCart$Category;namejava/lang/String startsWith(Ljava/lang/String;)Z!/* T+,+       cbmc-cbmc-5.10/jbmc/regression/jbmc/string_field_aliasing/Cart.java000066400000000000000000000004561333451767700253540ustar00rootroot00000000000000public class Cart { class Product { public String size; public Category cat; } class Category { public String name; } public boolean checkTax4(Product product, String s) { product.size="abc"; return s.startsWith(product.cat.name); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/string_field_aliasing/test.desc000066400000000000000000000013401333451767700254300ustar00rootroot00000000000000CORE Cart.class --cp `../../../../scripts/format_classpath.sh . ../../../src/java_bytecode/library/core-models.jar` --trace --cover location --java-max-vla-length 96 --refine-strings --java-unwind-enum-static --max-nondet-string-length 200 --unwind 4 Cart.class --function Cart.checkTax4 --string-printable ^EXIT=0$ ^SIGNAL=0$ checkTax4:.*: SATISFIED -- checkTax4:.*bytecode-index 8.*: FAILED dec_solve: current index set is empty, this should not happen -- This checks that assigning to a field of an object (which generates a WITH expression in this case) doesn't result in conflating the String-typed and non-String-typed fields of the Cart class. When they are conflated we get warnings from the string solver and missing coverage. cbmc-cbmc-5.10/jbmc/regression/jbmc/string_literal1/000077500000000000000000000000001333451767700223765ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/string_literal1/string_literal1.class000066400000000000000000000013051333451767700265270ustar00rootroot000000000000004-      ! "#$$assertionsDisabledZ()VCodeLineNumberTablemain([Ljava/lang/String;)V StackMapTable% SourceFilestring_literal1.java abc % &'java/lang/AssertionErrorABCxyz ()string_literal1* +,java/lang/Objectjava/lang/Stringequals(Ljava/lang/Object;)Zlength()Ijava/lang/ClassdesiredAssertionStatus()Z  * o5L+ Y= Y 4  4  @cbmc-cbmc-5.10/jbmc/regression/jbmc/string_literal1/string_literal1.java000066400000000000000000000002631333451767700263450ustar00rootroot00000000000000class string_literal1 { public static void main(String[] args) { String s1="abc"; assert s1.equals("abc"); int size="ABCxyz".length(); assert size==6; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/string_literal1/test.desc000066400000000000000000000001331333451767700242120ustar00rootroot00000000000000KNOWNBUG array1.class ^EXIT=0$ ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/stub_identifiers/000077500000000000000000000000001333451767700226355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/stub_identifiers/Opaque.java000066400000000000000000000004071333451767700247330ustar00rootroot00000000000000public class Opaque extends Exception { public static Opaque static_field; public Opaque field; public Opaque(Opaque o) { } public static Opaque static_method(Opaque o) { return o; } public Opaque[] method(Opaque[] o) { return o; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stub_identifiers/Test.class000066400000000000000000000011731333451767700246050ustar00rootroot000000000000004%      ()VCodeLineNumberTablef00 (LOpaque;)V StackMapTablef01(LOpaque;)LOpaque; SourceFile Test.java Opaque   ! " #$Testjava/lang/Object static_fieldLOpaque;field static_methodmethod([LOpaque;)[LOpaque;!   *   j*YLY+SY*SM+,N-2L((  $ ( ) h m-YMY,SY+SN,-:2M,**  %*+jcbmc-cbmc-5.10/jbmc/regression/jbmc/stub_identifiers/Test.java000066400000000000000000000007751333451767700244300ustar00rootroot00000000000000public class Test { public static void f00(Opaque z) { try { Opaque x = new Opaque(Opaque.static_field); Opaque[] a = {Opaque.static_method(x.field), z}; Opaque[] y = x.method(a); throw y[0]; } catch(Opaque o) { } } public Opaque f01(Opaque z) { try { Opaque x = new Opaque(Opaque.static_field); Opaque[] a = {Opaque.static_method(x.field), z}; Opaque[] y = x.method(a); throw y[0]; } catch(Opaque o) { return o; } } } cbmc-cbmc-5.10/jbmc/regression/jbmc/stub_identifiers/test.desc000066400000000000000000000012401333451767700244510ustar00rootroot00000000000000CORE symex-driven-lazy-loading-expected-failure Test.class --show-symbol-table ^EXIT=0$ ^SIGNAL=0$ ^Symbol\.*: java::Opaque\.static_method:\(LOpaque;\)LOpaque;::malloc_site\$[0-3]?$ ^Symbol\.*: java::Opaque\.method:\(\[LOpaque;\)\[LOpaque;::malloc_site\$[0-3]?$ -- ^Symbol\.*: malloc_site ^Symbol\.*: to_construct ^Symbol\.*: to_return ^Symbol\.*: this ^Symbol\.*: caught_exception ^Symbol\.*: anonlocal ^Symbol\.*: stub_ignored_arg ^Symbol\.*: #return_value ^Symbol\.*: return_tmp ^Symbol\.*: new_tmp ^Symbol\.*: tmp_new_data_array ^Symbol\.*: newarray_tmp -- Does not work with symex-driven lazy loading because we want to check the symbol table for the entire program. cbmc-cbmc-5.10/jbmc/regression/jbmc/swap1/000077500000000000000000000000001333451767700203265ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/swap1/Swap.class000066400000000000000000000012461333451767700222720ustar00rootroot000000000000004&Swapjava/lang/Object Swap.java$assertionsDisabledZ()Vjava/lang/Class desiredAssertionStatus()Z     thisLSwap;main([Ljava/lang/String;)Vjava/lang/AssertionError args[Ljava/lang/String;xIresultCodeLineNumberTable StackMapTableLocalVariableTable SourceFile! !4"# @ !/*$ " !s<_d= Y$  "#%cbmc-cbmc-5.10/jbmc/regression/jbmc/swap1/Swap.java000066400000000000000000000002141333451767700221000ustar00rootroot00000000000000public class Swap { public static void main(String[] args) { int x = 5; int result = x - 2; assert result == -3; } } cbmc-cbmc-5.10/jbmc/regression/jbmc/swap1/SwapDump.java000066400000000000000000000062021333451767700227310ustar00rootroot00000000000000import java.nio.file.Files; import java.nio.file.Paths; import org.objectweb.asm.*; public class SwapDump implements Opcodes { public static byte[] dump () throws Exception { ClassWriter cw = new ClassWriter(0); FieldVisitor fv; MethodVisitor mv; cw.visit(52, ACC_PUBLIC + ACC_SUPER, "Swap", null, "java/lang/Object", null); cw.visitSource("Swap.java", null); { fv = cw.visitField(ACC_FINAL + ACC_STATIC + ACC_SYNTHETIC, "$assertionsDisabled", "Z", null, null); fv.visitEnd(); } { mv = cw.visitMethod(ACC_STATIC, "", "()V", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitLineNumber(1, l0); mv.visitLdcInsn(Type.getType("LSwap;")); mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "desiredAssertionStatus", "()Z", false); Label l1 = new Label(); mv.visitJumpInsn(IFNE, l1); mv.visitInsn(ICONST_1); Label l2 = new Label(); mv.visitJumpInsn(GOTO, l2); mv.visitLabel(l1); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitInsn(ICONST_0); mv.visitLabel(l2); mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {Opcodes.INTEGER}); mv.visitFieldInsn(PUTSTATIC, "Swap", "$assertionsDisabled", "Z"); mv.visitInsn(RETURN); mv.visitMaxs(1, 0); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitLineNumber(1, l0); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "", "()V", false); mv.visitInsn(RETURN); Label l1 = new Label(); mv.visitLabel(l1); mv.visitLocalVariable("this", "LSwap;", null, l0, l1, 0); mv.visitMaxs(1, 1); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitLineNumber(3, l0); mv.visitInsn(ICONST_5); mv.visitVarInsn(ISTORE, 1); Label l1 = new Label(); mv.visitLabel(l1); mv.visitLineNumber(4, l1); mv.visitVarInsn(ILOAD, 1); mv.visitInsn(ICONST_2); mv.visitInsn(SWAP); // Manually added mv.visitInsn(ISUB); mv.visitVarInsn(ISTORE, 2); Label l2 = new Label(); mv.visitLabel(l2); mv.visitLineNumber(5, l2); mv.visitFieldInsn(GETSTATIC, "Swap", "$assertionsDisabled", "Z"); Label l3 = new Label(); mv.visitJumpInsn(IFNE, l3); mv.visitVarInsn(ILOAD, 2); mv.visitIntInsn(BIPUSH, -3); mv.visitJumpInsn(IF_ICMPEQ, l3); mv.visitTypeInsn(NEW, "java/lang/AssertionError"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/AssertionError", "", "()V", false); mv.visitInsn(ATHROW); mv.visitLabel(l3); mv.visitLineNumber(6, l3); mv.visitFrame(Opcodes.F_APPEND,2, new Object[] {Opcodes.INTEGER, Opcodes.INTEGER}, 0, null); mv.visitInsn(RETURN); Label l4 = new Label(); mv.visitLabel(l4); mv.visitLocalVariable("args", "[Ljava/lang/String;", null, l0, l4, 0); mv.visitLocalVariable("x", "I", null, l1, l4, 1); mv.visitLocalVariable("result", "I", null, l2, l4, 2); mv.visitMaxs(2, 3); mv.visitEnd(); } cw.visitEnd(); return cw.toByteArray(); } public static void main(String[] args) throws Exception { Files.write(Paths.get("Swap.class"), dump()); } } cbmc-cbmc-5.10/jbmc/regression/jbmc/swap1/test.desc000066400000000000000000000001241333451767700221420ustar00rootroot00000000000000CORE Swap.class ^EXIT=0 ^SIGNAL=0$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/000077500000000000000000000000001333451767700203275ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/org/000077500000000000000000000000001333451767700211165ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/org/springframework/000077500000000000000000000000001333451767700243365ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/org/springframework/build/000077500000000000000000000000001333451767700254355ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/org/springframework/build/gradle/000077500000000000000000000000001333451767700266735ustar00rootroot00000000000000MergePlugin$1$_execute_closure1$_closure2.class000066400000000000000000000056051333451767700375010ustar00rootroot00000000000000cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/org/springframework/build/gradle4Jorg/springframework/build/gradle/MergePlugin$1$_execute_closure1$_closure2groovy/lang/Closure,org/codehaus/groovy/runtime/GeneratedClosureMergePlugin.groovy@org/springframework/build/gradle/MergePlugin$1$_execute_closure1doCall&(Ljava/lang/Object;)Ljava/lang/Object; projectLgroovy/lang/Reference;$staticClassInfo*Lorg/codehaus/groovy/reflection/ClassInfo;__$stMCZ>(Ljava/lang/Object;Ljava/lang/Object;Lgroovy/lang/Reference;)V$getCallSiteArray2()[Lorg/codehaus/groovy/runtime/callsite/CallSite;  '(Ljava/lang/Object;Ljava/lang/Object;)V    thisLLorg/springframework/build/gradle/MergePlugin$1$_execute_closure1$_closure2;_outerInstanceLjava/lang/Object; _thisObjectgroovy/lang/Reference%get()Ljava/lang/Object; '( &)-org/codehaus/groovy/runtime/callsite/CallSite+callGetProperty - ,. runtimeMerge0callJ(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 34 ,5depjava/lang/Throwable8 getProject()Lorg/gradle/api/Project;org/gradle/api/Project<1org/codehaus/groovy/runtime/ScriptBytecodeAdapter> castToType7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; @A ?B$getStaticMetaClass()Lgroovy/lang/MetaClass;java/lang/ObjectFgetClass()Ljava/lang/Class; HI GJ initMetaClass+(Ljava/lang/Object;)Lgroovy/lang/MetaClass; LM ?N  P(org/codehaus/groovy/reflection/ClassInfoR getClassInfo=(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo; TU SV getMetaClass XE SY$callSiteArrayLjava/lang/ref/SoftReference;$createCallSiteArray_1([Ljava/lang/String;)Vadd_ dependenciesadependencyProjectc$createCallSiteArray6()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;java/lang/Stringh ]^ j2org/codehaus/groovy/runtime/callsite/CallSiteArrayl'(Ljava/lang/Class;[Ljava/lang/String;)V n mo [\ qjava/lang/ref/SoftReferences t) ef v(Ljava/lang/Object;)V x tyarray0[Lorg/codehaus/groovy/runtime/callsite/CallSite; {| m} _closure2CodeLocalVariableTableLineNumberTable StackMapTable SourceFileEnclosingMethod InnerClasses!   [\U:*+,-:*_W* !"!  r,M,#2,$2**/1,22+/6**7! *9:;FL**=C=  9DEB'*K*OQL+*KWYLQ+Z S ]^*#`S*$bS*2dS ef!giK*kmY*p C(rrumYKwKtY*zr*~ m cbmc-cbmc-5.10/jbmc/regression/jbmc/swap2/org/springframework/build/gradle/MergePlugin.groovy000066400000000000000000000133651333451767700323700ustar00rootroot00000000000000/* * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.build.gradle import org.gradle.api.* import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ProjectDependency; import org.gradle.api.artifacts.maven.Conf2ScopeMapping import org.gradle.api.plugins.MavenPlugin import org.gradle.plugins.ide.eclipse.EclipsePlugin import org.gradle.plugins.ide.idea.IdeaPlugin import org.gradle.api.invocation.* /** * Gradle plugin that allows projects to merged together. Primarily developed to * allow Spring to support multiple incompatible versions of third-party * dependencies (for example Hibernate v3 and v4). *

* The 'merge' extension should be used to define how projects are merged, for example: *

 * configure(subprojects) {
 *     apply plugin: MergePlugin
 * }
 *
 * project("myproject") {
 * }
 *
 * project("myproject-extra") {
 *     merge.into = project("myproject")
 * }
 * 
*

* This plugin adds two new configurations: *