此文件是否符合SMT2.0标准?至少,z3可以实现它。顺便问一下,'declare-const'和'declare-fun'之间有什么区别?例如,为了声明Bool变量,我可以写declare-const a Bool
或declare-fun a() Bool
。
答案 0 :(得分:1)
我无法找到您在帖子中提到的文件,但是要回答关于declare-const的问题:
(declare-const a Bool)
与
相同(declare-fun a () Bool)
declare-const不是标准SMT-LIB2的一部分。 为方便起见,它是添加到Z3的命令 手动输入SMT-LIB2基准。您可以 总是使用declare-fun而不是兼容 解决者。
虽然Z3可以处理符合SMT-LIB2的文件。 另一方面,Z3的输入格式还有其他几个扩展 这不属于SMT-LIB2标准。 提一下:
声明-数据类型。代数数据类型的声明是Z3特定的扩展。
战术和解决者。策略的创建,构成和应用是Z3特有的。
declare-rel,declare-var,rule,query。这些命令由定点解算器使用,以便于将基准作为Horn公式输入。