z3:基于多种编程语言的定理证明器项目

用户可借助该项目进行定理证明相关工作。它提供多语言绑定,支持C++、.NET、Java、Python等,具备多种构建方式,依赖少且功能强大。【此简介由AI生成】

分支1Tags2

Z3

Z3 是微软研究院开发的一款定理证明器。
它基于 MIT 许可证 授权使用。

如果您还不熟悉 Z3,可以从这里开始了解。

稳定版和每日构建的预编译二进制文件可从此链接获取。

Z3 可通过 Visual StudioMakefileCMake 进行构建,并支持多种编程语言的绑定

各稳定版本的更新说明请参阅发布日志

构建状态

Azure Pipelines
构建状态

在 Windows 上使用 Visual Studio 命令提示符构建 Z3

32 位构建,请以以下命令开始:

python scripts/mk_make.py

或者,对于 64 位版本:

python scripts/mk_make.py -x

随后:

cd build
nmake

Z3 采用 C++17 标准开发,因此推荐使用 Visual Studio 2019 版本。

使用 make 和 GCC/Clang 构建 Z3

执行以下命令:

python scripts/mk_make.py
cd build
make
sudo make install

默认情况下,如果系统中存在 g++,则会将其作为 C++ 编译器使用。若您希望改用 Clang,请将 mk_make.py 的调用方式修改为:

CXX=clang++ CC=clang python scripts/mk_make.py

请注意,Clang < 3.7 不支持 OpenMP。

您也可以使用 Cygwin 和 Mingw-w64 交叉编译器为 Windows 构建 Z3。 为了正确配置此环境,请确保使用 Cygwin 自带的 Python,而非 Windows 系统上安装的 Python 版本。

若需进行 64 位构建(在 Cygwin64 环境下),请按以下方式配置 Z3 源代码:

CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-ar python scripts/mk_make.py

32位版本理论上应能同样运行(但未经测试);对于Cygwin32环境下的32/64位版本亦是如此。

默认情况下,安装程序会将z3可执行文件置于PREFIX/bin目录,库文件存放于PREFIX/lib,头文件则安装在PREFIX/include。其中PREFIX安装前缀由mk_make.py脚本自动推断——在多数Linux发行版中通常为/usr,而在FreeBSD和macOS系统中则为/usr/local。如需修改安装前缀,可使用--prefix=命令行选项。例如:

python scripts/mk_make.py --prefix=/home/leo
cd build
make
make install

要卸载 Z3,请使用

sudo make uninstall

清理 Z3 时,可删除构建目录并重新运行 mk_make.py 脚本。

使用 CMake 构建 Z3

Z3 提供了基于 CMake 的构建系统。详情请参阅 README-CMake.md 文件。除构建 OCaml 绑定外,推荐将其用于大多数构建任务。

依赖项

Z3 本身依赖项较少,仅需 C++ 运行时库(包括用于多线程的 pthreads)。用户可选择使用 GMP 处理多精度整数运算,但 Z3 已内置完整的多精度运算功能。构建 Z3 需安装 Python。构建 Java、.NET、OCaml 和 Julia 接口需安装相应工具链。

Z3 语言绑定

Z3 支持多种编程语言接口。

.NET

可从 nuget.org 安装最新版 Z3 的 NuGet 包。

使用 mk_make.py 时添加 --dotnet 命令行参数以启用构建。

示例代码见 examples/dotnet

C

该绑定默认启用。

示例代码见 examples/c

C++

该绑定默认启用。

示例代码见 examples/c++

Java

使用 mk_make.py 时添加 --java 命令行参数以启用构建。

示例代码见 examples/java

OCaml

使用 mk_make.py 时添加 --ml 命令行参数以启用构建。

示例代码见 examples/ml

Python

可通过以下命令从 PyPI 安装最新版 Z3 的 Python 封装:

pip install z3-solver
   pip install z3-solver

使用 mk_make.py 时配合 --python 命令行参数可启用这些构建功能。

请注意,在某些平台上,Python 包目录(大多数发行版中为 site-packages,基于 Debian 的发行版中为 dist-packages)必须位于安装前缀路径下。若使用非标准前缀路径,可通过 --pypkgdir 选项指定安装时使用的 Python 包目录。例如:

python scripts/mk_make.py --prefix=/home/leo --python --pypkgdir=/home/leo/lib/python-2.7/site-packages

若确实需要安装到非标准路径,更优的解决方案是使用 Python 虚拟环境, 并在其中安装 Z3。Python 包同样适用于 Python3。 在 Windows 系统下,请确保在 Visual C++ 原生命令构建环境中进行编译。 请注意,build/python/z3 目录应可从使用 Z3 的 Python 环境中访问, 且该目录依赖于路径中的 libz3.dll 文件。

virtualenv venv
source venv/bin/activate
python scripts/mk_make.py --python
cd build
make
make install
# You will find Z3 and the Python bindings installed in the virtual environment
venv/bin/z3 -h
...
python -c 'import z3; print(z3.get_version_string())'
...

查看 examples/python 中的示例。

Julia

Julia 包 Z3.jl 封装了 Z3 的 C++ API。有关更新和构建 Julia 绑定的信息可在 src/api/julia 中找到。

Web Assembly

WebAssembly 绑定由 Clément Pit-Claudel 提供。

系统概览

系统架构图

接口

项目介绍

用户可借助该项目进行定理证明相关工作。它提供多语言绑定,支持C++、.NET、Java、Python等,具备多种构建方式,依赖少且功能强大。【此简介由AI生成】

定制我的领域