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
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
326 commits
Select commit Hold shift + click to select a range
804fff5
Comment method getFreeArithVars
stefaniesinner Oct 27, 2024
59165e9
Comment method getSharedVars
stefaniesinner Oct 27, 2024
a8d1181
Comment method getModelBasedInterpolant
stefaniesinner Oct 27, 2024
b99c104
Model ITP: Replace addConstraint with push to assert and create formu…
stefaniesinner Dec 13, 2024
5d7a646
Model ITP: Add unsupported operation exception in method getTreeInter…
stefaniesinner Dec 13, 2024
96cfd9d
Model ITP: Change return type of method getFreeArithVars from ArrayLi…
stefaniesinner Dec 13, 2024
e8cf81d
Model ITP: Delete unused import statement
stefaniesinner Dec 13, 2024
6c3cf42
Model ITP: Simplify method name of getFreeArithVars to getVars
stefaniesinner Dec 13, 2024
6e484a3
Model ITP: Simplify parameter name in getVars method from pFormulas t…
stefaniesinner Dec 13, 2024
da150fd
Model ITP: Simplify parameter name in getSharedVars method from pVars…
stefaniesinner Dec 13, 2024
0586b45
Model ITP: Rename method getModelBasedInterpolant to computeModelBase…
stefaniesinner Dec 13, 2024
b0e69f6
Model ITP: Store the currently asserted formulas in the stack in the …
stefaniesinner Dec 13, 2024
abdb70b
Model ITP: Create new method clearStack to remove all asserted formul…
stefaniesinner Dec 13, 2024
f3eecc2
Model ITP: Create new method restoreStack to restore the original stack
stefaniesinner Dec 13, 2024
8160112
Model ITP: Call and return the result of method computeModelBasedInte…
stefaniesinner Dec 13, 2024
79c72ce
Model ITP: Extract the process of generating an ITP by declaring and …
stefaniesinner Dec 13, 2024
d4278aa
Model ITP: Refactor of method
stefaniesinner Dec 13, 2024
c92b52a
Model ITP: Delete pop statement in computeModelBasedInterpolant
stefaniesinner Dec 13, 2024
4a544d7
Model ITP: Improve return type and documentation of method computeMod…
stefaniesinner Dec 13, 2024
e253825
QE ITP: Create method getQEBasedInterpolant and declare and initializ…
stefaniesinner Dec 13, 2024
32f80ec
QE ITP: Create method getForwardInterpolant
stefaniesinner Dec 13, 2024
743f249
QE ITP: Create method getBoundVars and declare and initialize boundVa…
stefaniesinner Dec 13, 2024
55442f2
QE ITP: Check if boundVars is empty and perform QE if needed and retu…
stefaniesinner Dec 13, 2024
3a667c3
QE ITP: Refactor of method getBoundVars. Instead of returning an pote…
stefaniesinner Dec 13, 2024
7b3750a
QE ITP: Implement method getBackwardInterpolant
stefaniesinner Dec 13, 2024
b5e5cad
QE ITP: Delete unused import statement
stefaniesinner Dec 13, 2024
2b55725
ITP: Assert 'ip0 != null' in class IndependentInterpolation
stefaniesinner Dec 13, 2024
2706cd5
ITP TESTING: Add option for model-based and QE-based solver independe…
stefaniesinner Dec 13, 2024
cf4770e
ITP TESTING: Add a new parameter to parametrized tests in SolverBased…
stefaniesinner Dec 13, 2024
fb7006a
ITP TESTING: Rename class from ParameterizedSolverBasedTest0 to Param…
stefaniesinner Dec 13, 2024
91967ec
Revert "ITP TESTING: Rename class from ParameterizedSolverBasedTest0 …
stefaniesinner Dec 13, 2024
2fd79b4
Revert "ITP TESTING: Add a new parameter to parametrized tests in Sol…
stefaniesinner Dec 13, 2024
1b42857
Reapply "ITP TESTING: Add a new parameter to parametrized tests in So…
stefaniesinner Dec 13, 2024
dc56f9c
Revert "Reapply "ITP TESTING: Add a new parameter to parametrized tes…
stefaniesinner Dec 13, 2024
ca73df6
ITP TESTING: Create new class ParameterizedInterpolatingSolverBasedTe…
stefaniesinner Dec 13, 2024
5261d84
ITP TESTING: Update prover environment in class InterpolatingProverTe…
stefaniesinner Dec 13, 2024
7a52c4e
QE ITP: Add documentary to methods
stefaniesinner Dec 13, 2024
d1346a2
ITP Testing: Fix parameter mismatch in ParameterizedInterpolatingSolv…
stefaniesinner Dec 16, 2024
4975855
ITP Testing: Delete unused import statement
stefaniesinner Dec 16, 2024
5b0f5df
ITP Testing: Rename parameter itpStrategies to itpStrat in Parametriz…
stefaniesinner Dec 16, 2024
2cf9804
ITP Testing: Rename method itpStrategiesToUse to itpStrategyToUse in …
stefaniesinner Dec 16, 2024
009d20d
QE ITP: Check interpolation criteria of QE based interpolation in Abs…
stefaniesinner Dec 16, 2024
edefbab
Revert "QE ITP: Check interpolation criteria of QE based interpolatio…
stefaniesinner Dec 16, 2024
1f0ef45
ITP Testing: Comment and reorder prover options to interpolation stra…
stefaniesinner Dec 16, 2024
cd1e412
ITP: Improved documentary to the methods of model-based and quantifie…
stefaniesinner Dec 16, 2024
c1677db
Remove unnecessary changes to constructors of all solver provers and …
Dec 17, 2024
0a337e3
Format InterpolatingProverTest
Dec 17, 2024
0838d33
Derive Boolean/Uf/Quantifier Managers from the FormulaManager in Abst…
Dec 17, 2024
6a1ab28
Add general method to derive the sets of BooleanFormulas A and B for …
Dec 17, 2024
f9d66d7
Restore proper generics and default behavior for non interpolating pr…
Dec 17, 2024
bc69b77
Create test interpolating prover with options and check interpolation…
Dec 17, 2024
a3ca5a3
Update SolverContext independent interpolation options documentation …
Dec 17, 2024
f610af2
Update interpolation base test framework to use arrays per default to…
Dec 17, 2024
e68cca5
Suppress unused warnings in IndependentInterpolation and format
Dec 17, 2024
e390cf1
Switch concrete types back to generics or Void in many more theorem p…
Dec 17, 2024
133a02b
Remodel solver independent prover into a delegate using class that ca…
Dec 17, 2024
2a54c69
Use the independent delegate-wrapper to interpolate using Z3 (that do…
Dec 17, 2024
e628f75
Change the chosen Solver from Z3 to CVC5 in the example class for sol…
stefaniesinner Jan 9, 2025
c7e07fc
Create and use an distinct prover to interpolate on
stefaniesinner Jan 9, 2025
35b505d
Add solver-independent interpolation procedures for all Solvers and m…
stefaniesinner Jan 9, 2025
01bfea1
Simplify model based interpolation code
Jan 9, 2025
23e1007
Throw a exception for tree interpolants for independent interpolation…
Jan 9, 2025
6404f67
Add TODOs for uniform interpolation and simplify uniform interpolatio…
Jan 9, 2025
71b1a06
Add TODO for model based interpolants
Jan 9, 2025
c26bd11
Make interpolation strategy used readable in tests
Jan 9, 2025
6b826ab
Format
Jan 9, 2025
f40e3d1
Describe the purpose of the class InterpolationFormulas as helper cla…
stefaniesinner Jan 14, 2025
f0400b1
Delete unnecessary prover option GENERATE_MODELS in the example class…
stefaniesinner Jan 14, 2025
72c70a5
Some clean up in class IndependentInterpolatingProverEnvironment (rep…
stefaniesinner Jan 14, 2025
87550f8
Delete the unnecessary methods clearStack and restoreStack
stefaniesinner Jan 14, 2025
d6b9d55
Describe purpose of method hasIndependentInterpolationStrategy to che…
stefaniesinner Jan 14, 2025
1ac1500
Rewrite TODO. The native solver interpolation does not work in Indepe…
stefaniesinner Jan 14, 2025
61e6e3f
Expand the UnsupportedOperationException in getInterpolant with a err…
stefaniesinner Jan 14, 2025
53b303d
Make sure that the sets of formulas for A and B cannot be null with P…
stefaniesinner Jan 14, 2025
b2f7cae
Model ITP: Rename method for clean up
stefaniesinner Jan 14, 2025
bcf9fa0
Model ITP: Rename parameters and variables for clean up
stefaniesinner Jan 14, 2025
710996f
Model ITP: Extend, correct, and improve the documentation for the get…
stefaniesinner Jan 14, 2025
09f14ee
Model ITP: Handle empty sets of variables, as they can not be quantif…
stefaniesinner Jan 14, 2025
6b55522
QE ITP: Extend, correct and improve documentation for method getQuant…
stefaniesinner Jan 14, 2025
e25328c
QE ITP: Check variables in getQuantifierEliminationBasedInterpolant w…
stefaniesinner Jan 14, 2025
4b980e5
QE ITP: Check current asserted set of formulas whether it is SAT or U…
stefaniesinner Jan 14, 2025
e0db2f2
QE ITP: Verify that interpolationStrategy is not null to make the war…
stefaniesinner Jan 14, 2025
9aefa8c
QE ITP: Refactor and make false as default output for interpolant.
stefaniesinner Jan 14, 2025
c6b3062
QE ITP: Implement method satisfiesInterpolationCriteria to verify whe…
stefaniesinner Jan 14, 2025
1c315a0
QE ITP: Comment method satisfiesInterpolationCriteria to understand t…
stefaniesinner Jan 14, 2025
4fe40ed
QE ITP: Make sure that the resulted interpolant satisfies the definit…
stefaniesinner Jan 14, 2025
481a523
QE ITP: Reposition getBackwardInterpolant method for clean up
stefaniesinner Jan 14, 2025
96ad41e
QE ITP: Catch possible exception and rethrow with additional informat…
stefaniesinner Jan 14, 2025
1503de8
QE ITP: Improve documentation for method getBackwardInterpolant for b…
stefaniesinner Jan 14, 2025
ff6d9d3
QE ITP: Catch possible exception and verify that the quantifier has b…
stefaniesinner Jan 14, 2025
7272e34
QE ITP: Improve documentation of getForwardInterpolant method for bet…
stefaniesinner Jan 14, 2025
cf5d74b
ITP: Improve documentation for method getVars for better understanding.
stefaniesinner Jan 14, 2025
f16392e
ITP: Improve documentation for method getSharedVars for better unders…
stefaniesinner Jan 14, 2025
1858bc8
ITP: Simplify method getBoundVars.
stefaniesinner Jan 14, 2025
d90ba1f
ITP: Improve documentation of getBoundVars method for better understa…
stefaniesinner Jan 14, 2025
653d9be
ITP: Simplify and improve documentation of getUniqueInterpolant.
stefaniesinner Jan 14, 2025
d15ed54
ITP: Describe purpose of getDistinctProver method.
stefaniesinner Jan 14, 2025
d0caccf
ITP: Delete TODO: use context to create distinct provers to interpola…
stefaniesinner Jan 14, 2025
48a03bf
Some clean up and renaming of parameters.
stefaniesinner Jan 14, 2025
11b6fb6
Delete Preconditions for formulas of A and formulas of B since class …
stefaniesinner Jan 14, 2025
5856c69
Use InterpolatingProvers as delegate for independent interpolation pe…
Jan 20, 2025
33b5f40
Allow tree interpolants for delegates of the independent interpolatio…
Jan 20, 2025
4a06fee
Allow sequential interpolants through the native delegate in the inde…
Jan 20, 2025
ad93319
Use the native ITP-BacktrackPoints if possible
Jan 20, 2025
2a7a580
Properly instantiate a quantified formula manager for Yices2 and use …
Jan 20, 2025
cf003ac
Format
Jan 20, 2025
bcf7a02
Delete @SuppressWarnings annotation since this is not needed anymore.
stefaniesinner Jan 21, 2025
d6a574d
Change variable allIndependentInterpolationStrategies to a constant
stefaniesinner Jan 21, 2025
a763186
Throw an IllegalArgumentException for cases where the interpolation g…
stefaniesinner Jan 21, 2025
45e0fec
Throw an IllegalArgumentException for set of variables that are empty…
stefaniesinner Jan 21, 2025
c9af0d9
Throw same IllegalArgumentException for set of variables that are emp…
stefaniesinner Jan 21, 2025
3023670
Instead of null use Optional, avoiding null that needs explicit check…
stefaniesinner Jan 21, 2025
634dc9b
Revert "Instead of null use Optional, avoiding null that needs explic…
stefaniesinner Jan 21, 2025
3ef2af9
Throw InvalidConfigurationException in method getIndependentInterpola…
stefaniesinner Jan 21, 2025
eeca464
Revert "Throw InvalidConfigurationException in method getIndependentI…
stefaniesinner Jan 21, 2025
024d76e
Remove DOCTYPE restriction from ivysetting in build folder to build t…
Jan 21, 2025
f520628
Remove unneeded quantified and boolean formula managers from Yices2So…
Jan 21, 2025
91fb466
Format AbstractProver JavaDoc
Jan 21, 2025
cb6e9f3
Remove InterruptManager from solver independent interpolation wrapper…
Jan 21, 2025
295ebf3
Suppress warnings for resources for the new independent solver provers
Jan 21, 2025
838e727
Merge 5.0.0 into feature branch solver_independent_interpolation
Jan 21, 2025
d3ec3dd
Replace ecj.jar dependency from version 4.29 to 4.11 in ivy.xml to fi…
stefaniesinner Jan 24, 2025
9854c77
Delete unused import statements in AbstractProver
stefaniesinner Jan 24, 2025
834b30d
Manage itpProver by try-with-resource for the solver than itpProver.c…
stefaniesinner Jan 24, 2025
f5170f6
Revert "Replace ecj.jar dependency from version 4.29 to 4.11 in ivy.x…
stefaniesinner Jan 24, 2025
a858290
Return false for interpolant in both independent interpolation strate…
stefaniesinner Jan 24, 2025
70a14da
Return true as interpolant if the conjunctive set of formulas A evalu…
stefaniesinner Jan 24, 2025
8e408c4
Return false as interpolant if the conjunctive set of formulas A eval…
stefaniesinner Jan 24, 2025
20f93d4
Comment that depending on the SMT solver, pre-processing might rewrit…
stefaniesinner Jan 24, 2025
bc92f6a
Return ugly null as empty interpolant in case both sets of formulas A…
stefaniesinner Jan 24, 2025
7276624
Correct case if varsOfA and/or varsOfB is empty. If at least one of t…
stefaniesinner Jan 24, 2025
98f48e0
Correct case if varsOfA and/or varsOfB is empty. If at least one of t…
stefaniesinner Jan 24, 2025
4e13d81
Check the case that the sets of formulas A and B are both empty and r…
stefaniesinner Jan 24, 2025
9508a5b
Return true as interpolant if both conjunctive sets of formulas A and…
stefaniesinner Jan 24, 2025
b6b2a2f
Combine the sets of formulas A in a single BooleanFormula using conju…
stefaniesinner Jan 24, 2025
24207c3
Handle empty interpolation groups by assigning TRUE to conjugatedA ex…
stefaniesinner Jan 24, 2025
aaa0db1
ITP Tests: Handle empty interpolation groups for independent interpol…
stefaniesinner Jan 24, 2025
0b2dfff
ITP Tests: Handle sequential interpolation. Sequential interpolants a…
stefaniesinner Jan 24, 2025
b0196b2
ITP Tests: Handle tree interpolation. Tree interpolants are not suppo…
stefaniesinner Jan 24, 2025
f23b2c6
ITP Tests: Assume Z3 run into timeout on the test binaryBVInterpolati…
stefaniesinner Jan 24, 2025
d2b0aa0
ITP Tests: Add requireSequentialInterpolation to other tests
stefaniesinner Jan 24, 2025
930a6a1
Revert "ITP Tests: Add requireSequentialInterpolation to other tests"
stefaniesinner Jan 24, 2025
49f3f8f
Revert "ITP Tests: Assume Z3 run into timeout on the test binaryBVInt…
stefaniesinner Jan 24, 2025
cea0073
Revert "ITP Tests: Handle tree interpolation. Tree interpolants are n…
stefaniesinner Jan 24, 2025
51fa4fa
Revert "ITP Tests: Handle sequential interpolation. Sequential interp…
stefaniesinner Jan 24, 2025
5cd5643
Reapply "ITP Tests: Assume Z3 run into timeout on the test binaryBVIn…
stefaniesinner Jan 24, 2025
d4a31e7
ITP Tests: Handle sequential interpolation. Sequential interpolants a…
stefaniesinner Jan 25, 2025
7099f94
ITP Tests: Extend test requireTreeItp with cases for independent inte…
stefaniesinner Jan 25, 2025
882332e
ITP Tests: Handle tree interpolation. Tree interpolants are not suppo…
stefaniesinner Jan 25, 2025
a8f8df8
ITP: Check with a distinct prover, if the set of formulas A is satisf…
stefaniesinner Jan 25, 2025
b12c6b9
Revert "ITP: Check with a distinct prover, if the set of formulas A i…
stefaniesinner Jan 25, 2025
7c45f90
Revert "ITP Tests: Handle empty interpolation groups for independent …
stefaniesinner Jan 25, 2025
11d684e
ITP: Check with a distinct prover, if the set of formulas A is satisf…
stefaniesinner Jan 25, 2025
85676b9
ITP Test: Check whether the condition is met to run test binaryInterp…
stefaniesinner Jan 25, 2025
06e09ea
ITP Test: Check again whether the chosen interpolation strategy suppo…
stefaniesinner Jan 25, 2025
7bc0e77
Revert "ITP Test: Check again whether the chosen interpolation strate…
stefaniesinner Jan 25, 2025
ff8c679
Revert "ITP Test: Check whether the condition is met to run test bina…
stefaniesinner Jan 25, 2025
5d05d5a
ITP Test: Skip test binaryInterpolation for BOOLECTOR, since the solv…
stefaniesinner Jan 25, 2025
3145177
ITP Test: Since it seems to be a test for sequential interpolants, th…
stefaniesinner Jan 25, 2025
8ea6495
ITP Test: Since it seems to be a test for sequential interpolants, th…
stefaniesinner Jan 25, 2025
1407c09
Revert "ITP Tests: Handle tree interpolation. Tree interpolants are n…
stefaniesinner Jan 25, 2025
b548175
ITP Test: Skip the two tests issue381InterpolationTest2 and 3 for now…
stefaniesinner Jan 25, 2025
0ac2878
ITP Test: Skip tests for independent interpolation strategies with BI…
stefaniesinner Jan 25, 2025
2b426ca
Revert "ITP Test: Skip tests for independent interpolation strategies…
stefaniesinner Jan 25, 2025
9589acd
ITP: Throw a simple IllegalArgumentException for an empty interpolati…
stefaniesinner Jan 25, 2025
c547246
Reapply "ITP Tests: Handle empty interpolation groups for independent…
stefaniesinner Jan 25, 2025
2536ac4
ITP: Change back the check for independent interpolation strategies a…
stefaniesinner Jan 25, 2025
e412de4
ITP Test: assertThrows for UnsupportedOperationExceptions should neve…
stefaniesinner Jan 25, 2025
8923d02
Revert "ITP Tests: Extend test requireTreeItp with cases for independ…
stefaniesinner Jan 25, 2025
154385c
ITP Test: assume that independent interpolation strategies do not sup…
stefaniesinner Jan 25, 2025
66c05a0
disable Yices2 quantifiers, as they have problems (TODO: investigate)
Jan 26, 2025
10a16c1
Allow native interpolation with the independent interpolation wrapper…
Jan 27, 2025
989e556
Check for quantifier support for interpolation when checking if an in…
Jan 27, 2025
07725c4
Revert "ITP Test: assume that independent interpolation strategies do…
stefaniesinner Jan 26, 2025
704860f
Reapply "ITP Tests: Extend test requireTreeItp with cases for indepen…
stefaniesinner Jan 26, 2025
b51dfad
Revert "ITP Test: assertThrows for UnsupportedOperationExceptions sho…
stefaniesinner Jan 26, 2025
b7b5e6b
Revert "ITP: Change back the check for independent interpolation stra…
stefaniesinner Jan 26, 2025
dbfee25
Revert "Reapply "ITP Tests: Handle empty interpolation groups for ind…
stefaniesinner Jan 26, 2025
2ee7076
Revert "ITP: Throw a simple IllegalArgumentException for an empty int…
stefaniesinner Jan 26, 2025
de97696
Reapply "ITP Test: Skip tests for independent interpolation strategie…
stefaniesinner Jan 26, 2025
fbe0503
Revert "ITP Test: Skip tests for independent interpolation strategies…
stefaniesinner Jan 26, 2025
2494662
Revert "ITP Test: Skip the two tests issue381InterpolationTest2 and 3…
stefaniesinner Jan 26, 2025
8db39e8
Reapply "ITP Tests: Handle tree interpolation. Tree interpolants are …
stefaniesinner Jan 26, 2025
47dbe5a
Revert "ITP Test: Since it seems to be a test for sequential interpol…
stefaniesinner Jan 26, 2025
766a017
Revert "ITP Test: Since it seems to be a test for sequential interpol…
stefaniesinner Jan 26, 2025
3b27329
Revert "ITP Test: Skip test binaryInterpolation for BOOLECTOR, since …
stefaniesinner Jan 26, 2025
2a3679c
Reapply "ITP Test: Check whether the condition is met to run test bin…
stefaniesinner Jan 26, 2025
b1a18d5
Reapply "ITP Test: Check again whether the chosen interpolation strat…
stefaniesinner Jan 26, 2025
e8c70c8
Revert "ITP Test: Check again whether the chosen interpolation strate…
stefaniesinner Jan 26, 2025
fee3938
Revert "ITP Test: Check whether the condition is met to run test bina…
stefaniesinner Jan 26, 2025
2f63151
Revert "ITP: Check with a distinct prover, if the set of formulas A i…
stefaniesinner Jan 26, 2025
67bd5f0
Reapply "ITP Tests: Handle empty interpolation groups for independent…
stefaniesinner Jan 26, 2025
b449ac2
Reapply "ITP: Check with a distinct prover, if the set of formulas A …
stefaniesinner Jan 26, 2025
94f277c
Revert "ITP: Check with a distinct prover, if the set of formulas A i…
stefaniesinner Jan 26, 2025
b9934b8
Revert "ITP Tests: Handle tree interpolation. Tree interpolants are n…
stefaniesinner Jan 26, 2025
3563966
Revert "ITP Tests: Extend test requireTreeItp with cases for independ…
stefaniesinner Jan 26, 2025
5748cff
Revert "ITP Tests: Handle sequential interpolation. Sequential interp…
stefaniesinner Jan 26, 2025
ecde8bc
Revert "Reapply "ITP Tests: Assume Z3 run into timeout on the test bi…
stefaniesinner Jan 26, 2025
1c43a01
Reapply "ITP Tests: Handle sequential interpolation. Sequential inter…
stefaniesinner Jan 26, 2025
6a59be7
Reapply "ITP Tests: Handle tree interpolation. Tree interpolants are …
stefaniesinner Jan 26, 2025
0d08f2c
Reapply "ITP Tests: Assume Z3 run into timeout on the test binaryBVIn…
stefaniesinner Jan 26, 2025
1d1ff71
Reapply "ITP Tests: Add requireSequentialInterpolation to other tests"
stefaniesinner Jan 26, 2025
b54917f
Revert "ITP Tests: Add requireSequentialInterpolation to other tests"
stefaniesinner Jan 26, 2025
b5de85e
Revert "ITP Tests: Assume Z3 run into timeout on the test binaryBVInt…
stefaniesinner Jan 26, 2025
9d85270
Revert "ITP Tests: Handle tree interpolation. Tree interpolants are n…
stefaniesinner Jan 26, 2025
783c113
Revert "ITP Tests: Handle sequential interpolation. Sequential interp…
stefaniesinner Jan 26, 2025
33fda8c
Revert "ITP Tests: Handle empty interpolation groups for independent …
stefaniesinner Jan 26, 2025
032cc00
ITP Test: Create and implement two test methods requireIndependentTre…
stefaniesinner Jan 27, 2025
deb6bdf
ITP: Move the initialization of the variables varsOfA, varsOfB and sh…
stefaniesinner Jan 27, 2025
2956b26
ITP: Delete case if both sets of formulas A and B are trivially TRUE,…
stefaniesinner Jan 27, 2025
5cd5bf1
ITP: Simplify the handling of trivial empty interpolants by returning…
stefaniesinner Jan 27, 2025
ff28d41
ITP: Add the case when the shared variables are empty. In this case, …
stefaniesinner Jan 27, 2025
7f027a5
ITP: Improve the documentation of the methods getModelBasedInterpolan…
stefaniesinner Jan 27, 2025
316a0df
ITP: Add @SuppressWarnings("unused") to getIndependentInterpolationST…
stefaniesinner Jan 27, 2025
161fdb7
ITP: Assign the QuantifiedFormulaManager in method getIndependentInte…
stefaniesinner Jan 27, 2025
17d2aa7
ITP: Skip tests issue381InterpolationTest1() and issue381Interpolatio…
stefaniesinner Jan 27, 2025
6b5b04a
ITP Tests: Skip tests using IntegerFormula for solvers not supporting…
stefaniesinner Jan 27, 2025
2403f9a
ITP Tests: Implement method requireIndependentInterpolation to skip t…
stefaniesinner Jan 27, 2025
0c9e319
ITP: Delete the unnecessary, outdated remnants of the implementation …
stefaniesinner Jan 27, 2025
179652c
ITP: Correct implementation for the trivial interpolant B is empty. T…
stefaniesinner Jan 27, 2025
6581fd4
ITP: Simplify checking whether the variables are empty. It is only ne…
stefaniesinner Jan 27, 2025
3dd9ef2
ITP Tests: Replace method requireIndependentInterpolation with requir…
stefaniesinner Jan 27, 2025
2735386
ITP Tests: Replace method requireIndependentInterpolation with requir…
stefaniesinner Jan 27, 2025
1891ccd
Format
stefaniesinner Jan 27, 2025
4b09154
ITP TEST: Skip the test simpleInterpolation() for solver PRINCESS usi…
stefaniesinner Jan 27, 2025
94b18b2
ITP TEST: Skip the test binaryInterpolationWithConstantFalse() for so…
stefaniesinner Jan 27, 2025
a5f5f37
ITP TEST: Skip the test issue381InterpolationTest3 for solver Z3 usin…
stefaniesinner Jan 27, 2025
3ec40a6
ITP TEST: Skip the test issue381InterpolationTest3 for solver CVC4, C…
stefaniesinner Jan 27, 2025
a68e9e5
ITP TEST: Correct method requireIndependentInterpolationSolvingIssue381
stefaniesinner Jan 27, 2025
cfea586
ITP TEST: Format
stefaniesinner Jan 27, 2025
81c7def
ITP Test: Fix error in InterpolatingProverTest. Assumption in sequent…
stefaniesinner Jan 28, 2025
fb2f1e4
Rename 'TFormulaInfo' to 'F' and 'TType' to 'T' in class IndependentI…
stefaniesinner Jan 28, 2025
166e7eb
Replace 'import org.sosy_lab.java_smt.api.*;' with specific imports (…
stefaniesinner Jan 28, 2025
b0e6d01
ITP QE: Correct quantifier elimination (QE) process in forward and ba…
stefaniesinner Jan 29, 2025
c181ed2
Format
stefaniesinner Jan 29, 2025
6fa0483
ITP QE: Introduce two new constants 'SYMBOL_QUANTIFIER_FORALL' and 'S…
stefaniesinner Jan 29, 2025
d73afa3
ITP QE: Refactor quantifier elimination strategies by returning the q…
stefaniesinner Jan 29, 2025
b47d979
ITP QE: Throw InterruptedException in both quantifier elimination int…
stefaniesinner Jan 29, 2025
154d895
ITP QE: Check if the shared variables still exist and are not elimina…
stefaniesinner Jan 29, 2025
659b812
ITP QE: Improve UnsupportedOperationException from 'Solver does not s…
stefaniesinner Jan 29, 2025
4799dd3
ITP QE: Correct satisfiesInterpolationCriteria by checking the defini…
stefaniesinner Jan 29, 2025
a26b698
ITP: Format
stefaniesinner Jan 29, 2025
3bfa46d
ITP Example: Fix spotbug in Pipeline. Bug occurs because the local va…
stefaniesinner Jan 29, 2025
a64b151
Reposition @SuppressWarnings("unused") to fix spotbug in Pipeline
stefaniesinner Jan 29, 2025
47af7f3
Use SuppressFBWarnings instead SuppressWarnings to fix spotbug in Pip…
stefaniesinner Jan 29, 2025
9bf25b2
Revert "Use SuppressFBWarnings instead SuppressWarnings to fix spotbu…
stefaniesinner Jan 29, 2025
63db9aa
Fix potential resource leak causing build warning by closing itpProve…
stefaniesinner Jan 29, 2025
d7d539c
Fix potential resource leak causing build warning by closing validati…
stefaniesinner Jan 29, 2025
594c372
Reapply "Use SuppressFBWarnings instead SuppressWarnings to fix spotb…
stefaniesinner Jan 29, 2025
8b2b210
Fix build warning with adding SuppressWarnings
stefaniesinner Jan 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion build/ivysettings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ SPDX-FileCopyrightText: 2018-2020 Dirk Beyer <https://www.sosy-lab.org>
SPDX-License-Identifier: Apache-2.0
-->

<!DOCTYPE ivysettings> <!-- generic AcceptAllDTD to make the Eclipse Warning go away -->
<ivysettings>
<!-- DO NOT EDIT LOCALLY!
Keep this file synchronized with
Expand Down
30 changes: 30 additions & 0 deletions src/org/sosy_lab/java_smt/api/SolverContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,36 @@ enum ProverOptions {
*/
GENERATE_UNSAT_CORE_OVER_ASSUMPTIONS,

/**
* Enables Craig interpolation, using the model-based interpolation strategy. This strategy
* constructs interpolants based on the model provided by a solver, i.e. model generation must
* be enabled. This interpolation strategy is only usable for solvers supporting quantified
* solving over the theories interpolated upon. The solver does not need to support
* interpolation itself.
*/
GENERATE_MODEL_BASED_INTERPOLANTS,

/**
* Enables (uniform) Craig interpolation, using the quantifier-based interpolation strategy
* utilizing quantifier-elimination in the forward direction. Forward means, that the set of
* formulas A, used to interpolate, interpolates towards the set of formulas B (B == all
* formulas that are currently asserted, but not in the given set of formulas A used to
* interpolate). This interpolation strategy is only usable for solvers supporting
* quantifier-elimination over the theories interpolated upon. The solver does not need to
* support interpolation itself.
*/
GENERATE_UNIFORM_FORWARD_INTERPOLANTS,

/**
* Enables (uniform) Craig interpolation, using the quantifier-based interpolation strategy
* utilizing quantifier-elimination in the backward direction. Backward means, that the set of
* formulas B (B == all formulas that are currently asserted, but not in the given set of
* formulas A used to interpolate) interpolates towards the set of formulas A. This
* interpolation strategy is only usable for solvers supporting quantifier-elimination over the
* theories interpolated upon. The solver does not need to support interpolation itself.
*/
GENERATE_UNIFORM_BACKWARD_INTERPOLANTS,

/** Whether the solver should enable support for formulae build in SL theory. */
ENABLE_SEPARATION_LOGIC
}
Expand Down
50 changes: 50 additions & 0 deletions src/org/sosy_lab/java_smt/basicimpl/AbstractProver.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@
import com.google.common.collect.Multimap;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.sosy_lab.java_smt.api.BasicProverEnvironment;
Expand Down Expand Up @@ -133,6 +135,27 @@ protected ImmutableSet<T> getAssertedConstraintIds() {
return builder.build();
}

/**
* Returns a tuple, consisting of 2 sets, that combined form the set of all formulas on the stack.
* The set of formulas A is the formulas identified by the set of input interpolation points. The
* set of formulas B is the rest of the current asserted formulas.
*/
protected InterpolationFormulas getInterpolationGroups(Collection<T> pFormulasOfA) {
ImmutableSet.Builder<BooleanFormula> formulasOfA = ImmutableSet.builder();
ImmutableSet.Builder<BooleanFormula> formulasOfB = ImmutableSet.builder();
for (Multimap<BooleanFormula, T> assertedFormulasPerLevel : assertedFormulas) {
for (Entry<BooleanFormula, T> assertedFormulaAndItpPoint :
assertedFormulasPerLevel.entries()) {
if (pFormulasOfA.contains(assertedFormulaAndItpPoint.getValue())) {
formulasOfA.add(assertedFormulaAndItpPoint.getKey());
} else {
formulasOfB.add(assertedFormulaAndItpPoint.getKey());
}
}
}
return InterpolationFormulas.of(formulasOfA.build(), formulasOfB.build());
}

/**
* This method registers the Evaluator to be cleaned up before the next change on the prover
* stack.
Expand All @@ -157,4 +180,31 @@ public void close() {
closeAllEvaluators();
closed = true;
}

/** Provides the set of formulas to interpolate on a distinct prover. */
public static class InterpolationFormulas {
private final Collection<BooleanFormula> formulasForA;
private final Collection<BooleanFormula> formulasForB;

private InterpolationFormulas(
Collection<BooleanFormula> pFormulasOfA, Collection<BooleanFormula> pFormulasOfB) {
Preconditions.checkNotNull(pFormulasOfA);
Preconditions.checkNotNull(pFormulasOfB);
formulasForA = pFormulasOfA;
formulasForB = pFormulasOfB;
}

protected static InterpolationFormulas of(
Collection<BooleanFormula> pFormulasOfA, Collection<BooleanFormula> pFormulasOfB) {
return new InterpolationFormulas(pFormulasOfA, pFormulasOfB);
}

protected Collection<BooleanFormula> gotFormulasForA() {
return formulasForA;
}

protected Collection<BooleanFormula> gotFormulasForB() {
return formulasForB;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.sosy_lab.java_smt.api.BooleanFormula;
import org.sosy_lab.java_smt.api.BooleanFormulaManager;
import org.sosy_lab.java_smt.api.Evaluator;
import org.sosy_lab.java_smt.api.FormulaManager;
import org.sosy_lab.java_smt.api.SolverContext.ProverOptions;
import org.sosy_lab.java_smt.api.SolverException;

Expand All @@ -32,11 +33,9 @@ public abstract class AbstractProverWithAllSat<T> extends AbstractProver<T> {
private final BooleanFormulaManager bmgr;

protected AbstractProverWithAllSat(
Set<ProverOptions> pOptions,
BooleanFormulaManager pBmgr,
ShutdownNotifier pShutdownNotifier) {
Set<ProverOptions> pOptions, FormulaManager pMgr, ShutdownNotifier pShutdownNotifier) {
super(pOptions);
bmgr = pBmgr;
bmgr = pMgr.getBooleanFormulaManager();
shutdownNotifier = pShutdownNotifier;
}

Expand Down
Loading