Skip to content

Smt unknown handling #6221

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 9, 2021
Merged

Smt unknown handling #6221

merged 2 commits into from
Jul 9, 2021

Conversation

TGWDB
Copy link
Contributor

@TGWDB TGWDB commented Jul 9, 2021

It is possible for an SMT solver to return unknown as the result of satisfiability in cbmc at the moment. This PR changes the output to the user to make it clear that this is where the ERROR result comes from and also includes a regression test for this behaviour using z3.

  • Each commit message has a non-empty body, explaining why the change was made.
  • Methods or procedures I have added are documented, following the guidelines provided in CODING_STANDARD.md.
  • The feature or user visible behaviour I have added or modified has been documented in the User Guide in doc/cprover-manual/
  • Regression or unit tests are included, or existing tests cover the modified code (in this case I have detailed which ones those are in the commit message).
  • My commit message includes data points confirming performance improvements (if claimed).
  • My PR is restricted to a single feature or bugfix.
  • White-space or formatting changes outside the feature-related changed lines are in commits of their own.

Currently it is possible for z3 (and maybe other SMT solvers) to
return a satisfiability result of "unknown". At the moment this is
treated as an ERROR outcome in cbmc. This commit changes the
error message handling to output why the result was ERROR by
reporting the "unknown" satisfiability result.
@codecov
Copy link

codecov bot commented Jul 9, 2021

Codecov Report

Merging #6221 (d58ea4d) into develop (0002950) will increase coverage by 7.90%.
The diff coverage is n/a.

❗ Current head d58ea4d differs from pull request most recent head 141f3ce. Consider uploading reports for the commit 141f3ce to get more accurate results
Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #6221      +/-   ##
===========================================
+ Coverage    67.40%   75.30%   +7.90%     
===========================================
  Files         1157     1458     +301     
  Lines        95236   161436   +66200     
===========================================
+ Hits         64197   121575   +57378     
- Misses       31039    39861    +8822     
Flag Coverage Δ
cproversmt2 ?
regression ?
unit ?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
src/util/string_container.cpp 52.94% <0.00%> (-47.06%) ⬇️
src/solvers/prop/prop.cpp 42.85% <0.00%> (-41.76%) ⬇️
src/solvers/flattening/boolbv_member.cpp 53.65% <0.00%> (-38.65%) ⬇️
src/cpp/cpp_storage_spec.cpp 65.00% <0.00%> (-35.00%) ⬇️
src/util/cmdline.h 66.66% <0.00%> (-33.34%) ⬇️
src/solvers/strings/array_pool.h 66.66% <0.00%> (-33.34%) ⬇️
src/solvers/strings/string_refinement.h 66.66% <0.00%> (-33.34%) ⬇️
...rs/strings/string_concatenation_builtin_function.h 0.00% <0.00%> (-33.34%) ⬇️
src/cbmc/c_test_input_generator.cpp 60.00% <0.00%> (-30.33%) ⬇️
src/analyses/local_cfg.h 75.00% <0.00%> (-25.00%) ⬇️
... and 1437 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 00c32e3...141f3ce. Read the comment docs.

@TGWDB TGWDB force-pushed the SMT-unknown-handling branch from d58ea4d to 141f3ce Compare July 9, 2021 15:52
This adds a regression test for the SMT solver (here z3) returning
a satisfiability result of "unknown" and reporting this to the user
@kroening kroening merged commit 665abf7 into diffblue:develop Jul 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants