DSL in Scala for Constraint Solving with Z3 SMT Solver
Scala
127
229 commits
updated Jun 1, 2023
This is ScalaZ3 for Z3 4.8.14 and Scala 3.2.0.
You should have Java and SBT 1.7.x installed.
Run
sbt +package
to compile Z3 4.8.14 for Scala 3.2.0.
The JAR files will be in target/scala-3.2.0/scalaz3_3-4.8.14.jar
and will contain the shared library dependencies.
For testing, run
sbt +test
Install Visual Studio Community edition 2015 Make sure to have the following:
Install JDK 1.8 (or higher)
include in C:\Program Files\Java\jdk1.8.0_121. Create a copy of this include folder directly in C:\Program Files\Java\Install a 64-bit version of GCC. To chec that, run gcc -v, it should display 64. If it shows mingw32 you need to install a new version.
We were able to successfully package and test ScalaZ3 with the MinGW 64bit compiler suite with the following options.
Version: 6.3.0
Architecture: x86_64
Threads: wind32
Esception: seh
Build revision: 2
Open the native x64 command prompt (available in the start menu under the Visual Studio folder)
Now navigate to the scalaz3 folder and type:
sbt +package
The JAR files will be in target/scala-3.2.0/scalaz3_3-4.8.14.jar and will contain the shared library
dependencies.
Run
sbt test
If this does not work, check that lib-bin/scalaz3.dll is a correctly set up 64 bit dll:
dumpbin /headers lib-bin/scalaz3.dll | findstr machine
The output should be (x64). If you encounter any other issue, please let us know.
Create a folder named unmanaged at the same level as your build.sbt file, and copy the JAR file in target/scala-3.2.0/scalaz3_3-4.8.14.jar into it.
Then add, the following lines to your build.sbt file:
Compile / unmanagedJars += {
baseDirectory.value / "unmanaged" / s"scalaz3_3-4.8.14.jar"
}
If you want to use ScalaZ3 in a project which must support various operating systems and architectures, you will have to compile ScalaZ3 on each of those systems/architectures, following the instructions above.
Make sure to name the resulting JAR files as scalaz3-[osName]-[osArch]-3.jar, where:
[osName] is one of: mac, win, unix.[osArch] corresponds to System.getProperty("sun.arch.data.model"), ie. x64, fds, etc.Create a folder named unmanaged at the same level as your build.sbt file, and copy the aforementioned JAR files into it.
Add the following lines to your build.sbt file:
val osInf = Option(System.getProperty("os.name")).getOrElse("")
val osArch = System.getProperty("sun.arch.data.model")
val isUnix = osInf.indexOf("nix") >= 0 || osInf.indexOf("nux") >= 0
val isWindows = osInf.indexOf("Win") >= 0
val isMac = osInf.indexOf("Mac") >= 0
val osName = if (isWindows) "win" else if (isMac) "mac" else "unix"
Compile / unmanagedJars += {
baseDirectory.value / "unmanaged" / s"scalaz3-$osName-$osArch-3.jar"
}
Scala
91.9%
Java
8.1%
DSL in Scala for Constraint Solving with Z3 SMT Solver
Scala
127
229 commits
updated Jun 1, 2023
This is ScalaZ3 for Z3 4.8.14 and Scala 3.2.0.
You should have Java and SBT 1.7.x installed.
Run
sbt +package
to compile Z3 4.8.14 for Scala 3.2.0.
The JAR files will be in target/scala-3.2.0/scalaz3_3-4.8.14.jar
and will contain the shared library dependencies.
For testing, run
sbt +test
Install Visual Studio Community edition 2015 Make sure to have the following:
Install JDK 1.8 (or higher)
include in C:\Program Files\Java\jdk1.8.0_121. Create a copy of this include folder directly in C:\Program Files\Java\Install a 64-bit version of GCC. To chec that, run gcc -v, it should display 64. If it shows mingw32 you need to install a new version.
We were able to successfully package and test ScalaZ3 with the MinGW 64bit compiler suite with the following options.
Version: 6.3.0
Architecture: x86_64
Threads: wind32
Esception: seh
Build revision: 2
Open the native x64 command prompt (available in the start menu under the Visual Studio folder)
Now navigate to the scalaz3 folder and type:
sbt +package
The JAR files will be in target/scala-3.2.0/scalaz3_3-4.8.14.jar and will contain the shared library
dependencies.
Run
sbt test
If this does not work, check that lib-bin/scalaz3.dll is a correctly set up 64 bit dll:
dumpbin /headers lib-bin/scalaz3.dll | findstr machine
The output should be (x64). If you encounter any other issue, please let us know.
Create a folder named unmanaged at the same level as your build.sbt file, and copy the JAR file in target/scala-3.2.0/scalaz3_3-4.8.14.jar into it.
Then add, the following lines to your build.sbt file:
Compile / unmanagedJars += {
baseDirectory.value / "unmanaged" / s"scalaz3_3-4.8.14.jar"
}
If you want to use ScalaZ3 in a project which must support various operating systems and architectures, you will have to compile ScalaZ3 on each of those systems/architectures, following the instructions above.
Make sure to name the resulting JAR files as scalaz3-[osName]-[osArch]-3.jar, where:
[osName] is one of: mac, win, unix.[osArch] corresponds to System.getProperty("sun.arch.data.model"), ie. x64, fds, etc.Create a folder named unmanaged at the same level as your build.sbt file, and copy the aforementioned JAR files into it.
Add the following lines to your build.sbt file:
val osInf = Option(System.getProperty("os.name")).getOrElse("")
val osArch = System.getProperty("sun.arch.data.model")
val isUnix = osInf.indexOf("nix") >= 0 || osInf.indexOf("nux") >= 0
val isWindows = osInf.indexOf("Win") >= 0
val isMac = osInf.indexOf("Mac") >= 0
val osName = if (isWindows) "win" else if (isMac) "mac" else "unix"
Compile / unmanagedJars += {
baseDirectory.value / "unmanaged" / s"scalaz3-$osName-$osArch-3.jar"
}
Scala
91.9%
Java
8.1%