Disable arithmetic static learning when unsat cores are enabled (#8830)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 3 Jun 2022 14:51:37 +0000 (09:51 -0500)
committerGitHub <noreply@github.com>
Fri, 3 Jun 2022 14:51:37 +0000 (14:51 +0000)
commit7b8fb66753f2f2fc02a4bab5faf4bc21802cf1e9
tree06d6c5f0ad47f10f892cafb55c2e362734b97c8e
parent50ad99bbbefe6a9ff2ed58995e8305ff0c121abf
Disable arithmetic static learning when unsat cores are enabled (#8830)

The arithmetic static learner uses non-local reasoning and does not have proof support. Thus it may rewrite A ^ B to A ^ B' where ( A ^ B ) => B', but the preprocessor by default assumes that the replacement is such that B => B'.

This disables the arithmetic static learner when unsat cores are enabled. Other static learning appears to be local and is still enabled.

This further corrects an issue in set_defaults that checked incompatibility with unsat cores based on whether proofs are enabled. We now check compatibility independent of whether proofs are enabled. This also corrects several restrictions on things that previously were treated as being incompatible with unsat cores (but not proof unsat cores) that were spurious.

Fixes #8822.
14 files changed:
src/api/cpp/cvc5.cpp
src/options/arith_options.toml
src/options/smt_options.toml
src/prop/minisat/core/Solver.cc
src/prop/minisat/minisat.cpp
src/prop/minisat/simp/SimpSolver.cc
src/smt/process_assertions.cpp
src/smt/set_defaults.cpp
src/smt/solver_engine.cpp
src/theory/arith/theory_arith.cpp
test/regress/cli/CMakeLists.txt
test/regress/cli/regress0/cores/issue8822-arith-static-learn.smt2 [new file with mode: 0644]
test/regress/cli/regress1/nl/issue4791-llr.smt2
test/regress/cli/regress2/quantifiers/cee-event-wrong-sat.smt2