跳到内容
/ 隆胸器 公共

用于固定大小位向量、数组和未解释函数理论的可满足模理论(SMT)求解器。

许可证

通知 您必须登录才能更改通知设置

导向器/导向器

存储库文件导航

许可证:麻省理工学院 生成状态

转向器

Boolector是理论的可满足模理论(SMT)求解器固定大小的位向量、数组和未解释的函数。它支持SMT-LIB公司逻辑英属维尔京群岛,QF_ABV公司,QF_AUFBV公司,QF_BV公司QF_UFBV公司.Boolector提供丰富的C和Python API,支持增量求解,使用SMT-LIB命令推送和弹出,以及在假设条件下求解。可以找到其API的文档在这里.

网站

有关Boolector的更多信息,请访问:https://boolector.github.io(网址:https://boolector.github.io)

下载

GitHub上提供了Boolector的最新版本:https://github.com/boolector/boolector(网址:https://github.com/boolector/boolector)

安装

通过Homebrew在macOS(或Linux)上

brew安装boolector

注意:此安装没有附带Python绑定,它使用Lingeling作为后端。

前提条件

要从源代码构建Boolector,您需要:

  • cmake>=3.3
  • gcc/clang
  • g++/叮当声++

构建python模块侏儒您还需要:

  • 赛马拉松>=0.22

生成

Boolector可以在支持SAT解算器的情况下构建钙DiCaL,加密MiniSat,玲玲,微型卫星、和PicoSAT卫星.要构建和设置这些解算器,可以使用脚本设置-{cadical、cms、lingeling、minisat、picosat}.sh控制目录。或者,可以将这些解算器中的任何一个放置在同一级别的目录中作为Boolector源目录或提供配置.sh.您可以构建Boolector并支持多个SAT解算器。请注意,使用MiniSAT将强制libboolector。不仅依赖libz.so公司但也在libstdc++.so因此,如果您想链接libboolector。使用MiniSAT后端针对您自己的程序,你需要使用-lz-lstdc++作为链接选项。

Boolector具有另一个外部依赖性,这个BTOR2格式工具包.与SAT解算器一样,您可以使用提供的脚本设置存储工具.sh在里面控制或将BTOR2Tools存储库克隆到目录b或2工具与Boolector存储库处于同一级别,或提供路径以配置.sh.

Linux和类Unix操作系统

假设我们构建Boolector并支持Lingeling:

#下载并构建Boolectorgit克隆https://github.com/boolector/boolectorcd选择器#下载并构建玲玲./contrib/setup-lingeling.sh#下载并构建BTOR2Tools./contrib/setup-btor2工具.sh#构建Boolector./configure.sh&&cd构建&&make

所有二进制文件(boolector、btormc、btormbt、btorentrace)都生成到目录boolector/build/bin,所有库(libboolector.a、libboolecor.so)都生成到目录boolector/build/lib.

有关Boolector的更多构建配置选项,请参见配置.sh-h.

要使用Python绑定构建Boolector,需要安装赛马拉松,b或2工具和SAT解算器必须使用标志编译-fPIC公司(有关如何作为共享库)。提供的setup-*.sh脚本自动编译所有依赖关系-fPIC公司.然后,从Boolector的根目录配置并构建Boolector,如下所示:

./configure.sh—pythoncd内部版本制作

要构建Boolector的API文档,需要安装狮身人面像(>=版本1.2)。然后构建Boolector并发布:

光盘文档生成html

然后将文档生成为文档/_build/html.确保使用Python绑定构建Boolector,否则请参阅它的Python API将不包括在内。

在CMake项目中与Boolector链接

Boolector的构建系统提供了CMake包配置,可以是由使用查找数据包()命令以提供有关Boolector的信息包括目录、库及其依赖项。

安装Boolector后,可以在CMake中发出以下命令项目链接到Boolector。

find_package(Boolector)目标链接库(Boolector::Boolector)

窗户

有关在Windows上构建和使用Boolector的信息,请参见COMPILING_WINDOWS.md公司.

用法

有关命令行选项的列表,请参阅boolector-h.

有关如何使用Boolector的C API的示例和说明,请参阅示例/api/cAPI文档.要在中构建所有示例示例/api/c问题:

cd内部版本举例说明

有关如何使用Boolector的Python API的示例和说明,请参阅示例/api/python/apiusage_examples.pyAPI文档.
要运行api用法示例.py,来自Boolector的根目录问题:

PYTHONPATH=“build/lib”python示例/api/python/api_usage_examples.py

贡献

Boolector是根据麻省理工学院许可证分发的(请参见复制文件)。提交供款后,您将自动接受所述条件在里面复制.此外,我们要求您证明您有权提交贡献。为了管理这个过程,我们使用了一种机制,称为开发商原产地证书,其中可以通过使用签署提交来确认git提交-s.我们要求将所有拉请求压缩为单个提交,并签署。

开发商原产地证书版本1.1版权所有(C)20042006 Linux Foundation及其贡献者。莱特曼大道1号D4700套房加利福尼亚州旧金山,94129每个人都可以复制和分发此文件的逐字副本许可证文档,但不允许更改。开发商原产地证书1.1通过对本项目的贡献,我证明:(a) 贡献全部或部分由我和我创造有权根据开源许可提交文件中指出;(b) 贡献是基于以前的工作据我所知,已包含在适当的开放源代码中许可证,我有权根据该许可证提交使用修改,无论是全部还是部分创建在同一个开源许可证下(除非我是允许根据不同许可提交),如所示在文件中;(c) 捐款是由其他人直接提供给我的证明(a)、(b)或(c)的人和我没有修改它。(d) 我理解并同意本项目及其贡献是公开的,并且贡献的记录(包括所有我随附的个人信息,包括我的签名)是无限期地维护,并且可以按照此项目或涉及的开源许可证。