Skip to content

Commit 7612625

Browse files
Merge remote-tracking branch 'origin/master' into 412-inconsistent-handling-of-unicode-characters-in-string-theory
2 parents 795b316 + c633804 commit 7612625

File tree

192 files changed

+4035
-2080
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

192 files changed

+4035
-2080
lines changed

.appveyor.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ version: build {build} {branch}
1010

1111
os: Visual Studio 2019
1212

13-
clone_depth: 1
13+
clone_depth: 5
1414

1515
install:
1616
- ps: |
@@ -44,6 +44,7 @@ build_script:
4444
Copy-Item -Path "lib\java\runtime-z3\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
4545
Copy-Item -Path "lib\java\runtime-mathsat\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
4646
Copy-Item -Path "lib\java\runtime-bitwuzla\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
47+
Copy-Item -Path "lib\java\runtime-cvc5\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
4748
4849
test_script:
4950
- ant unit-tests

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,6 @@ build.properties
7171
/.apt-generated/
7272
/repository
7373
/dist
74+
/downloads
7475

7576
pom.xml

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ The visitation of quantified formulas was improved.
158158
## JavaSMT 3.9.0
159159

160160
This release contains a larger update of Princess and more JUnit tests.
161-
The PrettyPrinter is switched from a boolean parameter to a options enum.
161+
The PrettyPrinter is switched from a boolean parameter to an options enum.
162162
The example projects for Maven are updated with newer solver versions.
163163

164164
### Updated solvers:
@@ -181,7 +181,7 @@ if disk space is a critical point.
181181

182182
### Updated solvers:
183183
- MathSAT5 5.6.5 (inculding binary for Windows)
184-
- Z3 4.8.9 (including binaries for Windows and MacOS)
184+
- Z3 4.8.9 (including binaries for Windows and macOS)
185185

186186
## JavaSMT 3.6.1
187187

