pow2 -- final changes (#6800)
authoryoni206 <yoni206@users.noreply.github.com>
Sat, 26 Jun 2021 02:42:43 +0000 (19:42 -0700)
committerGitHub <noreply@github.com>
Sat, 26 Jun 2021 02:42:43 +0000 (19:42 -0700)
commiteefd31d2fe256bdee9a5c33105eced1a358bb378
tree5b8d52bdfc288557bf6456ca315ad2862ab4669b
parentabd18eeb854047e13e38518c536afd16a1be448d
pow2 -- final changes (#6800)

This commit adds the remaining changes for a working and integrated `pow2` solver.

In particular, it adds a rewrite and a lemma that identify `pow2(x)` with `0` whenever `x<0`.
Regressions are added as well, including `pow2-native-0.smt2` that shows the semantics of `pow2` on negative values.

The next steps are new rewrites and and more lemma schemas.
20 files changed:
src/api/cpp/cvc5.cpp
src/parser/smt2/smt2.cpp
src/printer/smt2/smt2_printer.cpp
src/theory/arith/arith_rewriter.cpp
src/theory/arith/congruence_manager.cpp
src/theory/arith/nl/ext_theory_callback.cpp
src/theory/arith/nl/nonlinear_extension.cpp
src/theory/arith/nl/nonlinear_extension.h
src/theory/arith/nl/pow2_solver.cpp
src/theory/arith/nl/strategy.cpp
src/theory/arith/nl/strategy.h
src/theory/arith/normal_form.cpp
src/theory/arith/normal_form.h
src/theory/inference_id.cpp
src/theory/inference_id.h
test/regress/CMakeLists.txt
test/regress/regress0/nl/pow2-native-0.smt2 [new file with mode: 0644]
test/regress/regress0/nl/pow2-native-1.smt2 [new file with mode: 0644]
test/regress/regress0/nl/pow2-native-2.smt2 [new file with mode: 0644]
test/regress/regress0/nl/pow2-native-3.smt2 [new file with mode: 0644]