1

点击查看文件

此文件是否符合 SMT2.0 标准?至少,z3 可以接受它。顺便说一句,“declare-const”和“declare-fun”有什么区别?例如,为了声明一个 Bool 变量,我可以编写declare-const a Boolor declare-fun a() Bool

4

1 回答 1

1

我无法找到您在帖子中提到的文件,但要回答您关于 declare-const 的问题:

(declare-const a Bool) 

意思是一样的

(declare-fun a () Bool)

declare-const 不是标准 SMT-LIB2 的一部分。它是为了方便手动输入 SMT-LIB2 基准而添加到 Z3 的命令。您始终可以使用 declare-fun 来兼容跨求解器。

而 Z3 可以处理符合 SMT-LIB2 的文件。另一方面,Z3 的输入格式中还有几个其他扩展不属于 SMT-LIB2 标准。提一些:

  • 声明数据类型。代数数据类型的声明是 Z3 特定的扩展。

  • 战术和解决方案。战术的创建、组合和应用是 Z3 特有的。

  • 声明-rel,声明-var,规则,查询。定点求解器使用这些命令是为了方便将基准作为 Horn 公式输入。

于 2013-01-06T10:29:21.417 回答