3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-07 18:05:21 +00:00
z3/README.md

4.2 KiB

Z3

Z3 is a theorem prover from Microsoft Research. Z3 is licensed under the MIT license. Z3 can be built using Visual Studio Command Prompt and make/g++.

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.