Improve and fix secant and tangent lemmas in the transcendental solver (#4689)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 8 Jul 2020 00:50:01 +0000 (19:50 -0500)
committerGitHub <noreply@github.com>
Wed, 8 Jul 2020 00:50:01 +0000 (19:50 -0500)
commitde1018fc9d12f722a5c88c0a862a7e94e3de37ac
tree8e534e8bef10a7e69d64266daa40349003484a68
parent6b673474218c300576cae43388b513c7fc8448f8
Improve and fix secant and tangent lemmas in the transcendental solver (#4689)

Fixes #4686.

This benchmark failed an assertion that corresponded to the fact that a refinement lemma did not evaluate to false in the current model (and hence does not rule out the current model).

This was caused by applying the rewriter in a way that led to an incorrect approximation. This meant that some tangent and secant lemmas would be ineffective.

The benchmark in that issue now times out, but makes progress in the refinement lemmas it generates.

This also simplifies and improves the use of approximated values (instead of model values) when constructing tangent and secant lemmas.
src/theory/arith/nl/transcendental_solver.cpp