Improve combination of NRA and transcendentals (#8075)
authorGereon Kremer <gereon.kremer@cs.rwth-aachen.de>
Mon, 7 Feb 2022 20:22:58 +0000 (12:22 -0800)
committerGitHub <noreply@github.com>
Mon, 7 Feb 2022 20:22:58 +0000 (20:22 +0000)
commit624b03d3826f790bf1354276a974b5f76afe14c8
tree91a03979a5f19a7b84d2d11b818c0407a8d232d6
parent67708218de9a83f395daabea57f8f0a9643c2e7a
Improve combination of NRA and transcendentals (#8075)

This PR tackles two issues when combining transcendental reasoning with nonlinear arithmetic.
Firstly, the NRAT logic would inadvertently have transcendental reasoning disabled because we only checked for integers. This simply adds an additional check at the end to enforce transcendental reasoning if necessary.
Secondly, we assert that we never add multiple substitutions for the same variable. This weakens the check to allow add the very same substitution multiple times.
Fixes #7984.
src/smt/set_defaults.cpp
src/theory/arith/nl/nl_model.cpp
test/regress/CMakeLists.txt
test/regress/regress0/arith/issue7984-quant-trans.smt2 [new file with mode: 0644]