Fix icp candidate parsing (#8137)
authorGereon Kremer <gkremer@cs.stanford.edu>
Wed, 23 Feb 2022 17:29:18 +0000 (18:29 +0100)
committerGitHub <noreply@github.com>
Wed, 23 Feb 2022 17:29:18 +0000 (17:29 +0000)
commit659068a3b3ba4bc9fed9a53ee5e1cf06e66d8df5
tree41f21d533e27e1109349b3986f1863cc041be12f
parent5cb2ece9eb26bdeb48e4c060b1f1be08ce2be9c2
Fix icp candidate parsing (#8137)

For constraints of the form c * x ~ poly(x) where c != 1 we would sometimes forget to take the inverse of c when parsing the assertion to the internal representation of the ICP solver. This PR fixes this issue, and does a few more changes:

--nl-icp is really not well-tested and disabled by default. We make it an expert option.
we no longer issue the propagation lemmas if we already found a conflict
the nl-icp trace was heavily polluted by output from the interval utils, which are now moved to a new nl-icp-debug trace
Fixes #8135.
src/options/arith_options.toml
src/theory/arith/nl/icp/icp_solver.cpp
src/theory/arith/nl/icp/intersection.cpp
test/regress/CMakeLists.txt
test/regress/regress0/nl/issue8135-icp-candidates.smt2 [new file with mode: 0644]