此文件是否符合 SMT2.0 标准?至少,z3 可以接受它。顺便说一句,“declare-const”和“declare-fun”有什么区别?例如,为了声明一个 Bool 变量,我可以编写declare-const a Bool
or declare-fun a() Bool
。
问问题
246 次
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 回答