README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ JavaSMT supports several SMT solvers (see [Getting Started](doc/Getting-started.
6565
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark:² | :heavy_check_mark:² | :heavy_check_mark: | | | | a fast solver for bitvector logic |
6666
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | | | | a fast solver for bitvector logic, misses formula introspection, deprecated |
6767
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | | | | |
68-
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | | | | | | |
68+
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | |
6969
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/430)³ | | |
7070
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark:² | :heavy_check_mark:² | | | | | |
7171
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | | | | based on MathSAT5, with support for optimization queries |
@@ -76,7 +76,7 @@ JavaSMT supports several SMT solvers (see [Getting Started](doc/Getting-started.
7676

7777
We support a reasonable list of operating systems and versions.
7878
- Our main target is Linux (mainly Ubuntu or comparable Linux distributions).
79-
Windows 10/11 and MacOS are supported for several SMT solvers.
79+
Windows 10/11 and macOS are supported for several SMT solvers.
8080
- Our main development architecture is x64 (x86-64).
8181
We also provide some solvers for ARM64 (AArch64 for ARMv8-A), e.g., Java-based SMT solvers, Z3, and MathSAT.
8282
If a specific operating system or architecture is missing and required,
@@ -88,7 +88,7 @@ available with Ubuntu 18.04 or later.
8888

8989
² Solver requires at least `GLIBC_2.29`/`GLIBCXX_3.4.26` or `GLIBC_2.34`/`GLIBCXX_3.4.29`,
9090
available with Ubuntu 22.04 or later.
91-
³ We do not provide a signed solver library for MacOS. The user needs to compile and sign it.
91+
³ We do not provide a signed solver library for macOS. The user needs to compile and sign it.
9292

9393
#### Solver Features
9494

@@ -181,10 +181,11 @@ try (SolverContext context = SolverContextFactory.createSolverContext(
181181

182182
## Authors
183183

184-
- Project maintainers: [Karlheinz Friedberger][] and [Philipp Wendler][]
184+
- Project maintainers: [Karlheinz Friedberger][] and [Daniel Baier][]
185185
- Former project maintainer: [George Karpenkov][]
186186
- Initial codebase, many design decisions: [Philipp Wendler][]
187-
- Contributions: [Daniel Baier][], [Thomas Stieglmaier][] and several others.
187+
- Contributions: [Bajczi Levente][], Daniel Raffler, [Martin Spiessl][], [Thomas Stieglmaier][],
188+
and many others. For a full list, see the [contributors overview][].
188189

189190
[ConfigurationOptions]: https://sosy-lab.github.io/java-smt/ConfigurationOptions.txt
190191
[Manual Installation]: doc/Getting-started.md#manual-installation
@@ -195,5 +196,8 @@ try (SolverContext context = SolverContextFactory.createSolverContext(
195196
[Thomas Stieglmaier]: https://stieglmaier.me/
196197
[Karlheinz Friedberger]: https://www.sosy-lab.org/people/friedberger
197198
[Daniel Baier]: https://www.sosy-lab.org/people/baier
199+
[Martin Spiessl]: https://www.sosy-lab.org/people/spiessl/
200+
[Bajczi Levente]: leventebajczi.github.io
198201
[Ivy repository]: https://www.sosy-lab.org/ivy
199202
[Maven repository]: https://mvnrepository.com/artifact/org.sosy-lab/java-smt
203+
[contributors overview]: https://github.com/sosy-lab/java-smt/graphs/contributors

build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ SPDX-License-Identifier: Apache-2.0
8787
<fileset dir="." includes="${libraryFiles} ${jarFiles} Javadoc-z3/"/>
8888
<fileset dir="lib/native/source/libmathsat5j" includes="*.so *.dll *.o"/>
8989
<fileset dir="lib/native/source/libbitwuzla" includes="install-linux/ install-linux-x64/ install-linux-arm64/ install-windows/ install-windows-x64/ build/ doc/ *.so *.dll bitwuzla_wrap.o"/>
90-
<fileset dir="lib/native/source/opensmt" includes="install-linux-x64/ install-linux-arm64/ *.so"/>
90+
<fileset dir="lib/native/source/opensmt" includes="build/ doc/ install-linux-x64/ install-linux-arm64/ *.o *.so version.h"/>
9191
</delete>
9292
</target>
9393

build/build-compile.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ SPDX-License-Identifier: Apache-2.0
7474
<src path="${source.dir}"/>
7575
<classpath refid="classpath"/>
7676
<compilerarg value="-Xlint"/>
77-
<compilerarg value="-Xlint:-fallthrough"/> <!-- checked by error-prone, too, and javac does not recognized $FALL-THROUGH$ -->
77+
<compilerarg value="-Xlint:-fallthrough"/> <!-- checked by error-prone, too, and javac does not recognize $FALL-THROUGH$ -->
7878
<compilerarg value="-Xlint:-processing"/>
7979
<compilerarg value="-Xlint:-options"/> <!-- suppress warning about bootclasspath on newer JDK -->
8080
<compilerarg value="-Xlint:-this-escape" if:set="java21"/> <!-- false alarm for every use of configuration injection -->

build/build-documentation.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ SPDX-License-Identifier: Apache-2.0
3737

3838
<classpath refid="classpath"/>
3939

40-
<!-- "-v" is a optional param for verbose output of OptionCollector -->
40+
<!-- "-v" is an optional param for verbose output of OptionCollector -->
4141
<!-- <arg value="-v"/> -->
4242
</java>
4343
<echo message="Options collected." level="info"/>

build/build-ivy.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ SPDX-License-Identifier: Apache-2.0
4646
</condition>
4747
<property name="ivy.cache.dir" location="${tmp.ivy.cache.dir}" />
4848

49-
<!-- If necessary, download Ivy from web site so that it does not need to be installed. -->
49+
<!-- If necessary, download Ivy from website so that it does not need to be installed. -->
5050
<target name="bootstrap-ivy" unless="ivy.jar.present">
5151
<mkdir dir="${ivy.jar.dir}"/>
5252
<echo message="Downloading ivy..."/>

build/build-junit.xml

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,21 @@ SPDX-License-Identifier: Apache-2.0
4646
<path refid="classpath"/>
4747
</path>
4848

49+
<delete dir="${junit.dir}"/>
4950
<mkdir dir="${junit.dir}"/>
5051
</target>
5152

52-
<target name="unit-tests" depends="build, load-junit, init-unit-tests" description="Run all JUnit tests">
53-
<delete dir="{junit.dir}"/>
53+
<macrodef name="run-junit-tests">
54+
<sequential>
5455
<junit fork="true" printSummary="true" showOutput="false" failureproperty="junit.failed" timeout="600000">
5556
<assertions><enable/></assertions>
5657
<formatter type="xml"/>
5758
<classpath refid="classpath.junit"/>
5859
<sysproperty key="java.awt.headless" value="true" />
5960
<batchtest fork="true" todir="${junit.dir}">
60-
<fileset dir="${class.dir}">
61-
<include name="**/*Test.*"/>
62-
<exclude name="**/*$*Test.*"/>
63-
</fileset>
61+
<fileset dir="${class.dir}">
62+
<patternset refid="test.sources"/>
63+
</fileset>
6464
</batchtest>
6565
</junit>
6666
<junitreport todir="${junit.dir}">
@@ -69,6 +69,41 @@ SPDX-License-Identifier: Apache-2.0
6969
</junitreport>
7070
<move file="junit-noframes.html" tofile="JUnit.html"/>
7171
<fail if="junit.failed" message="JUnit tests failed, look at JUnit.html"/>
72+
</sequential>
73+
</macrodef>
74+
75+
<target name="unit-tests-quick" depends="build, load-junit, init-unit-tests"
76+
description="Run a minimal set of JUnit tests that are considered quick">
77+
<!-- A simpler way for specifying quick tests would be an annotation on class or method level.
78+
JUnit 5 might bring such features. However, we still depend on JUnit 4. -->
79+
<patternset id="test.sources">
80+
<include name="**/solvers/bitwuzla/BitwuzlaNativeApiTest.*"/>
81+
<include name="**/solvers/boolector/BoolectorNativeApiTest.*"/>
82+
<include name="**/solvers/cvc4/CVC4NativeAPITest.*"/>
83+
<include name="**/solvers/cvc5/CVC5NativeAPITest.*"/>
84+
<include name="**/solvers/mathsat5/Mathsat5AbstractNativeApiTest.*"/>
85+
<include name="**/solvers/mathsat5/Mathsat5NativeApiTest.*"/>
86+
<include name="**/solvers/mathsat5/Mathsat5OptimizationNativeApiTest.*"/>
87+
<include name="**/solvers/opensmt/OpenSmtNativeAPITest.*"/>
88+
<include name="**/solvers/yices2/Yices2NativeApiTest.*"/>
89+
<include name="**/test/FloatingPointNumberTest.*"/>
90+
<include name="**/test/FormulaManagerTest.*"/>
91+
<include name="**/test/NumeralFormulaManagerTest.*"/>
92+
<include name="**/test/ProverEnvironmentTest.*"/>
93+
<include name="**/test/RationalFormulaManagerTest.*"/>
94+
<include name="**/test/SolverContextFactoryTest.*"/>
95+
<include name="**/test/SolverContextTest.*"/>
96+
</patternset>
97+
<run-junit-tests/>
98+
</target>
99+
100+
<target name="unit-tests" depends="build, load-junit, init-unit-tests"
101+
description="Run all JUnit tests">
102+
<patternset id="test.sources">
103+
<include name="**/*Test.*"/>
104+
<exclude name="**/*$*Test.*"/>
105+
</patternset>
106+
<run-junit-tests/>
72107
</target>
73108

74109
<target name="load-jacoco" depends="resolve-dependencies">
@@ -78,7 +113,6 @@ SPDX-License-Identifier: Apache-2.0
78113
</target>
79114

80115
<target name="unit-tests-coverage" depends="build, load-junit, load-jacoco, init-unit-tests" description="Run all JUnit tests with coverage report">
81-
<delete dir="{junit.dir}"/>
82116
<jacoco:coverage destfile="${junit.dir}/jacoco.exec" excludes="**/*Test*:**/Dummy*">
83117
<junit fork="true" printSummary="true" showOutput="false" failureproperty="junit.failed" timeout="600000">
84118
<assertions><enable/></assertions>

build/build-maven-publish.xml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ SPDX-License-Identifier: Apache-2.0
4848
</target>
4949

5050
<!-- macro for pushing a JavaSMT file into a Maven repository
51-
(push into the staging area, from there manual publication is required afterwards) -->
51+
(push into the staging area, from there manual publication is required afterward) -->
5252
<macrodef name="stage-javasmt-file">
5353
<attribute name="filename"/>
5454
<attribute name="fileending"/>
@@ -82,7 +82,7 @@ SPDX-License-Identifier: Apache-2.0
8282
</macrodef>
8383

8484
<!-- macro for pushing solvers into a Maven repository
85-
(push into the staging area, from there manual publication is required afterwards) -->
85+
(push into the staging area, from there manual publication is required afterward) -->
8686
<macrodef name="stage-solver-file">
8787
<!-- 'filename' is only used for reading file from file-system, not used "in" Maven -->
8888
<attribute name="filename"/>
@@ -229,15 +229,17 @@ SPDX-License-Identifier: Apache-2.0
229229
<ivy:artifactproperty name="[artifact].revision" value="[revision]"/>
230230
<property name="stage.solver" value="cvc5"/>
231231
<property name="stage.revision" value="${cvc5.revision}"/>
232+
<property name="libDir.x64" value="lib/java/runtime-cvc5/x64"/>
233+
<property name="libDir.arm64" value="lib/java/runtime-cvc5/arm64"/>
232234
<!-- prepare the pom-file -->
233235
<generate-solver-pom-file/>
234236
<!-- then publish the files -->
235237
<stage-solver-file filename="cvc5" fileending="jar"/>
236-
<stage-solver-file filename="libcvc5" classifier="libcvc5" fileending="so"/>
237-
<stage-solver-file filename="libcvc5jni" classifier="libcvc5jni" fileending="so"/>
238-
<stage-solver-file filename="libcvc5parser" classifier="libcvc5parser" fileending="so"/>
239-
<stage-solver-file filename="libpoly" classifier="libpoly" fileending="so"/>
240-
<stage-solver-file filename="libpolyxx" classifier="libpolyxx" fileending="so"/>
238+
<stage-solver-file filename="libcvc5jni" classifier="libcvc5jni-x64" filedirectory="${libDir.x64}" fileending="so"/>
239+
<stage-solver-file filename="libcvc5jni" classifier="libcvc5jni-arm64" filedirectory="${libDir.arm64}" fileending="so"/>
240+
<stage-solver-file filename="libcvc5jni" classifier="libcvc5jni-x64" filedirectory="${libDir.x64}" fileending="dll"/>
241+
<stage-solver-file filename="libcvc5jni" classifier="libcvc5jni-x64" filedirectory="${libDir.x64}" fileending="dylib"/>
242+
<stage-solver-file filename="libcvc5jni" classifier="libcvc5jni-arm64" filedirectory="${libDir.arm64}" fileending="dylib"/>
241243
</target>
242244

243245
<!--

0 commit comments

Comments
 (0)