跳到内容

种类2-mc/种类2

存储库文件导航

发展 释放 许可证

第2类

第2类是一个多引擎、并行、基于SMT的自动模型检查器,用于Lustre程序的安全属性。

第2类是命令行工具。它将一个带有属性注释的Lustre文件作为输入,以证明其不变性(请参见Lustre输入),并输出所有输入的哪些属性为真,以及那些被篡改的属性的输入序列。为了简化外部工具的处理,第2类可以以JSON和XML格式输出结果(请参阅JSON/XML输出).

默认情况下,第2类在所有属性上同时运行一个有界模型检查(BMC)过程、两个k归纳过程(一个用于固定值k=2,另一个用于增加值k)、几个用于生成不变量的过程、一个用于IC3QE的过程和几个用于IC3IA的并行过程。它增量地向属性输出反例,以及证明不变的属性。

以下命令行选项控制其操作(运行kind2--帮助查看完整列表)。请参见技术有关配置示例和每种技术的更多详细信息,请参阅。

--启用{BMC|IND|IND2|IC3QE|IC3IA|INVGEN|INGGENOS|…}选择型号检查发动机

默认情况下,所有五个模型检查引擎都是并行运行的。给出以下任意组合--启用BMC,--启用IND,--启用IND2,--启用IC3QE--启用IC3IA选择要运行的引擎。选项--启用BMC单独使用将无法证明属性有效,请选择--启用IND--启用IND2只有(或两者之一)不会产生任何结果。任何其他组合都是合理的(声称不变的属性实际上是不变的)和反例-完整的(如果有足够的时间和资源,将为每个不不变的属性生成反例)。

--超时<int>(默认0=无)--运行给定的挂钟时间秒数

--smt_solver{比特乌兹拉|cvc5|MathSAT|SMTInterpol|Yices|Yices2|Z3}(默认Z3公司)--选择SMT解算器

--bitwuzla_bin<文件>--Bitwuzla的可执行文件

--cvc5_bin<文件>--cvc5的可执行文件

--mathsat_bin<文件>--MathSAT 5的可执行文件

--smtinterpol_jar<文件>--SMTInterpol的JAR

--yices_bin<文件>--Yices 1的可执行文件(本机输入)

--yices2_bin<文件>--Yices 2的可执行文件(SMT输入)

--z3_bin<文件>--Z3的可执行文件

-v(v)输出信息消息

-杰森JSON格式的输出

-xml格式XML格式的输出

在线尝试第二种

访问我们的web界面从浏览器中尝试第2种。

下载

如果您使用Linux或macOS计算机,可以从以下位置下载最新版本的第2类可执行文件在这里。不过,首先要确保您拥有接下来描述的所需软件。

所需软件

要运行类型2,您的计算机上必须安装以下软件:

Z3是当前推荐的SMT解算器和默认选项。为了获得最佳效果,我们建议使用多个解算器的组合。对于具有整数和实数变量的系统,我们建议使用Z3作为主解算器(--smt_solver Z3型)和MathSAT作为插值解算器(--smt_itp_solver数学SAT). 对于只有机器整数的系统,我们建议使用Bitwuzla作为主解算器(--smt_solver比特乌兹拉),MathSAT作为插值解算器(--smt_itp_solver数学SAT)和Z3用于执行量词消除(--smt_qe_solver Z3).

VS代码扩展

您还可以安装我们的延伸用于Visual Studio代码,该代码提供了对类型2的支持。该扩展包含可供使用的第2类和Z3类Linux和macOS二进制文件。WSL2也支持Windows(请参阅在这里更多详细信息)。

码头工人

第2类也可用于Docker集线器.

检索/更新图像

安装docker然后运行

Docker将检索对应于最新版本的第2类存储库,发展版本。如果您对最新版本感兴趣,请运行

而不是。

如果要将第2类图像更新为最新图像,只需重新运行码头工人拉命令。

通过docker运行类型2

要在系统上的文件上运行第2类,建议将此文件所在的文件夹作为体积。在实践中,运行

哪里

  • <绝对路径文件夹>是文件所在文件夹的绝对路径,
  • <您的文件>是要在其上运行第2类的光泽文件,并且
  • <选项>是你选择的第二种选择。

注意:。

  • 文件夹的路径必须是绝对的docker约束;
  • 装入点/卢斯是武断的,只要与最后一个论点一致就无所谓/加/<您的文件>。但是,为了避免与容器中已存在的文件夹发生名称冲突,建议使用/卢斯;
  • 代替种类2:dev通过种类2如果您想运行最新版本的Kind2,而不是发展版本;
  • 码头装卸工将您当地的第2类图像更新为最新图像:适当的码头装卸车命令执行。

打包本地版本的第2类

码头工人目录中,有一个Dockerfile文件您可以使用创建自己的第二类图像。要做到这一点,只需跑步

位于存储库的根目录。kind2-本地这里给出了一个例子,你可以随意称呼它。

请注意,构建您自己的本地Kind 2图像需要访问Internet这是因为构建过程需要检索包,以及下载z3和cvc5解算器。

建造和安装

如果愿意,可以通过OPAM包管理器(推荐)或直接使用沙丘直接从源代码构建第2类。

使用OPAM

从安装开始OPAM 2.x型按照网站上的说明进行操作,并通过运行opam初始化。如果要构建包含最新更改(而不是最新版本)的第2类开发版本,请运行

(以后可以使用此命令撤消此更改opam unpin类型2).

否则,跳过上述步骤,然后运行

如果系统上安装了OPAM 2.1或更高版本,或运行

如果您有旧版本的OPAM(您可以运行opam—版本检查版本)。

这将指导您使用操作系统的默认包管理器安装ZeroMQ C库和任何其他必需的外部依赖项(可能需要sudo权限)。它还构建并安装OCaml编译器和库的兼容版本,以及种类2二元的。现在您可以开始使用种类2.

使用OPAM的其他选项

默认情况下,种类2将安装到当前OPAM交换机的bin目录中。运行

将第2类二进制文件安装到<目录>/bin。这也将创建目录<目录>/doc<DIR>/lib.

或者,您可以克隆https://github.com/kind2-mc/kind2.git,移动到其顶级目录,然后运行

安装OPAM种类2及其依赖性。

请注意,z3在OPAM中可用,因此可以通过运行以下命令将其与OPAM一起安装:

然而,请注意,这需要相当长的时间(最多25分钟)。

使用沙丘直接安装

要直接从源代码构建,您还需要首先使用以下软件:

首先使用首选方法在系统上安装此软件。然后克隆第2类git存储库,移动到存储库的顶级目录,然后运行

将Kind 2二进制文件安装到<目录>/bin.

运行时,PATH环境变量中需要支持的SMT解算器种类2.

开发

使用OPAM 2.x,您可以创建一个本地交换机,它将自动安装所有依赖项。

或者,您可以通过运行以下命令在当前交换机中安装所有依赖项:

要运行前端的单元测试,可以通过运行以下命令使用opam安装ounit2库:

要运行ounit测试,可以使用以下沙丘命令:

文档

文档可在线获取,网址为HTML格式PDF格式形式。

为了在本地生成文档,您需要:

对于HTML文档,您还需要:

对于PDF文档,您还需要:

如果您在Debian/Ubuntu上,假设您安装了Python 3,您可以运行以下命令:

请参见doc/usr/README.rst文件了解更多信息。