Add two reduction schemas for sin terms (#8171)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 28 Feb 2022 20:01:30 +0000 (14:01 -0600)
committerGitHub <noreply@github.com>
Mon, 28 Feb 2022 20:01:30 +0000 (20:01 +0000)
commitf356ac03da7d908903db3e1328e3390b02fc3aac
treeff202ddd0a8301bf2e08765017bd37dde87a4192
parent6b459fe9160bd8fc4f94fde7ccd6c7fae116c178
Add two reduction schemas for sin terms (#8171)

This restores our reasoning for symmetry of sine, now on-demand and without introducing sin terms eagerly.

It also ensures that sin terms whose arguments fall exactly on boundary points are removed from consideration from the transcendental solver. This allows us to answer sat for inputs involving sin(k) when k = pi/2.

It also cleans the relationship of sine solver and transcendental state, and makes a small fix to the monotonicity of sin schema.
src/theory/arith/nl/transcendental/sine_solver.cpp
src/theory/arith/nl/transcendental/sine_solver.h
src/theory/arith/nl/transcendental/transcendental_solver.cpp
src/theory/arith/nl/transcendental/transcendental_state.cpp
src/theory/arith/nl/transcendental/transcendental_state.h
src/theory/inference_id.cpp
src/theory/inference_id.h
test/regress/CMakeLists.txt
test/regress/regress0/nl/nta/sin-sym-schema.smt2 [new file with mode: 0644]
test/regress/regress1/nl/issue7948-3-unsound-sin-region.smt2