Floating point theory solver based on SymFPU (#1895)
authorMartin <martin.brain@cs.ox.ac.uk>
Mon, 14 May 2018 23:18:31 +0000 (00:18 +0100)
committerGitHub <noreply@github.com>
Mon, 14 May 2018 23:18:31 +0000 (00:18 +0100)
commit4e96b1d5e01260acc79bdbb86322e23c7cf9567f
tree283fa5091023234bbc601b87d62e4610c05a4981
parent0c6681152ca422f7ace1bd1d3c3dac7823de2c14
Floating point theory solver based on SymFPU (#1895)

* Add some symfpu accessor functions to reduce the size of the literal 'back-end'.

* Enable the bit-vector theory when setting the logic, not in expandDefinition.

This is needed because it is possible to add variables of float or rounding mode
sort but not use any theory specific functions or predicates and thus not enable
the bit-vector theory.

* Use symfpu to implement the literal floating-point objects.

* Add kinds for bit-blasted components.

* Print the new kinds.

* Typing rules for the new kinds.

* Constant folding for the component kinds.

* Add support for components to the theory solver.

* Add explicit equivalences between classification functions and equalities.

* Use symfpu to do symbolic conversions of floating-point operations.

* Implement conversions via (over-)approximation and refinement.

* Correct a copy and paste error in the generation of uninterpretted functions for conversions.
src/printer/smt2/smt2_printer.cpp
src/theory/fp/fp_converter.cpp
src/theory/fp/fp_converter.h
src/theory/fp/kinds
src/theory/fp/theory_fp.cpp
src/theory/fp/theory_fp.h
src/theory/fp/theory_fp_rewriter.cpp
src/theory/fp/theory_fp_type_rules.h
src/theory/logic_info.cpp
src/util/floatingpoint.cpp
src/util/floatingpoint.h