Description
This is based on a recent discussion I had with @tautschnig. I wanted to open this RFC and get some feedback before introducing a new tag in #5973.
Currently we seem to have 3 tags for our regression tests that relevant to the SMT backend:
smt-backend
: Tests that require the SMT backend, and don't work with the SAT backendbroken-smt-backend
: Tests that pass with the SAT backend, but don't work with the SMT backendthorough-smt-backend
: Tests that pass with the SAT backend, but take a long time with the SMT backend
While working on #5973, I came across a regression test that works with both Z3 and CVC4, but doesn't work with CPROVER SMT2 because it lacks support for quantifiers. So I think it would make sense to add a few new tags that are solver-specific:
broken-cprover-smt2-smt-backend
andthorough-cprover-smt2-smt-backend
broken-z3-smt-backend
andthorough-z3-smt-backend
broken-cvc4-smt-backend
andthorough-cvc4-smt-backend
The -smt-backend
suffix for these tags would be useful for grep
-ing all regression tests related to the SMT-backend in any way. The tags can also be combined, e.g.
smt-backend broken-cprover-smt2-smt-backend
would indicate that the test requires SMT backend, but doesn't work CPROVER SMT2 solverthorough-smt-backend broken-cvc4-smt-backend
would indicate that the test runs slower with the SMT backend, and doesn't work at all with CVC4 backend
I also suggest running the same version of these solvers across all platforms on our CI. That way, each time we bump up the version of solver X
on our CI, we can revisit all of the broken-X-smt-backend
and thorough-X-smt-backend
tests and check if any of them are now fixed.
How many solvers we want our CI to be running is a separate discussion, but I think we should definitely at least be running Z3, and preferably both Z3 and CVC4 (in future).