Further relax what is considered a value in the model (#8095)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 23 Feb 2022 21:34:07 +0000 (15:34 -0600)
committerGitHub <noreply@github.com>
Wed, 23 Feb 2022 21:34:07 +0000 (21:34 +0000)
commitf7675b2df9f72ddb7b52dc5d8f3776112a27531b
tree50d69e20ce126007c9decc25d90607947647a78f
parent357c5e8b2ee1a9f08d3bca96fc1dc821c80943d9
Further relax what is considered a value in the model (#8095)

Fixes #8094.

This makes it so that "value-like" terms can appear as subterms in other terms that are then subsequently also considered values. For example (str.++ (witness ((x String)) (= (str.len x) 1000)) "A") is now considered a value.

This also changes the default option for when to use witness terms for strings in models, based on some user feedback.
12 files changed:
src/options/strings_options.toml
src/smt/solver_engine.cpp
src/theory/theory_engine.cpp
src/theory/theory_model.cpp
src/theory/theory_model.h
src/theory/theory_model_builder.cpp
test/regress/CMakeLists.txt
test/regress/regress0/arith/exp-in-model.smt2
test/regress/regress0/arith/issue7984-quant-trans.smt2
test/regress/regress1/nl/transcedental_model_simple.smt2 [new file with mode: 0644]
test/regress/regress1/strings/issue8094-witness-model.smt2 [new file with mode: 0644]
test/regress/regress1/strings/witness-model.smt2 [new file with mode: 0644]