Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
304 commits
Select commit Hold shift + click to select a range
f980de8
Bitwuzla: Fix legacy call to old get_children()
baierd Sep 29, 2023
2f73e3f
Bitwuzla: Add preliminary solution to convertValue() only for regular BV
baierd Sep 29, 2023
ecc0cd0
Bitwuzla: Fix correct native to JavaSMT type for arrays and getter fo…
baierd Sep 29, 2023
7dbdf4f
Bitwuzla: Quick fix for model generation (check if there is a symbol …
baierd Sep 30, 2023
db41849
Bitwuzla: Add general encapsulate method in creator
baierd Sep 30, 2023
020b987
Bitwuzla: Improve visitor (Check constants by Kind, as this is more p…
baierd Oct 3, 2023
3884c2c
Bitwuzla: Allow multiple stacks (as this seems to work just fine and …
baierd Oct 3, 2023
dda366f
Bitwuzla: Rework visitor, type and kind selection completely
baierd Oct 5, 2023
8c716a2
Bitwuzla: Add some requirements to UFManagerTests (we should add more…
baierd Oct 5, 2023
3c45f8c
Bitwuzla: Add more native tests for types and format
baierd Oct 5, 2023
3982f6a
Bitwuzla: Add a new native parsing method that bundles a lot of neces…
baierd Oct 5, 2023
516a309
Bitwuzla: Add the new native method to the JNI wrapper (Java) + some …
baierd Oct 5, 2023
a1d93ba
Bitwuzla: Temporarly disable parsing tests for Bitwuzla
baierd Oct 5, 2023
1e7af26
Bitwuzla: Configure concurrency test suite for Bitwuzla (does only su…
baierd Oct 5, 2023
9628475
Bitwuzla: Configure SolverContextFactoryTest for Bitwuzla
baierd Oct 5, 2023
fd0dfd1
Bitwuzla: Improve SolverFormulaIODeclarationsTest by adding require m…
baierd Oct 5, 2023
33b8f53
Bitwuzla: Disable quantifiers for Bitwuzla temporarily as we need to …
baierd Oct 5, 2023
84ab8ff
Bitwuzla: Improve visitor in case Bitwuzla returns null for term name…
baierd Oct 5, 2023
4325a91
Bitwuzla: Modify a model test for Bitwuzla
baierd Oct 7, 2023
46b8451
Bitwuzla: Add require Integers for a FP test that checks against Inte…
baierd Oct 7, 2023
5db9fd5
Bitwuzla: Rework FP manager (create numbers actually creates numbers …
baierd Oct 7, 2023
ac3962b
Bitwuzla: Add reworkings of FPs to creator and try to calculate FP va…
baierd Oct 7, 2023
650b185
Bitwuzla: Clean up unneeded functionalities from prover and context a…
baierd Oct 7, 2023
dc2ef54
Bitwuzla: Extend native API tests
baierd Oct 7, 2023
5cc383b
Bitwuzla: Implement model
baierd Oct 7, 2023
169dc44
Bitwuzla: Make compiliation of the wrapper more strict
baierd Oct 9, 2023
f52a3ae
Bitwuzla: Extend SolverFormulaIOTest to include declare-const and Bit…
baierd Oct 9, 2023
99783f7
Bitwuzla: Remove Bitwuzla from 0 artity UF test as it does not suppor…
baierd Oct 9, 2023
c0c9c4e
Bitwuzla: Add termination to Bitwuzla prover
baierd Oct 9, 2023
98f7d03
Bitwuzla: Add more native API tests, including parsing/dumping
baierd Oct 9, 2023
b454c9a
Bitwuzla: Extend the wrapper with termination, better dumping and par…
baierd Oct 9, 2023
c2e8a7c
Bitwuzla: Use new parsing/dumping in the manager and sanitize the inp…
baierd Oct 9, 2023
f9ceab6
Bitwuzla: Actually USE the formula cache, instead of throwing an exce…
baierd Oct 9, 2023
e42f308
Bitwuzla: Fixed typo "-pendantic" in compile script to "-pedantic"
H-Lindner Oct 10, 2023
6833c25
Bitwuzla: Fix BV Modulo and Shift
baierd Oct 10, 2023
8c42adc
Bitwuzla: Disable FP tests temporarily (until we can return proper va…
baierd Oct 10, 2023
185bcdd
Bitwuzla: Disable parsing tests temporarily (until it does not crash …
baierd Oct 10, 2023
bce3d2d
Bitwuzla: Add some requireIntegers() to tests that require them
baierd Oct 10, 2023
8df292c
Bitwuzla: Extend native API type testing
baierd Oct 10, 2023
e274f48
Bitwuzla: Extend function building based on declarations
baierd Oct 10, 2023
357d434
Bitwuzla: Add Bitwuzla specifics to TranslateFormulaTest (disable som…
baierd Oct 10, 2023
2b4f6e7
Bitwuzla: Add a new test to TimeoutTest that creates the entire solve…
baierd Oct 10, 2023
ce6a4f1
Bitwuzla: Correctly return a InterruptedException for Bitwuzla for in…
baierd Oct 10, 2023
a97d9db
Bitwuzla: Add temporarily to quantifier excluded solvers until quanti…
baierd Oct 10, 2023
48d380a
Bitwuzla: Add XOR back to FunctionDecl in getDeclarationKind
baierd Oct 10, 2023
1c404c8
Bitwuzla: Fix ITE for BV
baierd Oct 10, 2023
4f86dec
Bitwuzla: Disable int tests for SolverVisitorTest
baierd Oct 10, 2023
d5bcdef
Bitwuzla: Make JNI C function return a long[] and clean up the wrapper
baierd Oct 10, 2023
1e29f57
Bitwuzla: Add test for new JNI C function
baierd Oct 10, 2023
e41de5e
Bitwuzla: Remove now unneeded method
baierd Oct 10, 2023
f202262
Bitwuzla: Disable the rest of the int tests in SolverVisitorTest
baierd Oct 10, 2023
f849a5b
Bitwuzla: Refactor all managers and add BitwuzlaDeclaration (A declar…
baierd Oct 10, 2023
cfda25f
Bitwuzla: Disable int tests for non-int solvers in ProverEnvironmentTest
baierd Oct 10, 2023
9de2c84
Bitwuzla: Enable model gen for allsat
baierd Oct 10, 2023
dbedbe1
Bitwuzla: Temporarly disable a test for symbol names with spaces
baierd Oct 10, 2023
5b06bc2
Bitwuzla: Add some comments to FormulaManagerTest
baierd Oct 10, 2023
bb86dcf
Bitwuzla: Format
baierd Oct 10, 2023
f4dd544
Bitwuzla: Proper equals and hashcode for BitwuzlaDeclaration
baierd Oct 10, 2023
958720a
Bitwuzla: Switch UFs declarations to terms instead of kinds (as they …
baierd Oct 10, 2023
ecdabf8
Bitwuzla: Delete our own BV to IEEE FP conversion and return a BV tem…
baierd Oct 12, 2023
7230812
Bitwuzla: Enable FP values in the model (but they return non-human re…
baierd Oct 14, 2023
86236c7
Bitwuzla: Fix round() to int in FP manager
baierd Oct 14, 2023
ff11968
Bitwuzla: Rename bitwuzlaJNI to BitwuzlaJNI and refactor all classes …
baierd Oct 17, 2023
667b4fa
Bitwuzla: Fix Fp to IEEE BV as far as possible in Bitwuzla + JNI test…
baierd Oct 17, 2023
396654c
Adding class structure
H-Lindner Jul 28, 2023
cf727a2
Implemented ArrayFormulaManager
H-Lindner Aug 1, 2023
3ce589a
Implemented BitvectorFormulaManager
H-Lindner Aug 1, 2023
2dbd685
Started with floating points
H-Lindner Aug 3, 2023
bca3211
Continued with fp
H-Lindner Aug 5, 2023
c4888e5
Finished FPManager
H-Lindner Aug 5, 2023
e7acb91
Cleaned imports
H-Lindner Aug 5, 2023
cca209a
Changed JNI, started FormulaManager
H-Lindner Aug 9, 2023
28934ee
Started QuantifiedFM and BooleanFM
H-Lindner Aug 9, 2023
06ed59b
Minor updates for new JNI
H-Lindner Aug 23, 2023
d2c1101
Various changes, started Prover
H-Lindner Aug 28, 2023
4dbbef5
Expanded Formulas, continued on Prover and Model
H-Lindner Aug 29, 2023
66e30d5
Finished prover
H-Lindner Aug 30, 2023
27ccf1d
Continued with visitor
H-Lindner Aug 31, 2023
3ae4b56
Updated JNI, started working on parser
H-Lindner Aug 31, 2023
cba2243
Continued visitor, parse, floatingpoint
H-Lindner Sep 2, 2023
4f614f2
Cleanup, continued asList
H-Lindner Sep 3, 2023
7261453
Added dumping
H-Lindner Sep 4, 2023
6e0a989
Formatting
H-Lindner Sep 4, 2023
aa1a30c
Finished getBooleanVarDeclarationImpl
H-Lindner Sep 4, 2023
9241894
Visitor, Model, QuantifiedFM, formatting
H-Lindner Sep 5, 2023
1592824
Updated wrap
H-Lindner Sep 5, 2023
e03389a
Various little fixes
H-Lindner Sep 11, 2023
caf6b18
Attempting publish
H-Lindner Sep 25, 2023
57145d5
Fixed BitwuzlaKind for compile
H-Lindner Sep 25, 2023
cbc2484
Cleaning up warnings
H-Lindner Sep 25, 2023
17d47b2
Adding for publishing
H-Lindner Sep 26, 2023
f2d4e38
Wrap for new version of Bitwuzla
H-Lindner Sep 27, 2023
6eda066
Handling warnings
H-Lindner Sep 28, 2023
cd0f5ce
Updated to newest version of Bitwuzla
H-Lindner Sep 28, 2023
4580fb3
New Wrap
H-Lindner Sep 28, 2023
7efeb86
Implement proper publishing script for Bitwuzla. This needs the check…
baierd Sep 28, 2023
a699b8c
Added new SWIG classes
H-Lindner Sep 28, 2023
a05a91f
Format + checkstyle + spotbugs (Generall cleanup. Removal of deprecat…
baierd Sep 28, 2023
464635c
Fixing tests
H-Lindner Sep 29, 2023
271ad76
Add symlinks to automatically find bitwuzla
baierd Sep 28, 2023
0bfb99c
Add bitwuzla config to build.xml and add all files to bitwuzlas ivy c…
baierd Sep 28, 2023
f38d5ef
Remove the .so file for Bitwuzla
baierd Sep 28, 2023
3818177
Bitwuzla: Implement getFormulaType() for the Formula interface
baierd Sep 29, 2023
a4125cb
Bitwuzla: Implement Formula encapsulation for Arrays, Bitvectors and …
baierd Sep 29, 2023
98a39c2
Bitwuzla: Clean up native tests a bit
baierd Sep 29, 2023
b6d787a
Bugfix
H-Lindner Sep 29, 2023
fc445d8
Bitwuzla: Actually set the closed bool when closing a solver (we run …
baierd Sep 29, 2023
c111455
Bitwuzla: Format formula creator
baierd Sep 29, 2023
c4c19ec
Bitwuzla: Refactor SolverContext, including the Settings (Don't pass …
baierd Sep 29, 2023
a96572b
Bitwuzla: Create a new environment when creating a new theorem prover…
baierd Sep 29, 2023
fd7f99f
Bitwuzla: Add missing linking to compile script
baierd Sep 29, 2023
7622648
Bitwuzla: improve the JNI wrapper by returning a proper array instead…
baierd Sep 29, 2023
792aa2c
Bitwuzla: Disable a test that Bitwuzla can not solve
baierd Sep 29, 2023
40b517e
Bitwuzla: Merge due to conflicts + remove of unnecessary tests with p…
baierd Sep 29, 2023
bf48948
Bitwuzla: Fix legacy call to old get_children()
baierd Sep 29, 2023
d5f3028
Bitwuzla: Add preliminary solution to convertValue() only for regular BV
baierd Sep 29, 2023
a69bbf6
Bitwuzla: Fix correct native to JavaSMT type for arrays and getter fo…
baierd Sep 29, 2023
ac90b2c
Bitwuzla: Quick fix for model generation (check if there is a symbol …
baierd Sep 30, 2023
a73f2db
Bitwuzla: Add general encapsulate method in creator
baierd Sep 30, 2023
cfe97f0
Bitwuzla: Improve visitor (Check constants by Kind, as this is more p…
baierd Oct 3, 2023
a8d2e8a
Bitwuzla: Allow multiple stacks (as this seems to work just fine and …
baierd Oct 3, 2023
072cfea
Bitwuzla: Rework visitor, type and kind selection completely
baierd Oct 5, 2023
717905e
Bitwuzla: Add some requirements to UFManagerTests (we should add more…
baierd Oct 5, 2023
fe2a22b
Bitwuzla: Add more native tests for types and format
baierd Oct 5, 2023
3f77014
Bitwuzla: Add a new native parsing method that bundles a lot of neces…
baierd Oct 5, 2023
1a41e28
Bitwuzla: Add the new native method to the JNI wrapper (Java) + some …
baierd Oct 5, 2023
043e722
Bitwuzla: Temporarly disable parsing tests for Bitwuzla
baierd Oct 5, 2023
856d000
Bitwuzla: Configure concurrency test suite for Bitwuzla (does only su…
baierd Oct 5, 2023
a7220b5
Bitwuzla: Configure SolverContextFactoryTest for Bitwuzla
baierd Oct 5, 2023
3cdbe55
Bitwuzla: Improve SolverFormulaIODeclarationsTest by adding require m…
baierd Oct 5, 2023
24f816e
Bitwuzla: Disable quantifiers for Bitwuzla temporarily as we need to …
baierd Oct 5, 2023
4a20c9d
Bitwuzla: Improve visitor in case Bitwuzla returns null for term name…
baierd Oct 5, 2023
e9ceb4f
Bitwuzla: Modify a model test for Bitwuzla
baierd Oct 7, 2023
9e450f9
Bitwuzla: Add require Integers for a FP test that checks against Inte…
baierd Oct 7, 2023
ae1ec7c
Bitwuzla: Rework FP manager (create numbers actually creates numbers …
baierd Oct 7, 2023
9f709ce
Bitwuzla: Add reworkings of FPs to creator and try to calculate FP va…
baierd Oct 7, 2023
8124d8d
Bitwuzla: Clean up unneeded functionalities from prover and context a…
baierd Oct 7, 2023
3512a88
Bitwuzla: Extend native API tests
baierd Oct 7, 2023
d6135a7
Bitwuzla: Implement model
baierd Oct 7, 2023
b812073
Bitwuzla: Make compiliation of the wrapper more strict
baierd Oct 9, 2023
8d08f8d
Bitwuzla: Extend SolverFormulaIOTest to include declare-const and Bit…
baierd Oct 9, 2023
5614f57
Bitwuzla: Remove Bitwuzla from 0 artity UF test as it does not suppor…
baierd Oct 9, 2023
6018c56
Bitwuzla: Add termination to Bitwuzla prover
baierd Oct 9, 2023
49d5199
Bitwuzla: Add more native API tests, including parsing/dumping
baierd Oct 9, 2023
20ca47f
Bitwuzla: Extend the wrapper with termination, better dumping and par…
baierd Oct 9, 2023
7ffcbf7
Bitwuzla: Use new parsing/dumping in the manager and sanitize the inp…
baierd Oct 9, 2023
41cdcf8
Bitwuzla: Actually USE the formula cache, instead of throwing an exce…
baierd Oct 9, 2023
7a4ccfd
Bitwuzla: Fixed typo "-pendantic" in compile script to "-pedantic"
H-Lindner Oct 10, 2023
a6ecfc6
Bitwuzla: Fix BV Modulo and Shift
baierd Oct 10, 2023
f4e5bee
Bitwuzla: Disable FP tests temporarily (until we can return proper va…
baierd Oct 10, 2023
0f95bad
Bitwuzla: Disable parsing tests temporarily (until it does not crash …
baierd Oct 10, 2023
7020c0e
Bitwuzla: Add some requireIntegers() to tests that require them
baierd Oct 10, 2023
0503748
Bitwuzla: Extend native API type testing
baierd Oct 10, 2023
6e4d452
Bitwuzla: Extend function building based on declarations
baierd Oct 10, 2023
17e9c83
Bitwuzla: Add Bitwuzla specifics to TranslateFormulaTest (disable som…
baierd Oct 10, 2023
81e84bd
Bitwuzla: Add a new test to TimeoutTest that creates the entire solve…
baierd Oct 10, 2023
80c242b
Bitwuzla: Correctly return a InterruptedException for Bitwuzla for in…
baierd Oct 10, 2023
7286dd2
Bitwuzla: Add temporarily to quantifier excluded solvers until quanti…
baierd Oct 10, 2023
588bb5e
Bitwuzla: Add XOR back to FunctionDecl in getDeclarationKind
baierd Oct 10, 2023
e5e834e
Bitwuzla: Fix ITE for BV
baierd Oct 10, 2023
c8e5df0
Bitwuzla: Disable int tests for SolverVisitorTest
baierd Oct 10, 2023
f7d1fc4
Bitwuzla: Make JNI C function return a long[] and clean up the wrapper
baierd Oct 10, 2023
f6fb15b
Bitwuzla: Add test for new JNI C function
baierd Oct 10, 2023
4145282
Bitwuzla: Remove now unneeded method
baierd Oct 10, 2023
f80c4d3
Bitwuzla: Disable the rest of the int tests in SolverVisitorTest
baierd Oct 10, 2023
da60504
Bitwuzla: Refactor all managers and add BitwuzlaDeclaration (A declar…
baierd Oct 10, 2023
5be61e2
Bitwuzla: Disable int tests for non-int solvers in ProverEnvironmentTest
baierd Oct 10, 2023
6cea0ff
Bitwuzla: Enable model gen for allsat
baierd Oct 10, 2023
f6e1e4c
Bitwuzla: Temporarly disable a test for symbol names with spaces
baierd Oct 10, 2023
1a8f708
Bitwuzla: Add some comments to FormulaManagerTest
baierd Oct 10, 2023
7df2928
Bitwuzla: Format
baierd Oct 10, 2023
6d2afd6
Bitwuzla: Proper equals and hashcode for BitwuzlaDeclaration
baierd Oct 10, 2023
41882a0
Bitwuzla: Switch UFs declarations to terms instead of kinds (as they …
baierd Oct 10, 2023
11a1d4d
Bitwuzla: Delete our own BV to IEEE FP conversion and return a BV tem…
baierd Oct 12, 2023
04d4939
Bitwuzla: Enable FP values in the model (but they return non-human re…
baierd Oct 14, 2023
6836fc9
Bitwuzla: Fix round() to int in FP manager
baierd Oct 14, 2023
b7a3cd8
Bitwuzla: Rename bitwuzlaJNI to BitwuzlaJNI and refactor all classes …
baierd Oct 17, 2023
fccef7a
Bitwuzla: Fix Fp to IEEE BV as far as possible in Bitwuzla + JNI test…
baierd Oct 17, 2023
4ee8eab
Bitwuzla: Remove unused import
baierd Oct 17, 2023
b28968b
Wierd merge because git
baierd Oct 17, 2023
10b44fb
Add newly published experimental bitwuzla version to ivy.xml
baierd Oct 17, 2023
91ba2ac
Bitwuzla: Format
baierd Oct 17, 2023
dc08dab
Bitwuzla: Fix ordering of variables and static assignments outside of…
baierd Oct 17, 2023
5ff3655
Bitwuzla: Organize imports without *
baierd Oct 17, 2023
b014c5c
Bitwuzla: Add package info
baierd Oct 17, 2023
5d976cc
Bitwuzla: Remove ModeValue and references to it + Add license headers
baierd Oct 17, 2023
e0d3096
Bitwuzla: Refactor Bitwuzla JNI tests
baierd Oct 17, 2023
a816b73
Bitwuzla: Improve Array Manager
baierd Oct 17, 2023
a759590
Bitwuzla: Improve layout etc of JNI methods
baierd Oct 17, 2023
290a696
Bitwuzla: Improve layout etc. of JNI interfaces even more + add suppr…
baierd Oct 17, 2023
3735061
Bitwuzla: Add empty private constructor for JNI interface
baierd Oct 17, 2023
23c3152
Bitwuzla: Remove the _IO_FILE.java file and all references as we remo…
baierd Oct 17, 2023
b2a91bf
Bitwuzla: Apply refaster suggestions
baierd Oct 17, 2023
27d9576
Bitwuzla: Improve licensing/copyright info
baierd Oct 17, 2023
0524a5f
Bitwuzla: Improve isUnsatWAssumptions by not creating multiple data s…
baierd Oct 17, 2023
0816df6
Bitwuzla: Update experimental Bitwutzla version in ivy.xml
baierd Oct 18, 2023
eb3ee4a
Merge branch 'master' into add_bitwuzla
baierd Oct 23, 2023
1ad303f
Fix error in ivy.xml from the merge
baierd Oct 23, 2023
1b5167b
Bitwuzla: add a JNI test for usage of formulas/API without a solver e…
baierd Oct 23, 2023
db173fe
Add a test that tests usage of formulas/managers in threads distinct …
baierd Oct 23, 2023
226982e
Add new Bitwuzla native API tests for parsing and improve the old tests
baierd Oct 27, 2023
8c24281
Improve new concurrent manager usage test
baierd Oct 27, 2023
bdbbda9
Add quantifier support for Bitwuzla
baierd Oct 27, 2023
dd2cade
Remove Bitwuzla from quantifier test blacklist
baierd Oct 27, 2023
1ddf409
Improve QuantifierManagerTest setup and fix a test
baierd Oct 27, 2023
89d46be
Fix Bitwuzla quantifier creation and edgecase support
baierd Oct 27, 2023
acdf81a
Format
baierd Oct 27, 2023
825f8d6
Add requireIntegers to 2 solver visitor tests that require integers
baierd Oct 27, 2023
bd2c326
Bitwuzla: Cleaned-up formating in build script
daniel-raffler Jan 10, 2024
98604ec
Bitwuzla: Applied refaster patch.
daniel-raffler Jan 10, 2024
5b6c3f6
Merge remote-tracking branch 'origin/master' into add_bitwuzla
daniel-raffler Jan 10, 2024
edf70a6
Bitwuzla: Fixed BitwuzlaTheoremProver after Formula tracking was adde…
daniel-raffler Jan 10, 2024
07eec7d
Bitwuzla: Blacklisted Bitwuzla in SolverThreadLocalityTest.wrongConte…
daniel-raffler Jan 10, 2024
9b239a5
Bitwuzla: Removed unused import.
daniel-raffler Jan 10, 2024
4f85af5
Revert "Bitwuzla: Removed unused import."
daniel-raffler Jan 10, 2024
a072a59
Bitwuzla: Fixed order of imports.
daniel-raffler Jan 10, 2024
90342d6
Bitwuzla: Update Bitwuzla to version 0.3.0
daniel-raffler Jan 10, 2024
d53489f
Bitwuzla: Skip checkThatDumpIsParseable test in SolverFormulaIOTest a…
daniel-raffler Jan 10, 2024
0d6bf1e
Bitwuzla: Removed TODOs in SolverFormulaIOTest as the issue has been …
daniel-raffler Jan 11, 2024
4091fae
Bitwuzla: Removed TODO in SolverFormulaIOTest.valDumpTest as the prob…
daniel-raffler Jan 11, 2024
8f68e7f
Bitwuzla: Re-enabled parsing tests as https://github.com/bitwuzla/bit…
daniel-raffler Jan 11, 2024
7a69b2f
Bitwuzla: Disabled test_BitvectorIsZeroAfterShiftLeft in SolverTheori…
daniel-raffler Jan 11, 2024
4203be9
Bitwuzla: Disabled parse tests that require integers.
daniel-raffler Jan 11, 2024
e72c140
Removed unused method
daniel-raffler Jan 11, 2024
8f15ab9
Fixed missing import.
daniel-raffler Jan 12, 2024
2c82f46
Added FIXMEs for all remaining bugs.
daniel-raffler Jan 12, 2024
e1f53b1
Fixed a bug in the JNI bindings (SolverKind.java). The class hardcode…
daniel-raffler Jan 15, 2024
0a83a15
Disabled failing test for the FormulaClassifier. We need to figure ou…
daniel-raffler Jan 15, 2024
2c6e65f
Fixed formating.
daniel-raffler Jan 15, 2024
3a135a7
Added one more test case that demonstrates the issues with the parser…
daniel-raffler Jan 15, 2024
8ff7594
Merge remote-tracking branch 'origin/master' into add_bitwuzla
daniel-raffler Jan 16, 2024
ff0465d
Bitwuzla: Disabled SolverFactoryTest on Ubuntu 18.04 as it uses a gli…
daniel-raffler Jan 16, 2024
fa97ec3
Improve Bitwuzla compile script errors
baierd Jan 23, 2024
b21b59b
Add new Bitwuzla Option
baierd Jan 23, 2024
2862cdf
Add new Bitwuzla Node Kind
baierd Jan 23, 2024
19cde35
Create free vars for bound vars in Bitwuzlas visitor if they don't ex…
baierd Jan 23, 2024
3372315
Fix FormulaClassifierTest test category logics and create new tests f…
baierd Jan 23, 2024
9b18ec2
Format
baierd Jan 23, 2024
ceb4bcc
Update to new Bitwuzla version 0.3.1
baierd Jan 23, 2024
8458179
Disable some parsing tests for Bitwuzla that it fails in version 0.3.…
baierd Jan 23, 2024
824deba
Merge
baierd Jan 23, 2024
2cba0e1
Update README w Bitwuzla
baierd Jan 23, 2024
b3bbd3e
Remove unused internal method of BitwuzlaOption
baierd Jan 24, 2024
cea82f4
Fixed FormulaClassifier tests for floating point logics.
daniel-raffler Jan 24, 2024
586bea7
Fixed handling of negative zero in BitwuzlaFloatingPointManager.
daniel-raffler Jan 24, 2024
e306972
Bitwuzla: Disabled a test that uses floats in "scientific notation". …
daniel-raffler Jan 24, 2024
cc6a882
Fixed handling of scientific notation in BitwuzlaFloatingPointManager.
daniel-raffler Jan 24, 2024
1ca0ba6
Merged master into add_bitwuzla.
daniel-raffler Apr 3, 2024
2d54f19
Fixed the merge.
daniel-raffler Apr 3, 2024
2e4f71f
Bitwuzla: Fixed two tests from SolverVisitorTest by inclusing BITWUZL…
daniel-raffler Apr 3, 2024
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
25 changes: 13 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,19 @@ Only a few SMT solvers provide support for theories like Arrays, Floating Point,

Currently JavaSMT supports several SMT solvers (see [Getting Started](doc/Getting-started.md) for installation):

| SMT Solver | Linux64 | Windows64 | MacOS | Description |
| --- |:---:|:---:|:---:|:--- |
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | a fast solver for bitvector logic, misses formula introspection |
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | |
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | | | new! |
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | :heavy_check_mark: | | |
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark: | | | new! |
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | based on MathSAT5, with support for optimization |
| [Princess](http://www.philipp.ruemmer.org/princess.shtml) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
| [SMTInterpol](https://ultimate.informatik.uni-freiburg.de/smtinterpol/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
| [Yices2](https://yices.csl.sri.com/) | :heavy_check_mark: | [soon](https://github.com/sosy-lab/java-smt/pull/215) | | |
| [Z3](https://github.com/Z3Prover/z3) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | mature and well-known solver |
| SMT Solver | Linux64 | Windows64 | MacOS | Description |
|-------------------------------------------------------------------------|:---:|:---:|:---:|:-----------------------------------------------------------------------------|
| [Bitwuzla](https://boolector.github.io/) | :heavy_check_mark: | | | a fast solver for bitvector and floating-point logic, successor of Boolector |
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | a fast solver for bitvector logic, misses formula introspection |
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | |
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | | | new! |
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | :heavy_check_mark: | | |
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark: | | | new! |
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | based on MathSAT5, with support for optimization |
| [Princess](http://www.philipp.ruemmer.org/princess.shtml) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
| [SMTInterpol](https://ultimate.informatik.uni-freiburg.de/smtinterpol/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
| [Yices2](https://yices.csl.sri.com/) | :heavy_check_mark: | [soon](https://github.com/sosy-lab/java-smt/pull/215) | | |
| [Z3](https://github.com/Z3Prover/z3) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | mature and well-known solver |

The following features are supported (depending on the used SMT solver):

Expand Down
4 changes: 3 additions & 1 deletion build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ SPDX-License-Identifier: Apache-2.0

<!-- one configuration per solver -->
<property name="ivy.solver.configurations" value="
runtime-bitwuzla,
runtime-boolector,
runtime-cvc4,
runtime-cvc5,
Expand Down Expand Up @@ -90,7 +91,8 @@ SPDX-License-Identifier: Apache-2.0

<target name="tests" depends="unit-tests-coverage" description="Run all tests"/>

<target name="publish" depends="tests, dist, publish-artifacts" description="Publish current version of JavaSMT to Ivy repository" />
<target name="publish" depends="dist, publish-artifacts"
description="Publish current version of JavaSMT to Ivy repository"/>

<target name="documentation" depends="collect-options, javadoc" description="Build documentation"/>

Expand Down
3 changes: 2 additions & 1 deletion build/build-publish-solvers.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ SPDX-License-Identifier: Apache-2.0
-->

<!-- vim: set tabstop=8 shiftwidth=4 expandtab sts=4 filetype=ant fdm=marker: -->
<project name="publish-solvers" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<project name="publish-solvers" basedir=".">

<import file="build-publish-solvers/solver-bitwuzla.xml"/>
<import file="build-publish-solvers/solver-boolector.xml"/>
<import file="build-publish-solvers/solver-cvc4.xml"/>
<import file="build-publish-solvers/solver-cvc5.xml"/>
Expand Down
4 changes: 3 additions & 1 deletion build/build-publish-solvers/build-jar-yices2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ SPDX-License-Identifier: Apache-2.0
<target name="jar-yices2" depends="determine-version, build"
description="Create a runnable JAR file of all classes related to Yices2">
<property name="yices2jar.file" value="javasmt-yices2-${version}.jar"/>
<copy todir="${class.dir}"><fileset dir=".." includes="META-INF/**"/></copy>
<copy todir="${class.dir}">
<fileset dir=".." includes="META-INF/**"/>
</copy>
<manifestclasspath property="yices2Classpath.jar" jarfile="${ivy.lib.dir}/runtime-yices2/${jar.file}" maxParentLevels="0">
<classpath><fileset dir="${ivy.lib.dir}/runtime-yices2" includes="checker-qual.jar common.jar guava.jar"/></classpath>
</manifestclasspath>
Expand Down
11 changes: 7 additions & 4 deletions build/build-publish-solvers/macros.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ SPDX-License-Identifier: Apache-2.0
<attribute name="solverName"/>
<attribute name="solverVersion"/>
<sequential>
<available property="ivy.hasrepository" file="repository/${ivy.organisation}/${ivy.module}" />
<available property="ivy.hasrepository"
file="repository/${ivy.organisation}/${ivy.module}"/>
<fail unless="ivy.hasrepository"
message="Cannot publish without 'repository' dir, please run 'svn co https://svn.sosy-lab.org/software/ivy/repository/${ivy.organisation}/${ivy.module} repository/${ivy.organisation}/${ivy.module}'." />
message="Cannot publish without 'repository' dir, please run 'svn co https://svn.sosy-lab.org/software/ivy/repository/${ivy.organisation}/${ivy.module} repository/${ivy.organisation}/${ivy.module}'."/>
<ivy:publish
pubrevision="@{solverVersion}"
resolver="Sosy-Lab-Publish"
Expand All @@ -44,8 +45,10 @@ SPDX-License-Identifier: Apache-2.0
<echo>
You now want to run
svn add repository/${ivy.organisation}/${ivy.module}/*-@{solverVersion}*
svn ci repository/${ivy.organisation}/${ivy.module} -m"publish version @{solverVersion} of @{solverName} Solver"
to make the new version publicly available.</echo>
svn ci repository/${ivy.organisation}/${ivy.module} -m"publish version
@{solverVersion} of @{solverName} Solver"
to make the new version publicly available.
</echo>
</sequential>
</macrodef>
</project>
136 changes: 136 additions & 0 deletions build/build-publish-solvers/solver-bitwuzla.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" ?>

<!--
~ JavaSMT is an API wrapper for a collection of SMT solvers.
~ This file is part of JavaSMT.
~
~ Copyright (C) 2007-2016 Dirk Beyer
~ All rights reserved.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<!-- vim: set tabstop=8 shiftwidth=4 expandtab sts=4 filetype=ant fdm=marker: -->
<project name="publish-solvers-cvc5" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">

<import file="macros.xml"/>

<!-- SECTION: Publishing Bitwuzla {{{1
==================================================================
-->
<target name="package-bitwuzla" depends="">
<fail unless="bitwuzla.path">
Please specify the path to Bitwuzla with the flag -Dbitwuzla.path=/path/to/bitwuzla.
The path has to point to the root Bitwuzla folder, i.e.,
a checkout of the official git repositoy from 'https://github.com/bitwuzla/bitwuzla'.
Note that shell substitutions do not work and a full absolute path has to be specified.
</fail>
<echo>
The path is ${bitwuzla.path}
</echo>

<fail unless="bitwuzla.customRev">
Please specify a custom revision with the flag -Dbitwuzla.customRev=XXX.
The custom revision has to be unique amongst the already known version
numbers from the ivy repository. The script will append the git revision.
</fail>

<fail unless="gmp.path">
Please specify the path to GMP with the flag -Dgmp.path=/path/to/gmp.
The path has to point to the root GMP folder with version equal to or larger than 6.1.
Note that shell substitutions do not work and a full absolute path has to be specified.
</fail>

<!-- get a naive version -->
<exec executable="git" dir="${bitwuzla.path}" outputproperty="bitwuzla.revision"
failonerror="true">
<arg value="show"/>
<arg value="-s"/>
<arg value="--format=%h"/>
</exec>
<property name="bitwuzla.version" value="${bitwuzla.customRev}-g${bitwuzla.revision}"/>
<echo message="Building Bitwuzla in version '${bitwuzla.version}'"/>

<!-- add JNI wrapper before compiling Bitwuzla -->
<copy file="lib/native/source/libbitwuzla/bitwuzla_wrap.c"
tofile="${bitwuzla.path}/src/bitwuzla_wrap.c"/>

<exec executable="./configure.py" dir="${bitwuzla.path}" failonerror="true">
<arg value="--shared"/>
<arg value="--wipe"/>
</exec>
<exec executable="meson" dir="${bitwuzla.path}/build/" failonerror="true">
<arg value="compile"/>
</exec>

<!-- unneeded symbols are removed by Meson automatically -->

<exec executable="lib/native/source/libbitwuzla/compile.sh" failonerror="true">
<arg value="${bitwuzla.path}"/>
</exec>

<!-- fix RPATH and library dependencies -->
<exec executable="patchelf" dir="lib/native/source/libbitwuzla/" failonerror="true">
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="--replace-needed"/>
<arg value="libbitwuzla.so.0"/>
<arg value="libbitwuzla.so"/>
<arg value="libbitwuzlaJNI.so"/>
</exec>
<exec executable="patchelf" dir="${bitwuzla.path}/build/src/" failonerror="true">
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="libbitwuzla.so.0"/>
</exec>
<exec executable="patchelf" dir="${bitwuzla.path}/build/src/lib/" failonerror="true">
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="libbitwuzlals.so"/>
</exec>
<exec executable="patchelf" dir="${bitwuzla.path}/build/src/lib/" failonerror="true">
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="libbitwuzlabv.so"/>
</exec>
<exec executable="patchelf" dir="${bitwuzla.path}/build/src/lib/" failonerror="true">
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="libbitwuzlabb.so"/>
</exec>
<exec executable="patchelf" dir="${gmp.path}/.libs/" failonerror="true">
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="libgmp.so.10.5.0"/>
</exec>

<!-- copy library files into directory to be published for IVY -->
<copy file="lib/native/source/libbitwuzla/libbitwuzlaJNI.so"
tofile="libbitwuzlaJNI-${bitwuzla.version}.so"/>
<copy file="${bitwuzla.path}/build/src/lib/libbitwuzlals.so"
tofile="libbitwuzlals-${bitwuzla.version}.so"/>
<copy file="${bitwuzla.path}/build/src/lib/libbitwuzlabv.so"
tofile="libbitwuzlabv-${bitwuzla.version}.so"/>
<copy file="${bitwuzla.path}/build/src/lib/libbitwuzlabb.so"
tofile="libbitwuzlabb-${bitwuzla.version}.so"/>
<copy file="${gmp.path}/.libs/libgmp.so.10.5.0" tofile="libgmp-${bitwuzla.version}.so"/>
<copy file="${bitwuzla.path}/build/src/libbitwuzla.so.0"
tofile="libbitwuzla-${bitwuzla.version}.so"/>
</target>

<target name="publish-bitwuzla" depends="package-bitwuzla, load-ivy"
description="Publish Bitwuzla binaries to Ivy repository.">
<ivy:resolve conf="solver-bitwuzla" file="solvers_ivy_conf/ivy_bitwuzla.xml"/>
<publishToRepository solverName="Bitwuzla" solverVersion="${bitwuzla.version}"/>
</target>
</project>
50 changes: 30 additions & 20 deletions build/build-publish-solvers/solver-boolector.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ SPDX-License-Identifier: Apache-2.0
</fail>

<!-- get a nive version -->
<exec executable="git" dir="${boolector.path}" outputproperty="boolector.revision" failonerror="true">
<exec executable="git" dir="${boolector.path}" outputproperty="boolector.revision"
failonerror="true">
<arg value="show"/>
<arg value="-s"/>
<arg value="--format=%h"/>
Expand All @@ -39,56 +40,65 @@ SPDX-License-Identifier: Apache-2.0
<echo message="Building Boolector in version '${boolector.version}'"/>

<!-- add JNI wrapper before compiling Boolector -->
<copy file="lib/native/source/libboolector/interface_wrap.c" tofile="${boolector.path}/src/interface_wrap.c"/>
<copy file="lib/native/source/libboolector/include_interface_and_jni.patch" tofile="${boolector.path}/src/include_interface_and_jni.patch"/>
<copy file="lib/native/source/libboolector/interface_wrap.c"
tofile="${boolector.path}/src/interface_wrap.c"/>
<copy file="lib/native/source/libboolector/include_interface_and_jni.patch"
tofile="${boolector.path}/src/include_interface_and_jni.patch"/>
<exec executable="git" dir="${boolector.path}" failonerror="true">
<arg value="apply"/>
<arg value="src/include_interface_and_jni.patch"/>
</exec>

<!-- build Boolector -->
<exec executable="./contrib/setup-picosat.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-minisat.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-cms.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-lingeling.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-cadical.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-btor2tools.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-picosat.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-minisat.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-cms.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-lingeling.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-cadical.sh" dir="${boolector.path}" failonerror="true"/>
<exec executable="./contrib/setup-btor2tools.sh" dir="${boolector.path}"
failonerror="true"/>
<exec executable="./configure.sh" dir="${boolector.path}" failonerror="true">
<arg value="-fno-strict-aliasing"/>
<arg value="-fpic"/>
<arg value="--shared"/>
</exec>
<exec executable="make" dir="${boolector.path}/build/" failonerror="true">
<arg value="-j4" />
<arg value="-j4"/>
</exec>

<!-- remove unneeded symbols -->
<exec executable="strip" dir="${boolector.path}/deps/install/lib/" failonerror="true">
<arg value="libpicosat.so" />
<arg value="libpicosat.so"/>
</exec>
<exec executable="strip" dir="${boolector.path}/deps/install/lib/" failonerror="true">
<arg value="libminisat.so" />
<arg value="libminisat.so"/>
</exec>
<exec executable="strip" dir="${boolector.path}/build/lib/" failonerror="true">
<arg value="libboolector.so" />
<arg value="libboolector.so"/>
</exec>

<!-- fix RPATH and library dependencies -->
<exec executable="patchelf" dir="${boolector.path}/build/lib/" failonerror="true">
<arg value="--set-rpath"/><arg value="$ORIGIN"/>
<arg value="--replace-needed"/><arg value="libminisat.so.2"/><arg value="libminisat.so"/>
<arg value="--set-rpath"/>
<arg value="$ORIGIN"/>
<arg value="--replace-needed"/>
<arg value="libminisat.so.2"/>
<arg value="libminisat.so"/>
<arg value="libboolector.so"/>
</exec>

<!-- copy library files into directory to be published for IVY -->
<copy file="${boolector.path}/deps/install/lib/libminisat.so" tofile="libminisat-${boolector.version}.so"/>
<copy file="${boolector.path}/deps/install/lib/libpicosat.so" tofile="libpicosat-${boolector.version}.so"/>
<copy file="${boolector.path}/build/lib/libboolector.so" tofile="libboolector-${boolector.version}.so"/>
<copy file="${boolector.path}/deps/install/lib/libminisat.so"
tofile="libminisat-${boolector.version}.so"/>
<copy file="${boolector.path}/deps/install/lib/libpicosat.so"
tofile="libpicosat-${boolector.version}.so"/>
<copy file="${boolector.path}/build/lib/libboolector.so"
tofile="libboolector-${boolector.version}.so"/>
</target>

<target name="publish-boolector" depends="package-boolector, load-ivy"
description="Publish Boolector binaries to Ivy repository.">
<ivy:resolve conf="solver-boolector" file="solvers_ivy_conf/ivy_boolector.xml" />
description="Publish Boolector binaries to Ivy repository.">
<ivy:resolve conf="solver-boolector" file="solvers_ivy_conf/ivy_boolector.xml"/>
<publishToRepository solverName="Boolector" solverVersion="${boolector.version}"/>
</target>
</project>
Loading