Improvements in parsing and printing related to mixed int/real (#1879)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 21 May 2018 22:52:26 +0000 (17:52 -0500)
committerAndres Noetzli <andres.noetzli@gmail.com>
Mon, 21 May 2018 22:52:26 +0000 (15:52 -0700)
commite50e09efa679c2d0c835cbf794a7b0743347552a
tree43b362a297ba4b460e38d38a3dca5ad6f5c582fc
parent4e56fd1578c51544d879cf84a4ea48c5f09a1d97
Improvements in parsing and printing related to mixed int/real (#1879)

This eliminates some hacks for dealing with Int/Real.
- Eliminates the use of "to_real" to cast decimals like "2.0" that happen to be Int. We now replace these by (/ 2 1) instead of (to_real 2), which has the advantage of being smt-lib compliant for all theories, including QF_LRA.
- Eliminates the use of a hack to use "type ascriptions" when returning values from a get-value command. Instead, we use division with 1 when necessary.  This affects the output of a few regressions, but we remain smt-lib compliant.
- Addresses a bug with printing arbitrary type ascriptions for smt2 terms. This partially addresses #1852.
- Updates our printing of negative rationals to be (/ (- n) m) instead of (- (/ n m)), which is consistent with the smt lib standard for real values (http://smtlib.cs.uiowa.edu/theories-Reals.shtml).
src/parser/cvc/Cvc.g
src/parser/smt2/Smt2.g
src/printer/smt2/smt2_printer.cpp
src/smt/command.cpp
test/regress/regress0/get-value-reals-ints.smt2
test/regress/regress0/get-value-reals.smt2