summaryrefslogtreecommitdiff
path: root/test/regress/regress0/quantifiers
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-12-17 03:10:39 -0600
committerGitHub <noreply@github.com>2020-12-17 10:10:39 +0100
commit94334c412be47c1555e52d9e20a6ff5e18817249 (patch)
tree7975cb61152ce3536f20777c77020b09d1f2ccd7 /test/regress/regress0/quantifiers
parent80e02468be0b5821e74a097179299c9afa23d10a (diff)
Simplify and fix check models (#5685)
Currently --check-models is implemented by replaying several preprocessing steps, including theory-specific expand definitions, and then checking whether the result evaluates to true. However, by having --check-models rely on complex preprocessing machinery defeats its purpose, as these steps are part of its trusted base. Moreover, issue #5645 demonstrates that this may lead to spurious errors where we incorrectly conclude that an input assertion is false, when it is not. This PR significantly simplifies --check-models so that it only relies on define-fun expansion + rewriting + evaluation. This ensures that --check-models is "sound" i.e. it does not falsely report a formula as evaluating to false. As a consequence, this makes check-models give warnings more often, i.e. when partial operators are involved, thus -q is added to silence warnings on some regressions. A followup PR will use a satisfiability check on the input formula post-expand-definitions to properly implement a trustworthy version of check-models that is robust for partial operators. Fixes #5645.
Diffstat (limited to 'test/regress/regress0/quantifiers')
-rw-r--r--test/regress/regress0/quantifiers/issue5645-dt-cm-spurious.smt25
1 files changed, 5 insertions, 0 deletions
diff --git a/test/regress/regress0/quantifiers/issue5645-dt-cm-spurious.smt2 b/test/regress/regress0/quantifiers/issue5645-dt-cm-spurious.smt2
new file mode 100644
index 000000000..0d3f711bf
--- /dev/null
+++ b/test/regress/regress0/quantifiers/issue5645-dt-cm-spurious.smt2
@@ -0,0 +1,5 @@
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes ((Enum1 0)) (((None) (cons (data Bool)))))
+(assert (forall ((var_1 Enum1)) (data var_1)))
+(check-sat)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback