Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solver independent interpolation #432

Draft
wants to merge 326 commits into
base: master
Choose a base branch
from

Conversation

baierd
Copy link
Collaborator

@baierd baierd commented Jan 17, 2025

This MR adds solver independent interpolation as an option to JavaSMT.
Currently there are 2 distinct techniques used, model based and uniform interpolants based on quantifier elimination.
The uniform interpolants can be generated in a forward and backwards way.

Tests have been extended to test the native interpolation together with the new independent interpolation.

This is currently a WIP MR and not yet finished.

…polants of class AbstractInterpolatingProver to avoid unintended usage
…dInterpolant and add a new getModelBasedInterpolant method
getUniqueInterpolant to generate unique IDs for UFs
…ntially empty result in getBoundVars, method getForwardInterpolant now checks if bound vars are equal to shared vars to avoid deleting all variables in a formula by performing QE
…Test0 to specify the interpolation strategies
…eded to check if sharedVars is empty, since the shared variables are always generated
…eIndependentSequentialInterpolation in test binaryBVInterpolation1, since it already covers this method in its implementation and the test is using sequential interpolation
…eIndependentSequentialInterpolation in test binaryInterpolation1, since it already covers this method in its implementation and the test is using sequential interpolation
…ng the independent interpolation strategy 'model-based interpolation' because it returns Inconclusive
…lvers PRINCESS and CVC5 using one of the independent interpolation strategies by implementing a new method requireIndependentInterpolationWithConstantFalse, because both solvers return only TRUE instead of FALSE
…g one of the independent interpolation strategies because of wrong results by implementing a new method requireIndependentInterpolationSolvingIssue381()
…VC5 and PRINCESS using model-based interpolation because all solvers return null or unknown on sat check
…ialInterpolation() expected 1 positional arguments, but saw 0
…nterpolatingProverEnvironment to match pattern '^[A-Z][0-9]?$'
…BooleanFormula, Model, and SolverException) since using the '.*' form of import should be avoided
…ckward QE, because quantifier has not been eliminated properly in the interpolant. Instead of checking if the quantified formula is equals to the formula after QE, check if the formula after QE contains "ALL" (by backward) or "EX" (by forward)
…YMBOL_QUANTIFIER_EXISTS' for using "ALL" and "EX" in the quantifier elimination interpolation strategy
…uantifier-free interpolant after checking if it does not contain a quantifier. Improve SolverException message thrown if the resulting interpolant still contains quantifiers
…erpolation strategies. Add this exception and SolverException to the method signature
…ted during the process in both quantifier elimination interpolation strategies. Throw a new SolverException if they were accidentally deleted during the process.
…upport quantifier-elimination (for this logic)' to 'Solver does not support the complete theory of quantifiers' in both quantifier elimination interpolation strategies
…riable ip1 is declared and initialized, but not used. Use it for now to generate an itp
…r.getModel() with a try-with-resources block
…onProver in satisfiesInterpolationCriteria with a try-with-resources block
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants