doc | ||
examples | ||
scripts | ||
src | ||
.gitattributes | ||
.gitignore | ||
configure | ||
LICENSE.txt | ||
README.md | ||
RELEASE_NOTES |
Z3
Z3 is a theorem prover from Microsoft Research. It is licensed under the MIT license.
Z3 can be built using Visual Studio or a Makefile. It provides bindings for several programming languages.
See the release notes for notes on various stable releases of Z3.
Building Z3 on Windows using Visual Studio Command Prompt
32-bit builds, start with:
python scripts/mk_make.py
or instead, for a 64-bit build:
python scripts/mk_make.py -x
then:
cd build
nmake
Building Z3 using make and GCC/Clang
Execute:
python scripts/mk_make.py
cd build
make
sudo make install
Note by default gcc
is used as the C++ compiler if it is available. If you
would prefer to use Clang change the mk_make.py
line to
CXX=clang++ CC=clang python scripts/mk_make.py
Note that Clang < 3.7 does not support OpenMP.
By default, it will install z3 executable at PREFIX/bin
, libraries at
PREFIX/lib
, and include files at PREFIX/include
, where PREFIX
installation prefix if inferred by the mk_make.py
script. It is usually
/usr
for most Linux distros, and /usr/local
for FreeBSD and OSX. Use
the --prefix=
command line option to change the install prefix. For example:
python scripts/mk_make.py --prefix=/home/leo
cd build
make
make install
Note the above will typically disable the installation of the Python bindings
because the Python site-packages
directory (e.g.
/usr/lib/python3.5/site-packages/
) is not rooted in the install prefix and
installing outside of the install prefix is dangerous and misleading.
To avoid this issue you can use the DESTDIR
makefile variable and leave the
install prefix as the default. The DESTDIR
variable is prepended to the
install locations during make install
and make uninstall
and is intended
to allow "staged installs".
Therefore it must always contain a trailing slash.
For example:
python scripts/mk_make.py
cd build
make
make install DESTDIR=/home/leo/
In this example, the Z3 Python bindings will be stored at
/home/leo/lib/pythonX.Y/site-packages
(/home/leo/lib/pythonX.Y/dist-packages
on Debian based Linux
distributions) where X.Y corresponds to the python version in your system.
To uninstall Z3, use
sudo make uninstall
To clean Z3 you can delete the build directory and run the mk_make.py
script again.
Z3 bindings
Z3 has bindings for various programming languages.
.NET
These bindings are enabled by default on Windows and are enabled on other platforms if mono is detected. On these platforms the location of the C# compiler and gac utility need to be known. You can set these as follows if they aren't detected automatically. For example:
CSC=/usr/bin/csc GACUTIL=/usr/bin/gacutil python scripts/mk_make.py
To disable building these bindings pass --nodotnet
to mk_make.py
.
Note for very old versions of Mono (e.g. 2.10
) you may need to set CSC
to /usr/bin/dmcs
.
Note that when make install
is executed on non-windows platforms the GAC
utility is used to install Microsoft.Z3.dll
into the
GAC as the
Microsoft.Z3.Sharp
package. During install a
pkg-config file
(Microsoft.Z3.Sharp.pc
) is also installed which allows the
MonoDevelop IDE to find the bindings. Running
make uninstall
will remove the dll from the GAC and the pkg-config file.
See examples/dotnet
for examples.
C
These are always enabled.
See examples/c
for examples.
C++
These are always enabled.
See examples/c++
for examples.
Java
Use the --java
command line flag with mk_make.py
to enable building these.
See examples/java
for examples.
OCaml
Use the --ml
command line flag with mk_make.py
to enable building these.
See examples/ml
for examples.
Python
These bindings are always enabled.
See examples/python
for examples.