Add trascendental function kinds to list of unevaluated operators (#4640)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 22 Jun 2020 16:45:41 +0000 (11:45 -0500)
committerGitHub <noreply@github.com>
Mon, 22 Jun 2020 16:45:41 +0000 (11:45 -0500)
commit0045ba2af7b31243c545828494d11f53e16f59db
tree43a790c1870422901d015d7ce893d872284cd246
parent4bd54ef0cc862ae8736c97ecca07f80ab31396df
Add trascendental function kinds to list of unevaluated operators (#4640)

Fixes #4636.

This adds transcendental function kinds to the list of unevaluated operators (operators that don't necessarily rewrite to constants when applied to constant children). One consequence of this is that when models are enabled, we cannot solve for equations like (= a (cos b)), since the value of (cos b) is not necessarily evaluable, and hence must be approximated. As a result, we answer the benchmark on #4636 instead of generating an incorrect model (when models are enabled). When models are disabled, we answer "sat". A regression had a similar issue which happened to be succeeding. I've added --no-check-models to this regression (or otherwise we would answer unknown for this benchmark).
src/theory/arith/theory_arith.cpp
test/regress/regress0/nl/issue3729-cm-solved-tf.smt2