Improvements to phase shifting + purification lemmas (#8598)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 14 Apr 2022 18:00:30 +0000 (13:00 -0500)
committerGitHub <noreply@github.com>
Thu, 14 Apr 2022 18:00:30 +0000 (18:00 +0000)
commitb616ca023628bac8d431e1949a547973202c6f0a
treeb54cdc6c27b954e77d9f1340fd8922600248b55b
parent74a46ddc8efe114b4823865d08c370ca518f1cbd
Improvements to phase shifting + purification lemmas (#8598)

Makes 3 improvements to phase shifting + purification lemmas:
(1) we use purification skolems when possible, e.g. for exp(t), or sin(c) where -pi <= c <= pi, since it is unnecessary to assert c is in proper phase. This also adds proofs for purification of exp, which is hence trivial.
(2) we make the phase shift variable a real for which is_int holds. This avoids mixed int/real arithmetic, in preparation for eliminating subtyping
(3) the proof checker and sine solver use a common utility for getting the phase shift lemma.
src/theory/arith/nl/transcendental/exponential_solver.cpp
src/theory/arith/nl/transcendental/proof_checker.cpp
src/theory/arith/nl/transcendental/sine_solver.cpp
src/theory/arith/nl/transcendental/sine_solver.h
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