java-smt
java-smt copied to clipboard
Add solver independent quantifier elimination with ultimate eliminator
- Added dependencies for UltimateEliminator in ivy.xml
- Integrated classes needed for UltimateEliminator in JavaSMT
- Created UltimateEliminatorWrapper class and equipped with a utility class UltimateEliminatorParser
- Created options in QuantifiedFormulaManager
- Added a Mathsat5QuantifiedFormulaManager
- Implemented the method EliminateQuantifiersUltimateEliminator in AbtractQuantifiedFormulaManager
- Implemented eliminateQuantifierBeforeMakingFormula in AbtractQuantifiedFormulaManager for when quantifier elimination is done before the native solver gets the formula. (To get the right formula information: with visitor get the name and type of bound variables)
- Tests
@kfriedberger @PhilippWendler we have 3 warnings from Spotbugs that are empty in this PR. Do you happen to know the reason for this or how to find out?
- UrF = Unread Field
- UwF = Unwritten Field
Please check the code for unused fields or variables.
I also would like to have better Spotbugs messages. I assume this topic is more general and applies to more project at SoSy-Lab. I have not yet checked in CPAchecker or VCloud, whether SpotBugs prints so minimal errors there, too.
UPDATE:
Spotbugs at CPAchecker seems to provide better errror messages:
TODO: Check whether JavaSMT uses the latest version of SpotBugs (no, it does not) and has set all required options for it?
Thanks for the help! I guess we are currently not synced to the java project template of SoSy. I'm gonna update it this week!
@kfriedberger @PhilippWendler we have 3 warnings from Spotbugs that are empty in this PR. Do you happen to know the reason for this or how to find out?
This is a known SpotBugs bug and fixed in version 4.9.0 (from January).
Results of running this branch in CPAchecker using Newton refinement in Predicate Abstraction look good and perform on-par and sometimes better than native QE. (I can't upload for some reason)
Note: we will postpone this branch until we are up-to-date with Java21 to avoid problems and utilize BV and FP support in SMTInterpol.